TOPLEVELSHELL(3)
π TopLevelShell β the TopLevelShell widget class π
so this is a library call from the X/Motif girlies, and bestie, it's literally the blueprint for every normal top-level window you're ever gonna pop open. Let's get into it π«Ά
β¨ NAME β¨
TopLevelShell β the TopLevelShell widget class π
β¨ SYNOPSIS β¨
#include <Xm/Xm.h>
#include <X11/Shell.h>
β¨ DESCRIPTION β¨
Okay so TopLevelShell is the widget you reach for when you need normal top-level windows β like, any extra top-level widgets your app needs beyond the main one. It's giving "yes I'm a whole window, and I'm thriving" π
π¦ Classes π¦
TopLevelShell inherits all its behavior and resources from Core, Composite, Shell, WMShell, and VendorShell. Family tree ate, no cap π
- The class pointer is
topLevelShellWidgetClass. - The class name is
TopLevelShell.
πΈ New Resources πΈ
So here's the thing β these are the widget resources the programmer uses to specify data. You can also set the resource values for the inherited classes to set attributes for this widget, iconic behavior fr fr.
To reference a resource by name or by class in a .Xdefaults file, remove the XmN or XmC prefix and use the remaining letters. To specify one of the defined values for a resource in a .Xdefaults file, remove the Xm prefix and use the remaining letters (either lowercase or uppercase, but include any underscores between words).
The codes in the access column tell you what you can do with each resource:
Cβ can be set at creation timeSβ can be set by usingXtSetValuesGβ can be retrieved by usingXtGetValuesN/Aβ not applicable
π TopLevelShell Resource Set π
XmNiconicβ Class:XmCIconicΒ· Type:BooleanΒ· Default:FalseΒ· Access:CSGXmNiconNameβ Class:XmCIconNameΒ· Type:StringΒ· Default:NULLΒ· Access:CSGXmNiconNameEncodingβ Class:XmCIconNameEncodingΒ· Type:AtomΒ· Default:dynamicΒ· Access:CSG
π the resource tea, one by one π
XmNiconicβ if this isTruewhen the widget is created, it specifies that the widget should start as an icon when it is realized. A value ofFalsemeans the widget is not to be realized as an icon. Heads up bestie: this resource will only override theXmNinitialStateresource when it's specified in the call that creates the widget. iykyk β¨XmNiconNameβ specifies the short form of the application name that the window manager displays when the application is iconified. WhenXtGetValuesis called on this resource, the returned value is a pointer to the actual resource value and should not be freed β do NOT touch it, hands off π«ΆXmNiconNameEncodingβ specifies a property type that represents the encoding of theXmNiconNamestring. If a language procedure has been set, the default isNone; otherwise, the default isXA_STRING. When the widget is realized, if the value isNone, the corresponding name is assumed to be in the current locale. The name is passed toXmbTextListToTextPropertywith an encoding style ofXStdICCTextStyle. The resulting encoding isSTRINGif the name is fully convertible toSTRING, otherwiseCOMPOUND_TEXT. And plot twist β the values of the encoding resources are not changed; they remainNone. π
π Inherited Resources π
TopLevelShell inherits behavior and resources from the following superclasses. For a complete description of each resource, refer to the reference page for that superclass. (yes, go read those too, don't be shy π)
to be continuedβ¦ part 2 incoming, don't go anywhere bestie π¦
β¨ VendorShell Resource Set β¨
okay bestie, here's the whole VendorShell resource set β every single one, no skips, no cap. the columns are Name, Class, Type, Default, and Access, and I'm keeping them exactly as they are π
XmNaudibleWarningβ Class:XmCAudibleWarning, Type:unsigned char, Default:XmBELL, Access:CSGπ¦XmNbuttonFontListβ Class:XmCButtonFontList, Type:XmFontList, Default:dynamic, Access:CSGπXmNbuttonRenderTableβ Class:XmCButtonRenderTable, Type:XmRenderTable, Default:dynamic, Access:CSGβ¨XmNdefaultFontListβ Class:XmCDefaultFontList, Type:XmFontList, Default:dynamic, Access:CGπΈXmNdeleteResponseβ Class:XmCDeleteResponse, Type:unsigned char, Default:XmDESTROY, Access:CSGπXmNinputMethodβ Class:XmCInputMethod, Type:String, Default:NULL, Access:CSGπ§XmNinputPolicyβ Class:XmCInputPolicy, Type:XmInputPolicy, Default:XmPER_SHELL, Access:CSGπ₯XmNkeyboardFocusPolicyβ Class:XmCKeyboardFocusPolicy, Type:unsigned char, Default:XmEXPLICIT, Access:CSGπXmNlabelFontListβ Class:XmCLabelFontList, Type:XmFontList, Default:dynamic, Access:CSGπXmNlabelRenderTableβ Class:XmCLabelRenderTabel, Type:XmRenderTable, Default:dynamic, Access:CSGπ«ΆXmNlayoutDirectionβ Class:XmCLayoutDirection, Type:XmDirection, Default:XmLEFT_TO_RIGHT, Access:CGπXmNmwmDecorationsβ Class:XmCMwmDecorations, Type:int, Default:-1, Access:CGπXmNmwmFunctionsβ Class:XmCMwmFunctions, Type:int, Default:-1, Access:CGβXmNmwmInputModeβ Class:XmCMwmInputMode, Type:int, Default:-1, Access:CGπ«XmNmwmMenuβ Class:XmCMwmMenu, Type:String, Default:NULL, Access:CGπXmNpreeditTypeβ Class:XmCPreeditType, Type:String, Default:dynamic, Access:CSGπΈXmNshellUnitTypeβ Class:XmCShellUnitType, Type:unsigned char, Default:XmPIXELS, Access:CSGπ¦XmNtextFontListβ Class:XmCTextFontList, Type:XmFontList, Default:dynamic, Access:CSGπXmNtextRenderTableβ Class:XmCTextRenderTable, Type:XmRenderTable, Default:dynamic, Access:CSGβ¨XmNunitTypeβ Class:XmCUnitType, Type:unsigned char, Default:XmPIXELS, Access:CSGπ₯XmNuseAsyncGeometryβ Class:XmCUseAsyncGeometry, Type:Boolean, Default:False, Access:CSGπ
WMShell Resource Set πβ¨
okay bestie, here's the entire resource lineup for the WMShell class β every name, every class, every type, every default, every access code. nothing skipped, nothing summarised, no cap π«Ά and yes, literally every single one of them is access CSG, so she's serving full create-set-get energy the whole way down π
XmNbaseHeightβ classXmCBaseHeight, typeint, defaultXtUnspecifiedShellInt, accessCSGβ base height, the name really said it all πXmNbaseWidthβ classXmCBaseWidth, typeint, defaultXtUnspecifiedShellInt, accessCSGβ and her twin sister, base width, matching energy πΈXmNheightIncβ classXmCHeightInc, typeint, defaultXtUnspecifiedShellInt, accessCSGβ height increment, the little steps, obsessedXmNiconMaskβ classXmCIconMask, typePixmap, defaultNULL, accessCSGβ a mask?? a pixmap?? defaultNULL?? mysterious main character behaviour πXmNiconPixmapβ classXmCIconPixmap, typePixmap, defaultNULL, accessCSGβ the icon pixmap herself, also starting out asNULLπXmNiconWindowβ classXmCIconWindow, typeWindow, defaultNULL, accessCSGβ icon window,NULLdefault, living her unset era β¨XmNiconXβ classXmCIconX, typeint, defaultXtUnspecifiedShellInt, accessCSGβ icon x, lowkey iconic πXmNiconYβ classXmCIconY, typeint, defaultXtUnspecifiedShellInt, accessCSGβ icon y, and together they're the coordinate duo fr frXmNinitialStateβ classXmCInitialState, typeint, defaultNormalState, accessCSGβ starts outNormalState, which is so real of her πXmNinputβ classXmCInput, typeBoolean, defaultTrue, accessCSGβTrueby default, she came ready to receive input bestie πXmNmaxAspectXβ classXmCMaxAspectX, typeint, defaultXtUnspecifiedShellInt, accessCSGβ max aspect x, part one of the aspect girliesXmNmaxAspectYβ classXmCMaxAspectY, typeint, defaultXtUnspecifiedShellInt, accessCSGβ max aspect y, part two π¦XmNmaxHeightβ classXmCMaxHeight, typeint, defaultXtUnspecifiedShellInt, accessCSGβ max height, she's got limits (literally)XmNmaxWidthβ classXmCMaxWidth, typeint, defaultXtUnspecifiedShellInt, accessCSGβ max width, same vibe, different axis β¨XmNminAspectXβ classXmCMinAspectX, typeint, defaultXtUnspecifiedShellInt, accessCSGβ min aspect x, the floor of the aspect situationXmNminAspectYβ classXmCMinAspectY, typeint, defaultXtUnspecifiedShellInt, accessCSGβ min aspect y, keeping it symmetrical πXmNminHeightβ classXmCMinHeight, typeint, defaultXtUnspecifiedShellInt, accessCSGβ min height, the smallest she's willing to goXmNminWidthβ classXmCMinWidth, typeint, defaultXtUnspecifiedShellInt, accessCSGβ min width, and that's the whole min/max arc complete πXmNtitleβ classXmCTitle, typeString, defaultdynamic, accessCSGβ title, and her default is literallydynamic, she keeps it moving πXmNtitleEncodingβ classXmCTitleEncoding, typeAtom, defaultdynamic, accessCSGβ title encoding, anAtom, alsodynamic, the encoding girlies ateXmNtransientβ classXmCTransient, typeBoolean, defaultFalse, accessCSGβFalseby default, she's not transient unless you say so πXmNwaitForWmβ classXmCWaitForWm, typeBoolean, defaultTrue, accessCSGβ waits for the window manager,Truedefault, patient queen πXmNwidthIncβ classXmCWidthInc, typeint, defaultXtUnspecifiedShellInt, accessCSGβ width increment, the horizontal sibling ofXmNheightIncπXmNwindowGroupβ classXmCWindowGroup, typeWindow, defaultdynamic, accessCSGβ window group,dynamicdefault, she rolls with her people π«ΆXmNwinGravityβ classXmCWinGravity, typeint, defaultdynamic, accessCSGβ win gravity,dynamic, she's got her own pull fr fr β¨XmNwmTimeoutβ classXmCWmTimeout, typeint, default5000 ms, accessCSGβ wm timeout,5000 ms, that's the clock bestie β³π₯
and yeah β every single row up there is CSG on access, no exceptions, no cap π
πΈ Shell Resource Set πΈ
okay bestie, here's the whole resource glow-up for the Shell widget class. every single one, no skips, no crumbs π
XmNallowShellResizeβ Class:XmCAllowShellResize, Type:Boolean, Default:False, Access:CGXmNcreatePopupChildProcβ Class:XmCCreatePopupChildProc, Type:XtCreatePopupChildProc, Default:NULL, Access:CSGXmNgeometryβ Class:XmCGeometry, Type:String, Default:NULL, Access:CSGXmNoverrideRedirectβ Class:XmCOverrideRedirect, Type:Boolean, Default:False, Access:CSGXmNpopdownCallbackβ Class:XmCCallback, Type:XtCallbackList, Default:NULL, Access:CXmNpopupCallbackβ Class:XmCCallback, Type:XtCallbackList, Default:NULL, Access:CXmNsaveUnderβ Class:XmCSaveUnder, Type:Boolean, Default:False, Access:CSGXmNvisualβ Class:XmCVisual, Type:Visual *, Default:CopyFromParent, Access:CSG
ngl, that littleAccesscolumn is doing so much work for us βCmeans you can set it at creation,Gmeans you can get it, andSmeans you can set it later withXtSetValues. iykyk β¨
π¦ Composite Resource Set π¦
and these? these are the ones the Composite class is bringing to the function, periodt. inheriting from Shell, but with its own whole vibe π
XmNchildrenβ Class:XmCReadOnly, Type:WidgetList, Default:NULL, Access:GXmNinsertPositionβ Class:XmCInsertPosition, Type:XtOrderProc, Default:NULL, Access:CSGXmNnumChildrenβ Class:XmCReadOnly, Type:Cardinal, Default:0, Access:G
notXmNchildrenandXmNnumChildrenboth being read-only... the way they just sit there being a whole list and a whole count and you can't even touch them π it's giving "look but don't touch" fr fr
β¨ Core Resource Set β¨
okay bestie, here's the whole roster, every single one of them, no skips π
XmNacceleratorsβ classXmCAccelerators, typeXtAccelerators, defaultdynamic, accessCSG.XmNancestorSensitiveβ classXmCSensitive, typeBoolean, defaultdynamic, accessG.XmNbackgroundβ classXmCBackground, typePixel, defaultdynamic, accessCSG.XmNbackgroundPixmapβ classXmCPixmap, typePixmap, defaultXmUNSPECIFIED_PIXMAP, accessCSG.XmNborderColorβ classXmCBorderColor, typePixel, defaultXtDefaultForeground, accessCSG.XmNborderPixmapβ classXmCPixmap, typePixmap, defaultXmUNSPECIFIED_PIXMAP, accessCSG.XmNborderWidthβ classXmCBorderWidth, typeDimension, default0, accessCSG.XmNcolormapβ classXmCColormap, typeColormap, defaultdynamic, accessCG.XmNdepthβ classXmCDepth, typeint, defaultdynamic, accessCG.XmNdestroyCallbackβ classXmCCallback, typeXtCallbackList, defaultNULL, accessC.XmNheightβ classXmCHeight, typeDimension, defaultdynamic, accessCSG.XmNinitialResourcesPersistentβ classXmCInitialResourcesPersistent, typeBoolean, defaultTrue, accessC.XmNmappedWhenManagedβ classXmCMappedWhenManaged, typeBoolean, defaultTrue, accessCSG.XmNscreenβ classXmCScreen, typeScreen *, defaultdynamic, accessCG.XmNsensitiveβ classXmCSensitive, typeBoolean, defaultTrue, accessCSG.XmNtranslationsβ classXmCTranslations, typeXtTranslations, defaultdynamic, accessCSG.XmNwidthβ classXmCWidth, typeDimension, defaultdynamic, accessCSG.XmNxβ classXmCPosition, typePosition, default0, accessCSG.XmNyβ classXmCPosition, typePosition, default0, accessCSG.
Translations π¦
There are no translations for TopLevelShell. literally none. the void. empty. not a single one, and that's just how it is π
RELATED π₯
go read these next, bestie, they're the whole friend group:
and that's the whole page, we did it π this was TopLevelShell, straight out of the library call manual, and yes the date/version lives down in the footer like always β consider yourself thoroughly read to filth and fully caught up. slay, go build something iconic with it πβ¨π
π¦ where this page comes from
- alpine 3.24: motif-doc 2.5.2-r0 Β· LGPL-2.1-or-later
- arch rolling: openmotif 2.3.8-4 Β· LGPL-2.1-or-later
- centos-stream 9: motif-devel 2.3.4-32.el9 Β· LGPLv2+
- centos-stream 9: motif-devel 2.3.4-32.el9 Β· LGPLv2+
- epel 10: motif-devel 2.3.8-2.el10_2 Β· LicenseRef-Callaway-LGPLv2+
- fedora 43: motif-devel 2.3.8-1.fc43 Β· LicenseRef-Callaway-LGPLv2+
- fedora 43: motif-devel 2.3.8-1.fc43 Β· LicenseRef-Callaway-LGPLv2+
- fedora 43: motif-devel 2.3.8-2.fc43 Β· LicenseRef-Callaway-LGPLv2+
- fedora 43: motif-devel 2.3.8-2.fc43 Β· LicenseRef-Callaway-LGPLv2+
- fedora 44: motif-devel 2.3.8-3.fc44 Β· LicenseRef-Callaway-LGPLv2+
- fedora 44: motif-devel 2.3.8-3.fc44 Β· LicenseRef-Callaway-LGPLv2+
- nixos 26.05: motif 2.3.8
- nixpkgs unstable: motif 2.3.8
- opensuse-leap 16.0: motif-devel 2.3.8-bp160.1.1 Β· LGPL-2.1-or-later
- opensuse-leap 16.0: motif-devel 2.3.8-bp160.1.1 Β· LGPL-2.1-or-later
- opensuse-leap 16.0: motif-devel 2.3.8-bp160.1.1 Β· LGPL-2.1-or-later
- opensuse-leap 16.0: motif-devel 2.3.8-bp160.1.1 Β· LGPL-2.1-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms