WMSHELL(3)
πΈ WMShell β bestie, it's a whole widget class πΈ
okay so this is the manual page for WMShell, the WMShell widget class, and we are gonna get through it together. it's long. it's giving β¨reference materialβ¨. but it's so worth it, i promise. π
β¨ NAME β¨
WMShell β The WMShell widget class
periodt. that's her. that's the name. π
π SYNOPSIS π
#include <Xm/Xm.h>
#include <X11/Shell.h>
like yes, you include both. no you cannot skip one. bestie the second one is literally where the shell stuff lives. π
π¦ DESCRIPTION π¦
so WMShell is a top-level widget β main character energy, obviously β and what she does is encapsulate the interaction with the window manager. that's the whole vibe. she's the one talking to the WM so you don't have to. π
π§ Classes π§
WMShell inherits behavior and resources from the Core, Composite, and Shell classes. so she's got layers. she's complex. she's a whole family tree. πΈ
the class pointer is wmShellWidgetClass.
the class name is WMShell.
ngl, remembering which one is the pointer and which one is the name is the whole game. pointer = lowercase-firstwmShellWidgetClass. class name =WMShell. don't mix them up, bestie. π
π New Resources π
okay here's the big one. the following table defines a set of widget resources used by the programmer to specify data. the programmer can also set the resource values for the inherited classes to set attributes for this widget. so you're not locked out of the family resources β you get those too. π
here's the lil cheat code for your .Xdefaults file, and it's genuinely iconic:
- to reference a resource by name or by class in a
.Xdefaultsfile, remove theXmNorXmCprefix and use the remaining letters. - to specify one of the defined values for a resource in a
.Xdefaultsfile, remove theXmprefix and use the remaining letters β in either lowercase or uppercase, but include any underscores between words. don't forget the underscores. fr fr.
and the codes in the access column? they tell you what you're allowed to do with the resource:
Cβ can be set at creation timeSβ can be set by usingXtSetValuesGβ can be retrieved by usingXtGetValuesN/Aβ not applicable
so CSG means all three, slay. π₯
π WMShell Resource Set π
XmNbaseHeight/XmCBaseHeightβ typeint, defaultXtUnspecifiedShellInt, accessCSGXmNbaseWidth/XmCBaseWidthβ typeint, defaultXtUnspecifiedShellInt, accessCSGXmNheightInc/XmCHeightIncβ typeint, defaultXtUnspecifiedShellInt, accessCSGXmNiconMask/XmCIconMaskβ typePixmap, defaultNULL, accessCSGXmNiconPixmap/XmCIconPixmapβ typePixmap, defaultNULL, accessCSGXmNiconWindow/XmCIconWindowβ typeWindow, defaultNULL, accessCSGXmNiconX/XmCIconXβ typeint, defaultXtUnspecifiedShellInt, accessCSGXmNiconY/XmCIconYβ typeint, defaultXtUnspecifiedShellInt, accessCSGXmNinitialState/XmCInitialStateβ typeint, defaultNormalState, accessCSGXmNinput/XmCInputβ typeBoolean, defaultFalse, accessCSGXmNmaxAspectX/XmCMaxAspectXβ typeint, defaultXtUnspecifiedShellInt, accessCSGXmNmaxAspectY/XmCMaxAspectYβ typeint, defaultXtUnspecifiedShellInt, accessCSGXmNmaxHeight/XmCMaxHeightβ typeint, defaultXtUnspecifiedShellInt, accessCSGXmNmaxWidth/XmCMaxWidthβ typeint, defaultXtUnspecifiedShellInt, accessCSGXmNminAspectX/XmCMinAspectXβ typeint, defaultXtUnspecifiedShellInt, accessCSGXmNminAspectY/XmCMinAspectYβ typeint, defaultXtUnspecifiedShellInt, accessCSGXmNminHeight/XmCMinHeightβ typeint, defaultXtUnspecifiedShellInt, accessCSGXmNminWidth/XmCMinWidthβ typeint, defaultXtUnspecifiedShellInt, accessCSGXmNtitle/XmCTitleβ typeString, defaultdynamic, accessCSGXmNtitleEncoding/XmCTitleEncodingβ typeAtom, defaultdynamic, accessCSGXmNtransient/XmCTransientβ typeBoolean, defaultFalse, accessCSGXmNwaitForWm/XmCWaitForWmβ typeBoolean, defaultTrue, accessCSGXmNwidthInc/XmCWidthIncβ typeint, defaultXtUnspecifiedShellInt, accessCSGXmNwindowGroup/XmCWindowGroupβ typeWindow, defaultdynamic, accessCSGXmNwinGravity/XmCWinGravityβ typeint, defaultdynamic, accessCSGXmNwmTimeout/XmCWmTimeoutβ typeint, default5000 ms, accessCSG
lowkey notice how every single one of them isCSG? yeah. you can create it,XtSetValuesit, andXtGetValuesit. every last one. iconic behavior honestly. π
and that's it for the resource set β no more rows hiding anywhere, i counted twice. π
XmNbaseHeightβ the β¨baseβ¨ of a whole lil' progression of preferred heights that the window manager can use when it sizes this widget. So the preferred heights areXmNbaseHeightplus integral multiples ofXmNheightInc, minimumXmNminHeight, maximumXmNmaxHeight. And if you don't give it an initial value but you do give one forXmNbaseWidth, thenXmNbaseHeightgets set to0(zero) at the moment the widget is realized. iykyk πXmNbaseWidthβ same energy, but for widths, bestie π«Ά It's the base for a progression of preferred widths the window manager uses to size the widget. Preferred widths =XmNbaseWidthplus integral multiples ofXmNwidthInc, minXmNminWidth, maxXmNmaxWidth. If no initial value is supplied forXmNbaseWidthbut one is supplied forXmNbaseHeight, thenXmNbaseWidthis set to0(zero) when the widget is realized. Mirror moment, iconic.XmNheightIncβ the increment π for that progression of preferred heights the window manager uses in sizing. Preferred heights areXmNbaseHeightplus integral multiples ofXmNheightInc, with a minimum ofXmNminHeightand a maximum ofXmNmaxHeight. If no initial value is supplied forXmNheightIncbut one is supplied forXmNwidthInc, thenXmNheightIncis set to1when the widget is realized. not the default being1instead of0, the way it's giving consistency πXmNiconMaskβ specifies a bitmap that could be used by the window manager to clip theXmNiconPixmapbitmap, so the icon can be nonrectangular. slay πXmNiconPixmapβ specifies a bitmap that could be used by the window manager as the application's icon. cute.XmNiconWindowβ specifies the ID of a window that could be used by the window manager as the application's icon. window-as-icon, main character energy β¨XmNiconXβ a suitable place to put the application's icon; it's a hint to the window manager, in root window coordinates. β οΈ And because the window manager controls icon placement policy, this resource may be ignored. lowkey just a suggestion fr fr.XmNiconYβ same thing, the Y half of the vibe: a suitable place to put the application's icon, a hint to the window manager in root window coordinates. And again, the window manager owns icon placement policy, so this resource may be ignored. πXmNinitialStateβ the state the application wants the widget instance to start in. It must be one of the constantsNormalStateorIconicState. no third option, that's the whole menu πXmNinputβ the application's input model for this widget and its descendants. π The meaning of aTrueorFalsevalue here depends on whether aWM_TAKE_FOCUSatom is present or absent in theWM_PROTOCOLSproperty. Here's the whole tea:- No input β
XmNinputisFalse,WM_TAKE_FOCUSis Absent - Passive β
XmNinputisTrue,WM_TAKE_FOCUSis Absent - Locally active β
XmNinputisTrue,WM_TAKE_FOCUSis Present - Globally active β
XmNinputisFalse,WM_TAKE_FOCUSis Present
- No input β
For more info on input models, go read the X Consortium Standard Inter-Client Communication Conventions Manual (ICCCM). required reading bestie π
XmNmaxAspectXβ the numerator of the maximum aspect ratio (X/Y) the application wants the widget instance to have. π¦XmNmaxAspectYβ the denominator of the maximum aspect ratio (X/Y) the application wants the widget instance to have. the way X and Y are a whole couple πΈXmNmaxHeightβ the maximum height the application wants the widget instance to have.XmNmaxWidthβ the maximum width the application wants the widget instance to have.XmNminAspectXβ the numerator of the minimum aspect ratio (X/Y) the application wants the widget instance to have.XmNminAspectYβ the denominator of the minimum aspect ratio (X/Y) the application wants the widget instance to have.XmNminHeightβ the minimum height the application wants the widget instance to have.XmNminWidthβ the minimum width the application wants the widget instance to have.XmNtitleβ the application name the window manager displays. The default is the icon name, if specified; otherwise it's the name of the application. π¨ And whenXtGetValuesis called on this resource, the returned value is a pointer to the actual resource value and should not be freed. do not free it bestie, I am begging you πXmNtitleEncodingβ specifies a property type representing the encoding of theXmNtitlestring. 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; otherwise it'sCOMPOUND_TEXT. And the values of the encoding resources are not changed β they remainNone. the way it staysNoneregardless π iconic.XmNtransientβ a Boolean that'sTrueif the widget instance is transient, typically a popup on behalf of another widget. The window manager may treat a transient widget's window differently from other windows β for example, it may not iconify a transient window separately from its associated application. β οΈ Applications and users should not normally alter this resource. hands off, bestie πXmNwaitForWmβ whenTrue, it specifies that the Intrinsics waits the length of time given by theXmNwmTimeoutresource for the window manager to respond to certain actions, before assuming there's no window manager present at all. This resource gets altered by the Intrinsics as it receives β or fails to receive β responses from the window manager. it updates itself, we love a self-aware queen β¨XmNwidthIncβ the base for a progression of preferred widths the window manager uses in sizing the widget. The preferred widths areXmNbaseWidthplus integral multiples ofXmNwidthInc, with a minimum ofXmNminWidthand a maximum ofXmNmaxWidth. If no initial value is supplied forXmNwidthIncbut one is supplied forXmNheightInc, the value ofXmNwidthIncis set to1when the widget is realized. yep,1again πXmNwindowGroupβ the ID of a window this widget instance is associated with. By convention, this window is the "leader" of a group of windows. π A window manager may treat all the windows in a group some way β for example, it may always move or iconify them together. no cap.
If no initial value is specified, the value is set to the window of the first realized ancestor widget in the parent hierarchy when the widget is realized. And if a value of XtUnspecifiedWindowGroup is specified, no window group is set. π
XmNwinGravityβ the window gravity for the window manager to use when positioning the widget. If no initial value is specified, the value is set when the widget is realized. IfXmNgeometryis notNULL,XmNwinGravityis set to the window gravity returned byXWMGeometry. Otherwise,XmNwinGravityis set toNorthWestGravity. default corner behavior, so real of it πXmNwmTimeoutβ how long the Intrinsics waits for the window manager to respond to certain actions before assuming there is no window manager present. π¨ The value is in milliseconds and must not be negative. fr fr, don't do it.
𧬠Inherited Resources (the family tree moment)
WMShell inherits behavior and resources from the superclasses described in the following tables. For a complete description of each resource, go read the reference page for that superclass. passing the vibe check up the hierarchy π«Ά
π Shell Resource Set π
Okay bestie, here's the whole squad of resources the shell core brings to the party. Name, class, type, default, access β every single one of them, no skips, no cap. π«Ά
XmNallowShellResizeβ classXmCAllowShellResize, type Boolean, defaultFalse, accessCG.XmNcreatePopupChildProcβ classXmCCreatePopupChildProc, typeXtCreatePopupChildProc, defaultNULL, accessCSG.XmNgeometryβ classXmCGeometry, type String, defaultNULL, accessCSG.XmNoverrideRedirectβ classXmCOverrideRedirect, type Boolean, defaultFalse, accessCSG.XmNpopdownCallbackβ classXmCCallback, typeXtCallbackList, defaultNULL, accessC.XmNpopupCallbackβ classXmCCallback, typeXtCallbackList, defaultNULL, accessC.XmNsaveUnderβ classXmCSaveUnder, type Boolean, defaultFalse, accessCSG.XmNvisualβ classXmCVisual, typeVisual *, defaultCopyFromParent, accessCSG.
π Composite Resource Set π
And these are the ones the composite layer hands you β the little trio that manages the children situation. Very main character energy, very brief. β¨
XmNchildrenβ classXmCReadOnly, typeWidgetList, defaultNULL, accessG.XmNinsertPositionβ classXmCInsertPosition, typeXtOrderProc, defaultNULL, accessCSG.XmNnumChildrenβ classXmCReadOnly, type Cardinal, default0, accessG.
okay bestie, welcome to the resource era β¨ this is the whole Core Resource Set β every single one, no skips, no skimming, we are reading the whole menu π
πΈ Core Resource Set πΈ
Every resource gets its class, its type, its default, and its access β all of it, verbatim, because we do not leave details behind π«Ά
XmNacceleratorsβ classXmCAccelerators, typeXtAccelerators, defaultdynamic, accessCSGXmNancestorSensitiveβ classXmCSensitive, typeBoolean, defaultdynamic, accessGXmNbackgroundβ classXmCBackground, typePixel, defaultdynamic, accessCSGXmNbackgroundPixmapβ classXmCPixmap, typePixmap, defaultXmUNSPECIFIED_PIXMAP, accessCSGXmNborderColorβ classXmCBorderColor, typePixel, defaultXtDefaultForeground, accessCSGXmNborderPixmapβ classXmCPixmap, typePixmap, defaultXmUNSPECIFIED_PIXMAP, accessCSGXmNborderWidthβ classXmCBorderWidth, typeDimension, default0, accessCSGXmNcolormapβ classXmCColormap, typeColormap, defaultdynamic, accessCGXmNdepthβ classXmCDepth, typeint, defaultdynamic, accessCGXmNdestroyCallbackβ classXmCCallback, typeXtCallbackList, defaultNULL, accessCXmNheightβ classXmCHeight, typeDimension, defaultdynamic, accessCSGXmNinitialResourcesPersistentβ classXmCInitialResourcesPersistent, typeBoolean, defaultTrue, accessCXmNmappedWhenManagedβ classXmCMappedWhenManaged, typeBoolean, defaultTrue, accessCSGXmNscreenβ classXmCScreen, typeScreen *, defaultdynamic, accessCGXmNsensitiveβ classXmCSensitive, typeBoolean, defaultTrue, accessCSGXmNtranslationsβ classXmCTranslations, typeXtTranslations, defaultdynamic, accessCSGXmNwidthβ classXmCWidth, typeDimension, defaultdynamic, accessCSGXmNxβ classXmCPosition, typePosition, default0, accessCSGXmNyβ classXmCPosition, typePosition, default0, accessCSG
π Translations π
And here's the plot twist bestie: there are no translations for WMShell. That's it. That's the whole tea. Not a single one. The vibe check came back empty π
π RELATED π
go read those too, bestie, they're literally the friend group π
and that's the whole page, you ate it fr fr π
β¨ this one's a library call from WMShell β the source/version and date live on that little footer line down at the bottom of the page, so go give it a lil kiss for me π slay, periodt, bye bestie π¦
π¦ 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