1CTWM(1)
2=======
3
4
5== NAME
6ctwm - Claude's Tab Window Manager for the X Window System
7
8== SYNTAX
9["literal"]
10ctwm [(--display | -d) dpy]  [--replace]  [--single]
11     [(--file | -f) initfile]  [--cfgchk]  [--dumpcfg]
12     [--nom4 | -n]  [(--keep-defs | -k)]  [(--keep | -K) m4file]
13     [--verbose | -v]  [--quiet | -q]  [--mono]  [--xrm resource]
14     [--version]  [--info]  [--nowelcome | -W]
15     [--clientId clid]  [--restore resfname]
16     [--help | -h]
17
18
19== DESCRIPTION
20ctwm is a window manager for the X Window System.  It provides
21titlebars, shaped windows, virtual screens (workspaces),
22several forms of icon management, user-defined macro functions,
23click-to-type and pointer-driven keyboard focus, and user-specified
24key and pointer button bindings.  It is actually
25`twm(1)` (Tab Window Manager) from the MIT X11 distribution
26slightly modified to accommodate the use of several virtual screens
27(workspaces). It is heavily inspired by the Hewlett-Packard vuewm
28window manager. In addition, ctwm can use coloured, shaped icons
29and background root pixmaps in XPM format [from Arnaud Le Hors],
30in JPEG using libjpeg,
31and xwd files. ctwm can be compiled to
32use any combination of the above icon/pixmap formats.
33
34This program is usually started by the user's session manager or
35startup script.  When used from `xdm(1)` or `xinit(1)` without
36a session manager, ctwm is frequently executed in the foreground
37as the last client.  When run this way, exiting ctwm causes the
38X session to be terminated, shutting down the X server and killing off
39any other running clients.
40
41By default, application windows are surrounded by a ``frame'' with a
42titlebar at the top and a special border around the window.  The titlebar
43contains the window's name, a rectangle that is lit when the window is
44receiving keyboard input, and function boxes known as ``titlebuttons''
45at the left and right edges of the titlebar to which actions can be bound.
46
47Pressing pointer Button1 (usually the left-most button unless it has
48been changed with `xmodmap`) on a titlebutton will invoke the
49function associated with the button.  In the default interface,
50windows are iconified by clicking (pressing and then immediately
51releasing) the left titlebutton (which looks like a Dot).  Conversely,
52windows are deiconified by clicking in the associated icon or entry in
53the icon manager (see description of the variable
54`ShowIconManager` and of the function `f.showiconmgr`).
55
56Windows are resized by pressing the right titlebutton (which resembles a
57group of nested squares), dragging the pointer over edge that is to be
58moved, and releasing the pointer when the outline of the window is the desired
59size.  Similarly, windows are moved by pressing in the title or highlight
60region, dragging a window outline to the new location, and then releasing
61when the outline is in the desired position.  Just
62clicking in the title or highlight region raises the window without moving it.
63
64When new windows are created, ctwm will honor any size and location
65information requested by the user (usually through `-geometry`
66command line argument or resources for the individual applications).
67Otherwise, an outline of the window's default size, its titlebar, and lines
68dividing the
69window into a 3x3 grid that track the pointer are displayed.
70Clicking pointer Button1
71will position the window at the current position and give it the default
72size.  Pressing pointer Button2 (usually the middle pointer button)
73and dragging the outline
74will give the window its current position but allow the sides to be resized as
75described above.  Clicking pointer Button3 (usually the right pointer button)
76will give the window its current position but attempt to make it long enough
77to touch the bottom the screen.
78
79== OPTIONS
80`ctwm` accepts the following command line options:
81
82
83--help, -h::
84  Print usage text.
85
86--display=`dpy`, -d `dpy`::
87  This option specifies the X server to use.
88
89--replace::
90  This option indicates that it is not an error if a window manager
91  is already running.
92  In that case, the existing window manager is asked to quit,
93  and ctwm takes its place.
94  Available only if ctwm is built with the `USE_EWMH` flag.
95  First appeared in 4.0.0.
96
97--single::
98  This option indicates that only the default screen (as specified by
99  `--display` or by the `DISPLAY` environment variable) should be
100  managed.  By default, ctwm will attempt to manage
101  all screens on the display.
102
103--cfgchk::
104  This option causes ctwm to only try to parse the config file, and
105  indicate whether errors are found.
106
107--dumpcfg::
108  This option causes ctwm to print out the compiled-in fallback config.
109  First appeared in 4.0.0.
110
111--file=`filename`, -f `filename`::
112  This option specifies the name of the startup file to use.
113  ctwm will first try to load filename.num, where `num` is the screen number.
114  If it fails, it will try to load filename.
115  By default, ctwm will look in the user's home directory for files
116  named `.ctwmrc.num`, `.ctwmrc`, `.twmrc.num`, or `.twmrc` (where `num` is a screen number).
117
118--verbose, -v::
119  This option indicates that ctwm should print error messages whenever
120  an unexpected X Error event is received.  This can be useful when debugging
121  applications but can be distracting in regular use.
122
123--quiet, -q::
124  Disables `--verbose` (useful for overriding aliases, etc).
125
126--nom4, -n::
127  This option indicates that ctwm should not filter the startup file
128  through `m4`. Available only if ctwm is built with the `USE_M4` flag.
129
130--keep-defs, -k::
131  This option indicates that ctwm should keep the definitions it
132  prepends to your startup file when filtering through `m4` in /tmp.
133  Available only if ctwm is built with the `USE_M4` flag.
134
135--keep=`m4file`, -K `m4file`::
136  This option indicates that ctwm should keep the result of filtering
137  your startup file through `m4` in the named file.
138  Available only if ctwm is built with the `USE_M4` flag.
139
140--mono::
141  Run in monochrome mode.
142
143--version::
144  ctwm just prints its version number.
145
146--info::
147  ctwm prints its detailed version and compile time options.
148
149--nowelcome, -W::
150  This option tells ctwm not to display any welcome when starting.
151
152--clientId=`clid`::
153--restore=`resfname`::
154  Something to do with session management
155
156--xrm=`resource`::
157  Ignored.
158
159ctwm uses `getopt_long()` for parsing the command-line options.  This
160means that args can be passed via `--long=arg` and `--long arg`, as well
161as `-l arg` and `-larg`, and short args can be bundled like `-vnk` as
162well as `-v -n -k`.
163
164
165== CUSTOMIZATION
166Much of ctwm's appearance and behavior can be controlled by providing
167a startup file in one of the following locations (searched in order for
168each screen being managed when ctwm begins):
169
170$HOME/.ctwmrc.`screennumber`::
171  The `screennumber` is a small positive number (e.g. 0, 1, etc.)
172  representing the screen number (e.g. the last number in the DISPLAY environment
173  variable `host:displaynum.screennum`) that would be used to contact that
174  screen of the display.  This is intended for displays with multiple screens of
175  differing visual types.
176
177$HOME/.ctwmrc::
178  This is the usual name for an individual user's startup file.
179
180$HOME/.twmrc.`screennumber`::
181
182$HOME/.twmrc::
183  The users twm startup file.
184
185@ETCDIR@/system.ctwmrc::
186  If none of the preceding files are found, ctwm will look in this
187  file for a
188  default configuration.  This is often tailored by the site administrator to
189  provide convenient menus or familiar bindings for novice users.
190
191
192If no startup files are found, ctwm will use the built-in defaults
193described above.  The only resource used by ctwm is
194`bitmapFilePath` for a colon-separated list of directories to search
195when looking for bitmap files (for more information, see the `Athena
196Widgets` manual and `xrdb(1)`).
197
198ctwm startup files are logically broken up into three types of
199specifications:  `Variables`, `Bindings`, `Menus`.  The
200`Variables` section must come first and is used to describe the
201fonts, colors, cursors, border widths, icon and window placement, highlighting,
202autoraising, layout of titles, warping, use of the icon manager.
203The `Bindings` section usually comes second and is used to specify
204the functions that should be
205invoked when keyboard and pointer buttons are pressed in
206windows, icons, titles, and frames.  The `Menus` section gives any
207user-defined menus (containing functions to be invoked or
208commands to be executed).
209
210Variable names and keywords are case-insensitive.  Strings must be
211surrounded by double quote characters (e.g. ``blue'') and are
212case-sensitive.  A pound sign (#) outside of a string causes the
213remainder of the line in which the character appears to be treated as
214a comment.
215
216== M4 PREPROCESSING
217ctwm can use `m4(1)` to pre-process its setup files.  The availability of
218the m4 preprocessing is dependent on the build option `USE_M4` (on by
219default), and can be selectively disabled with the `--nom4` command-line
220argument.
221
222When ctwm starts up, it opens a file for input as described above.
223But, it processes that file through `m4` before parsing it. So, you can
224use m4 macros to perform operations at runtime.  This makes it very
225easy to work when you use many different displays, with different characteristics.
226For example, If you want to set the lower right section of the screen to be your
227`IconRegion`, (see below for details on the `IconRegion` variable)
228you can use m4 directives and pre-defined symbols to calculate the region
229you want.  For example:
230
231------
232define(IRegion, translit(eval(WIDTH/3)*eval(HEIGHT/2)+eval(WIDTH-WIDTH/3)-0, *, x))
233IconRegion  "IRegion" SOUTH EAST 75 25
234------
235
236will define the lower half, and right-hand third of the screen.  The
237above makes use of symbols that are predefined for m4 by ctwm.  The
238symbols WIDTH and HEIGHT are among those calculated by ctwm and written
239into a temporary file for `m4` to use.
240
241You may well find that if you research the `m4(1)` manual well,
242and understand the power of m4, this will be a _very_
243useful and powerful tool.  But, if you use any of the symbols
244which are predefined by m4, you are in severe danger!  For example,
245the Sun `m4` predefines shift, so if you use that name in your `.ctwmrc`,
246you are out of luck.
247
248The following symbols are predefined by ctwm:
249
250
251=== Hostnames
252
253SERVERHOST::
254  This variable is set to the name of the machine that is running the X
255  server.
256
257CLIENTHOST::
258  The machine that is running the clients.  (ie, ctwm)
259
260HOSTNAME::
261  As of 4.0.2, this is a duplicate of `CLIENTHOST`.  In prior
262  versions, `gethostbyname()` was used to attempt to derive a canonical
263  or fully-qualified version of the hostname.
264
265=== User Info
266
267USER::
268  The name of the user running the program.  Value taken from
269  environmental variables `$USER` and `$LOGNAME`, or from the passwd
270  lookup for your uid if they don't exist.  Falls back to ``unknown'' if
271  all methods fail.
272
273HOME::
274  The user's home directory.  Gotten from the environment var `$HOME`.
275
276=== ctwm info
277
278TWM_TYPE::
279  Tells which `twm` offshoot is running.  It will always be set to
280  the string ``ctwm'' in this program.  This is useful for protecting
281  parts of your `.twmrc` file that twm proper won't understand
282  (like `WorkSpaces`) so that it is still usable with other
283  `twm` programs.
284
285TWM_VERSION::
286  Tells which ctwm version is running in the form of a floating
287  point number.
288
289CTWM_VERSION_MAJOR::
290CTWM_VERSION_MINOR::
291CTWM_VERSION_PATCH::
292CTWM_VERSION_ADDL::
293  Gives the ctwm version split out.  e.g., for a version like
294  "3.8.2-beta1", the `_MAJOR` will be "3", `_MINOR` "8", `_PATCH` "2",
295  and `_ADDL` "-beta1".  Final releases will generally have an empty
296  `CTWM_VERSION_ADDL`; it's mostly meaningful in dev and betas.  For
297  comparison, in this situation, TWM_VERSION will be "3.8.2".
298+
299The `CTWM_VERSION_*` variables first appeared in 4.0.0.
300
301=== X server info
302
303VERSION::
304  The X major protocol version.  As seen by ProtocolVersion(3).
305
306REVISION::
307  The X minor protocol revision.  As seen by ProtocolRevision(3).
308
309VENDOR::
310  The vendor of your X server.  For example: `MIT X Consortium`.
311
312RELEASE::
313  The release number of your X server.  For MIT X11R5, this is `5`.
314
315=== Display info
316
317WIDTH::
318  The width of your display in pixels.
319
320HEIGHT::
321  The height of your display in pixels.
322
323X_RESOLUTION::
324  The X resolution of your display in pixels per meter.
325
326Y_RESOLUTION::
327  The Y resolution of your display in pixels per meter.
328
329PLANES::
330  The number of bit planes your display supports in the default root window.
331
332BITS_PER_RGB::
333  The number of significant bits in an RGB color.  (log base 2 of the number
334  of distinct colors that can be created.  This is often different from the
335  number of colors that can be displayed at once.)
336
337CLASS::
338  Your visual class.  Will return one of `StaticGray`, `GrayScale`,
339  `StaticColor`, `PseudoColor`, `TrueColor`, `DirectColor`,
340  or, if it cannot determine what you have, `NonStandard`.
341
342COLOR::
343  This will be either ``Yes'' or ``No''.  This is just a wrapper around the above
344  definition.  Returns ``Yes'' on `*Color`, and ``No'' on `StaticGray`
345  and `GrayScale`.
346
347=== ctwm compile-time options
348
349XPM::
350  Is defined only if ctwm was compiled with XPM support.
351
352PIXMAP_DIRECTORY::
353  The directory where the ctwm pictures are installed.
354
355JPEG::
356  Is defined only if ctwm was compiled with JPEG support.
357
358SOUNDS::
359  Is defined only if ctwm was compiled with SOUND support.
360
361EWMH::
362  Is defined only if ctwm was compiled with EWMH support.  First appeared
363  in 4.0.0.
364
365I18N::
366  Is defined if ctwm was compiled with I18N support.  This is no longer
367  optional since 3.8 and is always compiled in.  The definition will be
368  removed in a future version.
369
370=== Obsolete options
371
372GNOME::
373  Defined when ctwm was compiled with GNOME1 support.  Removed after
374  3.8.2.
375
376TWM_CAPTIVE::
377  This was either ``Yes'' or ``No''. ``Yes'' if the current ctwm is captive
378  (flag -w), ``No'' in the other case.  Removed in 4.1.0.
379
380TWM_CAPTIVE_NAME::
381  Defined only if TWM_CAPTIVE is also defined. Contains the name of the captive
382  ctwm (flag --name).  Removed in 4.1.0.
383
384
385== VARIABLES
386Many of the aspects of ctwm's user interface are controlled by variables
387that may be set in the user's startup file.  Some of the options are
388enabled or disabled simply by the presence of a particular keyword.  Other
389options require keywords, numbers, strings, or lists of all of these.
390
391Lists are surrounded by braces and are usually separated by
392whitespace or a newline.  For example:
393
394------
395AutoRaise { "emacs" "XTerm" "Xmh" }
396------
397
398or
399
400------
401AutoRaise
402{
403    "emacs"
404    "XTerm"
405    "Xmh"
406}
407------
408
409When a variable containing a list of strings representing windows is
410searched (e.g. to determine whether or not to enable autoraise as shown
411above), a string must be an exact, case-sensitive match to the window's
412name (given by various window properties, such as `WM_NAME`), resource
413name or class name (both given by the `WM_CLASS` window property).  The
414preceding example would enable autoraise on windows named ``emacs'' as
415well as any `xterm` (since they are of class ``XTerm'') or xmh windows
416(which are of class ``Xmh'').
417
418String arguments that are interpreted as filenames (see the `Pixmaps`,
419`Cursors`, and `IconDirectory` below) will
420prepend the user's directory
421(specified by the `HOME` environment variable) if the first character is a
422tilde (~).  If, instead, the first character is a colon (:), the name is
423assumed to refer to one of the internal bitmaps that are used to
424create the default titlebars symbols:  `:xlogo`
425or `:iconify` (both refer to the
426X used for the iconify button), `:resize` (the nested squares used by the
427resize button), and `:question` (the question mark used for non-existent
428bitmap files).
429
430The following variables may be specified at the top of a ctwm startup
431file.  Lists of window name prefix strings are indicated by `win-list`.
432Optional arguments are shown in square brackets:
433
434AlwaysOnTop { `win-list` }::
435  This variable specifies a list of windows (all windows if the list is defaulted)
436  that ctwm will try its best to maintain on top of others. This doesn't
437  work in all case.
438
439AlwaysShowWindowWhenMovingFromWorkspaceManager::
440  When `ReallyMoveInWorkspaceManager` is present and the user is moving
441  a window from the WorkSpaceMap, ctwm display the actual window only
442  if it crosses the current active workspace. If
443  `AlwaysShowWindowWhenMovingFromWorkspaceManager` is present, the actual
444  window is always visible during the move, regardless of whether it crosses
445  the current workspace or not. The Shift key toggles this behaviour.
446
447AlwaysSqueezeToGravity [{ `win-list` }]::
448  This variable indicates that ctwm should obey window gravity
449  when squeezing a window even when the window has a titlebar.
450  Normally, ctwm will always squeeze a window that has a titlebar
451  toward the north.
452  The optional `win-list` may be used to control which windows
453  this applies on.
454
455AnimationSpeed `speed`::
456  The `speed` argument is a non-negative integer. It determines the number of
457  times a second animations (if any) are updated. If `speed` is 0, animations
458  are freezed. The default value is 0.
459
460AutoFocusToTransients::
461  Transient windows get focus automatically when created.  Useful with
462  programs that have keyboard shortcuts that pop up windows.
463
464AutoLower [{ `win-list` }]::
465  This variable specifies a list of windows (all windows if the list is
466  defaulted) to be automatically lowered whenever the pointer leaves a
467  window.  This action can be interactively enabled or disabled on
468  individual windows using the function `f.autolower`.
469
470AutoOccupy::
471  This variable specifies that clients will automatically change their occupation
472  when their name or icon name changes. The new occupation will be recalculated
473  from the Occupy and OccupyAll fields in the `.ctwmrc` file.
474
475AutoPopup [{ `win-list` }]::
476  This variables specifies a list of windows which will be deiconified whenever
477  their name changes. Can be used for xconsole, for instance,which adds a "*" to
478  its name whenever something gets displayed on the console, or for various mail
479  readers who change their icons depending on the presence of unread mail.
480+
481First appeared in 4.0.0.
482
483AutoPriority::
484  This variable specifies that ctwm should automatically recompute the
485  priority of a window (and its associated icon) when its name changes.
486  See also `OnTopPriority`.
487+
488First appeared in 4.0.0.
489
490AutoRaise [{ `win-list` }]::
491  This variable specifies a list of windows (all windows if the list is defaulted)
492  to be automatically raised whenever the pointer has come to rest in a window for
493  the amount of time specified by the `RaiseDelay` variable. This action can be
494  interactively enabled or disabled on individual windows using the function
495  `f.autoraise`.
496
497AutoRaiseIcons::
498  Icons are raised when the cursor enters it. Useful with ShrinkIconTitles.
499
500AutoRelativeResize::
501  This variable indicates that dragging out a window size (either when
502  initially sizing the window with pointer Button2 or when resizing it)
503  should not wait until the pointer has crossed the window edges.
504  Instead, moving
505  the pointer automatically causes the nearest edge or edges to move by the
506  same amount.  This allows the resizing of windows that extend off
507  the edge of the screen.
508  If the pointer is
509  in the center of the window, or if the resize is begun by pressing a
510  titlebutton, ctwm will still wait for the pointer to cross a window
511  edge (to prevent accidents).  This option is
512  particularly useful for people who like the press-drag-release method of
513  sweeping out window sizes.
514
515AutoSqueeze { `win-list` }::
516  These windows will be auto-squeezed (see f.squeeze). i.e. automatically
517  unsqueezed when they get focus, and squeezed when they loose it. Useful for
518  the workspace manager. Not authorized for icon managers.
519
520BackingStore::
521  Enable usage of backing store on menus and workspace map windows.  See
522  also `NoBackingStore`.  Added in 4.0.0; in previous versions this
523  was the default.
524
525BeNiceToColormap::
526  By defaults new colors are allocated for shadows when a 3D look is used,
527  but when you specify `BeNiceToColormap` ctwm uses stipling instead of
528  new colors, the effect is less beautiful, but acceptable. In this case
529  ClearShadowContrast and DarkShadowContrast have no effects.
530
531BorderBottom `pixels`::
532  This variable specifies the width in pixels of a forbidden zone at the
533  bottom of the screen. All constrained window functions (f.movepack,
534  f.move with DontMoveOff, etc...) will consider this zone as offscreen.
535  Default is 0.
536
537BorderColor `string` [{ `wincolorlist` }]::
538  This variable specifies the default color of the border to be placed around
539  all
540  non-iconified windows, and may only be given within a `Color` or
541  `Monochrome` list.  The optional `wincolorlist` specifies a list
542  of window and color name pairs for specifying particular border colors for
543  different types of windows.  For example:
544+
545------
546BorderColor "gray50"
547{
548    "XTerm" "red"
549    "xmh"   "green"
550}
551------
552+
553[normal]
554  The default is ``black''.
555
556BorderLeft `pixels`::
557  This variable specifies the width in pixels of a forbidden zone at the
558  left of the screen. All constrained window functions (f.movepack,
559  f.move with DontMoveOff, etc...) will consider this zone as offscreen.
560  Default is 0.
561
562BorderResizeCursors::
563  This variable specifies that ctwm should use resizing cursors when
564  the pointer is on the window border. To be used preferably when you have
565  bound a button to f.resize in the frame context.
566
567BorderRight `pixels`::
568  This variable specifies the width in pixels of a forbidden zone at the
569  right of the screen. All constrained window functions (f.movepack,
570  f.move with DontMoveOff, etc...) will consider this zone as offscreen.
571  Default is 0.
572
573BorderShadowDepth `pixels`::
574  This variable specifies the depth of the shadow ctwm uses for
575  3D window borders, when UseThreeDBorders is selected.
576
577BorderTileBackground `string` [{ `wincolorlist` }]::
578  This variable specifies the default background color in the gray pattern
579  used in unhighlighted borders (only if `NoHighlight` hasn't been set),
580  and may only be given within a `Color` or `Monochrome` list.  The
581  optional `wincolorlist` allows per-window colors to be specified.
582  The default  is ``white''.
583
584BorderTileForeground `string` [{ `wincolorlist` }]::
585  This variable specifies the default foreground color in the gray pattern
586  used in unhighlighted borders (only
587  if `NoHighlight` hasn't been set), and may only be given within a
588  `Color` or `Monochrome` list.  The optional `wincolorlist` allows
589  per-window colors to be specified.  The default is ``black''.
590
591BorderTop `pixels`::
592  This variable specifies the width in pixels of a forbidden zone at the
593  top of the screen. All constrained window functions (f.movepack,
594  f.move with DontMoveOff, etc...) will consider this zone as offscreen.
595  Default is 0.
596
597BorderWidth `pixels`::
598  This variable specifies the width in pixels of the border surrounding
599  all client window frames if `ClientBorderWidth` has not been specified.
600  This value is also used to set the border size of windows created by ctwm
601  (such as the icon manager).  The default is 2.
602
603ButtonIndent `pixels`::
604  This variable specifies the amount by which titlebuttons should be
605  indented on all sides.  Positive values cause the buttons to be smaller than
606  the window text and highlight area so that they stand out.  Setting this
607  and the `TitleButtonBorderWidth` variables to 0 makes titlebuttons be as
608  tall and wide as possible.  The default is 1 if `UseThreeDTitles` is
609  not set, 0 if it is set.
610
611CenterFeedbackWindow::
612  The moving and resizing information window is centered in the middle of the
613  screen instead of the top left corner.
614
615ClearShadowContrast `contrast`::
616  Indicates to ctwm how to calculate the clear shadow color for 3D items.
617  The value is a comprised between 0 and 100. The formula used is :
618+
619------
620    clear.{RGB} = (65535 - color.{RGB}) * (contrast / 100).
621------
622+
623[normal]
624  Has no effect if `BeNiceToColormap` is active.
625
626ClickToFocus::
627  Focus windows by clicking on them, rather than merely mousing over
628  them.
629
630ClientBorderWidth::
631  This variable indicates that border width of a window's frame should be set to
632  the initial border width of the window, rather than to the value of
633  `BorderWidth`.
634  If `Use3DBorders` is set this variable is automatically unset.
635
636Color { `colors-list` }::
637  This variable specifies a list of color assignments to be made if the default
638  display is capable of displaying more than simple black and white.  The
639  `colors-list` is made up of the following color variables and their values:
640  `DefaultBackground`,
641  `DefaultForeground`,
642  `MenuBackground`,
643  `MenuForeground`,
644  `MenuTitleBackground`,
645  `MenuTitleForeground`, and
646  `MenuShadowColor`.
647  The following
648  color variables may also be given a list of window and color name pairs to
649  allow per-window colors to be specified (see `BorderColor` for details):
650  `BorderColor`,
651  `IconManagerHighlight`,
652  `BorderTileBackground`,
653  `BorderTileForeground`,
654  `TitleBackground`,
655  `TitleForeground`,
656  `IconBackground`,
657  `IconForeground`,
658  `IconBorderColor`,
659  `IconManagerBackground`, and
660  `IconManagerForeground`.
661  For example:
662+
663------
664Color
665{
666    MenuBackground      "gray50"
667    MenuForeground      "blue"
668    BorderColor         "red"    { "XTerm" "yellow" }
669    TitleForeground     "yellow"
670    TitleBackground     "blue"
671}
672------
673+
674[normal]
675  All of these color variables may also be specified for the `Monochrome`
676  variable, allowing the same initialization file to be used on both color and
677  monochrome displays.
678
679ConstrainedMoveTime `milliseconds`::
680  This variable specifies the length of time between button clicks needed to
681  begin a constrained move operation.
682  Double clicking within this amount of time when invoking `f.move` or
683  other similar moving functions will cause the window only be moved in a
684  horizontal or vertical direction.
685  Setting this value to 0 will disable constrained moves.  The default is
686  400 milliseconds.
687+
688[normal]
689  Note that this also affects double clicking in `f.raiseorsqueeze`, and
690  potentially other places that need to track double clicks.  It should
691  probably be renamed.
692
693Cursors { `cursor-list` }::
694  This variable specifies the glyphs that ctwm should use for various
695  pointer cursors.  Each cursor
696  may be defined either from the `cursor` font or from two bitmap files.
697  Shapes from the `cursor` font may be specified directly as:
698+
699------
700    cursorname "string"
701------
702+
703[normal]
704  where `cursorname` is one of the cursor names listed below, and
705  `string` is the name of a glyph as found in the file
706  <X11/cursorfont.h> (without the ``XC_'' prefix).
707  If the cursor is to be defined
708  from bitmap files, the following syntax is used instead:
709+
710------
711    cursorname "image" "mask"
712------
713+
714[normal]
715  The `image` and `mask` strings specify the names of files containing
716  the glyph image and mask in `bitmap(1)` form.
717  The bitmap files are located in the same manner as icon bitmap files.
718  The following example shows the default cursor definitions:
719+
720------
721Cursors
722{
723    Frame       "top_left_arrow"
724    Title       "top_left_arrow"
725    Icon        "top_left_arrow"
726    IconMgr     "top_left_arrow"
727    Move        "fleur"
728    Resize      "fleur"
729    Menu        "sb_left_arrow"
730    Button      "hand2"
731    Wait        "watch"
732    Select      "dot"
733    Destroy     "pirate"
734}
735------
736+
737
738DarkShadowContrast `contrast`::
739  Indicates to ctwm how to calculate the dark shadow color for 3D items.
740  The value is a comprised between 0 and 100. The formula used is :
741+
742------
743    dark.{RGB}  = color.{RGB} * ((100 - contrast) / 100),
744------
745+
746[normal]
747  Has no effect if `BeNiceToColormap` is active.
748
749DecorateTransients::
750  This variable indicates that transient windows (those containing a
751  `WM_TRANSIENT_FOR` property) should have titlebars.  As of 4.0.0
752  this is the default.
753
754DefaultBackground `string`::
755  This variable specifies the background color to be used for sizing and
756  information windows.  The default is ``white''.
757
758DefaultForeground `string`::
759  This variable specifies the foreground color to be used for sizing and
760  information windows.  The default is ``black''.
761
762DontIconifyByUnmapping { `win-list` }::
763  This variable specifies a list of windows that should not be iconified by
764  simply unmapping the window (as would be the case if `IconifyByUnmapping`
765  had been set).  This is frequently used to force some windows to be treated
766  as icons while other windows are handled by the icon manager.
767
768DontMoveOff::
769  This variable indicates that windows should not be allowed to be moved off the
770  screen.  It can be overridden by the `f.forcemove` function.
771
772DontNameDecorations::
773  Disable setting `WM_NAME` properties on the various decoration windows
774  ctwm puts around the windows it manages.  These are handy to keep track
775  of what's what when poking through the list of windows on the screen,
776  but can confuse some tools that don't expect to find them there (xwit
777  is known to be one of them).  First appeared in 4.0.2.
778
779DontPaintRootWindow::
780  This variable tells ctwm not to paint the root window, whatever you told in
781  the Workspaces specification. This is useful to have pixmaps in the Workspace
782  Map but not on the root window.
783
784DontSave { `win-list` }::
785  These windows won't have their characteristics saved for the session manager.
786
787DontSetInactive { `win-list` }::
788  These windows won't be set to InactiveState when they become invisible
789  due to a change workspace. This has been added because some ill-behaved
790  clients (Frame5) don't like this.
791
792DontShowWelcomeWindow::
793  Indicates the same as the `-W` option: the welcome window is not shown.
794
795DontSqueezeTitle [{ `win-list` }]::
796  This variable indicates that titlebars should not be squeezed to their
797  minimum size as described under `SqueezeTitle` below.
798  If the optional window list is supplied, only those windows will be
799  prevented from being squeezed.
800
801DontToggleWorkSpaceManagerState::
802  Turns off the feature toggling the workspace manager state to/from map/button
803  state when you press ctrl and the workspace manager window is in focus.
804
805DontWarpCursorInWMap::
806  Tells ctwm not to warp the cursor to the corresponding actual window
807  when you click in a small window in the workspace map.
808
809EWMHIgnore { `message-types` }::
810  Sets EWMH message types that ctwm will ignore.  This is only valid
811  if built with `USE_EWMH` (currently on by default).  The following
812  example shows all the valid options:
813+
814------
815EWMHIgnore
816{
817    # Window states
818    "STATE_MAXIMIZED_VERT"
819    "STATE_MAXIMIZED_HORZ"
820    "STATE_FULLSCREEN"
821    "STATE_SHADED"
822    "STATE_ABOVE"
823    "STATE_BELOW"
824}
825------
826+
827First appeared in 4.0.0.
828
829ForceFocus [{ `win-list` }]::
830  Give focus to windows whether they asked for it or not.  This may
831  occasionally be useful with windows that tell us not to give them
832  focus, but still need it and fail to work right without us doing so.
833  The optional window list allows specifying which windows will get such
834  treatment.
835+
836First appeared in 4.0.0.  In prior versions, a variant of this
837functionality was unconditionally enabled.
838
839ForceIcons::
840  This variable indicates that icon pixmaps specified in the `Icons`
841  variable should override any client-supplied pixmaps.
842
843FramePadding `pixels`::
844  This variable specifies the distance between the titlebar decorations (the
845  button and text) and the window frame.  The default is 2 pixels if `UseThreeDTitles` is
846  not set, 0 if it is set.
847
848GrabServer::
849  Specifies that ctwm should grab the X server (blocking all events other
850  than ours) when popping up menus and moving opaque windows.  See also
851  `NoGrabServer`.  Added in 4.0.0; in previous versions this was the
852  default.
853
854IconBackground `string` [{ `win-list` }]::
855  This variable specifies the background color of icons, and may
856  only be specified inside of a `Color` or `Monochrome` list.
857  The optional `win-list` is a list of window names and colors so that
858  per-window colors may be specified.  See the `BorderColor`
859  variable for a complete description of the `win-list`.
860  The default is ``white''.
861
862IconBorderColor `string` [{ `win-list` }]::
863  This variable specifies the color of the border used for icon windows, and
864  may only be specified inside of a `Color` or `Monochrome` list.
865  The optional `win-list` is a list of window names and colors so that
866  per-window colors may be specified.  See the `BorderColor`
867  variable for a complete description of the `win-list`.
868  The default is ``black''.
869
870IconBorderWidth `pixels`::
871  This variable specifies the width in pixels of the border surrounding
872  icon windows.  The default is 2.
873
874IconDirectory `string`::
875  This variable specifies the directory that should be searched
876  if a bitmap file cannot be found in any of the directories
877  in the `bitmapFilePath` resource.
878
879IconFont `string`::
880  This variable specifies the font to be used to display icon names within
881  icons.  The default is ``variable''.
882
883IconForeground `string` [{ `win-list` }]::
884  This variable specifies the foreground color to be used when displaying icons,
885  and may only be specified inside of a
886  `Color` or `Monochrome` list.
887  The optional `win-list` is a list of window names and colors so that
888  per-window colors may be specified.  See the `BorderColor`
889  variable for a complete description of the `win-list`.
890  The default is ``black''.
891
892IconifyByUnmapping [{ `win-list` }]::
893  This variable indicates that windows should be iconified by being unmapped
894  without trying to map any icons.  This assumes that the user is will
895  remap the window through the icon manager, the `f.warpto` function, or
896  the `TwmWindows` menu.
897  If the optional `win-list` is provided, only those windows will be
898  iconified by simply unmapping.  Windows that have both this and the
899  `IconManagerDontShow` options set may not be accessible if no binding
900  to the `TwmWindows` menu is set in the user's startup file.
901
902IconifyStyle `string`::
903  Where string is either `"normal"`, `"mosaic"`, `"zoomin"`, `"zoomout"`
904  or `"sweep"`. Tells ctwm to use some fancy graphical effects when iconifying
905  windows.
906
907IconJustification `string`::
908  Where string is either `"left"`, `"center"` or `"right"`.
909  Tells ctwm how to justify the icon image against the icon title (if any).
910
911IconManagerBackground `string` [{ `win-list` }]::
912  This variable specifies the background color to use for icon manager entries,
913  and may only be specified inside of a
914  `Color` or `Monochrome` list.
915  The optional `win-list` is a list of window names and colors so that
916  per-window colors may be specified.  See the `BorderColor`
917  variable for a complete description of the `win-list`.
918  The default is ``white''.
919
920IconManagerDontShow [{ `win-list` }]::
921  This variable indicates that the icon manager should not display any
922  windows.  If the optional `win-list` is given, only those windows will
923  not be displayed.  This variable is used to prevent windows that are rarely
924  iconified (such as `xclock` or `xload`) from taking up space in
925  the icon manager.
926
927IconManagerFont `string`::
928  This variable specifies the font to be used when displaying icon manager
929  entries.  The default is ``variable''.
930
931IconManagerForeground `string` [{ `win-list` }]::
932  This variable specifies the foreground color to be used when displaying
933  icon manager entries, and may only be specified inside of a
934  `Color` or `Monochrome` list.
935  The optional `win-list` is a list of window names and colors so that
936  per-window colors may be specified.  See the `BorderColor`
937  variable for a complete description of the `win-list`.
938  The default is ``black''.
939
940IconManagerGeometry `string` [ `columns` ]::
941  This variable specifies the geometry of the icon manager window.  The
942  `string` argument is standard geometry specification that indicates
943  the initial full size of the icon manager.  The icon manager window is
944  then broken into `columns` pieces and scaled according to the number
945  of entries in the icon manager.  Extra entries are wrapped to form
946  additional rows.  The default number of columns is 1. When XrandR is
947  compiled, the geometry can be relative to a monitor, by prefixing
948  its name (visible with `xrandr(1)` command line) followed by `:`. This name
949  is ignored when XrandR is not available.
950
951IconManagerHighlight `string` [{ `win-list` }]::
952  This variable specifies the border color to be used when highlighting
953  the icon manager entry that currently has the focus,
954  and can only be specified inside of a
955  `Color` or `Monochrome` list.
956  The optional `win-list` is a list of window names and colors so that
957  per-window colors may be specified.  See the `BorderColor`
958  variable for a complete description of the `win-list`.
959  The default is ``black''.
960
961IconManagers { `iconmgr-list` }::
962  This variable specifies a list of icon managers to create.  Each item in the
963  `iconmgr-list` has the following format:
964+
965------
966    "winname" ["iconname"] "geometry" columns
967------
968+
969[normal]
970  where `winname` is the name of the windows that should be put into
971  this icon manager, `iconname` is the name of that icon manager
972  window's icon, `geometry` is a standard geometry specification, and
973  `columns` is the number of columns in this icon manager as described
974  in `IconManagerGeometry`. When XrandR is compiled, the geometry can
975  be relative to a monitor, by prefixing its name (visible with
976  `xrandr(1)` command line) followed by `:`. This name is ignored when
977  XrandR is not available.  For example:
978+
979------
980IconManagers
981{
982    "XTerm"  "=300x5+800+5"       5
983    "myhost" "HDMI2:400x5+100+5"  2
984}
985------
986+
987[normal]
988  Clients whose name or class is ``XTerm'' will have an entry created
989  in the ``XTerm'' icon manager.  Clients whose name was ``myhost'' would
990  be put into the ``myhost'' icon manager.
991
992IconManagerShadowDepth `pixels`::
993  This variable specifies the depth of the shadow ctwm uses for
994  3D IconManager entries, when UseThreeDIconManagers is selected.
995
996IconManagerShow { `win-list` }::
997  This variable specifies a list of windows that should appear in the icon
998  manager.  When used in conjunction with the `IconManagerDontShow`
999  variable, only the windows in this list will be shown in the icon manager.
1000
1001IconMenuDontShow { `win-list` }::
1002  Don't show the name of these windows in the TwmIcons menu.
1003
1004IconRegion `geomstring` `vgrav hgrav gridwidth gridheight` [`iconjust`] [`iconregjust`] [`iconregalign`] [{ `win-list` }]::
1005  This variable specifies an area on the root window in which icons are placed
1006  if no specific icon location is provided by the client.  The `geomstring`
1007  is a quoted string containing a standard geometry specification. When XrandR
1008  is compiled, the geometry can be relative to a monitor, by prefixing
1009  its name (visible with `xrandr(1)` command line) followed by `:`.
1010  This name is ignored when XrandR is not available. If more than
1011  one `IconRegion` lines are given, icons will be put into the succeeding
1012  icon regions when the first is full. The `vgrav` argument should be either
1013  `North` or `South`  and is used to control whether icons are
1014  first filled in from the top or bottom of the icon region.  Similarly, the
1015  `hgrav` argument should be either `East` or `West` and is used
1016  to control whether icons should be filled in from left or from the right. Icons
1017  are laid out within the region in a grid with cells `gridwidth` pixels
1018  wide and `gridheight` pixels  high. The optional win-list argument tells
1019  ctwm that if such a window is iconified, and there is enough room in this
1020  icon region for its icon, then place it here. The optional `iconjust`,
1021  `iconregjust` and `iconregalign` can be used to give specific values
1022  of IconJustification, IconRegionJustification and IconRegionAlignement for
1023  this IconRegion.
1024
1025IconRegionAlignement `string`::
1026  Where string is either `"top"`, `"center"` `"bottom"` or `"border"`.
1027  Tells ctwm how to align icons inside their place in the IconRegion.
1028  If ``border'' is given, the justification will be ``top'' if
1029  the icon region gravity is ``north'' and ``bottom'' if the icon region gravity is ``south''.
1030
1031IconRegionJustification `string`::
1032  Where string is either `"left"`, `"center"` `"right"` or `"border"`.
1033  Tells ctwm how to justify icons inside their place in the IconRegion.
1034  If ``border'' is given, the justification will be ``left'' if
1035  the icon region gravity is ``west'' and ``right'' if the icon region gravity is ``east''.
1036
1037Icons { `win-list` }::
1038  This variable specifies a list of window names and the bitmap filenames that
1039  should be used as their icons.  For example:
1040+
1041------
1042Icons
1043{
1044    "XTerm"  "xterm.icon"
1045    "xfd"    "xfd_icon"
1046}
1047------
1048+
1049[normal]
1050  Windows that match ``XTerm'' and would not be iconified by unmapping, would try
1051  to use  the icon bitmap in the file ``xterm.icon''.If `ForceIcons` is
1052  specified, this bitmap will be used even if the client has requested its
1053  own icon pixmap.
1054
1055IconSize `string`::
1056  (Only if built with `USE_EWMH`)
1057  string is of the form
1058  "`<width>x<height>`"
1059  or
1060  "`size`"
1061  for a square size.
1062  This indicates the preferred size of icons selected from the EWMH window
1063  property `_NET_WM_ICON`.
1064  If an icon with the exact size is not available, one with the nearest (area)
1065  size will be chosen.
1066+
1067First appeared in 4.0.0.
1068
1069IgnoreCaseInMenuSelection::
1070  Used when moving the pointer inside a menu with the keyboard. When you
1071  type a letter, the pointer goes to the next entry beginning with this
1072  letter. If IgnoreCaseInMenuSelection is present, this selection ignores
1073  the case of this first letter.
1074
1075IgnoreLockModifier::
1076  If present, all bindings (buttons and keys) will ignore the LockMask. Useful if you
1077  often use caps lock, and don't want to define twice all your bindings.
1078
1079IgnoreModifier::
1080  All bindings (buttons and keys) will ignore the modifiers
1081  you specified. It is useful when you use caps locks or
1082  num locks. You don't need IgnoreLockModifier any more with this option.
1083+
1084------
1085IgnoreModifier { lock m2 }
1086------
1087+
1088
1089IgnoreTransient::
1090  List of windows for which to ignore transients.
1091+
1092------
1093IgnoreTransient { "Wine" }
1094------
1095+
1096
1097InterpolateMenuColors::
1098  This variable indicates that menu entry colors should be interpolated between
1099  entry specified colors.  In the example below:
1100+
1101------
1102Menu "mymenu"
1103{
1104    "Title"     ("black":"red")     f.title
1105    "entry1"                        f.nop
1106    "entry2"                        f.nop
1107    "entry3"    ("white":"green")   f.nop
1108    "entry4"                        f.nop
1109    "entry5"    ("red":"white")     f.nop
1110}
1111------
1112+
1113[normal]
1114  the foreground colors for ``entry1'' and ``entry2'' will be interpolated
1115  between black and white, and the background colors between red and green.
1116  Similarly, the foreground for ``entry4'' will be half-way between white and
1117  red, and the background will be half-way between green and white.
1118
1119MakeTitle { `win-list` }::
1120  This variable specifies a list of windows on which a titlebar should be placed
1121  and is used to request titles on specific windows when `NoTitle` has been
1122  set.
1123
1124MapWindowBackground color [{ win-list }]::
1125  This variable specifies the background colors to use for small windows in the
1126  workspace map window and may only be specified inside of a Color or Monochrome
1127  list. The optional `win-list` is a list of window names and colors so
1128  that per-window colors may be specified. If there is neither MapWindowBackground,
1129  nor MapWindowForeground the window title colors are used.
1130
1131MapWindowCurrentWorkSpace { border_color [background] [foreground] [bitmap] }::
1132  Specify the appearence of the map window corresponding to the current workspace.
1133
1134MapWindowDefaultWorkSpace { border_color [background] [foreground] [bitmap] }::
1135  Specify the appearence of the map window corresponding to the workspaces other
1136  than the current workspace when no root background information has been provided
1137  to ctwm in the WorkSpace command. Not used in others cases.
1138
1139MapWindowForeground color [{ win-list }]::
1140  This variable specifies the foreground colors to use for small windows in the
1141  workspace map window and may only be specified inside of a Color or Monochrome
1142  list. The optional `win-list` is a list of window names and colors so
1143  that per-window colors may be specified. If there is neither MapWindowBackground,
1144  nor MapWindowForeground the window title colors are used.
1145
1146MaxIconTitleWidth `width`::
1147  The integer argument tells ctwm the maximun width to use for an
1148  icon title. If an icon title is larger than `width`, it is truncated.
1149
1150MaxWindowSize `string`::
1151  This variable specifies a geometry in which the width and height
1152  give the maximum size for a given window.  This is typically used to
1153  restrict windows to the size of the screen.  The default is ``30000x30000''.
1154
1155MenuBackground `string`::
1156  This variable specifies the background color used for menus,
1157  and can only be specified inside of a
1158  `Color` or `Monochrome` list.  The default is ``white''.
1159
1160MenuFont `string`::
1161  This variable specifies the font to use when displaying menus.  The default
1162  is ``variable''.
1163
1164MenuForeground `string`::
1165  This variable specifies the foreground color used for menus,
1166  and can only be specified inside of a
1167  `Color` or `Monochrome` list.  The default is ``black''.
1168
1169MenuShadowColor `string`::
1170  This variable specifies the color of the shadow behind pull-down menus
1171  and can only be specified inside of a
1172  `Color` or `Monochrome` list.  The default is ``black''.
1173
1174MenuShadowDepth `pixels`::
1175  This variable specifies the depth of the shadow ctwm uses for
1176  3D menus, when UseThreeDMenus is selected.
1177
1178MenuTitleBackground `string`::
1179  This variable specifies the background color for `f.title` entries in
1180  menus, and
1181  can only be specified inside of a
1182  `Color` or `Monochrome` list.  The default is ``white''.
1183
1184MenuTitleForeground `string`::
1185  This variable specifies the foreground color for `f.title` entries in
1186  menus and
1187  can only be specified inside of a
1188  `Color` or `Monochrome` list.  The default is ``black''.
1189
1190MonitorLayout { `monitor-list` }::
1191  This allows manually configuring what ctwm will consider as the list of
1192  monitors.  If `XRANDR` support is compiled in (the default as of
1193  4.1.0), and the `RANDR` extension is available on your server, then
1194  `ctwm` will use that to determine the size and layout of your monitors.
1195+
1196[normal]
1197  However, if either is not the case, or you want to override the results
1198  it returns, you can specify the names and layouts of your desired
1199  ``monitors'' with this.  For instance, if you have a very wide monitor,
1200  and would prefer to treat it as several narrower side-by-side monitors,
1201  you could use this to tell ctwm to treat it that way.
1202+
1203------
1204MonitorLayout
1205{
1206    # Imagine a 5000x1000 monitor, that we want to split into two 2k wide
1207    # sections at the far left and right, with a 1k wide section in the
1208    # middle.
1209    "Left:2000x1000+0+0"
1210    "1000x1000+2000+0"       # Middle section unnamed
1211    "Right:2000x1000+3000+0"
1212}
1213------
1214+
1215[normal]
1216  With `m4` support, you could even make it automatically split your full
1217  display into 2 ``monitors'':
1218+
1219-----
1220define(LeftWidth, eval(WIDTH / 2))dnl
1221define(RightWidth, eval(WIDTH - LeftWidth))dnl
1222MonitorLayout
1223{
1224    "`AutoL:'LeftWidth`x'HEIGHT`+0+0'"
1225    "`AutoR:'RightWidth`x'HEIGHT`+'LeftWidth`+0'"
1226}
1227-----
1228
1229Monochrome { `colors` }::
1230  This variable specifies a list of color assignments that should be made if
1231  the screen has a depth of 1.  See the description of `Color`.
1232
1233MoveDelta `pixels`::
1234  This variable specifies the number of pixels the pointer
1235  must move before the `f.move` function starts working.  Also
1236  see the `f.deltastop` function.  The default is zero pixels.
1237
1238MovePackResistance `pixels`::
1239  This variable specifies the number of pixels of the movepack and movepush
1240  resistance. See `f.movepack` and `f.movepush`.
1241
1242MoveOffResistance `pixels`::
1243  This variable specifies the number of pixels of the moveoff resistance.
1244  If `pixels` is positive, `DontMoveOff` will only prevent
1245  you from going off the edge if you're within n pixels off the edge. If you
1246  go further, `DontMoveOff` gives up and lets you go as far as you wish.
1247  `f.forcemove` still allows you to totally ignore `DontMoveOff`.
1248  A negative value puts you back into ``never moveoff'' mode (it's the default).
1249
1250MWMIgnore::
1251  Sets Motif window manager hints ctwm will ignore.  The following
1252  example shows all the valid options:
1253+
1254------
1255MWMIgnore
1256{
1257    # en/disable window borders
1258    "DECOR_BORDER"
1259
1260    # en/disable titlebars
1261    "DECOR_TITLE"
1262}
1263------
1264+
1265First appeared in 4.0.0.
1266
1267NoBackingStore::
1268  This variable indicates that ctwm's menus should not request backing
1269  store to minimize repainting of menus.  This is typically used with
1270  servers that can repaint faster than they can handle backing store.
1271  See also `BackingStore`.  As of 4.0.0 this is the default.
1272
1273NoBorder { `win-list` }::
1274  These windows won't have borders. If you want no borders on all windows,
1275  use the BorderWidth keyword.
1276
1277NoCaseSensitive::
1278  This variable indicates that case should be ignored when sorting icon names
1279  in an icon manager.  This option is typically used with applications that
1280  capitalize the first letter of their icon name.
1281
1282NoDecorateTransients::
1283  Specify that transient windows (i.e., windows with a `WM_TRANSIENT_FOR`
1284  property set) should be ignored (not given decorations) by ctwm.  See
1285  also `DecorateTransients`.  Added in 4.0.0; in previous versions
1286  this was the default.
1287
1288NoDefaults::
1289  This variable indicates that ctwm should not supply the default
1290  titlebuttons and bindings.  This option should only be used if the startup
1291  file contains a completely new set of bindings and definitions.
1292
1293NoGrabServer::
1294  This variable indicates that ctwm should not grab the server
1295  when popping up menus and moving opaque windows.  As of 4.0.0 this
1296  is the default.
1297
1298NoHighlight [{ `win-list` }]::
1299  This variable indicates that borders should not be highlighted to track the
1300  location of the pointer.  If the optional `win-list` is given, highlighting
1301  will only be disabled for those windows.
1302  When the border is highlighted, it will
1303  be drawn in the current `BorderColor`.  When the border is not
1304  highlighted, it will be stippled with an gray pattern using the
1305  current `BorderTileForeground` and `BorderTileBackground` colors.
1306
1307NoIconTitle [{ `win-list` }]::
1308  This variable indicates that icons should not display the icon name
1309  of the client.  If the
1310  optional `win-list` is given, only those clients will not have
1311  icon titles.
1312
1313NoIconManagerFocus::
1314  This variable indicates that ctwm will not set the focus on the corresponding
1315  window when the pointer is in an IconManager.
1316
1317NoIconManagers::
1318  This variable indicates that no icon manager should be created.
1319
1320NoImagesInWorkSpaceManager::
1321  This variable turns off displaying of background images in the WorkSpaceMap.
1322  Instead only the colors defined in `WorkSpaces` will be used as background
1323  in the WorkSpaceMap.
1324
1325NoMenuShadows::
1326  This variable indicates that menus should not have drop shadows drawn behind
1327  them.  This is typically used with slower servers since it speeds up menu
1328  drawing at the expense of making the menu slightly harder to read.
1329
1330NoOpaqueMove [{ `window-list` }]::
1331  The counterpart of `OpaqueMove`. See `OpaqueMove`.
1332
1333NoOpaqueResize [{ `window-list` }]::
1334  The counterpart of `OpaqueResize`. See `OpaqueResize`.
1335
1336NoRaiseOnDeiconify::
1337  This variable indicates that windows that are deiconified should not be
1338  raised.
1339
1340NoRaiseOnMove::
1341  This variable indicates that windows should not be raised when moved.  This
1342  is typically used to allow windows to slide underneath each other.
1343
1344NoRaiseOnResize::
1345  This variable indicates that windows should not be raised when resized.  This
1346  is typically used to allow windows to be resized underneath each other.
1347
1348NoRaiseOnWarp::
1349  This variable indicates that windows should not be raised when the pointer
1350  is warped into them with the `f.warpto` function.  If this option is set,
1351  warping to an occluded window may result in the pointer ending up in the
1352  occluding window instead the desired window (which causes unexpected behavior
1353  with `f.warpring`).
1354
1355NoRestartPreviousState::
1356  Don't attempt to regenerate the state the screen was in before the
1357  previous window manager was shut down.  See `RestartPreviousState` for
1358  details.  Added in 4.0.0; in previous versions this was the default.
1359
1360NoSaveUnders::
1361  This variable indicates that menus should not request save-unders to minimize
1362  window repainting following menu selection.  It is typically used with displays
1363  that can repaint faster than they can handle save-unders.
1364
1365NoShowOccupyAll::
1366  This variable specifies that OccupyAll windows won't be displayed in the
1367  WorkSpaceMap window.
1368
1369NoSortIconManager::
1370  Specifies that entries in the icon manager should be appended in the
1371  order they show up.  See also `SortIconManager`.  Added in 4.0.0; in
1372  previous versions this was the default.
1373
1374NoStackMode [{ `win-list` }]::
1375  This variable indicates that client window requests to change stacking order
1376  should be ignored.  If the optional `win-list` is given, only requests on
1377  those windows will be ignored.  This is typically used to prevent applications
1378  from relentlessly popping themselves to the front of the window stack.
1379
1380NoTitle [{ `win-list` }]::
1381  This variable indicates that windows should not have titlebars.  If the
1382  optional `win-list` is given, only those windows will not have titlebars.
1383  `MakeTitle` may be used with this option to force titlebars to be put
1384  on specific windows.
1385
1386NoTitleFocus::
1387  This variable indicates that ctwm should not set keyboard input focus to
1388  each window as it is entered.  Normally, ctwm sets the focus
1389  so that focus and key events from the titlebar and
1390  icon managers are delivered to the application.  If the pointer is moved
1391  quickly and ctwm is slow to respond, input can be directed to the old
1392  window instead of the new.  This option is typically
1393  used to prevent this ``input lag'' and to
1394  work around bugs in older applications that have problems with focus events.
1395
1396NoTitleHighlight [{ `win-list` }]::
1397  This variable indicates that the highlight area of the titlebar, which is
1398  used to indicate the window that currently has the input focus, should not
1399  be displayed.  If the optional `win-list` is given, only those windows
1400  will not have highlight areas.  This and the `SqueezeTitle` options
1401  can be set to substantially reduce the amount of screen space required by
1402  titlebars.
1403
1404NoWarpToMenuTitle::
1405  This variable indicates that the cursor should not be warped to the title
1406  of a menu which does not have room to drop down below the current cursor
1407  position.
1408
1409Occupy { `occupy-list` }::
1410  This variable specifies which windows occupy which workspaces at startup.
1411+
1412[normal]
1413  `occupy-list` consists of entries of the form :
1414+
1415------
1416        [Window]   win-name  { wspc1 wspc2 ... }
1417or      Workspace  wspc-name { win1  win2 ...  }
1418------
1419+
1420[normal]
1421  Example :
1422+
1423------
1424Occupy
1425{
1426               "xload"   {"all"}
1427    Window     "xterm"   {"here" "there" "elsewhere"}
1428               "xv"      {"images"}
1429    WorkSpace  "images"  {"xloadimage"}
1430}
1431------
1432+
1433[normal]
1434  If `all` is given for the workspace name (in either form), the named
1435  window[s] will be put in all workspaces as if they were listed in
1436  `OccupyAll`.  If the workspace name begins with `ws:`, the workspace
1437  name will be looked up without the prefix first.  That is, if the given
1438  name is `ws:abc`, it will first look for a workspace called `abc`, and
1439  assign to that if found.  Else it will fall back to looking for the
1440  name `ws:abc`.
1441+
1442[normal]
1443  Note : The Occupy declaration should come after the WorkSpaces declaration.
1444
1445OccupyAll { `window-list` }::
1446+
1447[normal]
1448  This variable specifies a list of windows that will occupy all workspaces at startup.
1449+
1450[normal]
1451  `window-list` is a list of window names.
1452+
1453[normal]
1454  Example :
1455+
1456------
1457OccupyAll
1458{
1459    "xload"
1460    "xbiff"
1461    "xconsole"
1462}
1463------
1464+
1465[normal]
1466  Note : The OccupyAll declaration should come after the WorkSpaces declaration.
1467
1468OnTopPriority [Icons] `priority` [ { `win-list` } ]::
1469  ctwm allows you to put windows in several overlapping priority planes
1470  going from -8 to +8, which makes it possible to have windows that stay on
1471  top or that are kept in the background. If `win-list` is present, it
1472  specifies which windows should be put in the `priority` plane.
1473  Else the `priority` sets the default value to use (the default default
1474  is 0). The `Icons` parameter, if present, indicates that the preference
1475  described applies to icons rather than to windows.
1476+
1477[normal]
1478  Example:
1479+
1480------
1481OnTopPriority Icons -1  # place icons a little in the background
1482OnTopPriority Icons 1   # place mail icons on top of normal windows
1483{
1484    "Exmh"
1485    "xbiff"
1486}
1487
1488OnTopPriority 8         # keep these always on top of other windows
1489{
1490    "Emacs Icon Manager" "WorkSpaceManager"
1491    "TWM Icon Manager" "XDaliClock"
1492}
1493------
1494+
1495First appeared in 4.0.0.
1496
1497OpaqueMove [{ `window-list` }]::
1498  This variable indicates that the `f.move` function should actually move
1499  the window instead of just an outline so that the user can immediately see
1500  what the window will look like in the new position.  This option is typically
1501  used on fast displays (particularly if `NoGrabServer` is set). The optional
1502  window list parameter indicates that only windows in this list should actually
1503  be moved in opaque mode. The `NoOpaqueMove` counterpart is also available.
1504+
1505As of 4.0.0 this is enabled by default.
1506
1507OpaqueMoveThreshold `threshold`::
1508  The integer parameter is a percentage and indicates that only windows
1509  (elligible for opaque moving) with a surface smaller than this
1510  percentage of the surface of the screen should actually be moved in
1511  opaque mode.  The default is 200.  Since 4.0.0, values >= 200 are
1512  treated as infinity, causing windows to always `OpaqueMove` if
1513  eligible.
1514
1515OpaqueResize [{ `window-list` }]::
1516  The opaque version of resize. Extremely resource intensive, but
1517  beautiful with fast server/client/network. See `OpaqueMove`. The
1518  `NoOpaqueResize` counterpart is also available.  As of 4.0.0 this is
1519  enabled by default.
1520
1521OpaqueResizeThreshold `threshold`::
1522  The resize version of `OpaqueMoveThreshold`.  The default is 1000.
1523  Since 3.8.1, values >= 1000 are treated as infinity, causing windows to
1524  always `OpaqueResize` if eligible.
1525
1526OpenWindowTimeout `seconds`::
1527  seconds is an integer representing a number of second. When a window
1528  tries to open on an unattended display, it will be automatically
1529  mapped after this number of seconds.
1530
1531PackNewWindows::
1532  Use f.movepack algorithm instead of f.move when opening a new window.
1533
1534Pixmaps { `pixmaps` }::
1535  This variable specifies a list of pixmaps that define the appearance of various
1536  images.  Each entry is a keyword indicating the pixmap to set, followed by a
1537  string giving the name of the bitmap file.  The following pixmaps
1538  may be specified:
1539+
1540------
1541Pixmaps
1542{
1543        TitleHighlight  "gray1"
1544#       TitleHighlight  "supman%.xbm"
1545}
1546------
1547+
1548[normal]
1549  The default for `TitleHighlight` is to use an even stipple pattern.
1550
1551PixmapDirectory `path`::
1552  This variable specifies the path where ctwm looks to find non-X11 bitmap
1553  files.  Whenever you want to use a image file that is not an X11 bitmap,
1554  specify : +xpm:filename+ for xpm files, +xwd:filename+ for xwd files,
1555  +jpeg:file+ for jpeg file,
1556  or +|command+ for an on the fly generated xwd file. Use the % character
1557  to specify an animation. `path` can be a colon separated list of directories.
1558  Example :
1559+
1560------
1561PixmapDirectory  "/usr/lib/X11/twm"
1562Icons
1563{
1564    "Axe"    "xpm:edit.xpm"
1565    "xterm"  "xpm:ball%.xpm"
1566}
1567------
1568+
1569[normal]
1570  N.B This is only valid if your version of ctwm has been compiled with the
1571  right extension (XPM or JPEG).
1572
1573PrioritySwitching [Icons] { `win-list` }::
1574  Specifies that the windows in `win-list` can switch priority. This means
1575  that they can be in plane `priority` or `-priority` depending on the
1576  situation. For instance a window whose `priority` is 2 will be put into
1577  plane 2 when raised and plane -2 when lowered, which means that it will usually
1578  stay on top if you raise another window, but can still be lowered if its
1579  priority is temporarily too high for your liking. If `Icons` is specified,
1580  it means that the preference applies to icons rather than windows.  See
1581  also the `f.priorityswitching` function for dynamically adding/removing
1582  windows at runtime.
1583+
1584First appeared in 4.0.0.
1585
1586PriorityNotSwitching [Icons] { `win-list` }::
1587  As above except that it declares that the default should be for windows to be
1588  able to switch priority except for the windows in `win-list` which can't.
1589+
1590First appeared in 4.0.0.
1591
1592RaiseDelay `milliseconds`::
1593  For windows that are to be automatically raised when the pointer enters
1594  (see the `AutoRaise` variable and the `f.autoraise` function)
1595  this variable specifies the length of time the pointer should rest in
1596  the window before it is raised.  The default is 0 milliseconds.
1597
1598RaiseOnClick::
1599  If present a window will be raised on top of others when clicked on, and the
1600  ButtonPress event will be correctly forwarded to the client that owns this window
1601  (if it asked to). See `RaiseOnClickButton`.
1602
1603RaiseOnClickButton `button_number`::
1604  Where `button_number` is a valid button number (currently 1 to 11). Specify
1605  the button to use for RaiseOnClick.
1606
1607RaiseWhenAutoUnSqueeze::
1608  Windows are raised when auto-unsqueezed (See AutoSqueeze).
1609
1610RandomPlacement [ `string1` [ `string2` ]]::
1611  This variable indicates that windows with no specified geometry should
1612  be placed in a pseudo-random location instead of having the user drag
1613  out an outline.  If no argument is given, it is interpreted as
1614  `RandomPlacement "on"`.
1615+
1616`string1` may be ``on'', ``off'', ``all'' or ``unmapped'', and `string2`
1617is a displacement for the pseudo-randomly placed window compared to the
1618previous one.  The argument ``on'' or ``all'' are equivalent, and tell
1619ctwm to do this for all such windows, ``off'', not to do this, and
1620``unmapped'', only for unmapped windows, e.g. iconified or not visible in
1621the current workspace.  If the second argument isn't given, the
1622displacement +30+30 (30 pixels right and down) is used.
1623+
1624As of 4.0.0, ``on'' is the default if no `RandomPlacement` is
1625specified in the config.  Previously ``off'' was default.
1626
1627ReallyMoveInWorkspaceManager::
1628  This keyword tells ctwm to move the actual window when the user is
1629  moving the small windows in the WorkSpaceMap window. If not present the
1630  WorkSpaceMap can be used only to modify the occupation of a window.
1631  Pressing the `shift` key while dragging a window in the workspace manager
1632  temporarily toggles this option.
1633
1634ResizeFont `string`::
1635  This variable specifies the font to be used for in the dimensions window when
1636  resizing windows.  The default is ``fixed''.
1637
1638RestartPreviousState::
1639  This variable indicates that properties on client windows to attempt to
1640  regenerate the state that the screen was in before the previous window
1641  manager was shutdown.  This includes using the `WM_STATE` property to
1642  tell which windows should be iconified and which should be left
1643  visible, and the `WM_OCCUPATION` property to determine in which
1644  workspaces a window should be visible.  As of 4.0.0 this is the
1645  default.
1646
1647ReverseCurrentWorkspace::
1648  This variable tells ctwm to reverse the background and
1649  foreground colors in the small windows in the workspace map for the current
1650  workspace.
1651
1652RplaySoundHost `string`::
1653  The host on which sounds should be played.  Only meaningful when ctwm
1654  is built with `USE_SOUND`; will give a warning otherwise.  See the
1655  SOUNDS section.  Added in 4.0.0; prior versions used the `SoundHost`
1656  parameter instead.
1657
1658RplaySounds { `sounds-list` }::
1659  Define what sounds to play on various events through rplayd.  It
1660  contains entries of the form
1661+
1662----
1663    "EventName"   "/file/to/play.wav"
1664----
1665+
1666Only meaningful when ctwm is built with `USE_SOUND`; it will give a
1667warning otherwise.  See the SOUNDS section.  Note that if this section is
1668given in the ctwmrc, the `~/.ctwm-sounds` file will not be parsed.  First
1669appeared in 4.0.0.
1670
1671SaveColor { `colors-list` }::
1672  This variable indicates a list of color assignments to be stored as pixel
1673  values in the root window property _MIT_PRIORITY_COLORS.  Clients may elect
1674  to preserve these values when installing their own colormap.  Note that
1675  use of this mechanism is a way for an application to avoid the ``technicolor''
1676  problem, whereby useful screen objects such as window borders and titlebars
1677  disappear when a program's custom colors are installed by the window
1678  manager.
1679  For example:
1680+
1681------
1682SaveColor
1683{
1684    BorderColor
1685    TitleBackground
1686    TitleForeground
1687    "red"
1688    "green"
1689    "blue"
1690}
1691------
1692+
1693[normal]
1694  This would place on the root window 3 pixel values for borders and titlebars,
1695  as well as the three color strings, all taken from the default colormap.
1696
1697ShrinkIconTitles::
1698  A la Motif shrinking of icon titles, and expansion when mouse is inside icon.
1699  The old incorrect spelling `SchrinkIconTitles` is also still accepted.
1700
1701ShortAllWindowsMenus::
1702  Don't show WorkSpaceManager and IconManagers in the TwmWindows and TwmAllWindows menus.
1703
1704ShowIconManager::
1705  This variable indicates that the icon manager window should be displayed when
1706  ctwm is started.  It can always be brought up using the
1707  `f.showiconmgr` function.
1708
1709ShowWorkSpaceManager::
1710  This variable specifies that the WorkSpaceManager should be visible.
1711
1712SloppyFocus::
1713  Use sloppy focus.
1714
1715SaveWorkspaceFocus::
1716  When changing to a workspace, restore the focus to the last window
1717  that had the focus when you left the workspace by warping the mouse
1718  into it. This essentially saves the focus window with the workspace
1719  and restores it automatically when you switch. In many cases, it
1720  avoids having to reach for the mouse after moving to a new workspace.
1721
1722SortIconManager::
1723  This variable indicates that entries in the icon manager should be
1724  sorted alphabetically rather than by simply appending new windows to
1725  the end.  As of 4.0.0 this is the default.
1726
1727SoundHost `string`::
1728  Alias for `RplaySoundHost`, used in versions prior to 4.0.0.  Unless
1729  you need backward compatibility with them, use `RplaySoundHost`
1730  instead.  This alias will be removed in a future version.
1731
1732SqueezeTitle [{ `squeeze-list` }]::
1733  This variable indicates that ctwm should attempt to use the SHAPE
1734  extension to make titlebars occupy only as much screen space as they need,
1735  rather than extending all the way across the top of the window.
1736  The optional `squeeze-list`
1737  may be used to control the location of the squeezed titlebar along the
1738  top of the window.  It contains entries of the form:
1739+
1740------
1741    "name"  justification num denom
1742------
1743+
1744[normal]
1745  where `name` is a window name, `justification` is either `left`,
1746  `center`, or `right`, and `num` and `denom`
1747  are numbers specifying a ratio giving the relative position about which
1748  the titlebar is justified.  The ratio is measured from left to right if
1749  the numerator is positive, and right to left if negative.  A denominator
1750  of 0 indicates that the numerator should be interpreted as pixels.
1751  For compatibility, the pixel-position 0/0 is the relative  middle  of
1752  the window (1/2) for `center` and the relative right side of the
1753  window (2/2) for `right`, but this use is not recommended.
1754  Use "right 2 2" for relative positioning, or "right -1 0" for absolute;
1755  this makes a difference when  dragging  the  titlebar (see
1756  `f.movetitlebar`).
1757  For example:
1758+
1759------
1760SqueezeTitle
1761{
1762    "XTerm"   left    0  0
1763    "xterm1"  left    1  3
1764    "xterm2"  left    2  3
1765    "oclock"  center  1  2
1766    "emacs"   right   2  2
1767}
1768------
1769+
1770[normal]
1771  The default positioning is left-justified, absolute at 0 pixels.
1772  The `DontSqueezeTitle` list can be used to turn off squeezing on
1773  certain titles.
1774
1775StartIconified { `win-list` }::
1776  This variable indicates that client windows should initially be left as
1777  icons until explicitly deiconified by the user.  If the optional `win-list`
1778  is given, only those windows will be started iconic.  This is useful for
1779  programs that do not support an `-iconic` command line option or
1780  resource.
1781
1782StartInButtonState::
1783  Start the WorkSpaceManage in button form.  See also `StartInMapState`.
1784  Added in 4.0.0.
1785
1786StartInMapState::
1787  This variable specifies that the WorkSpaceManager should be started
1788  in its map form when created.  See also `StartInButtonState`.  As of
1789  4.0.0 this is the default.
1790
1791StartSqueezed { `win-list` }::
1792  These windows will first show up squeezed (see f.squeeze).
1793
1794StayUpMenus::
1795  Tells ctwm to use stayup menus. These menus
1796  will stay on the screen when ButtonUp, if either the menu has not
1797  yet been entered by the pointer, or the current item is a f.title.
1798
1799StrictWinNameEncoding::
1800  Whether to be strict about what encodings we accept for window naming
1801  properties.  Added in 4.0.2.
1802+
1803[normal]
1804  This is used when translating properties relating to naming windows,
1805  like `WM_NAME`.  For example, according to the ICCCM, `WM_NAME` can
1806  only be a `STRING` or `COMPOUND_TEXT` type.  However, sloppy programs
1807  like Chrome may set it to a `UTF8_STRING` instead.  If this var is set,
1808  ctwm will reject that, as was standard behavior prior to 4.0.2.
1809
1810SunkFocusWindowTitle::
1811  This variable specifies that the title of the focus window (if exists)
1812  should be sunken instead of raised. Only valid if UseThreeDTitles is set.
1813
1814ThreeDBorderWidth  `pixels`::
1815  The width of the 3D border in pixels, if any.
1816
1817TitleBackground `string` [{ `win-list` }]::
1818  This variable specifies the background color used in titlebars,
1819  and may only be specified inside of a
1820  `Color` or `Monochrome` list.
1821  The optional `win-list` is a list of window names and colors so that
1822  per-window colors may be specified.
1823  The default is ``white''.
1824
1825TitleButtonBorderWidth `pixels`::
1826  This variable specifies the width in pixels of the border surrounding
1827  titlebuttons.  This is typically set to 0 to allow titlebuttons to take up as
1828  much space as possible and to not have a border.
1829  The default is 1 if `UseThreeDTitles` is not set, 0 if it is set.
1830
1831TitleButtonShadowDepth `pixels`::
1832  This variable specifies the depth of the shadow ctwm uses for
1833  3D title buttons, when UseThreeDTitles is selected.
1834
1835TitleFont `string`::
1836  This variable specifies the font used for displaying window names in
1837  titlebars.  The default is ``variable''.
1838
1839TitleForeground `string` [{ `win-list` }]::
1840  This variable specifies the foreground color used in titlebars, and
1841  may only be specified inside of a
1842  `Color` or `Monochrome` list.
1843  The optional `win-list` is a list of window names and colors so that
1844  per-window colors may be specified.
1845  The default is ``black''.
1846
1847TitleJustification `string`::
1848  This keyword needs a string value. The acceptable values are : ``left'',
1849  ``center'' and ``right''. The window titles will be justified according to
1850  this in the title window.
1851
1852TitlePadding `pixels`::
1853  This variable specifies the distance between the various buttons, text, and
1854  highlight areas in the titlebar.  The default is 8 pixels if `UseThreeDTitles`
1855  is not set, 0 if it is set.
1856
1857TitleShadowDepth `pixels`::
1858  This variable specifies the depth of the shadow ctwm uses for
1859  3D titles, when UseThreeDTitles is selected.
1860
1861TransientHasOccupation::
1862  This variable specifies that transient-for and non-group leader windows
1863  can have their own occupation potentially different from their leader
1864  window. The default case is that these windows follow their leader, use
1865  this keyword if the default action doesn't please you.
1866
1867TransientOnTop `percentage`::
1868  The parameter (required) is a percentage and tells ctwm to put transient
1869  (and non-group leader) windows always on top of their leader if and only
1870  if their surface is smaller than this fraction of the surface of their
1871  leader. The surface of a window is its width times its weight.  The
1872  default is 30%.  Added in 3.0.
1873
1874UnknownIcon `string`::
1875  This variable specifies the filename of a bitmap file to be
1876  used as the default icon.  This bitmap will be used as the icon of all
1877  clients which do not provide an icon bitmap and are not listed
1878  in the `Icons` list.
1879
1880UnmapByMovingFarAway { `win-list` }::
1881  These windows will be moved out of the screen instead of being unmapped
1882  when they become invisible due to a change workspace. This has been
1883  added because some ill-behaved clients (Frame5) don't like to be unmapped.
1884
1885UsePPosition `string`::
1886  This variable specifies whether or not ctwm should honor
1887  program-requested locations (given by the `PPosition` flag in the
1888  `WM_NORMAL_HINTS` property) in the absence of a user-specified position.
1889  The argument `string` may have one of three values:  `"off"`
1890  (the default) indicating that ctwm should ignore the program-supplied
1891  position, `"on"` indicating that the position should be used, and
1892  `"non-zero"` indicating that the position should used if it is other
1893  than (0,0).  The latter option is for working around a bug in older toolkits.
1894
1895UseSunkTitlePixmap::
1896  This makes it so the shadows are inversed for title pixmaps when focus is lost.
1897  This is similar to having the SunkFocusWindowTitle, but it makes your xbm or
1898  3d XPM (if any) sink instead of just the whole bar.
1899
1900UseThreeDBorders::
1901  Tells ctwm to use 3D-looking window borders. The width ot the 3D borders
1902  is `ThreeDBorderWidth`. The color of the 3D border is `BorderTileBackground`,
1903  and if NoHighlight is not selected, the border of the Focus window is
1904  `BorderColor`.
1905  Setting this automatically unsets `ClientBorderWidth`.
1906
1907UseThreeDIconManagers::
1908  Tells ctwm to use 3D-looking IconManagers if any.
1909
1910UseThreeDMenus::
1911  Tells ctwm to use 3D-looking menus.
1912
1913UseThreeDTitles::
1914  Tells ctwm to use 3D-looking windows titles. In which case the default
1915  values of `TitleButtonBorderWidth`, `FramePadding`, `TitlePadding`
1916  and `ButtonIndent` are set to 0.
1917  There are plenty of built-in scalable pixmaps for buttons:
1918  +:xpm:menu+,
1919  +:xpm:dot+,
1920  +:xpm:cross+,
1921  +:xpm:bar+,
1922  +:xpm:vbar+,
1923  +:xpm:iconify+,
1924  +:xpm:resize+,
1925  +:xmp:sunkresize+, and
1926  +:xpm:box+.
1927  There are several built-in scalable
1928  animations for buttons:
1929  +%xpm:resize+,
1930  +%xpm:menu-up+,
1931  +%xpm:menu-down+,
1932  +%xpm:resize-out-top+,
1933  +%xpm:resize-in-top+,
1934  +%xpm:resize-out-bot+,
1935  +%xpm:resize-in-bot+,
1936  +%xpm:maze-out+,
1937  +%xpm:maze-in+,
1938  +%xpm:zoom-out+,
1939  +%xpm:zoom-in+, and
1940  +%xpm:zoom-inout+.
1941  Try them to see what they look like.
1942
1943UseThreeDWMap::
1944  Tells ctwm to use 3D for the small windows in the workspace map.
1945
1946WarpCursor [{ `win-list` }]::
1947  This variable indicates that the pointer should be warped into windows when
1948  they are deiconified.  If the optional `win-list` is given, the pointer
1949  will only be warped when those windows are deiconified.
1950
1951WarpOnDeIconify { `win-list` }::
1952  When ctwm receives a request to map a window, it normally just deiconifies
1953  it, but if the window is in `win-list`, it will additionally bring it
1954  into the current workspace, if necessary. For example
1955+
1956------
1957WarpOnDeIconify { "Emacs" }
1958------
1959+
1960[normal]
1961  will make sure emacs windows will always popup in the current workspace when
1962  necessary (typically when the minibuffer or the *Help* frame is in another
1963  workspace).
1964+
1965First appeared in 4.0.0.
1966
1967WarpRingOnScreen::
1968  Tells ctwm that f.warpring warps pointer only to windows visible in
1969  the current workspace.
1970
1971WarpToDefaultMenuEntry::
1972  (Useful only with StayUpMenus) When using StayUpMenus, and a menu does
1973  stays up, the pointer is warped to the default entry of the menu.
1974
1975WarpUnmapped::
1976  This variable indicates that that the `f.warpto` function should deiconify
1977  any iconified windows it encounters.  This is typically used to make a key
1978  binding that will pop a particular window (such as `xmh`), no matter
1979  where it is.  The default is for `f.warpto` to ignore iconified windows.
1980
1981WindowGeometries { `win-list` }::
1982  Used to give a default geometry to some clients. When XrandR is
1983  compiled, the geometry can be relative to a monitor, by prefixing
1984  its name (visible with `xrandr(1)` command line) followed by `:`. This name
1985  is ignored when XrandR is not available:
1986+
1987------
1988WindowGeometries {
1989    "Mozilla*"       "1000x800+10+10"
1990    "jpilot*"        "HDMI1:800x600-0-0"
1991}
1992------
1993+
1994
1995WindowRegion `geomstring` `vgrav` `hgrav` { `win-list` }::
1996  Similar to IconRegion, but for windows.  Note that the `win-list` is
1997  not optional.
1998
1999WindowRing [{ `win-list` }]::
2000  This variable specifies a list of windows along which the `f.warpring`
2001  function cycles. If no argument is given, all the windows are in the ring.
2002
2003WindowRingExclude [{ `win-list` }]::
2004  All listed windows will be excluded from the WarpRing.
2005
2006WMgrButtonShadowDepth `depth`::
2007  Control the depth of the shadow of the workspace manager buttons.
2008
2009WMgrButtonStyle `string`::
2010  Sets the style of the workspace manager buttons (when in button rather
2011  than map state), as well as the buttons in the Occupy window.
2012  Available options are `normal` (the default 3d look), `style1`,
2013  `style2`, and `style3` (which are slightly different 2d looks).
2014
2015WMgrHorizButtonIndent `nb_pixels`::
2016  Specifies the horizontal space, in pixel, between the buttons of the workspace
2017  manager (in button mode).
2018
2019WMgrVertButtonIndent `nb_pixels`::
2020  Specifies the vertical space, in pixel, between the buttons of the workspace
2021  manager (in button mode).
2022
2023WorkSpaceFont `string`::
2024  This allows you to specify the font to use for the small windows in the
2025  workspace manager map. (Try `-adobe-times-*-r-*--10-*-*-*-*-*-*-*`).
2026
2027WorkSpaceManagerGeometry `string` [ `columns` ]::
2028  This variable specifies the geometry of the workspace manager window. The
2029  `string` argument is standard geometry specification that indicates
2030  the initial full size of the workspace manager. When XrandR is
2031  compiled, the geometry can be relative to a monitor, by prefixing
2032  its name (visible with `xrandr(1)` command line) followed by `:`. This name
2033  is ignored when XrandR is not available. The `columns` argument
2034  indicates the number of columns to use for the workspace manager window.
2035+
2036------
2037WorkSpaceManagerGeometry        "360x60+60-0" 8
2038WorkSpaceManagerGeometry        "HDMI1:600x30+1235+0" 12
2039------
2040+
2041
2042WorkSpaces { `workspace-list` }::
2043  This variable specifies a list of workspaces that are created at startup,
2044  Where `workspace-list` is :
2045+
2046------
2047name [{bg-button [fg-button] [bg-root] [fg-root] [pixmap-root]}]
2048------
2049+
2050[normal]
2051  With:
2052+
2053--
2054[horizontal]
2055bg-button:::
2056  background color of the corresponding button in the workspace manager.
2057
2058fg-button:::
2059  foreground color of the corresponding button in the workspace manager.
2060
2061bg-root:::
2062  background color of the corresponding root screen.
2063
2064fg-root:::
2065  foreground color of the corresponding root screen.
2066
2067pixmap-root:::
2068  pixmap to display on the corresponding root screen, either the name of
2069  a bitmap, +xpm:xpmfile+, +xwd:xwdfile+, +jpeg:jpgfile+, or
2070  +|command_that generates_xwd+.
2071--
2072+
2073[normal]
2074  Example:
2075+
2076------
2077WorkSpaces
2078{
2079  "One"   {"#686B9F" "white" "DeepSkyBlue3" "white" "jpeg:shark.jpg"}
2080  "Two"   {"#619AAE" "white" "firebrick"}
2081  "Three" {"#727786" "white" "MidnightBlue" "white" "xpm:ball%.xpm"}
2082  "Four"  {"#727786" "white" "white"        "white"
2083                                      "|(giftoppm | pnmtoxwd) < 2010.gif"}
2084
2085  "Five"  {"#727786" "white" "DeepSkyBlue3" "white" "plaid"}
2086  "Six"   {"#619AAE" "white" "DeepSkyBlue3" "white" "xpm:background1"}
2087  "Seven" {"#8C5b7A" "white" "chartreuse4"}
2088  "Eight" {"#686B9F" "white" "MidnightBlue"}
2089}
2090------
2091+
2092[normal]
2093  The WorkSpaces declaration should come before the Occupy or OccupyAll
2094  declarations. The maximum number of workspaces is 32.
2095+
2096[normal]
2097  Each workspace also has a label, which is displayed in the
2098  WorkSpaceManager window when it is in button state.  By moving the
2099  mouse cursor over a button and typing letters and/or backspace, you may
2100  edit the label.  The name is unaffected.  Functions that look up
2101  workspaces by name also look at the label.
2102
2103XMoveGrid `number`::
2104  This variable specifies the value to use to constrain window movement.
2105  When moving windows around, the x coordinate will always be a multiple of
2106  this variable. Default is 1. f.forcemove ignores this variable.
2107
2108XorValue `number`::
2109  This variable specifies the value to use when drawing window outlines for
2110  moving and resizing.  This should be set to a value that will result in a
2111  variety of distinguishable colors when exclusive-or'ed with the contents of the
2112  user's typical screen.  Setting this variable to 1 often gives nice results
2113  if adjacent colors in the default colormap are distinct.  By default,
2114  ctwm will attempt to cause temporary lines to appear at the opposite
2115  end of the colormap from the graphics.
2116
2117YMoveGrid `number`::
2118  This variable specifies the value to use to constrain window movement.
2119  When moving windows around, the y coordinate will always be a multiple of
2120  this variable. Default is 1. f.forcemove ignores this variable.
2121
2122Zoom [ `count` ]::
2123  This variable indicates that outlines suggesting movement of a window
2124  to and from its iconified state should be displayed whenever a window is
2125  iconified or deiconified.  The optional `count` argument specifies the
2126  number of outlines to be drawn.  The default count is 8.
2127
2128
2129The following variables must be set after the fonts have been
2130assigned, so it is usually best to put them at the end of the variables
2131or beginning of the bindings sections:
2132
2133
2134ChangeWorkspaceFunction `function`::
2135  This variable specifies the function to be executed when the user change
2136  the current workspace (zap).
2137
2138DefaultFunction `function`::
2139  This variable specifies the function to be executed when a key or button
2140  event is received for which no binding is provided.  This is typically
2141  bound to `f.nop`, `f.beep`, or a menu containing window operations.
2142
2143DeIconifyFunction `function`::
2144  This variable specifies the function to be executed when a window is
2145  deiconified.
2146
2147IconifyFunction `function`::
2148  This variable specifies the function to be executed when a window is
2149  iconified.
2150
2151WindowFunction `function`::
2152  This variable specifies the function to execute when a window is selected
2153  from the `TwmWindows` menu.  If this variable is not set, the window
2154  will be deiconified and raised.
2155
2156
2157== BINDINGS
2158After the desired variables have been set, functions may be attached to
2159titlebuttons and key and pointer buttons.  Titlebuttons may be added
2160from the left or right side and appear in the titlebar from left-to-right
2161according to the
2162order in which they are specified.  Key and pointer button
2163bindings may be given in any order.
2164
2165=== Title buttons
2166
2167Titlebuttons specifications must include the name of the pixmap to use in
2168the button box and the function to be invoked when a pointer button is
2169pressed within them:
2170
2171------
2172LeftTitleButton "bitmapname" = function
2173------
2174
2175or
2176
2177------
2178LeftTitleButton "bitmapname" {
2179    Buttoni = modlist : function
2180    ...
2181    Buttonj = function
2182}
2183------
2184
2185or
2186
2187------
2188RightTitleButton "bitmapname" = function
2189------
2190
2191or
2192
2193------
2194RightTitleButton "bitmapname" {
2195    Buttoni = modlist : function
2196    ...
2197    Buttonj = function
2198}
2199------
2200
2201The `bitmapname` may refer to one of the  built-in bitmaps
2202(which are scaled to match `TitleFont`) by using the appropriate
2203colon-prefixed name described above.
2204
2205The pointer button specifications come in two forms, with a modifier
2206list or without.  When the specification comes without a modifier
2207list, it's used for the case when no modifiers are used.  In other
2208words, the following two lines are equivalent:
2209
2210------
2211    Buttoni = function
2212------
2213
2214
2215------
2216    Buttoni = : function
2217------
2218
2219
2220=== Key and pointer buttons
2221
2222Key and pointer button specifications must give the modifiers that must
2223be pressed, over which parts of the screen the pointer must be, and what
2224function is to be invoked.  Keys are given as strings containing the
2225appropriate
2226keysym name; buttons are given as the keywords `Button1`-`Button11`:
2227
2228------
2229"FP1"   = modlist : context : function
2230Button1 = modlist : context : function
2231------
2232
2233A user who wanted to be able to manipulate windows from the keyboard could
2234use the following bindings:
2235
2236------
2237"F1"    =       : all : f.iconify
2238"F2"    =       : all : f.raiselower
2239"F3"    =       : all : f.warpring "next"
2240"F4"    =       : all : f.warpto "xmh"
2241"F5"    =       : all : f.warpto "emacs"
2242"F6"    =       : all : f.colormap "next"
2243"F7"    =       : all : f.colormap "default"
2244"F20"   =       : all : f.warptoscreen "next"
2245"Left"  = m     : all : f.backiconmgr
2246"Right" = m | s : all : f.forwiconmgr
2247"Up"    = m     : all : f.upiconmgr
2248"Down"  = m | s : all : f.downiconmgr
2249------
2250
2251ctwm provides many more window manipulation primitives than can be
2252conveniently stored in a titlebar, menu, or set of key bindings.  Although
2253a small set of defaults are supplied (unless the `NoDefaults` is
2254specified), most users will want to have their most common operations
2255bound to key and button strokes.  To do this, ctwm associates names
2256with each of the primitives and provides user-defined functions for
2257building higher level primitives and menus for interactively selecting
2258among groups of functions.
2259
2260
2261=== Modifiers and Contexts
2262
2263The `modlist` allows specifying different bindings for a button or key
2264when modifiers are applied.  The list of recognized modifier names
2265(abbreviated) are
2266`shift` (`s`),
2267`control` (`c`),
2268`lock` (`l`),
2269`alter1` (`a1`),
2270`alter2` (`a2`),
2271`alter3` (`a3`),
2272`alter4` (`a4`),
2273`alter5` (`a5`),
2274`meta` (`m`),
2275`mod1` (`m1`),
2276`mod2` (`m2`),
2277`mod3` (`m3`),
2278`mod4` (`m4`),
2279and `mod5` (`m5`).
2280Multiple modifiers may be applied to a single line by combining them with
2281a vertical bar (`|`).  For example:
2282
2283------
2284# Open the "top" menu with a Button1 (usually left mouse button) click in
2285# the root window
2286Button1 =        : root : f.menu "top"
2287
2288# Open the "top2" menu with shift-click
2289Button1 =     s  : root : f.menu "top2"
2290
2291# And "top3" when control-shift-click
2292Button1 = c | s  : root : f.menu "top3"
2293------
2294
2295The `lock` modifier refers to CapsLock.  `meta` is generally your Alt
2296key.  `mod1` is the same as `meta`.  `mod2..5` can have various special
2297meanings; try running `xmodmap -pm` to see how your X server is mapping
2298things (the `xkeycaps` program may also be useful).  The `alter1..5`
2299modifiers refer to ctwm alternate keymaps; see the description of
2300`f.altkeymap` below for details.
2301
2302Note that if you're using the `m4` preprocessor, most implementations
2303define a `shift` macro internally, so using that as a modifier will
2304silently fail to work right.  To get around it, you'll need to quote it
2305so that `m4` passes it through as a literal string: `pass:[`shift']`.
2306
2307The `context` lets you specify which mappings apply based on where the
2308pointer currently is on the screen.  The available options are
2309`window` (`w`),
2310`title` (`t`),
2311`icon` (`i`),
2312`root` (`r`),
2313`frame` (`f`),
2314`workspace` (no abbreviation),
2315`iconmgr` (`m`), and
2316`alter` (`a`).
2317Like the modifiers above, they may be combined with a vertical bar, which
2318allows you to bind an action in multiple contexts at once.
2319Alternately, `all` can be given for the context to specify that the
2320binding should happen everywhere.  It's equivalent to combining all the
2321choices (except `alter`, which is special).
2322
2323The `alter` context allows binding the function when in the alternate
2324context; see the `f.altcontext` function below for details.
2325
2326There is an additional possible magical value for `context`; if you
2327provide a quoted string (e.g., `"MyXterm"`) for the context of a key (but
2328not button) binding, then that binding will trigger the given function in
2329window context to all windows matching that name.  e.g.,
2330
2331----
2332# Pressing "F1" anywhere on the screen will cause all windows with name
2333# "xterm" to raise themselves.
2334"F1" = : "xterm" : f.raise
2335----
2336
2337Beware that this can have odd side effects if multiple windows are
2338matched, especially if the function can conflict one with the other
2339(e.g., in the example above, if two "xterm" windows overlap each other).
2340
2341
2342=== Functions
2343
2344The `function` in a binding is any of the `f.` keywords described below.
2345For example, the default startup file contains the following bindings:
2346
2347------
2348Button1 =   : root          : f.menu "TwmWindows"
2349Button1 = m : window | icon : f.function "move-or-lower"
2350Button2 = m : window | icon : f.iconify
2351Button3 = m : window | icon : f.function "move-or-raise"
2352Button1 =   : title         : f.function "move-or-raise"
2353Button2 =   : title         : f.raiselower
2354Button1 =   : icon          : f.function "move-or-iconify"
2355Button2 =   : icon          : f.iconify
2356Button1 =   : iconmgr       : f.iconify
2357Button2 =   : iconmgr       : f.iconify
2358------
2359
2360User-defined functions contain the name by which they are referenced in
2361calls to `f.function` and a list of other functions to execute.  For
2362example:
2363
2364------
2365Function "move-or-lower"    { f.move f.deltastop f.lower }
2366Function "move-or-raise"    { f.move f.deltastop f.raise }
2367Function "move-or-iconify"  { f.move f.deltastop f.iconify }
2368Function "restore-colormap" { f.colormap "default" f.lower }
2369------
2370
2371The function name must be used in `f.function` exactly as it appears in
2372the function specification.
2373
2374In the descriptions below, if the function is said to operate on the selected
2375window, but is invoked from a root menu, the cursor will be changed to
2376the `Select` cursor and the next window to receive a button press will
2377be chosen:
2378
2379! `string`::
2380  This is an abbreviation for `f.exec` `string`.
2381
2382f.addtoworkspace `string`::
2383  This function adds the selected window to the workspace whose name is
2384  `string`.
2385
2386f.altcontext::
2387  Set the alternate context. The next key or button event ctwm receives will
2388  be interpreted using the alternate context. To define bindings in the alternate
2389  context, use the keyword `alter` in the context field of the binding command.
2390  For example:
2391+
2392------
2393"Return" = m : all   : f.altcontext
2394"n" =        : alter : f.nextworkspace
2395"p" =        : alter : f.prevworkspace
2396------
2397+
2398
2399f.altkeymap `number`::
2400  Set the alternate keymap `number`, where `number` is an integer
2401  between 1 and 5 inclusive. The next key or button event ctwm receives will
2402  be interpreted using this alternate keymap. To define bindings in an alternate
2403  keymap, use the keyword `a` followed by `number` in the modifier
2404  field of the binding command. For example:
2405+
2406------
2407"Return" = c : all                  : f.altkeymap "1"
2408"i" =     a1 : window|icon|iconmgr  : f.iconify
2409"z" =     a1 : window               : f.zoom
2410"d" =     a1 : window|icon          : f.delete
2411"o" =     a1 : window|icon          : f.occupy
2412"r" =     a1 : window|icon          : f.refresh
2413------
2414+
2415[normal]
2416  When using an alternate keymaps, only the root, window, icon and iconmgr
2417  contexts are allowed.
2418
2419f.autolower::
2420  This function toggles whether or not the selected window is lowered
2421  whenever the pointer leaves it.  See the description of the variable
2422  `AutoLower`.
2423
2424f.autoraise::
2425  This function toggles whether or not the selected window is raised whenever
2426  entered by the pointer.  See the description of the variable `AutoRaise`.
2427
2428f.backiconmgr::
2429  This function warps the pointer to the previous column in the
2430  current icon manager, wrapping back to the previous row if necessary.
2431
2432f.backmapiconmgr::
2433  This function warps the  pointer in the same manner as `f.backiconmgr`
2434  but only stops at windows that are mapped.
2435
2436f.beep::
2437  This function sounds the keyboard bell.
2438
2439f.bottomzoom::
2440  This function stretches the bottom side of the window out to the bottom
2441  edge of the current monitor, or restores the original size if the
2442  window was already bottomzoom'd.
2443
2444f.changepriority `rel-value`::
2445  Change the priority of a window by `rel-value` (enclosed within double
2446  quotes). For instance, to bury a window one level down, you would use
2447  f.changepriority "-1".  See `OnTopPriority` variable.
2448+
2449First appeared in 4.0.0.
2450
2451f.changesize `string`::
2452  This function allows you to change the size of the focused window. The
2453  format of the string must be either `"<border> <+|-><sizechange>"`
2454  (where `<border>` must be one of `top`, `bottom`, `left` or
2455  `right`) or `"<x size>x<y size>"` (where the size is the requested
2456  new window size). The height of the window can never be set/changed to less
2457  than the title height + 1 (or 1 if the window has no title) and the width
2458  can never be set/changed to less than 1.
2459+
2460------
2461"Right"  = c|s : all : f.changesize "right +10"
2462"Left"   = c|s : all : f.changesize "right -10"
2463"Down"   = c|s : all : f.changesize "bottom +10"
2464"Up"     = c|s : all : f.changesize "bottom -10"
2465
2466"F1"     = c|s : all : f.changesize "640x480"
2467"F2"     = c|s : all : f.changesize "800x600"
2468"F3"     = c|s : all : f.changesize "1024x768"
2469------
2470+
2471
2472f.circledown::
2473  This function lowers the top-most window that occludes another window.
2474
2475f.circleup::
2476  This function raises the bottom-most window that is occluded by another window.
2477
2478f.colormap `string`::
2479  This function rotates the colormaps (obtained from the `WM_COLORMAP_WINDOWS`
2480  property on the window) that ctwm will display when the pointer
2481  is in this window.  The argument `string` may have one of the following
2482  values: `"next"`, `"prev"`, and `"default"`.  It should be noted
2483  here that in general, the installed colormap is determined by keyboard focus.
2484  A pointer driven keyboard focus will install a private colormap upon entry
2485  of the window owning the colormap.  Using the click to type model, private
2486  colormaps will not be installed until the user presses a mouse button on
2487  the target window.
2488
2489f.deiconify::
2490  This function deiconifies the selected window.  If the window is not an icon,
2491  this function does nothing.
2492
2493f.delete::
2494  This function sends the `WM_DELETE_WINDOW` message to the selected window if
2495  the client application has requested it through the `WM_PROTOCOLS` window
2496  property.  The application is supposed to respond to the message by removing
2497  the indicated window.  If the window has not requested
2498  `WM_DELETE_WINDOW` messages, the keyboard bell will be rung indicating that
2499  the user should choose an alternative method.  Note this is very different
2500  from f.destroy.  The intent here is to delete a single window,  not
2501  necessarily the entire application.
2502
2503f.deleteordestroy::
2504  First tries to delete the window (send it `WM_DELETE_WINDOW` message),
2505  or kills it, if the client doesn't accept such message.
2506
2507f.deltastop::
2508  This function allows a user-defined function to be aborted if the pointer has
2509  been moved more than `MoveDelta` pixels.  See the example definition
2510  given for `Function "move-or-raise"` at the beginning of the section.
2511
2512f.destroy::
2513  This function instructs the X server to close the display connection of the
2514  client that created the selected window.  This should only be used as a last
2515  resort for shutting down runaway clients.  See also f.delete.
2516
2517f.downiconmgr::
2518  This function warps the pointer to the next row in the current icon manger,
2519  wrapping to the beginning of the next column if necessary.
2520
2521f.downworkspace::
2522  Goto the workspace immediately underneath the current workspace in the workspace
2523  manager. If the current workspace is the bottom one, goto the top one in the
2524  same column. The result depends on the layout of the workspace manager.
2525
2526f.exec `string`::
2527  This function passes the argument `string` to `/bin/sh` for execution.
2528  In multiscreen mode, if `string` starts a new X client without
2529  giving a display argument, the client will appear on the screen from
2530  which this function was invoked. If the string ``$currentworkspace''
2531  is present inside the string argument, it will be substituted with
2532  the current workspace name.
2533
2534f.fill `string`::
2535  Where string is either : ``right'', ``left'', ``top'', ``bottom'' or ``vertical''.
2536  The current window is resized in the specified direction until it
2537  reaches an obstacle (either another window, or the screen border).
2538  f.fill ``vertical'' sets the window status to ``zoomed'' and toggles, ie
2539  calling it again will reset the previous window size.
2540
2541f.focus::
2542  This function toggles the keyboard focus of the server to the
2543  selected window, changing the focus rule from pointer-driven if necessary.
2544  If the selected window already was focused, this function executes an
2545  `f.unfocus`.
2546
2547f.forcemove::
2548  This function is like `f.move` except that it ignores the `DontMoveOff`
2549  variable.
2550
2551f.forwiconmgr::
2552  This function warps the pointer to the next column in the current icon
2553  manager, wrapping to the beginning of the next row if necessary.
2554
2555f.forwmapiconmgr::
2556  This function warps the  pointer in the same manner as `f.forwiconmgr`
2557  but only stops at windows that are mapped.
2558
2559f.fullscreenzoom::
2560  This function is similar to the `f.fullzoom` function, except that it
2561  makes the client window (the part inside the frame) the size of the
2562  current monitor, so the window decorations are off-screen.  This gives
2563  the same visual effect as the window covering the whole screen with no
2564  decorations.  If the window is already fullscreenzoom'd, it restores
2565  the original size.
2566
2567f.fullzoom::
2568  This function resizes the selected window to the full size of the
2569  current monitor, or restores the original size if the window was
2570  already fullzoom'd.
2571
2572f.function `string`::
2573  This function executes the user-defined function whose name is specified
2574  by the argument `string`.
2575
2576f.gotoworkspace `workspace_name`::
2577  This function warps you to the workspace whose name is `workspace_name`.
2578
2579f.hbzoom::
2580  This function is a synonym for `f.bottomzoom`.
2581
2582f.hideiconmgr::
2583  This function unmaps the current icon manager.
2584
2585f.hideworkspacemgr::
2586  Unmap the WorkSpace manager.
2587
2588f.horizoom::
2589  This function stretches the window so that it covers the whole width of
2590  the current monitor, or restores the original size if the window was
2591  already horizoom'd.
2592
2593f.htzoom::
2594  This function is a synonym for `f.topzoom`.
2595
2596f.hzoom::
2597  This function is a synonym for `f.horizoom`.
2598
2599f.iconify::
2600  This function iconifies or deiconifies the selected window or icon,
2601  respectively.
2602
2603f.identify::
2604  This function displays a summary of the name and geometry of the
2605  selected window.  Clicking the pointer or pressing a key in the window
2606  will dismiss it.
2607
2608f.initsize::
2609  This function resets a window to its initial size given by the
2610  `WM_NORMAL_HINTS` hints.
2611
2612f.jumpdown `step`::
2613  This function is designed to be bound to a key, it moves the current window
2614  (step * {X,Y}MoveGrid) pixels downward. stopping if the window encounters
2615  another window or the screen border (ala f.pack).
2616
2617f.jumpleft `step`::
2618  Leftward equivalent of f.jumpdown.
2619
2620f.jumpright `step`::
2621  Rightward equivalent of f.jumpdown.
2622
2623f.jumpup `step`::
2624  Upward equivalent of f.jumpdown.
2625
2626f.lefticonmgr::
2627  This function similar to `f.backiconmgr` except that wrapping does not
2628  change rows.
2629
2630f.leftworkspace::
2631  Goto the workspace immediately on the left of the current workspace in the
2632  workspace manager. If the current workspace is the leftest one, goto the
2633  rightest one in the same row. The result depends on the layout of the workspace
2634  manager.
2635
2636f.leftzoom::
2637  This function stretches the left side of the window out to the left
2638  edge of the current monitor, or restores the original size if the
2639  window was already leftzoom'd.
2640
2641f.lower::
2642  This function lowers the selected window.
2643
2644f.menu `string`::
2645  This function invokes the menu specified by the argument `string`.
2646  Cascaded menus may be built by nesting calls to `f.menu`. When a menu
2647  is popped up, you can use the arrow keys to move the cursor around it. ``Down''
2648  or space goes down, ``Up'' goes up, ``Left'' pops down the menu, and ``Right''
2649  activates the current entry. The first letter of an entry name activates this
2650  entry (the first one if several entries match). If the first letter is ~ then
2651  Meta-the-second-letter activates it, if this first letter is ^ then
2652  Control-the-second-letter activates it, and if this first letter is space,
2653  then the second letter activates it.
2654
2655f.move::
2656  This function drags an outline of the selected window (or the window itself
2657  if the `OpaqueMove` variable is set) until the invoking pointer button
2658  is released.  Double clicking within the number of milliseconds given by
2659  `ConstrainedMoveTime` warps
2660  the pointer to the center of the window and
2661  constrains the move to be either horizontal or vertical depending on which
2662  grid line is crossed.
2663  To abort a move, press another button before releasing the
2664  first button.
2665
2666f.movepack::
2667  This function is like `f.move` except that it tries to avoid overlapping
2668  of windows. When the moving window begin to overlap with another window, the
2669  move is stopped. If you go too far over the other window (more that
2670  `MovePackResistance` pixels), the move is resumed and the moving window
2671  can overlap with the other window. Useful to pack windows closely.
2672
2673f.movepush::
2674  This function is like `f.move` except that it tries to avoid overlapping
2675  of windows. When the moving window begins to overlap with another window, the
2676  other window is pushed. If you go too far over the other window (more that
2677  `MovePackResistance` pixels), there is no push and the moving window
2678  can overlap with the other window. Only available if `OpaqueMove` is
2679  active.
2680
2681f.moveresize `geometry`::
2682  Takes one string argument which is a geometry with the
2683  standard X geometry syntax (e.g. 200x300+150-0). Sets the current window
2684  to the specified geometry. The width and height are to be given in pixel,
2685  no base size or resize increment are used.
2686  When XrandR is compiled, the geometry can be relative to a monitor,
2687  by prefixing its name (visible with `xrandr(1)` command line) followed by
2688  `:` (e.g. HDMI1:200x300+150-0). This name is ignored when XrandR is not
2689  available.
2690
2691f.movetitlebar::
2692  If applied to a squeezed titlebar (see `SqueezeTitle`) you can drag
2693  it along the top of the window (a feature which was first found in
2694  BeOS). The existing justification type is preserved, as is the
2695  positioning (relative or absolute). This means that a relatively
2696  positioned titlebar will move when the width of a window changes,
2697  whereas an absolutely positioned title will not.
2698  The default positioning is left-justified, absolute at 0 pixels.
2699+
2700------
2701Button1 = m1 : title : f.movetitlebar
2702------
2703+
2704[normal]
2705  `f.movetitlebar` does nothing if the window has no title, the
2706  window is squeezed (see f.squeeze), or the title is not squeezed
2707  (see `SqueezeTitle`).
2708
2709f.movetonextworkspace::
2710f.movetonextworkspaceandfollow::
2711  Move the window to the next workspace, and optionally switch view over
2712  to that workspace.
2713
2714f.movetoprevworkspace::
2715f.movetoprevworkspaceandfollow::
2716  Move the window to the previous workspace, and optionally switch view
2717  over to that workspace.
2718
2719f.nexticonmgr::
2720  This function warps the pointer to the next icon manager containing any windows
2721  on the current or any succeeding screen.
2722
2723f.nextworkspace::
2724  Goto the next workspace in the list, using the order given in the `.ctwmrc` file.
2725
2726f.nop::
2727  This function does nothing and is typically used with the `DefaultFunction`
2728  or `WindowFunction` variables or to introduce blank lines in menus.
2729
2730f.occupy::
2731  This function pops up a window for the user to choose which workspaces a window
2732  belongs to.
2733
2734f.occupyall::
2735  This function makes the specified window occupy all the workspaces.
2736
2737f.pack `string`::
2738  Where string is either : ``right'', ``left'', ``top'' or ``bottom''
2739  The current window is moved in the specified direction until it reaches
2740  an obstacle (either another window, or the screen border). The pointer
2741  follows the window.
2742
2743f.pin::
2744  Valid only in a root menu. Make a menu permanent on the screen. This is a toggle
2745  function, if you select it while the menu is already permanent, it becomes
2746  non-permanent.
2747
2748f.previconmgr::
2749  This function warps the pointer to the previous icon manager containing any
2750  windows on the current or preceding screens.
2751
2752f.prevworkspace::
2753  Goto the previous workspace in the list, using the order given in the `.ctwmrc` file.
2754
2755f.priorityswitching::
2756  Toggle the window's switching ability.  X-ref `PrioritySwitching` and
2757  `OnTopPriority` variables.
2758+
2759First appeared in 4.0.0.
2760
2761f.quit::
2762  This function causes ctwm to restore the window's borders and exit.  If
2763  ctwm is the first client invoked from `xdm`, this will result in a
2764  server reset.
2765
2766f.raise::
2767  This function raises the selected window.
2768
2769f.raiseicons::
2770  This function raises all the icons in the current workspace.
2771
2772f.raiselower::
2773  This function raises the selected window to the top of the stacking order if
2774  it is occluded by any windows, otherwise the window will be lowered.
2775
2776f.raiseorsqueeze::
2777  Raise the window or squeeze it if it's a double click.  The time that
2778  defines a double click is given by the `ConstrainedMoveTime` variable.
2779+
2780First appeared in 4.0.0.
2781
2782f.refresh::
2783  This function causes all windows to be refreshed.
2784
2785f.removefromworkspace `string`::
2786  This function removes the selected window from the workspace whose name
2787  is `string`.
2788
2789f.rereadsounds::
2790  This function causes the `.ctwm-sounds` file to be re-read.  Note that
2791  this will *not* re-read sounds set in `RplaySounds` in the config file.
2792  As a result, this function will probably go away in the future when
2793  `.ctwm-sounds` support is removed.  See the SOUNDS section.
2794
2795f.rescuewindows::
2796  If you somehow managed to move a window out of sight, calling this
2797  function will check all windows and icons on currently visible virtual
2798  screens, and those that are (nearly) out of the bounds of their virtual
2799  screen will be brought completely inside (if that fits).
2800+
2801First appeared in 4.0.0.
2802
2803f.resize::
2804  This function displays an outline of the selected window.  Crossing a border
2805  (or setting `AutoRelativeResize`) will cause the outline to begin to
2806  rubber band until the invoking button is released.  To abort a resize,
2807  press another button before releasing the first button.
2808
2809f.restart::
2810  This function kills and restarts ctwm.
2811
2812f.restoregeometry::
2813  Restore the current window geometry to what was saved in the last
2814  call to f.savegeometry.
2815
2816f.righticonmgr::
2817  This function is similar to `f.nexticonmgr` except that wrapping does
2818  not change rows.
2819
2820f.rightworkspace::
2821  Goto the workspace immediately on the right of the current workspace in the
2822  workspace manager. If the current workspace is the rightest one, goto the
2823  leftest one in the same row. The result depends on the layout of the workspace
2824  manager.
2825
2826f.rightzoom::
2827  This function stretches the right side of the window out to the right
2828  edge of the current monitor, or restores the original size if the
2829  window was already rightzoom'd.
2830
2831f.ring::
2832  Selects a window and adds it to the WarpRing, or removes it if it
2833  was already in the ring. This command makes `f.warpring` much more
2834  useful, by making its configuration dynamic.
2835
2836f.savegeometry::
2837  The geometry of the current window is saved. The next call to
2838  f.restoregeometry will restore this window to this geometry.
2839
2840f.saveyourself::
2841  This function sends a `WM_SAVEYOURSELF` message to the selected window if it
2842  has requested the message in its `WM_PROTOCOLS` window property.  Clients that
2843  accept this message are supposed to checkpoint all state associated with the
2844  window and update the `WM_COMMAND` property as specified in the ICCCM.  If
2845  the selected window has not selected for this message, the keyboard bell
2846  will be rung.
2847
2848f.separator::
2849  Valid only in menus. The effect is to add a line separator between the
2850  previous and the following entry. The name selector part in the menu is not
2851  used (but must be present).
2852
2853f.setbuttonsstate::
2854  Set the WorkSpace manager in button state.
2855
2856f.setmapstate::
2857  Set the WorkSpace manager in map state.
2858
2859f.setpriority "`value`"::
2860  Set the window's priority to `value` (enclosed between double quotes).
2861  If `value` is directly followed by `<` or `b`, the window is
2862  placed below other windows of the given priority. Otherwise it is placed
2863  above.  See `OnTopPriority` variable for details.
2864+
2865First appeared in 4.0.0.
2866
2867f.showbackground::
2868  This function unmaps all windows in the current workspace. This is a toggle
2869  function, if all windows are unmapped, they are all remapped. Better bind this
2870  function in the root context.
2871
2872f.showiconmgr::
2873  This function maps the current icon manager.
2874
2875f.showworkspacemgr::
2876  Map the WorkSpace manager.
2877
2878f.slowdownanimation::
2879  Decrease `AnimationSpeed` by 1.
2880
2881f.sorticonmgr::
2882  This function sorts the entries in the current icon manager alphabetically.
2883  See the variable `SortIconManager`.
2884
2885f.speedupanimation::
2886  Increase `AnimationSpeed` by 1.
2887
2888f.squeeze::
2889  f.squeeze squeezes a window to a null vertical size. Works only for windows
2890  with either a title, or a 3D border (in order to have something left on the
2891  screen). If the window is already squeezed, it is unsqueezed.
2892
2893f.startanimation::
2894  Restart freezed animations (if any).
2895
2896f.stopanimation::
2897  Freeze animations (if any).
2898
2899f.switchpriority::
2900  Switch the window's priority, independently of its ability to switch
2901  automatically.  X-ref `OnTopPriority` and `PrioritySwitching`
2902  variables.
2903+
2904First appeared in 4.0.0.
2905
2906f.tinylower::
2907
2908f.tinyraise::
2909  These two functions allow you to raise/lower a window "one step" at
2910  a time. For instance, `f.tinyraise` will bring the current window
2911  just above the lowest one that's hiding it. These two functions are not
2912  subject to priority-switching.
2913+
2914First appeared in 4.0.0.
2915
2916f.title::
2917  This function provides a centered, unselectable item in a menu definition.  It
2918  should not be used in any other context.
2919
2920f.toggleoccupation `string`::
2921  This function adds the selected window to the workspace whose name
2922  is `string` if it doesn't already belongs to it, and removes it
2923  from this workspace if not.
2924
2925f.togglesound::
2926  Toggle sound on/off.  See the SOUNDS section.
2927
2928f.togglestate::
2929  Toggle the state of the WorkSpace manager.
2930
2931f.toggleworkspacemgr::
2932  Toggle the presence of the WorkSpaceManager. If
2933  it is mapped, it will be unmapped and vice versa.
2934
2935f.topzoom::
2936  This function stretches the top side of the window out to the top edge
2937  of the current monitor, or restores the original size if the window was
2938  already topzoom'd.
2939
2940f.trace `string`::
2941  Used for handling dumping debug output.  If a filename is given in
2942  `string`, begins writing output to that file; if `string` is `"stderr"`
2943  writes to stderr.  If debug file is already open, calling f.trace again
2944  closes it.
2945+
2946[normal]
2947  This is probably only useful if you're doing development on ctwm.
2948
2949f.twmrc::
2950  Alias for +f.restart+.
2951
2952f.unfocus::
2953  This function resets the focus back to pointer-driven.  This should be used
2954  when a focused window is no longer desired.
2955
2956f.unsqueeze::
2957  Is to `f.squeeze` what `f.deiconify` is to `f.iconify`.
2958+
2959First appeared in 4.0.0.
2960
2961f.upiconmgr::
2962  This function warps the pointer to the previous row in the current icon
2963  manager, wrapping to the last row in the same column if necessary.
2964
2965f.upworkspace::
2966  Goto the workspace immediately above the current workspace in the workspace
2967  manager. If the current workspace is the top one, goto the bottom one in the
2968  same column. The result depends on the layout of the workspace manager.
2969
2970f.vanish::
2971  The specified window vanishes from the current workspace if it occupies at least
2972  one other WorkSpace. Do nothing in the others cases.
2973
2974f.version::
2975  This function causes the ctwm version window to be displayed.  This
2976  window will be displayed until a pointer button is pressed or the
2977  pointer is moved from one window to another.
2978
2979f.vlzoom::
2980  This function is a synonym for `f.leftzoom`.
2981
2982f.vrzoom::
2983  This function is a synonym for `f.rightzoom`.
2984
2985f.warphere `win_name`::
2986  This function adds the window which has a name or class that matches string
2987  to the current workspace and warps the pointer to it. If the window is iconified,
2988  it will be deiconified if the variable WarpUnmapped is set or else ignored.
2989
2990f.warpring `string`::
2991  This function warps the pointer to the next or previous window (as indicated
2992  by the argument `string`, which may be `"next"` or `"prev"`)
2993  specified in the `WindowRing` variable.
2994
2995f.warpto `string`::
2996  This function warps the pointer to the window which has a name or class
2997  that matches `string`.  If the window is iconified, it will be deiconified
2998  if the variable `WarpUnmapped` is set or else ignored.
2999
3000f.warptoiconmgr `string`::
3001  This function warps the pointer to the icon manager entry
3002  associated with the window containing the pointer in the icon manager
3003  specified by the argument `string`.  If `string` is empty (i.e. ""),
3004  the current icon manager is chosen.
3005
3006f.warptoscreen `string`::
3007  This function warps the pointer to the screen specified by the
3008  argument `string`.  The argument may be a number (e.g. `"0"` or
3009  `"1"`), the word `"next"` (indicating the current screen plus 1,
3010  skipping over any unmanaged screens),
3011  the word `"back"` (indicating the current screen minus 1, skipping over
3012  any unmanaged screens), or the word
3013  `"prev"` (indicating the last screen visited).
3014
3015f.winrefresh::
3016  This function is similar to the `f.refresh` function except that only the
3017  selected window is refreshed.
3018
3019f.xbottomzoom::
3020  This function is similar to the `f.bottomzoom` function, but will cross
3021  monitors.
3022
3023f.xfullscreenzoom::
3024  This function is similar to the `f.fullscreenzoom` function, but will
3025  cross monitors.
3026
3027f.xfullzoom::
3028  This function is similar to the `f.fullzoom` function, but will cross
3029  monitors.
3030
3031f.xhorizoom::
3032  This function is similar to the `f.horizoom` function, but will cross
3033  monitors.
3034
3035f.xleftzoom::
3036  This function is similar to the `f.leftzoom` function, but will cross
3037  monitors.
3038
3039f.xrightzoom::
3040  This function is similar to the `f.rightzoom` function, but will cross
3041  monitors.
3042
3043f.xtopzoom::
3044  This function is similar to the `f.topzoom` function, but will cross
3045  monitors.
3046
3047f.xzoom::
3048  This function is similar to the `f.zoom` function, but will cross
3049  monitors.
3050
3051f.zoom::
3052  This function stretches the window so that it covers the whole height
3053  of the current monitor, or restores the original size if the window was
3054  already zoom'd.  It's the vertical counterpart fo `f.horizoom`; perhaps
3055  `f.vertzoom` would be a better name...
3056
3057
3058== MENUS
3059Functions may be grouped and interactively selected using pop-up
3060(when bound to a pointer button) or pull-down (when associated
3061with a titlebutton) menus.  Each menu specification contains the name of the
3062menu as it will be referred to by `f.menu`, optional default
3063foreground and background colors, the list of item names and the functions
3064they should invoke, and optional foreground and background colors for
3065individual items:
3066
3067------
3068Menu "menuname" [ ("deffg":"defbg") ]
3069{
3070    string1  [ ("fg1":"bg1") ]  function1
3071    string2  [ ("fg2":"bg2") ]  function2
3072        .
3073        .
3074        .
3075    stringN  [ ("fgN":"bgN") ]  functionN
3076}
3077------
3078
3079
3080The `menuname` is case-sensitive.
3081The optional `deffg` and `defbg` arguments specify the foreground
3082and background colors used on a color display
3083to highlight menu entries.
3084The `string` portion
3085of each menu entry will be the text which will appear in the menu.
3086The optional `fgN` and `bgN` arguments specify the foreground
3087and background colors of the menu entry when the pointer is not in
3088the entry.  These colors will only be used on a color display.  The
3089default is to use the colors specified by the
3090`MenuForeground` and `MenuBackground` variables.
3091The `function` portion of the menu entry is one of the functions,
3092including any user-defined functions, or additional menus.
3093
3094If an entry name begins with a ``*'' (star), this star won't be displayed and
3095the corresponding entry will be the default entry for this menu. When a menu
3096has a default entry and is used as a submenu of another menu, this default entry
3097action will be executed automatically when this submenu is selected without being
3098displayed. It's hard to explain, but easy to understand.
3099
3100=== Special Menus
3101
3102There are several special menus.
3103
3104`TwmWindows` contains the names of all of the client and ctwm-supplied
3105windows in the current workspace.  Selecting an entry will cause the
3106`WindowFunction` to be executed on that window.  If `WindowFunction`
3107hasn't been set, the window will be deiconified and raised.
3108
3109`TwmVisible` lists those windows which are currently deiconified (first
3110appeared in 3.7).
3111`TwmIcons` lists only those which are currently iconified.
3112
3113`TwmAllWindows` and `TwmAllIcons` act similarly to the non-All variants
3114described above, except that they show windows in all workspaces, rather
3115than just the current one.
3116
3117`TwmWorkspaces` contains the names of your workspaces, selecting an entry
3118goto this workspace. In addition, these entries have submenus containing
3119the names of all windows occupying this workspace, selecting such an
3120entry executes `f.warpto` on this window.
3121
3122`TwmKeys` lists all the keybindings in the root context that invoke
3123`f.exec`.  First appeared in 3.7.
3124
3125
3126== ICONS
3127ctwm supports several different ways of manipulating iconified windows.
3128The common pixmap-and-text style may be laid out by hand or automatically
3129arranged as described by the `IconRegion` variable.  In addition, a
3130terse grid of icon names, called an icon manager, provides a more efficient
3131use of screen space as well as the ability to navigate among windows from
3132the keyboard.
3133
3134An icon manager is a window that contains names of selected or all
3135windows currently on the display.  In addition to the window name,
3136a small button using the default iconify symbol will be displayed to the
3137left of the name when the window is iconified.  By default, clicking on an
3138entry in the icon manager performs `f.iconify`.
3139To change the actions taken in the icon manager, use the
3140the `iconmgr` context when specifying button and keyboard bindings.
3141
3142Moving the pointer into the icon manager also directs keyboard focus to
3143the indicated window (setting the focus explicitly or else sending synthetic
3144events `NoTitleFocus` is set).
3145Using the `f.upiconmgr`, `f.downiconmgr`
3146`f.lefticonmgr`, and
3147`f.righticonmgr` functions,
3148the input focus can be changed between windows directly from the
3149keyboard.
3150
3151
3152== X WINDOW PROPERTIES
3153
3154As a window manager, ctwm reads and sets a huge variety of properties on
3155the windows it manages and the windows it creates.  Most of that is
3156beyond the scope of user documentation.  However, a few points are worth
3157mentioning.
3158
3159=== Window Naming
3160
3161Windows get their names via X properties.  There are two types of names;
3162the window name (which is what shows up in the titlebar, the `f.identify`
3163window, etc), and the icon name (which shows up on the icon and on the
3164icon manager).
3165
3166Prior to 4.0.2, ctwm only supported the standard ICCCM properties for
3167setting the window and icon names.  These are `WM_NAME` for the window
3168name, and `WM_ICON_NAME` for the icon name.  As of 4.0.2, ctwm also
3169supports the EWMH versions of these, which are `_NET_WM_NAME` and
3170`_NET_WM_ICON_NAME`.  If the EWMH variants exist, they're used in
3171preference to the older ICCCM style.
3172
3173As of 4.0.2, ctwm also supports an additional pair of properties;
3174`CTWM_WM_NAME` and `CTWM_WM_ICON_NAME`, which override all the others.
3175These are specifically intended for the user to manually set, not for
3176programs to set themselves.  This allows the user to override programs
3177that name themselves unhelpfully, or to otherwise label things to their
3178liking.
3179
3180You can set these via any method you'd use to set window properties.
3181From the command line, the `xprop(1)` tool is widely available, if a
3182little clunky.  So, for instance, to set the icon name of a window
3183(changing how it looks in the icon manager), but leave the window name
3184alone as the program itself normally sets it (leaving the titlebar
3185normal), you could run a command like:
3186
3187----
3188xprop -f CTWM_WM_ICON_NAME 8u -set CTWM_WM_ICON_NAME "I hate this window"
3189----
3190
3191and then click the window you want to set it on.  Unfortunately,
3192`xprop(1)` does require you to specify the property name when defining
3193the format, as well as when setting it, so it's a little ugly.  The `8u`
3194means you're giving a UTF-8 string.  Other possible formats are `8s` for
3195a plain 7-bit `STRING` (i.e, plain ASCII), and `8t` for
3196``internationalized'' ICCCM-style `COMPOUND_TEXT`.  Usually you'd just
3197use UTF-8 though.  `xprop -remove CTWM_WM_ICON_NAME` and click would let
3198you undo it and go back to the normal naming.  See the `xprop(1)` manual
3199for more.
3200
3201
3202== SOUNDS
3203If built with the `USE_SOUND` option, ctwm is able to play sounds
3204for any X event.  This may be configured in two ways.
3205
3206As of 4.0.0, the sounds may be configured in the ctwmrc with the
3207`RplaySounds` config parameter.  See above for details.
3208
3209If that is not found, or in older versions, ctwm will look for the file
3210`.ctwm-sounds` in the user's home directory to map every X event to a
3211sound file to be played.  Each line in `.ctwm-sounds` has the following
3212syntax:
3213
3214------
3215{X event}: {sound file}
3216------
3217
3218If `RplaySounds` is given in the config file, and `.ctwm-sounds` exists,
3219a warning will be given, and the contents of `.ctwm-sounds` will be
3220ignored.  All support for `.ctwm-sounds` will be removed in a future
3221version, leaving only the ctwmrc configuration method available
3222
3223However configured, the currently known X events that can be given are:
3224
3225------
3226KeyPress
3227KeyRelease
3228ButtonPress
3229ButtonRelease
3230MotionNotify
3231EnterNotify
3232LeaveNotify
3233FocusIn
3234FocusOut
3235KeymapNotify
3236Expose
3237GraphicsExpose
3238NoExpose
3239VisibilityNotify
3240CreateNotify
3241DestroyNotify
3242UnmapNotify
3243MapNotify
3244MapRequest
3245ReparentNotify
3246ConfigureNotify
3247ConfigureRequest
3248GravityNotify
3249ResizeRequest
3250CirculateNotify
3251CirculateRequest
3252PropertyNotify
3253SelectionClear
3254SelectionRequest
3255SelectionNotify
3256ColormapNotify
3257ClientMessage
3258MappingNotify
3259------
3260
3261Additionally, the following two are recognised, and represent the time
3262when ctwm is started or shut down:
3263
3264------
3265Startup
3266Shutdown
3267------
3268
3269
3270== BUGS
3271The resource manager should have been used instead of all of the window
3272lists.
3273
3274Double clicking very fast to get the constrained move function will sometimes
3275cause the window to move, even though the pointer is not moved.
3276
3277If `IconifyByUnmapping` is on and windows are listed in
3278`IconManagerDontShow` but not in `DontIconifyByUnmapping`,
3279they may be lost if they are iconified and no bindings to
3280`f.menu "TwmWindows"` or `f.warpto` are setup.
3281
3282== FILES
3283See earlier Customization section.
3284
3285== ENVIRONMENT VARIABLES
3286
3287DISPLAY::
3288  This variable is used to determine which X server to use.  It is also set
3289  during `f.exec` so that programs come up on the proper screen.
3290
3291HOME::
3292  This variable is used as the prefix for files that begin with a tilde and
3293  for locating the ctwm startup file.
3294
3295
3296== SEE ALSO
3297X(1), Xserver(1), xdm(1), xrdb(1)
3298
3299== COPYRIGHT
3300Portions copyright 1988 Evans & Sutherland Computer Corporation; portions
3301copyright 1989 Hewlett-Packard Company and the Massachusetts Institute of
3302Technology,  See `X(1)` for a full statement of rights and permissions.
3303
3304See COPYRIGHT file in distribution for more information.
3305
3306== AUTHORS
3307
3308=== TWM
3309Tom LaStrange, Solbourne Computer; Jim Fulton, MIT X Consortium;
3310Steve Pitschke, Stardent Computer; Keith Packard, MIT X Consortium;
3311Dave Sternlicht, MIT X Consortium; Dave Payne, Apple Computer.
3312
3313=== CTWM
3314Claude Lecommandeur, Swiss Polytechnical Institute of Lausanne
3315(lecom@sic.epfl.ch);
3316Richard Levitte (richard@levitte.org);
3317Matthew Fuller (fullermd@over-yonder.net);
3318and many other contributors.
3319
3320== VERSION
3321This manual is build for ctwm @ctwm_version_str@.
3322
3323
3324
3325// vim:ft=asciidoc:expandtab:
3326