DTWM(1)

πŸ“¦
version 2.5.3 Β· 2 versions
, in nixos 26.05

πŸ’– dtwm β€” The CDE Window Manager πŸ’–

Okay bestie, this is dtwm, from the (user cmd) manual section, and she is literally the CDE Window Manager. Buckle up, because we're doing window-management lore today. πŸŽ€


🌸 NAME 🌸

dtwm β€” The CDE Window Manager


✨ DESCRIPTION ✨

The dtwm window manager is an X Window System window manager based upon the Motif window manager, mwm (version 1.2.4). It provides mwm compatible window management functionality. This includes functions that facilitate control (by the user and the programmer) of elements of window state such as placement, size, icon/normal display, and input-focus ownership.

The dtwm window manager is an integral part of the CDE. It communicates with and facilitates access to other components in the environment, such as the Session Manager (dtsession(1)) and the Style Manager (dtstyle(1)). Many other components are started through interactions with the Front Panel.

In addition, dtwm provides workspace management. Workspaces provide a way of grouping together logically related windows. Each workspace is shown independent of the other workspaces so that only those windows related to the immediate task are visible. Workspaces give you a tool to organize windows by task and make efficient use of screen real estate. 🫢

πŸŽ€ Options πŸŽ€

  • -display display β€” This option specifies the display to use; see X(1).
  • -xrm resourcestring β€” This option specifies a resource string to use.
  • -multiscreen β€” This option causes dtwm to manage all screens on the display. Since dtwm does this by default, this option is of limited use. See the multiScreen resource for information on managing a single screen.
  • -name name β€” This option causes dtwm to retrieve its resources using the specified name, as in name*resource.
  • -screens name [name [...]] β€” This option specifies the resource names to use for the screens managed by dtwm. If dtwm is managing a single screen, only the first name in the list is used. If dtwm is managing multiple screens, the names are assigned to the screens in order, starting with screen 0. Screen 0 gets the first name, screen 1 the second name, and so on.

πŸš€ Startup πŸš€

Normally, the session manager dtsession starts up dtwm. You can alter the command line for the window manager via the wmStartupCommand resource for the session manager (see dtsession(1)). Similarly, you can affect the behavior of dtwm by saving resources for dtwm as part of your session.

🎨 Appearance 🎨

The following sections describe the basic default behaviors of windows, icons, the icon box, input focus, and window stacking. The appearance and behavior of the window manager can be altered by changing the configuration of specific resources. Resources are defined under the heading "X DEFAULTS."

🌈 Screens 🌈

By default, dtwm manages only the single screen specified by the -display option or the DISPLAY environment variable (by default, screen 0). If the -multiscreen option is specified or if the multiScreen resource is True, dtwm tries to manage all the screens on the display.

When dtwm is managing multiple screens, the -screens option can be used to give each screen a unique resource name. The names are separated by blanks, for example, -screens scr0 scr1. If there are more screens than names, resources for the remaining screens will be retrieved using the first name. By default, the screen number is used for the screen name.

πŸͺŸ Windows πŸͺŸ

Default dtwm window frames have distinct components with associated functions:

Title Area

In addition to displaying the client's title, the title area is used to move the window. To move the window, place the pointer over the title area, press button 1 and drag the window to a new location. By default, a wire frame is moved during the drag to indicate the new location. When the button is released, the window is moved to the new location.

Title Bar

The title bar includes the title area, the minimize button, the maximize button, and the window menu button. In shaped windows, such as round windows, the title bar floats above the window.

Minimize Button

To turn the window into an icon, click button 1 on the minimize button (the frame box with a small square in it).

Maximize Button

To make the window fill the screen (or enlarge to the largest size allowed by the configuration files), click button 1 on the maximize button (the frame box with a large square in it).

Window Menu Button

The window menu button is the frame box with a horizontal bar in it. To pull down the window menu, press button 1. While pressing, drag the pointer on the menu to your selection, then release the button when your selection is highlighted. Pressing button 3 in the title bar or resize border handles also posts the window menu. Alternately, you can click button 1 to pull down the menu and keep it posted; then position the pointer and select. You can also post the window menu by pressing Shift+Esc or Alt+Space. Double-clicking button 1 with the pointer on the window menu button closes the window.

The following table lists the contents of the window menu.

πŸ’… Default Window Menu πŸ’…

  • Restore β€” Restores the window to its size before minimizing or maximizing.
  • Move β€” Allows the window to be moved with keys or mouse.
  • Size β€” Allows the window to be resized.
  • Minimize β€” Turns the window into an icon.
  • Maximize β€” Makes the window fill the screen.
  • Lower β€” Moves window to bottom of window stack.
  • Occupy Workspace... β€” Display the Occupy Workspace dialog to change the workspaces in which the window appears.
  • Occupy All Workspaces β€” Put the window in all workspaces.
  • Unoccupy Workspace β€” Remove the window from the current workspace if the window is in more than one workspace.
  • Close β€” Accelerator Alt+F4 β€” Causes client to terminate.

(source table artifact: tgroup dispwid="6.03in" β€” layout crumb, not a command, bestie πŸ“)

Resize Border Handles

To change the size of a window, move the pointer over a resize border handle (the cursor changes), press button 1, and drag the window to a new size. When the button is released, the window is resized. While dragging is being done, a rubber-band outline is displayed to indicate the new window size.

Matte

An optional matte decoration can be added between the client area and the window frame (see the matteWidth resource). A matte is not actually part of the window frame. There is no functionality associated with a matte.

🧸 Icons 🧸

Icons are small graphic representations of windows. A window can be minimized (iconified) using the minimize button on the window frame. Icons provide a way to reduce clutter on the screen. ✨

Pressing mouse button 1 when the pointer is over an icon causes the icon's window menu to pop up. Releasing the button (press + release without moving mouse = click) causes the menu to stay posted. The menu contains the following selections:

πŸ“ Icon Window Menu πŸ“

  • Restore β€” Opens the associated window.
  • Move β€” Allows the icon to be moved with keys.
  • Size β€” Inactive (not an option for icons).
  • Minimize β€” Inactive (not an option for icons).
  • Maximize β€” Opens the associated window and makes it fill the screen.
  • Lower β€” Moves icon to bottom of icon stack.
  • Close β€” Accelerator Alt+F4 β€” Removes client from dtwm management.

(source table artifact: tgroup dispwid="6.07in" β€” more layout crumbs, not a command πŸ“)

Note that pressing button 3 over an icon also causes the icon's window menu to pop up. To make a menu selection, drag the pointer over the menu and release button 3 when the desired item is highlighted.

Double-clicking button 1 on an icon invokes the f.restore_and_raise function and restores the icon's associated window to its previous state. For example, if a maximized window is iconified, double-clicking button 1 restores it to its maximized state. Double-clicking button 1 on the icon box's icon opens the icon box and allows access to the contained icons. (In general, double-clicking a mouse button is a quick way to perform a function.) Pressing Shift+Esc or Menu (the pop-up menu key) causes the icon window menu of the currently selected icon to pop up.

πŸ¦‹ Icon Box πŸ¦‹

When icons begin to clutter the screen, they can be packed into an icon box. (To use an icon box, dtwm must be started with the icon box configuration already set.) The icon box is a dtwm window that holds client icons. It includes one or more scroll bars when there are more window icons than the icon box can show at the same time.

Icons in the icon box can be manipulated with the mouse. The following table summarizes the behavior of this interface. Button actions apply whenever the pointer is on any part of the icon. Note that double-clicking an icon in the icon box invokes the f.restore_and_raise function.

  • Button 1 β€” click β€” Selects the icon.
  • Button 1 β€” double-click β€” Normalizes (opens) the associated window. Raises an already open window to the top of the stack.
  • Button 1 β€” drag β€” Moves the icon.
  • Button 3 β€” press β€” Causes the menu for that icon to pop up.
  • Button 3 β€” drag β€” Highlights items as the pointer moves across the menu.

(source table artifact: tgroup dispwid="6.03in" β€” yep, another layout crumb πŸ“)

