.\" Copyright 1993, 1994, 1998 The Open Group .\" Portions copyright 1988 Evans & Sutherland Computer Corporation. .\" Portions copyright 1989 Hewlett-Packard Company .\" .\" Permission to use, copy, modify, distribute, and sell this software and its .\" documentation for any purpose is hereby granted without fee, provided that .\" the above copyright notice appear in all copies and that both that .\" copyright notice and this permission notice appear in supporting .\" documentation. .\" .\" The above copyright notice and this permission notice shall be included .\" in all copies or substantial portions of the Software. .\" .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. .\" IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR .\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, .\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR .\" OTHER DEALINGS IN THE SOFTWARE. .\" .\" Except as contained in this notice, the name of The Open Group shall .\" not be used in advertising or otherwise to promote the sale, use or .\" other dealings in this Software without prior written authorization .\" from The Open Group. .\" .de EX \"Begin example .ne 5 .if n .sp 1 .if t .sp .5 .nf .in +.5i .. .de EE .fi .in -.5i .if n .sp 1 .if t .sp .5 .. .TH TWMRUINED 1 __xorgversion__ .SH NAME twmruined \- No longer quite the Tab Window Manager .SH SYNTAX \fBtwmruined \fP[ \fB\-display\fP \fIdpy\fP ] [ \fB\-s\fP ] [ \fB\-f\fP \fIinitfile\fP ] [ \fB\-v\fP ] .SH DESCRIPTION \fITwmruined\fP is a window manager for the X Window System based on twm. It provides titlebars, shaped windows, several forms of icon management, click-to-type and pointer-driven keyboard focus, and user-specified key and pointer button bindings. .PP This program is usually started by the user's session manager or startup script. When used from \fIxdm(__appmansuffix__)\fP or \fIxinit(__appmansuffix__)\fP without a session manager, \fItwmruined\fP is frequently executed in the foreground as the last client. When run this way, exiting \fItwmruined\fP causes the session to be terminated (i.e., logged out). .PP Application windows are surrounded by a ``frame'' with a titlebar at the top and a special border around the window. The titlebar contains the window's name, a rectangle that is lit when the window is receiving keyboard input, and function boxes known as ``titlebuttons'' at the left and right edges of the titlebar. .PP Pressing pointer Button1 (usually the left-most button unless it has been changed with \fIxmodmap\fP) on a titlebutton will invoke the function associated with the button. In the default interface, windows are iconified by clicking (pressing and then immediately releasing) the left titlebutton (which looks like a Dot). Conversely, windows are deiconified by clicking in the associated icon. .PP Windows are resized by pressing the right titlebutton (which resembles a group of nested squares), dragging the pointer over edge that is to be moved, and releasing the pointer when the outline of the window is the desired size. Similarly, windows are moved by pressing in the title or highlight region, dragging a window outline to the new location, and then releasing when the outline is in the desired position. Just clicking in the title or highlight region raises the window without moving it. .PP When new windows are created, \fItwmruined\fP will honor any size and location information requested by the user (usually through a \fI-geometry\fP command line argument or resources for the individual applications). .SH OPTIONS \fITwmruined\fP accepts the following command line options: .PP .TP 8 .B \-display \fIdpy\fP This option specifies the X server to use. .TP 8 .B \-s This option indicates that only the default screen (as specified by \fB\-display\fP or by the \fBDISPLAY\fP environment variable) should be managed. By default, \fItwmruined\fP will attempt to manage all screens on the display. .TP 8 .B \-f \fIfilename\fP This option specifies the name of the startup file to use. By default, \fItwmruined\fP will look in the user's home directory for files named \fI.twmruinedrc.num\fP (where \fInum\fP is a screen number) or \fI.twmruinedrc\fP. .TP 8 .B \-v This option indicates that \fItwmruined\fP should print error messages whenever an unexpected X Error event is received. This can be useful when debugging applications but can be distracting in regular use. .SH CUSTOMIZATION .PP Much of \fItwmruined\fP's appearance and behavior can be controlled by providing a startup file in one of the following locations (searched in order for each screen being managed when \fItwmruined\fP begins): .TP 8 .B "$HOME/.twmruinedrc.\fIscreennumber\fP" The \fIscreennumber\fP is a small positive number (e.g. 0, 1, etc.) representing the screen number (e.g. the last number in the DISPLAY environment variable \fIhost:displaynum.screennum\fP) that would be used to contact that screen of the display. This is intended for displays with multiple screens of differing visual types. .TP 8 .B "$HOME/.twmruinedrc" This is the usual name for an individual user's startup file. .TP 8 .B __datadir__/X11/twmruined/system.twmruinedrc If neither of the preceding files are found, \fItwmruined\fP will look in this file for a default configuration. This is often tailored by the site administrator to provide convenient menus or familiar bindings for novice users. .PP If no startup files are found, \fItwmruined\fP will use the built-in defaults described above. The only resource used by \fItwmruined\fP is \fIbitmapFilePath\fP for a colon-separated list of directories to search when looking for bitmap files (for more information, see the \fIAthena Widgets\fP manual and \fIxrdb(__appmansuffix__)\fP). .PP \fITwmruined\fP startup files are logically broken up into three types of specifications: \fIVariables\fP, \fIBindings\fP, \fIMenus\fP. The \fIVariables\fP section must come first and is used to describe the fonts, colors, cursors, icon and window placement, highlighting, autoraising, layout of titles, and warping. The \fIBindings\fP section usually comes second and is used to specify the functions that should be to be invoked when keyboard and pointer buttons are pressed in windows, icons, titles, and frames. The \fIMenus\fP section gives any user-defined menus (containing functions to be invoked or commands to be executed). .PP Variable names and keywords are case-insensitive. Strings must be surrounded by double quote characters (e.g. "blue") and are case-sensitive. A pound sign (#) outside of a string causes the remainder of the line in which the character appears to be treated as a comment. .SH VARIABLES .PP Many of the aspects of \fItwmruined\fP's user interface are controlled by variables that may be set in the user's startup file. Some of the options are enabled or disabled simply by the presence of a particular keyword. Other options require keywords, numbers, strings, or lists of all of these. .PP Lists are surrounded by braces and are usually separated by whitespace or a newline. For example: .EX 0 \fBAutoRaise\fP { "emacs" "XTerm" "Xmh" } .EE or .EX 0 \fBAutoRaise\fP { "emacs" "XTerm" "Xmh" } .EE When a variable containing a list of strings representing windows is searched (e.g. to determine whether or not to enable autoraise as shown above), a string must be an exact, case-sensitive match to the window's name (given by the WM_NAME window property), resource name or class name (both given by the WM_CLASS window property). The preceding example would enable autoraise on windows named ``emacs'' as well as any \fIxterm\fP (since they are of class ``XTerm'') or xmh windows (which are of class ``Xmh''). .PP String arguments that are interpreted as filenames (see the \fBPixmaps\fP, \fBCursors\fP, and \fBIconDirectory\fP below) will prepend the user's directory (specified by the \fBHOME\fP environment variable) if the first character is a tilde (~). If, instead, the first character is a colon (:), the name is assumed to refer to one of the internal bitmaps that are used to create the default titlebars symbols: \fB:xlogo\fP or \fB:delete\fP (both refer to the X logo), \fB:dot\fP or \fB:iconify\fP (both refer to the dot), \fB:resize\fP (the nested squares used by the resize button), \fB:menu\fP (a page with lines), and \fB:question\fP (the question mark used for non-existent bitmap files). .PP The following variables may be specified at the top of a \fItwmruined\fP startup file. Lists of Window name prefix strings are indicated by \fIwin-list\fP. Optional arguments are shown in square brackets: .IP "\fBAutoRaise\fP { \fIwin-list\fP }" 8 This variable specifies a list of windows that should automatically be raised whenever the pointer enters the window. This action can be interactively enabled or disabled on individual windows using the function \fBf.autoraise\fP. .IP "\fBAutoRelativeResize\fP" 8 This variable indicates that dragging out a window size (either when initially sizing the window with pointer Button2 or when resizing it) should not wait until the pointer has crossed the window edges. Instead, moving the pointer automatically causes the nearest edge or edges to move by the same amount. This allows the resizing of windows that extend off the edge of the screen. If the pointer is in the center of the window, or if the resize is begun by pressing a titlebutton, \fItwmruined\fP will still wait for the pointer to cross a window edge (to prevent accidents). This option is particularly useful for people who like the press-drag-release method of sweeping out window sizes. .IP "\fBBorderColor\fP \fIstring\fP [{ \fIwincolorlist\fP }]" 8 This variable specifies the default color of the border to be placed around all non-iconified windows, and may only be given within a \fBColor\fP, \fBGrayscale\fP or \fBMonochrome\fP list. The optional \fIwincolorlist\fP specifies a list of window and color name pairs for specifying particular border colors for different types of windows. For example: .EX 0 \fBBorderColor\fP "gray50" { "XTerm" "red" "xmh" "green" } .EE The default is "black". .IP "\fBBorderTileBackground\fP \fIstring\fP [{ \fIwincolorlist\fP }]" 8 This variable specifies the default background color in the gray pattern used in unhighlighted borders, and may only be given within a \fBColor\fP, \fBGrayscale\fP or \fBMonochrome\fP list. The optional \fIwincolorlist\fP allows per-window colors to be specified. The default is "white". .IP "\fBBorderTileForeground\fP \fIstring\fP [{ \fIwincolorlist\fP }]" 8 This variable specifies the default foreground color in the gray pattern used in unhighlighted borders, and may only be given within a \fBColor\fP, \fBGrayscale\fP or \fBMonochrome\fP list. The optional \fIwincolorlist\fP allows per-window colors to be specified. The default is "black". .IP "\fBColor\fP { \fIcolors-list\fP }" 8 This variable specifies a list of color assignments to be made if the default display is capable of displaying more than simple black and white. The \fIcolors-list\fP is made up of the following color variables and their values: \fBDefaultBackground\fP, \fBDefaultForeground\fP, \fBMenuBackground\fP, \fBMenuForeground\fP, \fBMenuTitleBackground\fP, \fBMenuTitleForeground\fP, \fBMenuShadowColor\fP, \fBMenuBorderColor\fP, \fBPointerForeground\fP, and \fBPointerBackground\fP. The following color variables may also be given a list of window and color name pairs to allow per-window colors to be specified (see \fBBorderColor\fP for details): \fBBorderColor\fP, \fBBorderTitleBackground\fP, \fBBorderTitleForeground\fP, \fBTitleBackground\fP, \fBTitleForeground\fP, \fBIconBackground\fP, \fBIconForeground\fP, \fBIconBorderColor\fP. For example: .EX 0 \fBColor\fP { MenuBackground "gray50" MenuForeground "blue" BorderColor "red" { "XTerm" "yellow" } TitleForeground "yellow" TitleBackground "blue" } .EE All of these color variables may also be specified for the \fBMonochrome\fP variable, allowing the same initialization file to be used on both color and monochrome displays. .IP "\fBConstrainedMoveTime\fP \fImilliseconds\fP" 8 This variable specifies the length of time between button clicks needed to begin a constrained move operation. Double clicking within this amount of time when invoking \fBf.move\fP will cause the window to be moved only in a horizontal or vertical direction. Setting this value to 0 will disable constrained moves. The default is 400 milliseconds. .IP "\fBCursors\fP { \fIcursor-list\fP }" 8 This variable specifies the glyphs that \fItwmruined\fP should use for various pointer cursors. Each cursor may be defined either from the \fBcursor\fP font or from two bitmap files. Shapes from the \fBcursor\fP font may be specified directly as: .EX 0 \fIcursorname\fP "\fIstring\fP" .EE where \fIcursorname\fP is one of the cursor names listed below, and \fIstring\fP is the name of a glyph as found in the file .I __projectroot__/include/X11/cursorfont.h (without the ``XC_'' prefix). If the cursor is to be defined from bitmap files, the following syntax is used instead: .EX 0 \fIcursorname\fP "\fIimage\fP" "\fImask\fP" .EE The \fIimage\fP and \fImask\fP strings specify the names of files containing the glyph image and mask in \fIbitmap(__appmansuffix__)\fP form. The bitmap files are located in the same manner as icon bitmap files. The following example shows the default cursor definitions: .EX 0 \fBCursors\fP { Frame "top_left_arrow" Title "top_left_arrow" Icon "top_left_arrow" Move "fleur" Resize "fleur" Menu "sb_left_arrow" Button "hand2" Wait "watch" Select "dot" Destroy "pirate" } .EE .IP "\fBDecorateTransients\fP" 8 This variable indicates that transient windows (those containing a WM_TRANSIENT_FOR property) should have titlebars. By default, transients are not reparented. .IP "\fBDefaultBackground\fP \fIstring\fP" 8 This variable specifies the background color to be used for sizing and information windows. The default is "white". .IP "\fBDefaultForeground\fP \fIstring\fP" 8 This variable specifies the foreground color to be used for sizing and information windows. The default is "black". .IP "\fBDontMoveOff\fP" 8 This variable indicates that windows should not be allowed to be moved off the screen. It can be overridden by the \fBf.forcemove\fP function. .IP "\fBForceIcons\fP" 8 This variable indicates that icon pixmaps specified in the \fBIcons\fP variable should override any client-supplied pixmaps. .IP "\fBFramePadding\fP \fIpixels\fP" 8 This variable specifies the distance between the titlebar decorations (the button and text) and the window frame. The default is 2 pixels. .IP "\fBGrayscale\fP { \fIcolors\fP }" 8 This variable specifies a list of color assignments that should be made if the screen has a GrayScale default visual. See the description of \fBColors\fP. .IP "\fBIconBackground\fP \fIstring\fP [{ \fIwin-list\fP }]" 8 This variable specifies the background color of icons, and may only be specified inside of a \fBColor\fP, \fBGrayscale\fP or \fBMonochrome\fP list. The optional \fIwin-list\fP is a list of window names and colors so that per-window colors may be specified. See the \fBBorderColor\fP variable for a complete description of the \fIwin-list\fP. The default is "white". .IP "\fBIconBorderColor\fP \fIstring\fP [{ \fIwin-list\fP }]" 8 This variable specifies the color of the border used for icon windows, and may only be specified inside of a \fBColor\fP, \fBGrayscale\fP or \fBMonochrome\fP list. The optional \fIwin-list\fP is a list of window names and colors so that per-window colors may be specified. See the \fBBorderColor\fP variable for a complete description of the \fIwin-list\fP. The default is "black". .IP "\fBIconDirectory\fP \fIstring\fP" 8 This variable specifies the directory that should be searched if if a bitmap file cannot be found in any of the directories in the \fBbitmapFilePath\fP resource. .IP "\fBIconFont\fP \fIstring\fP" 8 This variable specifies the font to be used to display icon names within icons. The default is "variable". .IP "\fBIconForeground\fP \fIstring\fP [{ \fIwin-list\fP }]" 8 This variable specifies the foreground color to be used when displaying icons, and may only be specified inside of a \fBColor\fP, \fBGrayscale\fP or \fBMonochrome\fP list. The optional \fIwin-list\fP is a list of window names and colors so that per-window colors may be specified. See the \fBBorderColor\fP variable for a complete description of the \fIwin-list\fP. The default is "black". .IP "\fBIcons\fP { \fIwin-list\fP }" 8 This variable specifies a list of window names and the bitmap filenames that should be used as their icons. For example: .EX 0 \fBIcons\fP { "XTerm" "xterm.icon" "xfd" "xfd_icon" } .EE Windows that match ``XTerm'' would try to use the icon bitmap in the file ``xterm.icon''. If \fBForceIcons\fP is specified, this bitmap will be used even if the client has requested its own icon pixmap. .IP "\fBInterpolateMenuColors\fP" 8 This variable indicates that menu entry colors should be interpolated between entry specified colors. In the example below: .EX 0 \fBMenu\fP "mymenu" { "Title" ("black":"red") f.title "entry1" f.nop "entry2" f.nop "entry3" ("white":"green") f.nop "entry4" f.nop "entry5" ("red":"white") f.nop } .EE the foreground colors for ``entry1'' and ``entry2'' will be interpolated between black and white, and the background colors between red and green. Similarly, the foreground for ``entry4'' will be half-way between white and red, and the background will be half-way between green and white. .IP "\fBMakeTitle\fP { \fIwin-list\fP }" 8 This variable specifies a list of windows on which a titlebar should be placed and is used to request titles on specific windows when \fBNoTitle\fP has been set. .IP "\fBMaxWindowSize\fP \fIstring\fP" 8 This variable specifies a geometry in which the width and height give the maximum size for a given window. This is typically used to restrict windows to the size of the screen. The default width is 32767 - screen width. The default height is 32767 - screen height. .IP "\fBMenuBackground\fP \fIstring\fP" 8 This variable specifies the background color used for menus, and can only be specified inside of a \fBColor\fP or \fBMonochrome\fP list. The default is "white". .IP "\fBMenuBorderColor\fP \fIstring\fP" 8 This variable specifies the color of the menu border and can only be specified inside of a \fBColor\fP, \fBGrayscale\fP or \fBMonochrome\fP list. The default is "black". .IP "\fBMenuFont\fP \fIstring\fP" 8 This variable specifies the font to use when displaying menus. The default is "variable". .IP "\fBMenuForeground\fP \fIstring\fP" 8 This variable specifies the foreground color used for menus, and can only be specified inside of a \fBColor\fP, \fBGrayscale\fP or \fBMonochrome\fP list. The default is "black". .IP "\fBMenuShadowColor\fP \fIstring\fP" 8 This variable specifies the color of the shadow behind pull-down menus and can only be specified inside of a \fBColor\fP, \fBGrayscale\fP or \fBMonochrome\fP list. The default is "black". .IP "\fBMenuTitleBackground\fP \fIstring\fP" 8 This variable specifies the background color for \fBf.title\fP entries in menus, and can only be specified inside of a \fBColor\fP, \fBGrayscale\fP or \fBMonochrome\fP list. The default is "white". .IP "\fBMenuTitleForeground\fP \fIstring\fP" 8 This variable specifies the foreground color for \fBf.title\fP entries in menus and can only be specified inside of a \fBColor\fP or \fBMonochrome\fP list. The default is "black". .IP "\fBMonochrome\fP { \fIcolors\fP }" 8 This variable specifies a list of color assignments that should be made if the screen has a depth of 1. See the description of \fBColors\fP. .IP "\fBNoBackingStore\fP" 8 This variable indicates that \fItwmruined\fP's menus should not request backing store to minimize repainting of menus. This is typically used with servers that can repaint faster than they can handle backing store. .IP "\fBNoDefaults\fP" 8 This variable indicates that \fItwm\fP should not supply the default titlebuttons and bindings. This option should only be used if the startup file contains a completely new set of bindings and definitions. .IP "\fBNoMenuShadows\fP" 8 This variable indicates that menus should not have drop shadows drawn behind them. This is typically used with slower servers since it speeds up menu drawing at the expense of making the menu slightly harder to read. .IP "\fBNoRaiseOnDeiconify\fP" 8 This variable indicates that windows that are deiconified should not be raised. .IP "\fBNoRaiseOnMove\fP" 8 This variable indicates that windows should not be raised when moved. This is typically used to allow windows to slide underneath each other. .IP "\fBNoRaiseOnResize\fP" 8 This variable indicates that windows should not be raised when resized. This is typically used to allow windows to be resized underneath each other. .IP "\fBNoRaiseOnWarp\fP" 8 This variable indicates that windows should not be raised when the pointer is warped into them with the \fBf.warpto\fP function. If this option is set, warping to an occluded window may result in the pointer ending up in the occluding window instead the desired window (which causes unexpected behavior with \fBf.warpring\fP). .IP "\fBNoSaveUnders\fP" 8 This variable indicates that menus should not request save-unders to minimize window repainting following menu selection. It is typically used with displays that can repaint faster than they can handle save-unders. .IP "\fBNoStackMode\fP [{ \fIwin-list\fP }]" 8 This variable indicates that client window requests to change stacking order should be ignored. If the optional \fIwin-list\fP is given, only requests on those windows will be ignored. This is typically used to prevent applications from relentlessly popping themselves to the front of the window stack. .IP "\fBNoTitle\fP [{ \fIwin-list\fP }] " 8 This variable indicates that windows should not have titlebars. If the optional \fIwin-list\fP is given, only those windows will not have titlebars. \fBMakeTitle\fP may be used with this option to force titlebars to be put on specific windows. .IP "\fBNoTitleFocus\fP" 8 This variable indicates that \fItwmruined\fP should not set keyboard input focus to each window as it is entered. Normally, \fItwmruined\fP sets the focus so that focus and key events from the titlebar are delivered to the application. If the pointer is moved quickly and \fItwmruined\fP is slow to respond, input can be directed to the old window instead of the new. This option is typically used to prevent this ``input lag'' and to work around bugs in older applications that have problems with focus events. .IP "\fBPriority\fP \fIpriority\fP" 8 This variable sets \fItwmruined\fP's priority. \fIpriority\fP should be an unquoted, signed number (e.g. 999). This variable has an effect only if the server supports the SYNC extension. .IP "\fBResizeFont\fP \fIstring\fP" 8 This variable specifies the font to be used for in the dimensions window when resizing windows. The default is "fixed". .IP "\fBRestartPreviousState\fP" 8 This variable indicates that \fItwmruined\fP should attempt to use the WM_STATE property on client windows to tell which windows should be iconified and which should be left visible. This is typically used to try to regenerate the state that the screen was in before the previous window manager was shutdown. .IP "\fBSaveColor\fP { \fIcolors-list\fP }" 8 This variable indicates a list of color assignments to be stored as pixel values in the root window property _MIT_PRIORITY_COLORS. Clients may elect to preserve these values when installing their own colormap. Note that use of this mechanism is a way an for application to avoid the "technicolor" problem, whereby useful screen objects such as window borders and titlebars disappear when a programs custom colors are installed by the window manager. For example: .EX 0 \fBSaveColor\fP { BorderColor TitleBackground TitleForeground "red" "green" "blue" } .EE This would place on the root window 3 pixel values for borders and titlebars, as well as the three color strings, all taken from the default colormap. .IP "\fBStartIconified\fP [{ \fIwin-list\fP }] " 8 This variable indicates that client windows should initially be left as icons until explicitly deiconified by the user. If the optional \fIwin-list\fP is given, only those windows will be started iconic. This is useful for programs that do not support an \fI-iconic\fP command line option or resource. .IP "\fBTitleBackground\fP \fIstring\fP [{ \fIwin-list\fP }]" 8 This variable specifies the background color used in titlebars, and may only be specified inside of a \fBColor\fP, \fBGrayscale\fP or \fBMonochrome\fP list. The optional \fIwin-list\fP is a list of window names and colors so that per-window colors may be specified. The default is "white". .IP "\fBTitleFont\fP \fIstring\fP" 8 This variable specifies the font to be used for displaying window names in titlebars. The default is "variable". .IP "\fBTitleForeground\fP \fIstring\fP [{ \fIwin-list\fP }]" 8 This variable specifies the foreground color used in titlebars, and may only be specified inside of a \fBColor\fP, \fBGrayscale\fP or \fBMonochrome\fP list. The optional \fIwin-list\fP is a list of window names and colors so that per-window colors may be specified. The default is "black". .IP "\fBUnknownIcon\fP \fIstring\fP" 8 This variable specifies the filename of a bitmap file to be used as the default icon. This bitmap will be used as the icon of all clients which do not provide an icon bitmap and are not listed in the \fBIcons\fP list. .IP "\fBWarpCursor\fP [{ \fIwin-list\fP }]" 8 This variable indicates that the pointer should be warped into windows when they are deiconified. If the optional \fIwin-list\fP is given, the pointer will only be warped when those windows are deiconified. .IP "\fBWindowRing\fP { \fIwin-list\fP }" 8 This variable specifies a list of windows along which the \fBf.warpring\fP function cycles. .IP "\fBWarpUnmapped\fP" 8 This variable indicates that the \fBf.warpto\fP function should deiconify any iconified windows it encounters. This is typically used to make a key binding that will pop a particular window (such as \fIxmh\fP), no matter where it is. The default is for \fBf.warpto\fP to ignore iconified windows. .IP "\fBXorValue\fP \fInumber\fP" 8 This variable specifies the value to use when drawing window outlines for moving and resizing. This should be set to a value that will result in a variety of of distinguishable colors when exclusive-or'ed with the contents of the user's typical screen. Setting this variable to 1 often gives nice results if adjacent colors in the default colormap are distinct. By default, \fItwmruined\fP will attempt to cause temporary lines to appear at the opposite end of the colormap from the graphics. .PP The following variables must be set after the fonts have been assigned, so it is usually best to put them at the end of the variables or beginning of the bindings sections: .IP "\fBDefaultFunction\fP \fIfunction\fP" 8 This variable specifies the function to be executed when a key or button event is received for which no binding is provided. This is typically bound to \fBf.nop\fP, \fBf.beep\fP, or a menu containing window operations. .IP "\fBWindowFunction\fP \fIfunction\fP" 8 This variable specifies the function to execute when a window is selected from the \fBTwmWindows\fP menu. If this variable is not set, the window will be deiconified and raised. .SH BINDINGS .PP After the desired variables have been set, functions may be attached to titlebuttons and key and pointer buttons. Titlebuttons may be added from the left or right side and appear in the titlebar from left-to-right according to the order in which they are specified. Key and pointer button bindings may be given in any order. .PP Titlebuttons specifications must include the name of the pixmap to use in the button box and the function to be invoked when a pointer button is pressed within them: .EX 0 \fBLeftTitleButton\fP "\fIbitmapname\fP" = \fIfunction\fP .EE or .EX 0 \fBRightTitleButton\fP "\fIbitmapname\fP" = \fIfunction\fP .EE The \fIbitmapname\fP may refer to one of the built-in bitmaps (which are scaled to match \fBTitleFont\fP) by using the appropriate colon-prefixed name described above. .PP Key and pointer button specifications must give the modifiers that must be pressed, over which parts of the screen the pointer must be, and what function is to be invoked. Keys are given as strings containing the appropriate keysym name; buttons are given as the keywords \fBButton1\fP-\fBButton5\fP: .EX 0 "FP1" = \fImodlist\fP : \fIcontext\fP : \fIfunction\fP \fBButton1\fP = \fImodlist\fP : \fIcontext\fP : \fIfunction\fP .EE The \fImodlist\fP is any combination of the modifier names \fBshift\fP, \fBcontrol\fP, \fBlock\fP, \fBmeta\fP, \fBmod1\fP, \fBmod2\fP, \fBmod3\fP, \fBmod4\fP, or \fBmod5\fP (which may be abbreviated as \fBs\fP, \fBc\fP, \fBl\fP, \fBm\fP, \fBm1\fP, \fBm2\fP, \fBm3\fP, \fBm4\fP, \fBm5\fP, respectively) separated by a vertical bar (\(or). Similarly, the \fIcontext\fP is any combination of \fBwindow\fP, \fBtitle\fP, \fBicon\fP, \fBroot\fP, \fBframe\fP, their first letters, or \fBall\fP, separated by a vertical bar. The \fIfunction\fP is any of the \fBf.\fP keywords described below. For example, the default startup file contains the following bindings: .EX 0 Button1 = : root : f.menu "TwmWindows" Button1 = m : window | icon : f.move-or-lower Button2 = m : window | icon : f.iconify Button3 = m : window | icon : f.move-or-raise Button1 = : title : f.move-or-raise Button2 = : title : f.raiselower Button1 = : icon : f.move-or-iconify Button2 = : icon : f.iconify .EE A user who wanted to be able to manipulate windows from the keyboard could use the following bindings: .EX 0 "F1" = : all : f.iconify "F2" = : all : f.raiselower "F3" = : all : f.warpring "next" "F4" = : all : f.warpto "xmh" "F5" = : all : f.warpto "emacs" "F6" = : all : f.colormap "next" "F7" = : all : f.colormap "default" "F20" = : all : f.warptoscreen "next" .EE \fITwmruined\fP provides many more window manipulation primitives than can be conveniently stored in a titlebar, menu, or set of key bindings. Although a small set of defaults are supplied (unless the \fBNoDefaults\fP is specified), most users will want to have their most common operations bound to key and button strokes. To do this, \fItwmruined\fP associates names with each of the builtin functions and \fImenus\fP for interactively selecting among groups of functions. .PP In the descriptions below, if the function is said to operate on the selected window, but is invoked from a root menu, the cursor will be changed to the \fBSelect\fP cursor and the next window to receive a button press will be chosen: .IP "\fB!\fP \fIstring\fP" 8 This is an abbreviation for \fBf.exec\fP \fIstring\fP. .IP "\fBf.autoraise\fP" 8 This function toggles whether or not the selected window is raised whenever entered by the pointer. See the description of the variable \fBAutoRaise\fP. .IP "\fBf.beep\fP" 8 This function sounds the keyboard bell. .IP "\fBf.bottomzoom\fP" 8 This function is similar to the \fBf.fullzoom\fP function, but resizes the window to fill only the bottom half of the screen. .IP "\fBf.circledown\fP" 8 This function lowers the top-most window that occludes another window. .IP "\fBf.circleup\fP" 8 This function raises the bottom-most window that is occluded by another window. .IP "\fBf.colormap\fP \fIstring\fP" 8 This function rotates the colormaps (obtained from the WM_COLORMAP_WINDOWS property on the window) that \fItwmruined\fP will display when the pointer is in this window. The argument \fIstring\fP may have one of the following values: \fB"next"\fP, \fB"prev"\fP, and \fB"default"\fP. It should be noted here that in general, the installed colormap is determined by keyboard focus. A pointer driven keyboard focus will install a private colormap upon entry of the window owning the colormap. Using the click to type model, private colormaps will not be installed until the user presses a mouse button on the target window. .IP "\fBf.deiconify\fP" 8 This function deiconifies the selected window. If the window is not an icon, this function does nothing. .IP "\fBf.delete\fP" 8 This function sends the WM_DELETE_WINDOW message to the selected window if the client application has requested it through the WM_PROTOCOLS window property. The application is supposed to respond to the message by removing the indicated window. If the window has not requested WM_DELETE_WINDOW messages, the keyboard bell will be rung indicating that the user should choose an alternative method. Note this is very different from f.destroy. The intent here is to delete a single window, not necessarily the entire application. .IP "\fBf.destroy\fP" 8 This function instructs the X server to close the display connection of the client that created the selected window. This should only be used as a last resort for shutting down runaway clients. See also f.delete. .IP "\fBf.exec\fP \fIstring\fP" 8 This function passes the argument \fIstring\fP to /bin/sh for execution. In multiscreen mode, if \fIstring\fP starts a new X client without giving a display argument, the client will appear on the screen from which this function was invoked. .\".IP "\fBf.file\fP \fIstring\fP" 8 .\"This function assumes \fIstring\fP is a file name. This file is read into .\"the window server's cut buffer. .IP "\fBf.focus\fP" 8 This function toggles the keyboard focus of the server to the selected window, changing the focus rule from pointer-driven if necessary. If the selected window already was focused, this function executes an \fBf.unfocus\fP. .IP "\fBf.forcemove\fP" 8 This function is like \fBf.move\fP except that it ignores the \fBDontMoveOff\fP variable. .IP "\fBf.fullzoom\fP" 8 This function resizes the selected window to the full size of the display or else restores the original size if the window was already zoomed. .IP "\fBf.function\fP \fIstring\fP" 8 This function executes the user-defined function whose name is specified by the argument \fIstring\fP. .IP "\fBf.hbzoom\fP" 8 This function is a synonym for \fBf.bottomzoom\fP. .IP "\fBf.horizoom\fP" 8 This variable is similar to the \fBf.zoom\fP function except that the selected window is resized to the full width of the display. .IP "\fBf.htzoom\fP" 8 This function is a synonym for \fBf.topzoom\fP. .IP "\fBf.hzoom\fP" 8 This function is a synonym for \fBf.horizoom\fP. .IP "\fBf.iconify\fP" 8 This function iconifies or deiconifies the selected window or icon, respectively. .IP "\fBf.identify\fP" 8 This function displays a summary of the name and geometry of the selected window. If the server supports the SYNC extension, the priority of the client owning the window is also displayed. Clicking the pointer or pressing a key in the window will dismiss it. .IP "\fBf.leftzoom\fP" 8 This variable is similar to the \fBf.bottomzoom\fP function but causes the selected window is only resized to the left half of the display. .IP "\fBf.lower\fP" 8 This function lowers the selected window. .IP "\fBf.menu\fP \fIstring\fP" 8 This function invokes the menu specified by the argument \fIstring\fP. Cascaded menus may be built by nesting calls to \fBf.menu\fP. .IP "\fBf.move\fP" 8 This function drags an outline of the selected window until the invoking pointer button is released. Double clicking within the number of milliseconds given by \fBConstrainedMoveTime\fP warps the pointer to the center of the window and constrains the move to be either horizontal or vertical depending on which grid line is crossed. To abort a move, press another button before releasing the first button. .IP "\fBf.move-or-iconfiy\fP" 8 Like f.move if you drag the window. Like f.iconify if you do not. .IP "\fBf.move-or-lower\fP" 8 Like f.move if you drag the window. Like f.lower if you do not. .IP "\fBf.move-or-raise\fP" 8 Like f.move if you drag the window. Like f.raise if you do not. .IP "\fBf.nop\fP" 8 This function does nothing and is typically used with the \fBDefaultFunction\fP or \fBWindowFunction\fP variables or to introduce blank lines in menus. .IP "\fBf.priority\fP \fIstring\fP" 8 This function sets the priority of the client owning the selected window to the numeric value of the argument \fIstring\fP, which should be a signed integer in double quotes (e.g. "999" ). This function has an effect only if the server supports the SYNC extension. .IP "\fBf.quit\fP" 8 This function causes \fItwmruined\fP to restore the window's borders and exit. If \fItwmruined\fP is the first client invoked from \fIxdm\fP, this will result in a server reset. .IP "\fBf.raise\fP" 8 This function raises the selected window. .IP "\fBf.raiselower\fP" 8 This function raises the selected window to the top of the stacking order if it is occluded by any windows, otherwise the window will be lowered. .IP "\fBf.refresh\fP" 8 This function causes all windows to be refreshed. .IP "\fBf.resize\fP" 8 This function displays an outline of the selected window. Crossing a border (or setting \fBAutoRelativeResize\fP) will cause the outline to begin to rubber band until the invoking button is released. To abort a resize, press another button before releasing the first button. .IP "\fBf.restart\fP" 8 This function kills and restarts \fItwmruined\fP. .IP "\fBf.startwm\fP \fIstring\fP" 8 This function kills \fItwmruined\fP and starts another window manager, as specified by \fIstring\fP. .IP "\fBf.rightzoom\fP" 8 This variable is similar to the \fBf.bottomzoom\fP function except that the selected window is only resized to the right half of the display. .IP "\fBf.saveyourself\fP" 8 This function sends a WM_SAVEYOURSELF message to the selected window if it has requested the message in its WM_PROTOCOLS window property. Clients that accept this message are supposed to checkpoint all state associated with the window and update the WM_COMMAND property as specified in the ICCCM. If the selected window has not selected for this message, the keyboard bell will be rung. .\".IP "\fBf.source\fP \fIstring\fP" 8 .\"This function assumes \fIstring\fP is a file name. The file is read .\"and parsed as a \fItwmruined\fP startup file. .\"This .\"function is intended to be used only to re-build pull-down menus. None .\"of the \fItwmruined\fP variables are changed. .IP "\fBf.title\fP" 8 This function provides a centered, unselectable item in a menu definition. It should not be used in any other context. .IP "\fBf.topzoom\fP" 8 This variable is similar to the \fBf.bottomzoom\fP function except that the selected window is only resized to the top half of the display. .\".IP "\fBf.twmruinedrc\fP" 8 .\"This function causes the startup customization file to be re-read. This .\"function is exactly like the \fBf.source\fP function without having to .\"specify the filename. .IP "\fBf.unfocus\fP" 8 This function resets the focus back to pointer-driven. This should be used when a focused window is no longer desired. .\".IP "\fBf.version\fI" 8 .\"This function causes the \fItwmruined\fP version window to be displayed. This .\"window will be displayed until a pointer button is pressed or the .\"pointer is moved from one window to another. .IP "\fBf.vlzoom\fP" 8 This function is a synonym for \fBf.leftzoom\fP. .IP "\fBf.vrzoom\fP" 8 This function is a synonym for \fBf.rightzoom\fP. .IP "\fBf.warpring\fP \fIstring\fP" 8 This function warps the pointer to the next or previous window (as indicated by the argument \fIstring\fP, which may be \fB"next"\fP or \fB"prev"\fP) specified in the \fBWindowRing\fP variable. .IP "\fBf.warpto\fP \fIstring\fP" 8 This function warps the pointer to the window which has a name or class that matches \fIstring\fP. If the window is iconified, it will be deiconified if the variable \fBWarpUnmapped\fP is set or else ignored. .IP "\fBf.warptoscreen\fP \fIstring\fP" 8 This function warps the pointer to the screen specified by the argument \fIstring\fP. \fIString\fP may be a number (e.g. \fB"0"\fP or \fB"1"\fP), the word \fB"next"\fP (indicating the current screen plus 1, skipping over any unmanaged screens), the word \fB"back"\fP (indicating the current screen minus 1, skipping over any unmanaged screens), or the word \fB"prev"\fP (indicating the last screen visited. .IP "\fBf.winrefresh\fP" 8 This function is similar to the \fBf.refresh\fP function except that only the selected window is refreshed. .IP "\fBf.zoom\fP" 8 This function is similar to the \fBf.fullzoom\fP function, except that the only the height of the selected window is changed. .SH MENUS .PP Functions may be grouped and interactively selected using pop-up (when bound to a pointer button) or pull-down (when associated with a titlebutton) menus. Each menu specification contains the name of the menu as it will be referred to by \fBf.menu\fP, optional default foreground and background colors, the list of item names and the functions they should invoke, and optional foreground and background colors for individual items: .EX 0 \fBMenu\fP "\fImenuname\fP" [ ("\fIdeffore\fP":"\fIdefback\fP") ] { \fIstring1\fP [ ("\fIfore1\fP":"\fIbackn\fP")] \fIfunction1\fP \fIstring2\fP [ ("\fIfore2\fP":"\fIbackn\fP")] \fIfunction2\fP . . . \fIstringN\fP [ ("\fIforeN\fP":"\fIbackN\fP")] \fIfunctionN\fP } .EE .PP The \fImenuname\fP is case-sensitive. The optional \fIdeffore\fP and \fIdefback\fP arguments specify the foreground and background colors used on a color display to highlight menu entries. The \fIstring\fP portion of each menu entry will be the text which will appear in the menu. The optional \fIfore\fP and \fIback\fP arguments specify the foreground and background colors of the menu entry when the pointer is not in the entry. These colors will only be used on a color display. The default is to use the colors specified by the \fBMenuForeground\fP and \fBMenuBackground\fP variables. The \fIfunction\fP portion of the menu entry is one of the functions, including any user-defined functions, or additional menus. .PP There is a special menu named \fBTwmWindows\fP which contains the names of all of the client and \fItwmruined\fP-supplied windows. Selecting an entry will cause the \fBWindowFunction\fP to be executed on that window. If \fBWindowFunction\fP hasn't been set, the window will be deiconified and raised. .SH ICONS \fITwmruined\fP icons land on the right side of the screen starting at the topmost unoccupied area. xconsole is special cased to land on the bottom right. If no free areas remain the icon lands under the mouse pointer. Icons can be moved by dragging with Button1 pressed and can overlap. .PP .SH BUGS The resource manager should have been used instead of all of the window lists. .PP Double clicking very fast to get the constrained move function will sometimes cause the window to move, even though the pointer is not moved. .SH FILES .PP .nf .I $HOME/.twmruinedrc. .I $HOME/.twmruinedrc .I __projectroot__/lib/X11/twmruined/system.twmruinedrc .fi .SH "ENVIRONMENT VARIABLES" .IP "DISPLAY" 8 This variable is used to determine which X server to use. It is also set during \fBf.exec\fP so that programs come up on the proper screen. .IP "HOME" 8 This variable is used as the prefix for files that begin with a tilde and for locating the \fItwmruined\fP startup file. .SH "SEE ALSO" .PP twm(__appmansuffix__), X(__miscmansuffix__), Xserver(__appmansuffix__), xdm(__appmansuffix__), xrdb(__appmansuffix__) .SH AUTHORS Tom LaStrange, Solbourne Computer; Jim Fulton, MIT X Consortium; Steve Pitschke, Stardent Computer; Keith Packard, MIT X Consortium; Dave Sternlicht, MIT X Consortium; Dave Payne, Apple Computer; Michael Small.