XMSEPARATORGADGET(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

okay bestie, gather round πŸ’– this is the XmSeparatorGadget page, straight out of the library call corner of the manual, and it is genuinely so much more useful than its name lets on. it's a whole widget class, it separates your stuff, and it does it with style. let's get into it πŸŽ€


✨ NAME ✨

XmSeparatorGadget β€” the SeparatorGadget widget class πŸ’…


✨ SYNOPSIS ✨

#include <Xm/SeparatoG.h>

(yes, that's literally how it's spelled in the header. we don't fix it, we don't question it, we just include it exactly like that πŸ™ˆ)


✨ DESCRIPTION ✨

So the whole job of SeparatorGadget is separating items in a display. that's it, that's the gig. but she does it well β€” you get several line drawing styles to pick from, plus you can run her horizontal or vertical. choose your fighter ✨

Lines drawn inside the SeparatorGadget are automatically centered β€” no manual labor required, we love a self-sufficient icon πŸ‘‘:

  • for a horizontal orientation, the line gets centered within the height of the gadget
  • for a vertical orientation, the line gets centered within the width of the gadget

And here's a thing you need to know: if you hit her with an XtSetValues that sets a new XmNseparatorType, she resizes herself down to her minimal height (that's for horizontal orientation) or her minimal width (that's for vertical orientation) β€” unless you explicitly set height or width in that same XtSetValues call. so like, say what you mean or she'll decide for you 😭

important tea: SeparatorGadget does not draw shadows around the separator. instead, the Gadget resource XmNshadowThickness gets used as the SeparatorGadget's thickness when XmNseparatorType is one of XmSHADOW_ETCHED_IN, XmSHADOW_ETCHED_IN_DASH, XmSHADOW_ETCHED_OUT, or XmSHADOW_ETCHED_OUT_DASH.

Also: SeparatorGadget does not highlight, and she allows no traversing. the Gadget resource XmNtraversalOn is forced to False β€” she said not today 🚫✨. And she holds the XmQTmenuSavvy trait, which is a whole vibe iykyk.


🌸 Classes 🌸

SeparatorGadget inherits her behavior, resources, and traits from Object, RectObj, and XmGadget. she's built different but she's built on them, periodt.

  • the class pointer is xmSeparatorGadgetClass
  • the class name is XmSeparatorGadget

🌈 New Resources 🌈

okay so this next bit is a set of widget resources the programmer uses to specify data. you can also set resource values on the inherited classes to set attributes for this widget β€” do with that information what you will πŸ’–

Now for the naming rules in your .Xdefaults file, because there ARE rules:

  • to reference a resource by name or by class, remove the XmN or XmC prefix and use the remaining letters
  • to specify one of the defined values for a resource, remove the Xm prefix and use the remaining letters (lowercase or uppercase both fine, but keep the underscores between words)

And the access column codes, which tell you what you're allowed to do with each resource:

  • C β€” can be set at creation time
  • S β€” can be set by using XtSetValues
  • G β€” can be retrieved by using XtGetValues
  • N/A β€” not applicable

Here's the whole XmSeparatorGadget Resource Set β€” every single one, no skipping πŸŽ€:

  • XmNmargin β€” Class: XmCMargin, Type: Dimension, Default: 0, Access: CSG
  • XmNorientation β€” Class: XmCOrientation, Type: unsigned char, Default: XmHORIZONTAL, Access: CSG
  • XmNseparatorType β€” Class: XmCSeparatorType, Type: unsigned char, Default: XmSHADOW_ETCHED_IN, Access: CSG

πŸ’« XmNmargin πŸ’«

  • For horizontal orientation: specifies the space on the left and right sides between the border of SeparatorGadget and the line drawn.
  • For vertical orientation: specifies the space on the top and bottom between the border of SeparatorGadget and the line drawn.

πŸ’« XmNorientation πŸ’«

Specifies whether SeparatorGadget is displayed vertically or horizontally. this resource can have values of XmVERTICAL and XmHORIZONTAL. pick your lane bestie πŸ¦‹


πŸ’« XmNseparatorType πŸ’«

Specifies the type of line drawing to be done in the Separator widget. and ooooh she has options:

  • XmSINGLE_LINE β€” single line.
  • XmDOUBLE_LINE β€” double line.
  • XmSINGLE_DASHED_LINE β€” single-dashed line.
  • XmDOUBLE_DASHED_LINE β€” double-dashed line.
  • XmNO_LINE β€” no line. (yes, a separator with no line. it's giving minimalism, we support her πŸ’…)
  • XmSHADOW_ETCHED_IN β€” a line whose shadows give the effect of a line etched into the window. the thickness of the line is equal to the value of XmNshadowThickness. For horizontal orientation, the top shadow is drawn in XmNtopShadowColor and the bottom shadow is drawn in XmNbottomShadowColor. For vertical orientation, the left edge is drawn in XmNtopShadowColor and the right edge is drawn in XmNbottomShadowColor.
  • XmSHADOW_ETCHED_OUT β€” a line whose shadows give the effect of an etched line coming out of the window. the thickness of the line is equal to the value of XmNshadowThickness. For horizontal orientation, the top shadow is drawn in XmNbottomShadowColor and the bottom shadow is drawn in XmNtopShadowColor. For vertical orientation, the left edge is drawn in XmNbottomShadowColor and the right edge is drawn in XmNtopShadowColor.
  • XmSHADOW_ETCHED_IN_DASH β€” identical to XmSHADOW_ETCHED_IN except a series of lines creates a dashed line.
  • XmSHADOW_ETCHED_OUT_DASH β€” identical to XmSHADOW_ETCHED_OUT except a series of lines creates a dashed line.

(notice how IN and OUT literally swap the top and bottom shadow colors. that's not a typo, that's the whole trick 🧚)


🫢 Inherited Resources 🫢

SeparatorGadget inherits behavior and resources from the superclasses in the following tables. for a complete description of each resource, go read the reference page for that superclass β€” she's not gonna re-explain her family's whole lore here, that's what their own pages are for πŸ’œ

okay bestie, THIS is the part you screenshot and pin. two whole resource sets, every single name, class, type, default and access code, laid out so you can read it on your phone at 2am without going cross-eyed. no table (sad, I know, the box-drawing was cute) but every last cell is here, fr fr. πŸŽ€

✨ XmGadget Resource Set ✨

every row is: Name β†’ Class β†’ Type β†’ Default β†’ Access. five little facts per resource, no skips, no cap. πŸ’…

  • XmNbackground β†’ class XmCBackground, type Pixel, default dynamic, access CSG 🌸
  • XmNbackgroundPixmap β†’ class XmCPixmap, type Pixmap, default XmUNSPECIFIED_PIXMAP, access CSG πŸ¦‹
  • XmNbottomShadowColor β†’ class XmCBottomShadowColor, type Pixel, default dynamic, access CSG 🌈
  • XmNbottomShadowPixmap β†’ class XmCBottomShadowPixmap, type Pixmap, default dynamic, access CSG ✨
  • XmNhelpCallback β†’ class XmCCallback, type XtCallbackList, default NULL, access C 🫢
  • XmNforeground β†’ class XmCForeground, type Pixel, default dynamic, access CSG πŸ’–
  • XmNhighlightColor β†’ class XmCHighlightColor, type Pixel, default dynamic, access CSG ⭐
  • XmNhighlightOnEnter β†’ class XmCHighlightOnEnter, type Boolean, default False, access CSG πŸ’œ
  • XmNhighlightPixmap β†’ class XmCHighlightPixmap, type Pixmap, default dynamic, access CSG πŸŽ€
  • XmNhighlightThickness β†’ class XmCHighlightThickness, type Dimension, default 0, access CSG 🧚
  • XmNlayoutDirection β†’ class XmNCLayoutDirection, type XmDirection, default dynamic, access CG πŸ‘‘
  • XmNnavigationType β†’ class XmCNavigationType, type XmNavigationType, default XmNONE, access CSG πŸ¦‹
  • XmNshadowThickness β†’ class XmCShadowThickness, type Dimension, default 2, access CSG πŸ’…
  • XmNtopShadowColor β†’ class XmCTopShadowColor, type Pixel, default dynamic, access CSG 🌸
  • XmNtopShadowPixmap β†’ class XmCTopShadowPixmap, type Pixmap, default dynamic, access CSG πŸ”₯
  • XmNtraversalOn β†’ class XmCTraversalOn, type Boolean, default False, access G 🌈
  • XmNunitType β†’ class XmCUnitType, type unsigned char, default dynamic, access CSG πŸ’–
  • XmNuserData β†’ class XmCUserData, type XtPointer, default NULL, access CSG 🫢
quick vibe check: yes, the class for XmNlayoutDirection really is spelled XmNCLayoutDirection, and the access is CG, not CSG. not a typo on my end, that's literally what it says, keep it in your notes bestie. πŸ™ˆ

✨ RectObj Resource Set ✨

same deal, same order, same energy β€” Name β†’ Class β†’ Type β†’ Default β†’ Access. πŸ¦‹

  • XmNancestorSensitive β†’ class XmCSensitive, type Boolean, default dynamic, access G ✨
  • XmNborderWidth β†’ class XmCBorderWidth, type Dimension, default 0, access N/A πŸ’€
  • XmNheight β†’ class XmCHeight, type Dimension, default dynamic, access CSG 🌸
  • XmNsensitive β†’ class XmCSensitive, type Boolean, default True, 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 🌈
heads up: XmNancestorSensitive and XmNsensitive share the exact same class, XmCSensitive. that's not me being lazy, that's just how it is. and XmNborderWidth's access is literally N/A, so don't come for me. πŸ‘‘

πŸŽ€ Object Resource Set πŸŽ€

okay bestie, deep breath, because this is the entire resource set for this gadget. one (1) resource. that's it. she's minimal, she's lowkey, she ate πŸ’…

  • XmNdestroyCallback β€” class is XmCCallback, type is XtCallbackList, default is NULL, and access is C.
fr fr that's the whole table. no hidden extras, no secret flags, nothing. the vibe check passed with flying colors because there was basically nothing to check 🌸

πŸ’« Behavior πŸ’«

so what does XmSeparatorGadget actually do when you poke it, click it, resize it, whatever?

nothing. it has no behavior. zero. zilch. it is a gadget that simply is, and honestly? iconic. it's giving "I don't do anything and I don't have to." main character energy with no lines, no drama, no side quests. it just sits there being a separator and looking cute πŸŽ€βœ¨

go read these next, they're all in the same friend group and they're all obsessed with each other 🫢


and that's the whole page, bestie πŸ’– this is the XmSeparatorGadget(library call) page, and that little footer line down at the bottom is your source/version tag and your date stamp all rolled into one β€” not me being sentimental about a manpage footer 😭 go forth and separate things, you absolute legend πŸ‘‘πŸ’…βœ¨