TRANSIENTSHELL(3)

πŸ“¦
version 2.5.2 Β· 2 versions
, in alpine 3.24, arch rolling, centos-stream 9, epel 10, fedora 43, fedora 44, nixos 26.05, nixpkgs unstable, opensuse-leap 16.0

πŸ’– TransientShell β€” The TransientShell widget class πŸ’–

okay so bestie, welcome to the TransientShell page β€” it's a library call, so go grab a snack, we're reading the whole thing πŸ“


✨ NAME ✨

TransientShell β€” literally just the TransientShell widget class, that's the whole name, no notes πŸ’…


🌸 SYNOPSIS 🌸

#include <Xm/Xm.h>
#include <X11/Shell.h>

like, that's it. two includes and you're in 🫢


πŸ¦‹ DESCRIPTION πŸ¦‹

so TransientShell is the widget class you use for shell windows that the window manager can mess with and move around β€” but that are not allowed to be iconified on their own. periodt.

think about it: a DialogBox with no application behind it is giving... nothing. it makes no sense. so the window manager only iconifies these bad boys if the main application shell gets iconified. they go down together, they stay up together. iconic couple behavior fr fr πŸ‘‘


🌈 Classes 🌈

TransientShell inherits behavior and resources from these absolute legends:

  • Core
  • Composite
  • Shell
  • WMShell
  • VendorShell

the class pointer is transientShellWidgetClass ✨

the class name is TransientShell ✨


πŸŽ€ New Resources πŸŽ€

okay so this next bit is a whole set of widget resources that you β€” the programmer β€” get to use to specify data. and lowkey, you can also set the resource values for the inherited classes to set attributes on this widget. slay, options.

quick PSA on the .Xdefaults naming rules, because they're a whole vibe:

  • to reference a resource by name or by class in a .Xdefaults file, remove the XmN or XmC prefix and just 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 (lowercase or uppercase, either one, but do not skip the underscores between words).
  • the codes in the access column tell you whether a resource can be set at creation time (C), set using XtSetValues (S), retrieved using XtGetValues (G), or is not applicable (N/A).

also, heads up: on top of these new resources, TransientShell overrides the XmNsaveUnder resource in Shell and the XmNtransient resource in WMShell. not new, just redefined, okay? πŸ’…

here's the TransientShell Resource Set πŸ‘‡

  • XmNtransientFor β€” class: XmCTransientFor, type: Widget, default: NULL, access: CSG

and here's what that one actually does:

  • XmNtransientFor β€” specifies a widget that the shell acts as a pop-up for. and if this resource is NULL, or it's a widget that hasn't been realized yet? then XmNwindowGroup gets used instead. no cap, that's the fallback 🫢

🧚 Inherited Resources 🧚

TransientShell also inherits behavior and resources from all those superclasses we listed above, and they come in their own little sets of widget resources that you β€” yes, you β€” use to specify data. for a complete description of each resource, go read the reference page for that superclass. i'm not summarising 40 pages, bestie, i love you but no 😭

and the .Xdefaults rules are the same as before, so let me run it back:

  • reference a resource by name or class in a .Xdefaults file β†’ remove the XmN or XmC prefix, keep the remaining letters.
  • specify one of the defined values in a .Xdefaults file β†’ remove the Xm prefix, keep the remaining letters (lowercase or uppercase, your call, but keep the underscores between words).
  • the access column codes: set at creation time (C), set using XtSetValues (S), retrieved using XtGetValues (G), or not applicable (N/A).

✨ VendorShell Resource Set ✨