Pressing mouse button 3 when the pointer is over an icon causes the menu for that icon to pop up.

  • Restore β€” opens the associated window (if it's not already open, no worries).
  • Move β€” lets you move the icon around with your keys 🎹
  • Size β€” inactive. like, it's giving nothing, it does zero things πŸ’€
  • Minimize β€” also inactive. ngl neither of these are doing anything bestie
  • Maximize β€” opens the associated window (again, only if it's not already open) and then maximizes its size. main character energy fr ✨
  • Lower β€” inactive πŸ™ˆ
  • Close β€” Alt+F4 β€” removes the client from dtwm management.

(tgroup dispwid="6.03in" β€” that's just table markup, not a vibe, ignore it πŸ’…)


To pull down the window menu for the icon box itself, press button 1 with the pointer hovering over the menu button for the icon box. And heads up β€” the icon box's window menu is not a copy of a client window's window menu: the "Close" selection gets swapped out for the "PackIcons Shift+Alt+F7" selection. When you pick it, PackIcons packs the icons in the box so you get neat rows with no empty slots. tidy queen behavior 🧹✨

You can also post the window menu by pressing Shift+Esc or Alt+Space. And pressing Menu (that's the pop-up menu key) pops up the icon window menu of whichever icon is currently selected. iykyk πŸŽ€


🌸 Input Focus 🌸

So dtwm supports β€” by default β€” a keyboard input focus policy of explicit selection. What that means in human: once a window is selected to get keyboard input, it keeps getting keyboard input until one of these three things happens 😌

  1. the window is withdrawn from window management,
  2. another window is explicitly selected to get keyboard input,
  3. or the window is iconified.

Several resources control the input focus, jsyk. And the client window that has keyboard input focus gets the active window appearance, with a window frame that's visually distinct β€” you literally cannot miss it πŸ‘‘

The following tables summarize the keyboard input focus selection behavior:

  • Button 1, press, on a Window / window frame β†’ keyboard focus selection.
  • Button 1, press, on an Icon β†’ keyboard focus selection.

And for the keys:

  • Alt+Tab β†’ move input focus to the next window in the window stack (available only in explicit focus mode).
  • Alt+Shift+Tab β†’ move input focus to the previous window in the window stack (available only in explicit focus mode).

(tgroup dispwid="6.03in" again. still just markup. still not invited to the party 🫢)


πŸ¦‹ Window Stacking πŸ¦‹

There are two types of window stacks, and yes you need to know both:

  • global window stacks
  • an application's local family window stack

The global stacking order of windows may get changed as a result of setting the keyboard input focus, iconifying a window, or performing a window manager window stacking function. When the keyboard focus policy is explicit, the default value of the focusAutoRaise resource is True. That means a window gets raised to the top of the stack the moment it receives input focus β€” for example, when you press button 1 on the title bar. So the key actions in that table up above? They'll raise the window receiving focus right to the top of the stack. slay πŸ”₯

In pointer mode, the default value of focusAutoRaise is False β€” so the window stacking order does not change when a window receives keyboard input focus. The following key actions can be used to cycle through the global window stack:

  • Alt+ESC β†’ place the top window on the bottom of the stack.
  • Alt+Shift+ESC β†’ place the bottom window on the top of the stack.

By default, a window's icon gets placed on the bottom of the stack when the window is iconified β€” but that default is changeable via the lowerOnIconify resource. customizable, we love to see it πŸ’–

Now, transient windows (secondary windows such as dialog boxes) stay above their parent windows by default. But an application's local family stacking order may be changed to allow a transient window to be placed below its parent top-level window. The following arguments show the modification of the stacking order for the f.lower function:

  • f.lower β€” lowers the transient window within the family (staying above the parent) and lowers the family in the global window stack.
  • f.lower [ within] β€” lowers the transient window within the family (staying above the parent) but does not lower the family in the global window stack.
  • f.lower [freeFamily ] β€” lowers the window free from its family stack (below the parent), but does not lower the family in the global window stack.

The arguments within and freeFamily can also be used with f.raise and f.raise_lower. chef's kiss, so versatile πŸ“


✨ X Resources ✨

The dtwm command is configured from its resource database. That database is built from the following sources, and yes the order matters β€” they're listed in order of precedence, low to high:

  1. /nix/store/6waxpwr8lzfzc9ka48gl7yh60rqvlkdb-cde-2.5.3/app-defaults/$LANG/Dtwm
  2. $HOME/Dtwm
  3. RESOURCE_MANAGER root window property or $HOME/.Xdefaults
  4. XENVIRONMENT variable or $HOME/.Xdefaults-host
  5. dtwm command line options

The file names /nix/store/6waxpwr8lzfzc9ka48gl7yh60rqvlkdb-cde-2.5.3/app-defaults/$LANG/Dtwm and $HOME/Dtwm represent customary locations for these files. But like β€” the actual location of the system-wide class resource file may depend on the XFILESEARCHPATH environment variable and the current language environment. Same situation for the user-specific class resource file: its actual location may depend on the XUSERFILESEARCHPATH and XAPPLRESDIR environment variables and the current language environment. paths get complicated, we stay flexible 🌈

Entries in the resource database may refer to other resource files for specific types of resources. These include files that contain bitmaps, fonts, and dtwm-specific resources such as menus and behavior specifications (for example, button and key bindings). it's giving ecosystem πŸ¦‹

Dtwm is the resource class name of dtwm, and dtwm is the default resource name used by dtwm to look up resources. (The -screens command line option specifies resource names, such as "dtwm_b+w" and "dtwm_color".) In the following discussion of resource specification, "Dtwm" and "dtwm" (and the aliased dtwm resource names) can be used interchangeably β€” but "dtwm" takes precedence over "Dtwm". noted. memorized. tattooed πŸ’…

The dtwm command uses the following types of resources:

  • Component Appearance Resources β€” these resources specify appearance attributes of window manager user interface components. They can be applied to the appearance of window manager menus, feedback windows (for example, the window reconfiguration feedback window), client window frames, and icons.
  • General Appearance and Behavior Resources β€” these resources specify dtwm appearance and behavior (for example, window management policies). They are not set separately for different dtwm user interface components. They apply to all screens and workspaces.
  • Screen Specific Appearance and Behavior Resources β€” these resources specify the appearance and behavior of dtwm elements that are settable on a per-screen basis.
  • Client Specific Resources β€” these dtwm resources can be set for a particular client window or class of client windows. They specify client-specific icon and client window frame appearance and behavior.
  • Workspace Specific Resources β€” these resources specify the appearance of dtwm elements that are settable on a per-workspace basis.

Resource identifiers can be either a resource name (for example, foreground) or a resource class (for example, Foreground). And if the value of a resource is a filename and that filename is prefixed by "~/", then it's relative to the path contained in the HOME environment variable (generally the user's home directory). home sweet home 🏠


πŸŽ€ Component Appearance Resources πŸŽ€

The syntax for specifying component appearance resources that apply to window manager icons, menus, and client window frames is:

Dtwm*resource_id

For example, Dtwm*foreground is used to specify the foreground color for dtwm menus, icons, client window frames, and feedback dialogs. one resource to style them all ✨

The syntax for specifying component appearance resources that apply to a particular dtwm component is:

Dtwm*[menu|icon|client|feedback]*resource_id

If menu is specified, the resource is applied only to dtwm menus; if icon is specified, the resource is applied to icons; and if client is specified, the resource is applied to client window frames. For example, Dtwm*icon*foreground is used to specify the foreground color for dtwm icons, Dtwm*menu*foreground specifies the foreground color for dtwm menus, and Dtwm*client*foreground is used to specify the foreground color for dtwm client window frames. mix and match, that's the vibe 🎨

The appearance of the title area of a client window frame (including window management buttons) can be separately configured. The syntax for configuring the title area of a client window frame is:

Dtwm*client*title*resource_id

For example, Dtwm*client*title*foreground specifies the foreground color for the title area. Defaults for title area resources are based on the values of the corresponding client window frame resources. so it inherits, it doesn't reinvent β€” queen behavior πŸ‘‘

The appearance of menus can be configured based on the name of the menu. The syntax for specifying menu appearance by name is:

Dtwm*menu*menu_name*resource_id

For example, Dtwm*menu*my_menu*foreground specifies the foreground color for the menu named my_menu. The user can also specify resources for window manager menu components β€” that is, the gadgets that comprise the menu. These may include, for example, a menu title, title separator, one or more buttons, and separators. If a menu contains more than one instance of a class, such as multiple PushButtonGadgets, the name of the first instance is "PushButtonGadget1", the second is "PushButtonGadget2", and so on. The following list identifies the naming convention used for window manager menu components:

  • Menu Title LabelGadget β€” "TitleName"
  • Menu Title SeparatorGadget β€” "TitleSeparator"
  • CascadeButtonGadget β€” "CascadeButtonGadget<n>"
  • PushButtonGadget β€” "PushButtonGadget<n>"
  • SeparatorGadget β€” "SeparatorGadget<n>"

Refer to the man page for each class for a list of resources that can be specified. (yes, you're gonna be manpage-hopping. it's a lifestyle 🧚)

The following component appearance resources that apply to all window manager parts can be specified:

✨ COMPONENT APPEARANCE RESOURCES β€” ALL WINDOW MANAGER PARTS ✨

okay bestie, this chunk is the glow-up section πŸ’… it's all the resources that control how dtwm looks, and they apply to every window manager part. here's the whole roster, no gatekeeping:

  • background β€” class Background, value type color, default varies†
  • backgroundPixmap β€” class BackgroundPixmap, value type string††, default varies†
  • bottomShadowColor β€” class Foreground, value type color, default varies†
  • bottomShadowPixmap β€” class Foreground, value type string††, default varies†
  • fontList β€” class FontList, value type string†††, default "fixed"
  • foreground β€” class Foreground, value type color, default varies†
  • saveUnder β€” class SaveUnder, value type T/F, default F
  • topShadowColor β€” class Background, value type color, default varies†
  • topShadowPixmap β€” class TopShadowPixmap, value type string††, default varies†

(and yes, the original table literally says tgroup dispwid="5.78in" at the bottom, so there it is, preserved for the archivists 🫢)

the footnotes, bestie, do not skip them:

  • † the default is chosen based on the visual type of the screen.
  • †† image name. see XmInstallImage(3).
  • ††† X11 X Logical Font Description

  • background (class Background) β€” sets the background color. any legal X color works, no cap 🌈 the default? you guessed it, chosen based on the visual type of the screen.
  • backgroundPixmap (class BackgroundPixmap) β€” sets the background Pixmap of the dtwm decoration for when the window is inactive (i.e. it does not have the keyboard focus 😴). default chosen based on the visual type of the screen.
  • bottomShadowColor (class Foreground) β€” the bottom shadow color, used for the lower and right bevels of the window manager decoration. any legal X color, periodt. default chosen based on the visual type of the screen.
  • bottomShadowPixmap (class BottomShadowPixmap) β€” the bottom shadow Pixmap, also for the lower and right bevels of the decoration. default chosen based on the visual type of the screen.
  • fontList (class FontList) β€” the font used in the window manager decoration πŸ”€ important vibes check: the character encoding of the font should match the character encoding of the strings being used. default is "fixed."
  • foreground (class Foreground) β€” the foreground color. default chosen based on the visual type of the screen.
  • saveUnder (class SaveUnder) β€” whether "save unders" get used for dtwm components. ⚠️ heads up: for this to do anything, save unders must actually be implemented by the X server. if they are, the X server saves the contents of windows obscured by windows that have the save under attribute set. if saveUnder is True, dtwm sets the save under attribute on the window manager frame of any client that has it set. if it's False, save unders won't be used on any window manager frames. default value is False.
  • topShadowColor (class Background) β€” the top shadow color, used for the upper and left bevels of the decoration ✨ default chosen based on the visual type of the screen.
  • topShadowPixmap (class TopShadowPixmap) β€” the top shadow Pixmap, for the upper and left bevels of the decoration. default chosen based on the visual type of the screen.

the following component appearance resources apply to frame and icons, and yeah you can absolutely specify them πŸ‘‘

πŸŽ€ FRAME AND ICON COMPONENTS πŸŽ€

  • activeBackground β€” class Background, value type color, default varies†
  • activeBackgroundPixmap β€” class BackgroundPixmap, value type string††, default varies†
  • activeBottomShadowColor β€” class Foreground, value type color, default varies†
  • activeBottomShadowPixmap β€” class BottomShadowPixmap, value type string††, default varies†
  • activeForeground β€” class Foreground, value type color, default varies†
  • activeTopShadowColor β€” class Background, value type color, default varies†
  • activeTopShadowPixmap β€” class TopShadowPixmap, value type string††, default varies†

(again, the original table's parting gift: tgroup dispwid="6.05in" πŸ’€ kept for accuracy)

footnotes round two:

  • † the default is chosen based on the visual type of the screen.
  • †† see XmInstallImage(3).

  • activeBackground (class Background) β€” the background color of the dtwm decoration when the window is active (has the keyboard focus) πŸ”₯ default chosen based on the visual type of the screen.
  • activeBackgroundPixmap (class ActiveBackgroundPixmap) β€” the background Pixmap of the dtwm decoration when the window is active (has the keyboard focus). default chosen based on the visual type of the screen.
  • activeBottomShadowColor (class Foreground) β€” the bottom shadow color of the dtwm decoration when the window is active (has the keyboard focus). default chosen based on the visual type of the screen.
  • activeBottomShadowPixmap (class BottomShadowPixmap) β€” the bottom shadow Pixmap of the dtwm decoration when the window is active (has the keyboard focus). default chosen based on the visual type of the screen.
  • activeForeground (class Foreground) β€” the foreground color of the dtwm decoration when the window is active (has the keyboard focus). default chosen based on the visual type of the screen.
  • activeTopShadowColor (class Background) β€” the top shadow color of the dtwm decoration when the window is active (has the keyboard focus). default chosen based on the visual type of the screen.
  • activeTopShadowPixmap (class TopShadowPixmap) β€” the top shadow Pixmap of the dtwm decoration when the window is active (has the keyboard focus). default chosen based on the visual type of the screen.

🌸 GENERAL APPEARANCE AND BEHAVIOR RESOURCES 🌸

the syntax for specifying these is, and I quote, this exact thing:

Dtwm*resource_id

like, for example, Dtwm*keyboardFocusPolicy specifies the window manager policy for setting the keyboard focus to a particular client window. cute, right? πŸ¦‹

the following general appearance and behavior resources can be specified:

🌈 GENERAL APPEARANCE AND BEHAVIOR RESOURCES 🌈

(yes, the heading repeats in the original β€” iconic of it, honestly)

  • autoKeyFocus β€” class AutoKeyFocus, value type T/F, default T
  • autoRaiseDelay β€” class AutoRaiseDelay, value type millisec, default 500
  • bitmapDirectory β€” class BitmapDirectory, value type directory, default /usr/include/X11/bitmaps
  • clientAutoPlace β€” class ClientAutoPlace, value type T/F, default T
  • colormapFocusPolicy β€” class ColormapFocusPolicy, value type string, default keyboard
  • configFile β€” class ConfigFile, value type file, default $HOME/dtwmrc
  • deiconifyKeyFocus β€” class DeiconifyKeyFocus, value type T/F, default T
  • doubleClickTime β€” class DoubleClickTime, value type millisec., default multi-click time†
  • enableWarp β€” class enableWarp, value type T/F, default T
  • enforceKeyFocus β€” class EnforceKeyFocus, value type T/F, default T
  • frameStyle β€” class FrameStyle, value type string, default recessed
  • iconAutoPlace β€” class IconAutoPlace, value type T/F, default T
  • iconClick β€” class IconClick, value type T/F, default T
  • interactivePlacement β€” class InteractivePlacement, value type T/F, default T
  • keyboardFocusPolicy β€” class KeyboardFocusPolicy, value type string, default explicit
  • lowerOnIconify β€” class LowerOnIconify, value type T/F, default T
  • marqueeSelectGranularity β€” class MarqueeSelectGranularity, value type pixels, default 0
  • moveThreshold β€” class MoveThreshold, value type pixels, default 4
  • multiScreen β€” class MultiScreen, value type T/F, default T
  • passButtons β€” class PassButtons, value type T/F, default F
  • passSelectButton β€” class PassSelectButton, value type T/F, default T
  • positionIsFrame β€” class PositionIsFrame, value type T/F, default T
  • positionOnScreen β€” class PositionOnScreen, value type T/F, default T
  • quitTimeout β€” class QuitTimeout, value type millisec., default 1000
  • raiseKeyFocus β€” class RaiseKeyFocus, value type T/F, default F
  • refreshByClearing β€” class RefreshByClearing, value type T/F, default T
  • rootButtonClick β€” class RootButtonClick, value type T/F, default F
  • screens β€” class Screens, value type string, default varies
  • showFeedback β€” class ShowFeedback, value type string, default all
  • startupKeyFocus β€” class StartupKeyFocus, value type T/F, default T
  • useFrontPanels β€” class useFrontPanel, value type T/F, default T
  • wMenuButtonClick β€” class WMenuButtonClick, value type T/F, default T
  • wMenuButtonClick2 β€” class WMenuButtonClick2, value type T/F, default T

(and one more time, the table's little signature: tgroup dispwid="6.20in" β€” preserved, don't come for me πŸ™ˆ)

† the resource doubleClickTime is included for backward compatibility. use of the Xt resource multiClickTime is preferred. ngl, the old one is giving legacy energy πŸ‘΅

  • autoKeyFocus (class AutoKeyFocus) β€” ⚠️ only available when the keyboard input focus policy is explicit. if you set it to True, then when a window with the keyboard input focus is withdrawn from window management or is iconified, the focus gets set to the previous window that had the focus. if you set it to False, there's no automatic setting of the keyboard input focus at all. pro tip from the page itself: it's recommended that both autoKeyFocus and startupKeyFocus be True so things work with tear off menus 🫢 default value is True.
  • autoRaiseDelay (class AutoRaiseDelay) β€” also conditional, bestie: this one's only available when the focusAutoRaise resource is True and the keyboard focus policy is pointer. it specifies how long (in milliseconds) dtwm waits before raising a window after it gets the keyboard focus ⏱️ default value of this resource is 500 (ms).
  • bitmapDirectory (class BitmapDirectory) β€” this one tells dtwm where to go looking for bitmaps that its resources reference πŸ’…. It's the directory that gets searched whenever a bitmap is specified without an absolute pathname. The default value is BR /usr/include/X11/bitmaps β€” yes, the BR is literally in there, bestie, copy it exactly πŸ™ˆ. The directory /usr/include/X11/bitmaps represents the customary location for this directory, but lowkey the actual location may vary on some systems. And if the bitmap isn't found in the specified directory, XBMLANGPATH gets searched next. Iconic search fallback behavior, no cap ✨.
  • clientAutoPlace (class ClientAutoPlace) β€” decides where a window goes when nobody gave it a program- or user-specified position 🫢. With a value of True, windows are positioned with the top left corners of the frames offset horizontally and vertically. A value of False causes the currently configured position of the window to be used. Either way, dtwm will attempt to place the windows totally on-screen. The default value is True. Slay placement logic πŸ’….
  • colormapFocusPolicy (class ColormapFocusPolicy) β€” this resource indicates the colormap focus policy that is to be used 🌈. If the resource value is explicit, a colormap selection action is done on a client window to set the colormap focus to that window. If the value is pointer, the client window containing the pointer has the colormap focus. If the value is keyboard, the client window that has the keyboard input focus has the colormap focus. The default value for this resource is keyboard. Choose your fighter, bestie πŸŽ€.
  • configFile (class ConfigFile) β€” the resource value is the pathname for a dtwm resource description file πŸ“. If the pathname begins with "~/", dtwm considers it to be relative to the user's home directory (as specified by the HOME environment variable). If the LANG environment variable is set, dtwm looks for $HOME/$LANG/configFile. If that file does not exist or if LANG is not set, dtwm looks for $HOME/configFile. If the configFile pathname does not begin with "~/" or "/", dtwm considers it to be relative to the current working directory. If the configFile resource is not specified or if that file does not exist, dtwm uses several default paths to find a configuration file. The order of the search is shown below:
$HOME/.dt/$LANG/dtwmrc
$HOME/.dt/dtwmrc
/nix/store/6waxpwr8lzfzc9ka48gl7yh60rqvlkdb-cde-2.5.3/etc/config/$LANG/sys.dtwmrc†
/nix/store/6waxpwr8lzfzc9ka48gl7yh60rqvlkdb-cde-2.5.3/etc/config/sys.dtwmrc†
/nix/store/6waxpwr8lzfzc9ka48gl7yh60rqvlkdb-cde-2.5.3/config/$LANG/sys.dtwmrc†
/nix/store/6waxpwr8lzfzc9ka48gl7yh60rqvlkdb-cde-2.5.3/config/sys.dtwmrc†

Paths marked with '†' are implementation dependent. Not me keeping the whole lore intact πŸ˜­πŸ’–.

  • deiconifyKeyFocus (class DeiconifyKeyFocus) β€” this resource applies only when the keyboard input focus policy is explicit πŸ¦‹. If a value of True is used, a window receives the keyboard input focus when it is normalized (deiconified). True is the default value. Main character window gets the focus back, periodt πŸ‘‘.
  • doubleClickTime (class DoubleClickTime) β€” used to set the maximum time (in ms) between the clicks (button presses) that make up a double-click ⏱️. Heads up though: the use of this resource is deprecated. Use the Xt resource multiClickTime instead. The value of doubleClickTime dynamically defaults to the value of multiClickTime. So it's giving legacy but still synced, iykyk πŸ’€.
  • enableWarp (class EnableWarp) β€” the default value of this resource, True, causes dtwm to warp the pointer to the center of the selected window during keyboard-controlled resize and move operations 🌟. Setting the value to False causes dtwm to leave the pointer at its original place on the screen, unless the user explicitly moves it with the cursor keys or pointing device. Cursor teleportation toggle fr fr 🧚.
  • enforceKeyFocus (class EnforceKeyFocus) β€” if this resource is given a value of True, the keyboard input focus is always explicitly set to selected windows even if there is an indication that they are "globally active" input windows πŸ”₯. (An example of a globally active window is a scroll bar that can be operated without setting the focus to that client.) If the resource is False, the keyboard input focus is not explicitly set to globally active windows. The default value is True. Respect the focus rules or don't πŸ’….
  • frameStyle (class frameStyle) β€” if this resource is given a value of "slab", the window manager frame is drawn such that the client area appears to be at the same height as the top of the window frame πŸŽ€. If the resource is set to "recessed", the window frame is drawn such that the client area appears lower than the top of the window frame. The default value is "recessed". Frame aesthetics are literally everything ✨.
  • iconAutoPlace (class IconAutoPlace) β€” this resource indicates whether the window manager arranges icons in a particular area of the screen or places each icon where the window was when it was iconified πŸ¦‹. The value True indicates that icons are arranged in a particular area of the screen, determined by the iconPlacement resource. The value False indicates that an icon is placed at the location of the window when it is iconified. The default is True. Icon organization is self-care, bestie 🌸.
  • iconClick (class IconClick) β€” when this resource is given the value of True, the system menu is posted and left posted when an icon is clicked πŸ–±οΈ. The default value is True. One click and the menu stays, no cap πŸ‘‘.
  • interactivePlacement (class InteractivePlacement) β€” this resource controls the initial placement of new windows on the screen 🫢. If the value is True, the pointer shape changes before a new window is placed on the screen to indicate to the user that a position should be selected for the upper-left hand corner of the window. If the value is False, windows are placed according to the initial window configuration attributes. The default value of this resource is False. Choose-your-own-window-corner energy πŸ’….
  • keyboardFocusPolicy (class KeyboardFocusPolicy) β€” if set to pointer, the keyboard focus policy is to have the keyboard focus set to the client window that contains the pointer (the pointer could also be in the client window decoration that dtwm adds) 🎯. If set to explicit, the policy is to have the keyboard focus set to a client window when the user presses button 1 with the pointer on the client window or any part of the associated dtwm decoration. The default value for this resource is explicit. Focus policy tea β˜•.
  • lowerOnIconify (class LowerOnIconify) β€” if this resource is given the default value of True, a window's icon appears on the bottom of the window stack when the window is minimized (iconified) πŸͺŸ. A value of False places the icon in the stacking order at the same place as its associated window. The default value of this resource is True. Icons get sent to the back, respectfully πŸ’€.
  • marqueeSelectGranularity (class MarqueeSelectGranularity) β€” this resource determines how often changes in the marquee selection are reported to the file manager (dtfile(1)) πŸ“. The marquee selection is used to select file manager items that have been placed onto the desktop. The value of this resource is the number of pixels the pointer must move either horizontally or vertically before another report is made to the file manager. A value of 0 (zero) means report every motion of the pointer. The default value of this resource is 0. Zero means zero chill, every pixel gets reported 🌈.
  • moveThreshold (class MoveThreshold) β€” this resource is used to control the sensitivity of dragging operations that move windows and icons πŸ–οΈ. The value of this resource is the number of pixels that the locator is moved with a button down before the move operation is initiated. This is used to prevent window/icon movement when you click or double-click and there is unintentional pointer movement with the button down. The default value of this resource is 4 (pixels). No accidental dragging, bestie πŸŽ€.
  • multiScreen (class MultiScreen) β€” this resource, if True, causes dtwm to manage all the screens on the display πŸ–₯️. If False, dtwm manages only a single screen. The default value is True. Multitasking queen behavior πŸ‘‘.
  • passButtons (class PassButtons) β€” this resource indicates whether or not button press events are passed to clients after they are used to do a window manager function in the client context πŸ–±οΈ. If the resource value is False, the button press is not passed to the client. If the value is True, the button press is passed to the client window. The window manager function is done in either case. The default value for this resource is False. The function happens regardless, so don't stress πŸ’….
  • passSelectButton (class PassSelectButton) β€” this resource indicates whether or not to pass the select button press events to clients after they are used to do a window manager function in the client context 🫢. If the resource value is False, then the button press will not be passed to the client. If the value is True, the button press is passed to the client window. The window manager function is done in either case. The default value for this resource is True. Select button gets the special treatment ✨.
  • positionIsFrame (class PositionIsFrame) β€” this resource indicates how client window position information (from the WM_NORMAL_HINTS property and from configuration requests) is to be interpreted πŸ“. If the resource value is True, the information is interpreted as the position of the dtwm client window frame. If the value is False, it is interpreted as being the position of the client area of the window. The default value of this resource is True. Frame or client area, that is the question β€” and the default is frame, bestie πŸŽ€.

positionOnScreen (class PositionOnScreen)

Okay bestie, this one is literally the ✨vibe check✨ for where your windows land when they first show up. If the value is True, dtwm tries its hardest to place windows so they don't get clipped by the edge of the screen. And if a window is somehow bigger than the whole screen? At least the upper-left corner is on-screen β€” the bare minimum, but she delivers 🫢. If the value is False, windows get placed in the requested position even if that means totally off-screen, like, gone, invisible, iykyk. Default value is True.

quitTimeout (class QuitTimeout)

This resource is the amount of time (in milliseconds, bb) that dtwm waits for a client to update the WM_COMMAND property after dtwm has sent the WM_SAVE_YOURSELF message. So she's patient, but like, not that patient. Default value is 1000 (ms). (Refer to the f.kill function description for additional info β€” go peek at that one πŸ‘€.)

raiseKeyFocus (class RaiseKeyFocus)

Heads up: this resource is only available when the keyboard input focus policy is explicit β€” so if you're on a different policy, this one's not for you πŸ™ˆ. When set to True, it says a window raised via the f.normalize_and_raise function also receives the input focus. Like, she comes to the front and she gets the keyboard. Main character energy fr. Default value is False.

refreshByClearing (class RefreshByClearing)

This one decides the mechanism used to refresh a window (or the whole screen) when the f.refresh_win (f.refresh) function runs. Basically: how do we make the pixels look right again πŸ’…

  • When set to True, an XClearArea is performed over the window for f.refresh_win.
  • When set to False, a covering window is created and destroyed over the top of the window to be refreshed.

And if the function is f.refresh:

  • resource True β†’ an XClearArea is performed over every window on the screen.
  • resource False β†’ one large window covering the entire screen is created and destroyed. Big girl sweep 🌈

Default value of this resource is True.

rootButtonClick (class RootButtonClick)

So rootButtonClick controls whether a click on the root window posts the root menu in a "sticky" mode. Two whole moods:

  • Set it to True β†’ a button click on the root window posts the menu bound to the button down event for that button in a "sticky" fashion. It stays. She's committed πŸ”₯
  • Set it to False β†’ that same button click would only cause the menu to flash, because it'd be unposted as soon as the button up event is seen. Blink and you missed her πŸ’€

The criterion used to determine if it's a button click is whether the pointer doesn't move between the button down and button up events. No wiggle, no click. Default value for this resource is True.

screens (class Screens)

This resource specifies the resource names to use for the screens managed by dtwm πŸ–₯️ If dtwm is managing a single screen, only the first name in the list is used β€” one screen, one name, periodt. If dtwm is managing multiple screens, the names are assigned to the screens in order, starting with screen 0. So screen 0 gets the first name, screen 1 the second name, and so on, and so on. The default screen names are 0, 1, and so on.

showFeedback (class ShowFeedback)

This resource controls whether or not feedback windows or confirmation dialogs are displayed, bestie β€” the whole "are we showing the little extra UI" question ✨

Quick definitions so we're on the same page:

  • A feedback window shows a client window's initial placement, and shows position and size during move and resize operations.
  • Confirmation dialogs can be displayed for certain operations.

The value for this resource is a list of names of the feedback options to be enabled or disabled, and the names must be separated by a space. If an option is preceded by a minus sign, that option is excluded from the list. Here's the tricky bit that trips everyone up, so read carefully πŸŽ€: the sign of the first item in the list determines the initial set of options.

  • If the sign of the first option is minus, dtwm assumes all options are present and starts subtracting from that set.
  • If the sign of the first decoration is plus (or not specified), dtwm starts with no options and builds up a list from the resource.

(Yes, it says "decoration" there. Not me, that's just what the page says 😭 keeping it real.)

The names of the feedback options are shown below:

  • all β€” Show all feedback (Default value).
  • behavior β€” Confirm behavior switch.
  • kill β€” Confirm on receipt of KILL signal.
  • move β€” Show position during move.
  • none β€” Show no feedback.
  • placement β€” Show position and size during initial placement.
  • quit β€” Confirm quitting dtwm.
  • resize β€” Show size during resize.
  • restart β€” Confirm dtwm restart.

The following command line illustrates the syntax for showFeedback:

Dtwm*showFeedback: placement resize behavior restart

This resource specification provides feedback for initial client placement and resize, and enables the dialog boxes to confirm the restart and set behavior functions. It disables feedback for the move function. The default value for this resource is all.

useFrontPanel (class UseFrontPanel)

This resource enables the display of the front panel if True. If set to False, the Front Panel will not be displayed β€” she's simply not coming to the party πŸšͺ The default value is True.

startupKeyFocus (class StartupKeyFocus)

Another one that's only available when the keyboard input focus policy is explicit, just so you know πŸ’… When given the default value of True, a window gets the keyboard input focus when the window is mapped (that is, initially managed by the window manager). It is recommended that both autoKeyFocus and startupKeyFocus be True to work with tear off menus β€” like, that's the combo, take the advice 🫢 The default value is True.

wMenuButtonClick (class WMenuButtonClick)

This resource indicates whether a click of the mouse, when the pointer is over the window menu button, posts and leaves posted the window menu. If the value given this resource is True, the menu remains posted. Sticky menu supremacy ✨ True is the default value for this resource.

wMenuButtonClick2 (class WMenuButtonClick2)

When this resource is given the default value of True, a double-click action on the window menu button does an f.kill function. Double tap = yeet πŸ’€ Default is True.


πŸ–₯️ Screen Specific Appearance and Behavior Resources πŸ–₯️

Okay so the syntax for specifying screen specific resources is:

Dtwm*screen_name*resource_id

For example, Dtwm*1*keyBindings specifies the key bindings to use for screen "1". Cute, right? Each screen gets its own little name tag πŸŽ€

✨ Screen Specific Resources ✨

Here's the full lineup β€” name, class, value type, default. No skipping, we list all of them:

  • buttonBindings β€” class ButtonBindings β€” string β€” DefaultButtonBindings
  • cleanText β€” class CleanText β€” T/F β€” T
  • fadeNormalIcon β€” class FadeNormalIcon β€” T/F β€” F
  • feedbackGeometry β€” class FeedbackGeometry β€” string β€” center on screen
  • frameBorderWidth β€” class FrameBorderWidth β€” pixels β€” varies
  • iconBoxGeometry β€” class IconBoxGeometry β€” string β€” 6x1+0-0
  • iconBoxName β€” class IconBoxName β€” string β€” iconbox
  • iconBoxSBDisplayPolicy β€” class IconBoxSBDisplayPolicy β€” string β€” all
  • iconBoxTitle β€” class IconBoxTitle β€” XmString β€” Icons
  • iconDecoration β€” class IconDecoration β€” string β€” varies
  • iconImageMaximum β€” class IconImageMaximum β€” wxh β€” 48x48
  • iconImageMinimum β€” class IconImageMinimum β€” wxh β€” 16x16
  • iconPlacement β€” class IconPlacement β€” string β€” left bottom
  • iconPlacementMargin β€” class IconPlacementMargin β€” pixels β€” varies
  • keyBindings β€” class KeyBindings β€” string β€” DefaultKeyBindings
  • limitResize β€” class LimitResize β€” T/F β€” T
  • maximumMaximumSize β€” class MaximumMaximumSize β€” wxh (pixels) β€” 2X screen w&&h
  • moveOpaque β€” class MoveOpaque β€” T/F β€” F
  • resizeBorderWidth β€” class ResizeBorderWidth β€” pixels β€” varies
  • resizeCursors β€” class ResizeCursors β€” T/F β€” T
  • transientDecoration β€” class TransientDecoration β€” string β€” menu title
  • transientFunctions β€” class TransientFunctions β€” string β€” -minimize-maximize
  • useIconBox β€” class UseIconBox β€” T/F β€” F
  • workspaceCount β€” class WorkspaceCount β€” number β€” 1
And yes, bestie, there's literally a stray tgroup dispwid="6.19in" line hanging out at the bottom of that table in the source. She's just vibing there. Not our problem, but we're not gonna pretend we didn't see her πŸ’€

buttonBindings (class ButtonBindings)

This resource identifies the set of button bindings for window management functions πŸ–±οΈ The named set of button bindings is specified in the dtwm resource description file. These button bindings are merged with the built-in default bindings β€” so you're adding to the pile, not replacing it, iykyk. The default value for this resource is "DefaultButtonBindings".

cleanText (class CleanText)

This resource controls the display of window manager text in the client title and feedback windows ✨ If the default value of True is used, the text is drawn with a clear (no stipple) background. This makes text easier to read on monochrome systems where a backgroundPixmap is specified β€” like, actual accessibility queen behavior πŸ’… Only the stippling in the area immediately around the text is cleared, though. Just the neighborhood. If False, the text is drawn directly on top of the existing background.

fadeNormalIcon (class FadeNormalIcon)

If this resource is given a value of True, an icon is grayed out whenever it has been normalized (its window has been opened). She's been seen, she's faded into the background 🌫️ The default value is False.

feedbackGeometry (class FeedbackGeometry)

This resource sets the position of the move and resize feedback window. If this resource is not specified, the default is to place the feedback window at the center of the screen β€” center stage, as she deserves πŸŽ€ The value of the resource is a standard window geometry string with the following syntax:

[=]{+-}xoffset{+-}yoffset]

frameBorderWidth (class FrameBorderWidth)

This resource specifies the width (in pixels) of a client window frame border without resize handles. The border width includes the 3-D shadows β€” so those shadows are counted, don't forget 😭 The default value is based on the size and resolution of the screen.

Next up, bestie: the icon-box + window-behavior resource lore. These are the knobs that decide where icons live, how big they get, and whether moving a window is a smooth vibe or just a rectangle outline. πŸ’…

  • iconBoxGeometry (class IconBoxGeometry) β€” this one sets the icon box's initial position and size, no cap. The value is a standard window geometry string with this exact syntax: [=][width xheight][{+-}xoffset {+-}yoffset]. If the offsets are not provided, the iconPlacement policy is used to determine the initial placement. Width and height are measured in columns and rows. The actual screen size of the icon box window depends on the iconImageMaximum (size) and iconDecoration resources. The default value for size is (6 * iconWidth + padding) wide by (1 * iconHeight + padding) high. The default value of the location is +0 -0.
  • iconBoxName (class IconBoxName) β€” this specifies the name used to look up icon box resources. The default name is iconbox.
  • iconBoxSBDisplayPolicy (class IconBoxSBDisplayPolicy) β€” this sets the scroll bar display policy of the window manager in the icon box. It has three possible values: all, vertical, and horizontal. The default value, "all", makes both vertical and horizontal scroll bars always appear. "vertical" makes a single vertical scroll bar appear in the icon box and sets the orientation of the icon box to horizontal (regardless of the iconBoxGeometry specification). "horizontal" makes a single horizontal scroll bar appear in the icon box and sets the orientation of the icon box to vertical (regardless of the iconBoxGeometry specification). πŸŒ€
  • iconBoxTitle (class IconBoxTitle) β€” this is the name used in the title area of the icon box frame. The default value is Icons.
  • iconDecoration (class IconDecoration) β€” this specifies the general icon decoration. The value is label (only the label part is displayed), image (only the image part is displayed), or label image (both the label and image parts are displayed). You can also specify activelabel to get a label (not truncated to the width of the icon) when the icon is selected. The default icon decoration for icon box icons is that each icon has a label part and an image part (label image). The default icon decoration for stand alone icons is that each icon has an active label part, a label part, and an image part (activelabel label image). πŸŽ€
  • iconImageMaximum (class IconImageMaximum) β€” this sets the maximum size of the icon image. The value is widthx height (for example, 64x64). The maximum supported size is 128x128. The default value is 50x50.
  • iconImageMinimum (class IconImageMinimum) β€” this sets the minimum size of the icon image. The value is widthx height (for example, 32x50). The minimum supported size is 16x16. The default value is 16x16.
  • iconPlacement (class IconPlacement) β€” this specifies the icon placement scheme to be used. The value has this syntax:
primary_layout secondary_layout [tight]

The layout values are one of these:

  • top β€” Lay the icons out top to bottom.
  • bottom β€” Lay the icons out bottom to top.
  • left β€” Lay the icons out left to right.
  • right β€” Lay the icons out right to left.

A horizontal (vertical) layout value should not be used for both the primary_layout and the secondary_layout (for example, don't use top for the primary_layout and bottom for the secondary_layout). 🚫

The primary_layout indicates whether, when an icon placement is done, the icon is placed in a row or a column and the direction of placement. The secondary_layout indicates where to place new rows or columns. For example, top right indicates that icons should be placed top to bottom on the screen and that columns should be added from right to left on the screen.

The default placement is left bottom (icons are placed left to right on the screen, with the first row on the bottom of the screen, and new rows added from the bottom of the screen to the top of the screen). A tight value places icons with zero spacing in between icons. This value is useful for aesthetic reasons, as well as X-terminals with small screens. ✨

  • iconPlacementMargin (class IconPlacementMargin) β€” this sets the distance between the edge of the screen and the icons that are placed along the edge of the screen. The value should be greater than or equal to 0. A default value (see below) is used if the value specified is invalid. The default value for this resource is equal to the space between icons as they are placed on the screen (this space is based on maximizing the number of icons in each row and column).
  • keyBindings (class KeyBindings) β€” this identifies the set of key bindings for window management functions. If specified, these key bindings replace the built-in default bindings. The named set of key bindings is specified in the dtwm resource description file. The default value is "DefaultKeyBindings".
  • limitResize (class LimitResize) β€” if this resource is True, the user is not allowed to resize a window to greater than the maximum size. The default value is True.
  • maximumMaximumSize (class MaximumMaximumSize) β€” this limits the maximum size of a client window as set by the user or client. The value is widthxheight (for example, 1024x1024) where the width and height are in pixels. The default value is twice the screen width and height.
  • moveOpaque (class MoveOpaque) β€” this controls whether the actual window is moved or a rectangular outline of the window is moved. A default value of False displays a rectangular outline on moves.
  • resizeBorderWidth (class ResizeBorderWidth) β€” this specifies the width (in pixels) of a client window frame border with resize handles. The specified border width includes the 3-D shadows. The default value is based on the size and resolution of the screen.
  • resizeCursors (class ResizeCursors) β€” this indicates whether the resize cursors are always displayed when the pointer is in the window size border. If True, the cursors are shown; otherwise the window manager cursor is shown. The default value is True.
  • transientDecoration (class TransientDecoration) β€” this controls the amount of decoration that dtwm puts on transient windows. The decoration specification is exactly the same as for the clientDecoration (client specific) resource. Transient windows are identified by the WM_TRANSIENT_FOR property, which is added by the client to indicate a relatively temporary window. The default value is menu title (that is, transient windows have frame borders and a titlebar with a window menu button).

An application can also specify which decorations dtwm should apply to its windows. If it does so, dtwm applies only those decorations indicated by both the application and the transientDecoration resource. Otherwise, dtwm applies the decorations indicated by the transientDecoration resource. For more information see the description of XmNmwmDecorations on the VendorShell(3) reference page. 🫢

  • transientFunctions (class TransientFunctions) β€” this indicates which window management functions are applicable (or not applicable) to transient windows. The function specification is exactly the same as for the clientFunctions (client specific) resource. The default value is -minimize -maximize.

An application can also specify which functions dtwm should apply to its windows. If it does so, dtwm applies only those functions indicated by both the application and the transientFunctions resource. Otherwise, dtwm applies the functions indicated by the transientFunctions resource. For more information see the description of XmNmwmFunctions on the VendorShell(3) reference page. πŸ’…

  • useIconBox (class UseIconBox) β€” if this is given a value of True, icons are placed in an icon box. When an icon box is not used, the icons are placed on the root window (default value).
  • workspaceCount (class WorkspaceCount) β€” this is the initial number of workspaces that dtwm reates when starting up. In the CDE, this resource should only appear in an applications defaults files. This resource is saved as part of a user's session when dtwm shuts down. The user may add or delete workspaces dynamically from the front panel during the session, and this resource records the number of workspaces for the session. The default value is 1. πŸ—‚οΈ

🫢 Client Specific Resources 🫢

The syntax for specifying client specific resources is:

Dtwm*client_name_or_class *resource_id

For example, Dtwm*mterm*windowMenu is used to specify the window menu to be used with mterm clients. The syntax for specifying client specific resources for all classes of clients is Dtwm*resource_id.

Specific client specifications take precedence over the specifications for all clients. For example, Dtwm*windowMenu is used to specify the window menu to be used for all classes of clients that don't have a window menu specified.

The syntax for specifying resource values for windows that have an unknown name and class (that is, windows that do not have a WM_CLASS property associated with them) is Dtwm*defaults*resource_id.

For example, Dtwm*defaults*iconImage is used to specify the icon image to be used for windows that have an unknown name and class.

The following client specific resources can be specified: 🌈

πŸŽ€ Client Specific Resources πŸŽ€

okay bestie, this is the client-specific resource roster β€” every name, class, value type, and default is staying exactly as it was. no cap, not one row missing. πŸ’…

  • clientDecoration β€” class ClientDecoration, value type string, default all.
  • clientFunctions β€” class ClientFunctions, value type string, default all.
  • focusAutoRaise β€” class FocusAutoRaise, value type T/F, default varies
  • iconImage β€” class IconImage, value type pathname, default (image)
  • iconImageBackground β€” class Background, value type color, default icon background
  • iconImageBottomShadowColor β€” class Foreground, value type color, default icon bottom shadow
  • iconImageBottomShadowPixmap β€” class BottomShadowPixmap, value type color, default icon bottom shadow pixmap
  • iconImageForeground β€” class Foreground, value type color, default varies
  • iconImageTopShadowColor β€” class Background, value type color, default icon top shadow color
  • iconImageTopShadowPixmap β€” class TopShadowPixmap, value type color, default icon top shadow pixmap
  • matteBackground β€” class Background, value type color, default background
  • matteBottomShadowColor β€” class Foreground, value type color, default bottom shadow color
  • matteBottomShadowPixmap β€” class BottomShadowPixmap, value type color, default bottom shadow pixmap
  • matteForeground β€” class Foreground, value type color, default foreground
  • matteTopShadowColor β€” class Background, value type color, default top shadow color
  • matteTopShadowPixmap β€” class TopShadowPixmap, value type color, default top shadow pixmap
  • matteWidth β€” class MatteWidth, value type pixels, default 0
  • maximumClientSize β€” class MaximumClientSize, value type wxh / vertical horizontal, default fill the screen
  • useClientIcon β€” class UseClientIcon, value type T/F, default T
  • usePPosition β€” class UsePPosition, value type string, default nonzero
  • windowMenu β€” class WindowMenu, value type string, default DefaultWindowMenu

Also, this little layout gremlin was in the original: tgroup dispwid="6.17in".


πŸ’… clientDecoration (class ClientDecoration)

This resource controls how much window-frame decoration you get. it's set as a list of decorations, and you're basically telling dtwm what to include. if a decoration has a minus sign in front of it, that decoration gets excluded from the frame. the sign of the first item in the list decides where dtwm starts mentally:

  • if the first decoration's sign is minus, dtwm assumes all decorations are present and starts subtracting from that set.
  • if the first decoration's sign is plus (or not specified), dtwm starts with no decoration and builds up a list from the resource. ✨

An application can also specify which decorations dtwm should apply to its windows. If it does, dtwm applies only those decorations indicated by both the application and the clientDecoration resource. Otherwise, dtwm applies the decorations indicated by the clientDecoration resource. For more information, see the description of XmNmwmDecorations on the VendorShell(3) reference page. 🫢

Here's the decoration menu, fully intact:

  • all β€” Include all decorations (default value).
  • border β€” Window border.
  • maximize β€” Maximize button (includes title bar).
  • minimize β€” Minimize button (includes title bar).
  • none β€” No decorations.
  • resizeh β€” Border resize handles (includes border).
  • menu β€” Window menu button (includes title bar).
  • title β€” Title bar (includes border).

Examples, bestie, exact as ever:

Dtwm*XClock.clientDecoration: -resizeh -maximize β€” this removes the resize handles and maximize button from XClock windows.

Dtwm*XClock.clientDecoration: menu minimize border β€” this does the same thing as above. Note that either menu or minimize implies title.


🌸 clientFunctions (class ClientFunctions)

This resource tells dtwm which functions are applicable (or not applicable) to the client window. the value is a list of functions. if the first function in the list has a minus sign in front of it, dtwm starts with all functions and subtracts from that set. if the first function has a plus sign in front of it, dtwm starts with no functions and builds up a list. every function in the list must have the appropriate plus or minus sign in front of it, and each one is separated from the next by a space. periodt. πŸ’€

An application can also specify which functions dtwm should apply to its windows. If it does, dtwm applies only those functions indicated by both the application and the clientFunctions resource. Otherwise, dtwm applies the functions indicated by the clientFunctions resource. For more information, see the description of XmNmwmFunctions on the VendorShell(3) reference page.

The function lineup is:

  • all β€” Include all functions (default value).
  • none β€” No functions.
  • resize β€” f.resize†.
  • move β€” f.move†.
  • minimize β€” f.minimize†.
  • maximize β€” f.maximize†.
  • close β€” f.kill†.

†See dtwmrc(4).


πŸ¦‹ focusAutoRaise (class FocusAutoRaise)

When this resource is True, clients are raised when they get the keyboard input focus. when it's False, the stacking of windows on the display is not changed when a window gets the keyboard input focus. the default is True when the keyboardFocusPolicy is explicit, and False when the keyboardFocusPolicy is pointer. slay. ✨


πŸŽ€ iconImage (class IconImage)

This resource can specify an icon image for a client (for example, "Dtwm*myclock*iconImage"). the resource value is a pathname for a pixmap or bitmap file. the value of the (client specific) useClientIcon resource decides whether or not user supplied icon images are used instead of client supplied icon images. the default value is to display a built-in window manager icon image. iconic behavior, literally. πŸ‘‘


πŸ’– iconImageBackground (class Background)

This resource specifies the background color of the icon image that is displayed in the image part of an icon. the default value is the icon background color β€” that is, specified by "Dtwm*background or Dtwm*icon*background. yes, the stray quote is canon, bestie. πŸŽ€


🌈 iconImageBottomShadowColor (class Foreground)

This resource specifies the bottom shadow color of the icon image that is displayed in the image part of an icon. the default value is the icon bottom shadow color β€” that is, specified by Dtwm*icon*bottomShadowColor.


🧚 iconImageBottomShadowPixmap (class BottomShadowPixmap)

This resource specifies the bottom shadow Pixmap of the icon image that is displayed in the image part of an icon. the default value is the icon bottom shadow Pixmap β€” that is, specified by Dtwm*icon*bottomShadowPixmap.


πŸ’œ iconImageForeground (class Foreground)

This resource specifies the foreground color of the icon image that is displayed in the image part of an icon. the default value varies depending on the icon background. it's giving "depends on the vibe." 😭


⭐ iconImageTopShadowColor (class Background)

This resource specifies the top shadow color of the icon image that is displayed in the image part of an icon. the default value is the icon top shadow color β€” that is, specified by Dtwm*icon*topShadowColor.


πŸ“ iconImageTopShadowPixmap (class TopShadowPixmap)

This resource specifies the top shadow Pixmap of the icon image that is displayed in the image part of an icon. the default value is the icon top shadow pixmap β€” that is, specified by Dtwm*icon*topShadowPixmap.


🫢 matteBackground (class Background)

This resource specifies the background color of the matte, when matteWidth is positive. the default value is the client background color β€” that is, specified by "Dtwm*background or Dtwm*client*background. matte girlies rise. πŸ’…


🌸 matteBottomShadowColor (class Foreground)

This resource specifies the bottom shadow color of the matte, when matteWidth is positive. the default value is the client bottom shadow color β€” that is, specified by Dtwm*bottomShadowColor or Dtwm*client*bottomShadowColor.


πŸ¦‹ matteBottomShadowPixmap (class BottomShadowPixmap)

This resource specifies the bottom shadow Pixmap of the matte, when matteWidth is positive. the default value is the client bottom shadow pixmap β€” that is, specified by Dtwm*bottomShadowPixmap or Dtwm*client*bottomShadowPixmap.


πŸ’– matteForeground (class Foreground)

This resource specifies the foreground color of the matte, when matteWidth is positive. the default value is the client foreground color β€” that is, specified by Dtwm*foreground or Dtwm*client*foreground.


🌈 matteTopShadowColor (class Background)

This resource specifies the top shadow color of the matte, when matteWidth is positive. the default value is the client top shadow color β€” that is, specified by Dtwm*topShadowColor or Dtwm*client*topShadowColor.


🧚 matteTopShadowPixmap (class TopShadowPixmap)

This resource specifies the top shadow pixmap of the matte, when matteWidth is positive. the default value is the client top shadow pixmap β€” that is, specified by "Dtwm*topShadowPixmap or Dtwm*client*topShadowPixmap.


πŸ‘‘ matteWidth (class MatteWidth)

This resource specifies the width of the optional matte. the default value is 0, which effectively disables the matte. and yes, 0 means off β€” no matte, no drama. πŸ’€

  • maximumClientSize (class MaximumClientSize) β€” this one's either a size spec or a direction, and it tells dtwm how a client window should get maximized. πŸ’… The value can be a size specification written as widthxheight, and bestie, those width and height numbers are interpreted in whatever units the client itself uses (so for terminal emulators that's generally characters, iykyk). Or you can say "vertical" or "horizontal" to hint which direction the client maximizes in.

If you don't set this resource at all, the maximum size from the WM_NORMAL_HINTS property gets used if it's set. Otherwise the default is the size where the client window (with its window management borders) fills the screen. And when the max client size is not determined by the maximumClientSize resource, the maximumMaximumSize resource value gets used as a constraint on the maximum size. no cap.

  • useClientIcon (class UseClientIcon) β€” set this to True and a client-supplied icon image wins over a user-supplied icon image. The default is True, so yeah, client-supplied icon images come in with higher precedence than user-supplied ones. main character energy fr fr.
  • usePPosition (class UsePPosition) β€” controls whether Dtwm honors the program specified position PPosition from the WM_NORMAL_HINTS property when there's no user specified position. Set it to on and dtwm always honors program specified position. Set it to off and dtwm always ignores program specified position. And the default value, nonzero, has dtwm honoring program specified position as long as it's anything other than (0,0). cute little three-way switch, we love options.
  • windowMenu (class WindowMenu) β€” the name of the menu pane that gets posted when the window menu pops up (usually by pressing button 1 on the window menu button on the client window frame πŸ–±οΈ). Menu panes live in the dtwm resource description file. You can customize window menus on a per-client-class basis by making custom menus in your dtwmrc file (see dtwmrc(4)) and specifying resources to activate those custom menus. Those resources have the form Dtwm*client_name_or_class*windowMenu. Default value is DefaultWindowMenu. slay.

🌸 Workspace Specific Resources 🌸

The only workspace specific resource is the title of the workspace, as seen in the label on the workspace button in the front panel. This should only be set in an application defaults file, because the resource will be programmatically altered when the user changes the workspace title via the front panel. (so don't get attached to your value, she's getting rewritten πŸ™ˆ)

The syntax for workspace resources is:

Dtwm[*screen_name ]*workspace_name* resource_id

For example, Dtwm*0*ws1*title is used to specify the title to be used in workspace "ws1" on screen "0". iconic.

🌸 Workspace Specific Resources 🌸

NameClassValue TypeDefault
  • title / Title / string / workspace name.
  • title (class Title) β€” this resource specifies the user-visible title of the workspace. Note that this is different from the "name" of the workspace, which is generated programmatically and used to fetch X resources. The title is separate from the name so it can contain localized (that is, non-ASCII) characters. πŸ¦‹ The default value for the title is the same as the workspace name.

(okay yes, I put the resource table as a bullet because tables aren't a thing here, but every single value is right there β€” name, class, value type, default. nothing got dropped, bestie. πŸ’–)


πŸ–ΌοΈ Backdrop Resources πŸ–ΌοΈ

The backdrop resources can be set on a per-workspace basis. These resources set the backdrop image and colors (for a bitmap backdrop) to be used for a workspace.

The syntax for backdrop resources is:

Dtwm[*screen_name ][*workspace_name]* backdrop*resource_id

For example, Dtwm*0*ws1*backdrop*image is used to specify the backdrop for workspace "ws1" on screen "0". πŸ’…

Backdrop files are found in the same places as other bitmap and pixmap files used by dtwm (see the ENVIRONMENT heading in this man page). Personal backdrop files can be placed in $HOME/.dt/backdrops.

The following resources may be used to configure backdrops. Normally, users do not set these resources directly. Most of the resources default dynamically depending on the display type. The initial value of the backdrop image resource is obtained from an application defaults file. The backdrop image resource is programmatically altered through interaction with the style manager (dtstyle) and saved as part of a user's session.

CAUTION: Setting these resources directly will interfere with the dynamic configuration done through the style manager. like, don't. 😭

πŸ–ΌοΈ Backdrop Resources πŸ–ΌοΈ

  • colorSetId / ColorSetId / integer / varies†.
  • image / Image / string / "none".
  • imageBackground / ImageBackground / pixel / varies†.
  • imageForeground / ImageForeground / pixel / varies†

†The default value depends on the display type. (that little dagger matters, don't ignore her 🫢)

  • colorSetId (class ColorSetId) β€” specifies a color set to use for the backdrop. This is normally an integer from 1 to 8. The default value of this resource is display dependent.
  • image (class Image) β€” specifies an image to use as the backdrop. If none is specified, then no backdrop image will be displayed and the root window of the screen will show through. Either a bitmap (extension .bm) or a pixmap (extension .pm) file may be specified. If the image is specified without an extension, then a match will be attempted on a .bm or .pm file in an order that is dependent on the search path used by XmGetPixmap(3). The default value for this resource is none.
  • imageBackground (class ImageBackground) β€” specifies a color to use as the background color of the backdrop. If not specified, the color will default to a pixel value from the colorSetId for this workspace. If this resource is specified, the pixel value will not be dynamically customizable by the style manager dtstyle. The default value for this resource is the the bottom shadow color of the color set for this workspace or the background color for bitonal displays. (yes, "the the" β€” I'm keeping the original's little typo, she's canon now πŸ’€)
  • imageForeground (class ImageForeground) β€” specifies a color to use as the foreground color of the backdrop. If not specified, the color will default to a pixel value from the colorSetId for this workspace. If this resource is specified, the pixel value will not be dynamically customizable by the style manager dtstyle. The default value for this resource is the background color of the color set for this workspace or the foreground color for bitonal displays.

πŸ“„ Resource Description File πŸ“„

The dtwm resource description file is a supplementary resource file that contains resource descriptions that are referred to by entries in the resource manager property (see xrdb(1) and the defaults files (.Xdefaults, app-defaults/Dtwm)). It contains descriptions of resources that are to be used by dtwm, and that cannot be easily encoded in the defaults files (a bitmap file is an analogous type of resource description file). A particular dtwm resource description file can be selected using the configFile resource. ✨

The following types of resources can be described in the dtwm resource description file:

  • Buttons β€” window manager functions can be bound (associated) with button events.
  • Keys β€” window manager functions can be bound (associated) with key press events.
  • Menus β€” menu panes can be used for the window menu and other menus posted with key bindings and button bindings.

The dtwm resource description file is described in dtwmrc(4). go read it, iykwim πŸ“–


🌈 Environment 🌈

The dtwm window manager uses the environment variable HOME, specifying the user's home directory.

The dtwm window manager uses the environment variable LANG, specifying the user's choice of language for the dtwm message catalog and the dtwm resource description file.

The dtwm window uses the environment variables XFILESEARCHPATH, XUSERFILESEARCHPATH, XAPPLRESDIR, XENVIRONMENT, LANG, and HOME in determining search paths for resource defaults files. The dtwm window manager may also us XBMLANGPATH to search for bitmap files. (and yes, "may also us" β€” that's the original's wording, keeping it fr fr πŸ’€)

The dtwm window manager uses DTAPPSEARCHPATH to search for application configuration information. DTDATABASESEARCHPATH is used to search for action database definitions and front panel (*.fp) files. Help files are located with the use of DTHELPSEARCHPATH. DTICONSEARCHPATH and DTICONBMSEARCHPATH are used to locate bitmap and pixmap files. πŸ”₯

The dtwm window manager reads the $HOME/.motifbind file if it exists to install a virtual key bindings property on the root window. For more information on the content of the .motifbind file, see "Bindings for osf Keysyms" in the Motif Programmer's Guide.

The dtwm window manager uses the environment variable MWMSHELL (or SHELL, if MWMSHELL is not set), specifying the shell to use when executing commands via the f.exec function. 🐚


πŸ—‚οΈ Files πŸ—‚οΈ

  • /nix/store/6waxpwr8lzfzc9ka48gl7yh60rqvlkdb-cde-2.5.3/backdrops/
  • /nix/store/6waxpwr8lzfzc9ka48gl7yh60rqvlkdb-cde-2.5.3/config/$LANG/sys.dtwmrc
  • /nix/store/6waxpwr8lzfzc9ka48gl7yh60rqvlkdb-cde-2.5.3/config/sys.dtwmrc
  • /nix/store/6waxpwr8lzfzc9ka48gl7yh60rqvlkdb-cde-2.5.3/etc/backdrops/
  • /nix/store/6waxpwr8lzfzc9ka48gl7yh60rqvlkdb-cde-2.5.3/etc/config/$LANG/sys.dtwmrc
  • /nix/store/6waxpwr8lzfzc9ka48gl7yh60rqvlkdb-cde-2.5.3/etc/config/sys.dtwmrc
  • /nix/store/6waxpwr8lzfzc9ka48gl7yh60rqvlkdb-cde-2.5.3/app-defaults/$LANG/Dtwm
  • $HOME/Dtwm
  • $HOME/.Xdefaults
  • $HOME/.dt/$LANG/dtwmrc
  • $HOME/.dt/backdrops/
  • $HOME/.dt/dtwmrc
  • $HOME/.motifbind

(fr fr, those absolute paths are long β€” copy them exactly, don't get creative 😭)


dtsession(1), dtstyle(1), dtfpfile(4), VendorShell(3), VirtualBindings(3), X(1), XmInstallImage(3), xrdb(1).


and that's the whole page bestie!! πŸŽ€ you made it to the end, so proud of you 🫢 this is dtwm(user cmd) β€” part of the CDE 2.5.3 tree (you can literally see cde-2.5.3 all over those file paths πŸ’…), and the footer just signs off as dtwm(user cmd) with no fancy date attached. go forth and wallpaper your workspace πŸ¦‹πŸ’–βœ¨

πŸ“¦ where this page comes from