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