okay bestie, this is the whole resource table for VendorShell and honestly it's giving very much "main character energy" πŸ’…. Every row is a resource name, its class, its type, its default, and how you're allowed to touch it (that's the access column, iykyk). We're going in order, no skipping, no cap 🫢

  • 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 πŸ‘€ (yes bestie, the class is spelled XmCLabelRenderTabel β€” that's not a typo on my end, that's literally what the page says, we do NOT "fix" it 😭)
  • 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 ⭐
fr fr, that dynamic in the Default column? It means the actual default gets worked out at runtime, not a hardcoded value sitting there β€” that's just what the page says, so don't come for me 😌

okay bestie, the WMShell table is HERE and it's a whole mood β€” every single resource, class, type, default and access code, all of it, zero skips, we're not doing that today πŸ’…

πŸ¦‹ WMShell Resource Set πŸ¦‹

So real quick on how to read this: each line gives you the Name (the resource), its Class, its Type, its Default value, and its Access code. Every single one of these lives on the WMShell widget, and every single one has access CSG. Obsessed. Let's go:

  • XmNbaseHeight β€” class XmCBaseHeight, type int, default XtUnspecifiedShellInt, access CSG
  • XmNbaseWidth β€” class XmCBaseWidth, type int, default XtUnspecifiedShellInt, access CSG
  • XmNheightInc β€” class XmCHeightInc, type int, default XtUnspecifiedShellInt, access CSG
  • XmNiconMask β€” class XmCIconMask, type Pixmap, default NULL, access CSG
  • XmNiconPixmap β€” class XmCIconPixmap, type Pixmap, default NULL, access CSG
  • XmNiconWindow β€” class XmCIconWindow, type Window, default NULL, access CSG
  • XmNiconX β€” class XmCIconX, type int, default XtUnspecifiedShellInt, access CSG
  • XmNiconY β€” class XmCIconY, type int, default XtUnspecifiedShellInt, access CSG
  • XmNinitialState β€” class XmCInitialState, type int, default NormalState, access CSG
  • XmNinput β€” class XmCInput, type Boolean, default True, access CSG
  • XmNmaxAspectX β€” class XmCMaxAspectX, type int, default XtUnspecifiedShellInt, access CSG
  • XmNmaxAspectY β€” class XmCMaxAspectY, type int, default XtUnspecifiedShellInt, access CSG
  • XmNmaxHeight β€” class XmCMaxHeight, type int, default XtUnspecifiedShellInt, access CSG
  • XmNmaxWidth β€” class XmCMaxWidth, type int, default XtUnspecifiedShellInt, access CSG
  • XmNminAspectX β€” class XmCMinAspectX, type int, default XtUnspecifiedShellInt, access CSG
  • XmNminAspectY β€” class XmCMinAspectY, type int, default XtUnspecifiedShellInt, access CSG
  • XmNminHeight β€” class XmCMinHeight, type int, default XtUnspecifiedShellInt, access CSG
  • XmNminWidth β€” class XmCMinWidth, type int, default XtUnspecifiedShellInt, access CSG
  • XmNtitle β€” class XmCTitle, type String, default dynamic, access CSG
  • XmNtitleEncoding β€” class XmCTitleEncoding, type Atom, default dynamic, access CSG
  • XmNtransient β€” class XmCTransient, type Boolean, default True, access CSG
  • XmNwaitForWm β€” class XmCWaitForWm, type Boolean, default True, access CSG
  • XmNwidthInc β€” class XmCWidthInc, type int, default XtUnspecifiedShellInt, access CSG
  • XmNwindowGroup β€” class XmCWindowGroup, type Window, default dynamic, access CSG
  • XmNwinGravity β€” class XmCWinGravity, type int, default dynamic, access CSG
  • XmNwmTimeout β€” class XmCWmTimeout, type int, default 5000 ms, access CSG

and there's more where that came from bestie, don't you dare close the page πŸ’–


🌸 Shell Resource Set 🌸

okay bestie, these are the resources that come with the shell widget itself, and they are everything πŸ’… each one lists its Name, Class, Type, Default, and Access β€” write them down, no cap:

  • XmNallowShellResize β€” class XmCAllowShellResize, type Boolean, default False, access CG. like, by default she does NOT want to be resized, periodt.
  • XmNcreatePopupChildProc β€” class XmCCreatePopupChildProc, type XtCreatePopupChildProc, default NULL, access CSG. a lil callback proc for making popup children, and rn it's just vibing at NULL πŸ™ˆ
  • XmNgeometry β€” class XmCGeometry, type String, default NULL, access CSG. the geometry string, unset by default, iconic.
  • XmNoverrideRedirect β€” class XmCOverrideRedirect, type Boolean, default False, access CSG.
  • XmNpopdownCallback β€” class XmCCallback, type XtCallbackList, default NULL, access C. fires when she pops down πŸ¦‹
  • XmNpopupCallback β€” class XmCCallback, type XtCallbackList, default NULL, access C. fires when she pops up ✨ (sister resources, we love a matching set)
  • XmNsaveUnder β€” class XmCSaveUnder, type Boolean, default True, access CSG. she saves what's underneath, and yes that's the default, slay.
  • XmNvisual β€” class XmCVisual, type Visual *, default CopyFromParent, access CSG. it's giving "I just copied my parent, respectfully" πŸ’–

πŸŽ€ Composite Resource Set πŸŽ€

and these are the ones she inherits from composite, the little group-chat of child widgets 🫢 same deal β€” Name, Class, Type, Default, Access:

  • XmNchildren β€” class XmCReadOnly, type WidgetList, default NULL, access G. the list of children. read-only, so hands off bestie 😭
  • XmNinsertPosition β€” class XmCInsertPosition, type XtOrderProc, default NULL, access CSG. tells her where new kids get inserted into the lineup.
  • XmNnumChildren β€” class XmCReadOnly, type Cardinal, default 0, access G. how many children she has, also read-only, and she starts at 0 β€” we been knew πŸ’€

Okay so, resource buffet time πŸ’– this is the Core Resource Set β€” every single thing TransientShell gets from its Core ancestor. Name, class, type, default, access. All of it. No skips. We do not gatekeep here πŸ’…

The Access column shows which of the C, S, G access modes apply to each resource β€” whatever combo shows up is what you get, periodt.

  • XmNaccelerators β€” class XmCAccelerators, type XtAccelerators, default dynamic, access CSG
  • XmNancestorSensitive β€” class XmCSensitive, type Boolean, default dynamic, access G
  • XmNbackground β€” class XmCBackground, type Pixel, default dynamic, access CSG
  • XmNbackgroundPixmap β€” class XmCPixmap, type Pixmap, default XmUNSPECIFIED_PIXMAP, access CSG
  • XmNborderColor β€” class XmCBorderColor, type Pixel, default XtDefaultForeground, access CSG
  • XmNborderPixmap β€” class XmCPixmap, type Pixmap, default XmUNSPECIFIED_PIXMAP, access CSG
  • XmNborderWidth β€” class XmCBorderWidth, type Dimension, default 0, access CSG
  • XmNcolormap β€” class XmCColormap, type Colormap, default dynamic, access CG
  • XmNdepth β€” class XmCDepth, type int, default dynamic, access CG
  • XmNdestroyCallback β€” class XmCCallback, type XtCallbackList, default NULL, access C
  • XmNheight β€” class XmCHeight, type Dimension, default dynamic, access CSG
  • XmNinitialResourcesPersistent β€” class XmCInitialResourcesPersistent, type Boolean, default True, access C
  • XmNmappedWhenManaged β€” class XmCMappedWhenManaged, type Boolean, default True, access CSG
  • XmNscreen β€” class XmCScreen, type Screen *, default dynamic, access CG
  • XmNsensitive β€” class XmCSensitive, type Boolean, default True, access CSG
  • XmNtranslations β€” class XmCTranslations, type XtTranslations, default dynamic, access CSG
  • XmNwidth β€” class XmCWidth, type Dimension, default dynamic, access CSG
  • XmNx β€” class XmCPosition, type Position, default 0, access CSG
  • XmNy β€” class XmCPosition, type Position, default 0, access CSG

🌸 Translations 🌸

Bestie. Sit down. Deep breath. 🫢

There are no translations for TransientShell.

That's it. That's the whole section. Not a single one. The void stared back and it was giving absolutely nothing πŸ•³οΈβœ¨


The girlies and them that TransientShell hangs with πŸ‘‘ go read these next:


And that's the whole page, bestie β€” you ate it, every last resource, no crumbs πŸ’… Straight from the TransientShell(library call) manual, footer and all πŸŽ€ it's the library-call source line, so that's the pedigree, and the date on the tin is whatever your system stamped it with β€” go forth and shell, my love, you've got this πŸŒˆπŸ¦‹πŸ’–