XMSEPARATORGADGET(3)
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 resourceXmNshadowThicknessgets used as the SeparatorGadget's thickness whenXmNseparatorTypeis one ofXmSHADOW_ETCHED_IN,XmSHADOW_ETCHED_IN_DASH,XmSHADOW_ETCHED_OUT, orXmSHADOW_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
XmNorXmCprefix and use the remaining letters - to specify one of the defined values for a resource, remove the
Xmprefix 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:CSGXmNorientationβ Class:XmCOrientation, Type:unsigned char, Default:XmHORIZONTAL, Access:CSGXmNseparatorTypeβ 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 ofXmNshadowThickness. For horizontal orientation, the top shadow is drawn inXmNtopShadowColorand the bottom shadow is drawn inXmNbottomShadowColor. For vertical orientation, the left edge is drawn inXmNtopShadowColorand the right edge is drawn inXmNbottomShadowColor.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 ofXmNshadowThickness. For horizontal orientation, the top shadow is drawn inXmNbottomShadowColorand the bottom shadow is drawn inXmNtopShadowColor. For vertical orientation, the left edge is drawn inXmNbottomShadowColorand the right edge is drawn inXmNtopShadowColor.XmSHADOW_ETCHED_IN_DASHβ identical toXmSHADOW_ETCHED_INexcept a series of lines creates a dashed line.XmSHADOW_ETCHED_OUT_DASHβ identical toXmSHADOW_ETCHED_OUTexcept 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β classXmCBackground, typePixel, default dynamic, accessCSGπΈXmNbackgroundPixmapβ classXmCPixmap, typePixmap, defaultXmUNSPECIFIED_PIXMAP, accessCSGπ¦XmNbottomShadowColorβ classXmCBottomShadowColor, typePixel, default dynamic, accessCSGπXmNbottomShadowPixmapβ classXmCBottomShadowPixmap, typePixmap, default dynamic, accessCSGβ¨XmNhelpCallbackβ classXmCCallback, typeXtCallbackList, defaultNULL, accessCπ«ΆXmNforegroundβ classXmCForeground, typePixel, default dynamic, accessCSGπXmNhighlightColorβ classXmCHighlightColor, typePixel, default dynamic, accessCSGβXmNhighlightOnEnterβ classXmCHighlightOnEnter, typeBoolean, defaultFalse, accessCSGπXmNhighlightPixmapβ classXmCHighlightPixmap, typePixmap, default dynamic, accessCSGπXmNhighlightThicknessβ classXmCHighlightThickness, typeDimension, default0, accessCSGπ§XmNlayoutDirectionβ classXmNCLayoutDirection, typeXmDirection, default dynamic, accessCGπXmNnavigationTypeβ classXmCNavigationType, typeXmNavigationType, defaultXmNONE, accessCSGπ¦XmNshadowThicknessβ classXmCShadowThickness, typeDimension, default2, accessCSGπXmNtopShadowColorβ classXmCTopShadowColor, typePixel, default dynamic, accessCSGπΈXmNtopShadowPixmapβ classXmCTopShadowPixmap, typePixmap, default dynamic, accessCSGπ₯XmNtraversalOnβ classXmCTraversalOn, typeBoolean, defaultFalse, accessGπXmNunitTypeβ classXmCUnitType, typeunsigned char, default dynamic, accessCSGπXmNuserDataβ classXmCUserData, typeXtPointer, defaultNULL, accessCSGπ«Ά
quick vibe check: yes, the class forXmNlayoutDirectionreally is spelledXmNCLayoutDirection, and the access isCG, notCSG. 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β classXmCSensitive, typeBoolean, default dynamic, accessGβ¨XmNborderWidthβ classXmCBorderWidth, typeDimension, default0, accessN/AπXmNheightβ classXmCHeight, typeDimension, default dynamic, accessCSGπΈXmNsensitiveβ classXmCSensitive, typeBoolean, defaultTrue, accessCSGπXmNwidthβ classXmCWidth, typeDimension, default dynamic, accessCSGπXmNxβ classXmCPosition, typePosition, default0, accessCSGβXmNyβ classXmCPosition, typePosition, default0, accessCSGπ
heads up:XmNancestorSensitiveandXmNsensitiveshare the exact same class,XmCSensitive. that's not me being lazy, that's just how it is. andXmNborderWidth's access is literallyN/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 isXmCCallback, type isXtCallbackList, default isNULL, and access isC.
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 πβ¨
π RELATED π
go read these next, they're all in the same friend group and they're all obsessed with each other π«Ά
Object(3)RectObj(3)XmCreateSeparatorGadget(3)XmGadget(3)XmVaCreateSeparatorGadget(3)XmVaCreateManagedSeparatorGadget(3)
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 ππ
β¨
π¦ 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