TEKWM(1X11) COMMAND REFERENCE TEKWM(1X11) NAME tekwm - Window Manager X Client Application SYNOPSIS tekwm [ -f filename ] [ -s sessionfile ] [ -b ] [ -i ] [ -e execfile ] This is a supported client. DESCRIPTION The tekwm command is a window manager client application of the window server. It is heavily based on an earlier work by M. Gancarz of Digital Equipment Corporation (see the end of this document for appropriate acknowledgments). Tekwm complies fully with the public review draft Inter- Client Communication Conventions Manual (ICCCM), and implements most of the client support specified in the ICCCM, except Standard colormaps, WM_COLORMAP_WINDOWS, and window groups. A copy of the draft ICCCM and a separate specification detailing the compliance of Tekwm to the ICCCM are available. Tekwm features a highly reconfigurable user interface. The user interface is defined by "startup files". When tekwm is invoked, it looks in a list of predefined places for its user interface definition. In the case of contention, the definitions in the last file found override the previous definitions. The list of places to look for definitions is: Built-in default bindings /usr/lib/X11/tekwm/tekwmrc $HOME/.tekwmrc The "built-in default bindings" are compiled into tekwm, and are listed at the end of this man page. /usr/lib/X11/tekwm/tekwmrc is a system-wide startup file for all users. $HOME/.tekwmrc is the user-specific startup file. If either startup file exists, tekwm adds the definitions in that file to the previous definitions. New definitions override previous ones. To disable all previous definitions, include the directives resetbindings, resetmenus and resetgadgets at the top of the startup file. OPTIONS -b Causes tekwm to ignore the built-in default bindings and the system-wide startup file. Printed 3/22/89 1
TEKWM(1X11) COMMAND REFERENCE TEKWM(1X11) -e execfile Names a program to execute after all startup files have been loaded and the resource database read. This is useful for minimizing the number of maps/unmaps that occur when title bars are added to new windows, by delaying invocation of those clients until tekwm is ready to process client mapping of windows. If tekwm is run under a true ICCCM-compliant session manager, the -e program should NOT start any clients, as it is executed when the session manager restarts tekwm! Rather, it might cause a semaphore file to be created that signals that the wm is ready for clients to be started, or some other event visible to the session manager. The program must be in the current $PATH shell search path. -f filename Names an additional file as a tekwm startup file. This file is read in addition to the regular startup files. Only one such file may be specified. -h Causes tekwm to obey the client-requested initial window state (WM_NORMAL_HINTS.initial_state) at startup, regardless of whether the window had already been mapped. This means that if a window was initially iconic (client -iconic option) and the window was later deiconified, when tekwm is restarted with this option the window will revert to iconic state. -i Causes tekwm to ignore $HOME/.tekwmrc. -s sessionfile Names a program to execute to restart the X session. The default is xusersetup. The f.restartsession function will execute this program after terminating all current clients. The program must be in the current $PATH shell search path. -v Causes tekwm to print version and copyright information, and exit. STARTUP FILE DIRECTIVES The directives resetbindings, resetmenus and resetgadgets will cause all previously read definitions to be deleted. They are typically entered first, at the top of the startup file. They are only needed for disabling all previously defined definitions; a definition always overrides a definition for the same binding, menu, action, or gadget read from a previous file. Individual bindings can be disabled by rebinding to a noop operation such as: Printed 3/22/89 2
TEKWM(1X11) COMMAND REFERENCE TEKWM(1X11) f.action = : root : left down :!"" GADGETS Gadget definitions are of the form: gadget[n]=expr Where n is a positive integer indicating the gadget to initialize and expr is one of the following: string or "string" [ ^ attributes ] Set the name of the gadget to string. The name will be painted in the gadget box with the gadget.font resource or an overriding font attribute (see below). string may contain embedded non-alphanumeric characters in the form of \# where # is one or more decimal digits (i.e. \54) or \c where c is a character in the standard C string literal set (i.e. n, r, t, f). This is useful if you've specified a gadget font with glyphs in it (such as cursor) and you want to paint a specific glyph from it in a gadget box. Many such glyphs are not represented by ascii characters. (string) [ ^ attributes ] Load a pixmap from the file named by string and tile the gadget with it (see also: path). Additional attributes may be specified after a '^' (caret) character in the form: [offset] | [gravity] | [foreground] | [background] | [font] Any omitted parameters will be set to default values. offset is an integer specifying how far to place this gadget from its nearest neighbor (or an edge, or to the left of the center for CenterGravity). Default offset is gadget.pad, or 2 if gadget.pad is not defined. gravity is one of NoGravity, LeftGravity, RightGravity or CenterGravity. NoGravity specifies that the gadget is to be placed opposite of wherever the last gadget was placed. LeftGravity specifies that the gadget should stick to the left of the title bar, RightGravity to the right and CenterGravity to the center. foreground and background specify the colors used to tile the gadget or draw the text. font is the name of the font you want the gadget's name drawn in. This overrides the gadget.font setting for this gadget. Printed 3/22/89 3
TEKWM(1X11) COMMAND REFERENCE TEKWM(1X11) The default values for attributes are 0, NoGravity, the value of the foreground resource, the value of the background resource, and the value of the gadget.font resource. It is important to note that in the absence of a gravity specification (i.e. we've defaulted to NoGravity), the window manager will automatically place a gadget on the side opposite of the last gadget placed. If it's the first gadget placed, it will go to the right. Thus in the absence of any gravity specifications, the window manager will place gadgets in a right-left-right fashion until all gadgets have been placed. For example: gadget[0] = "die" gadget[1] = (resize.b) ^ 2 | red | orange gadget[2] = (/usr/lib/X11/bitmaps/iconbox.b) ^ | LeftGravity gadget[3] = "\56" ^ | LeftGravity | green | black | cursor These definitions will create 4 gadget boxes, situated in the following manner: The first gadget box will be created wide enough to print the word "die" in it (in whatever gadget font has been defined) and will be placed on the right side (since it hasn't chosen a gravity) against the edge (since it hasn't chosen an offset). Foreground and background colors will be the value of of the foreground resource and the value of the background resource. The second gadget box will be tiled with the contents of the file "resize.b" (assuming that it's a valid bitmap file in the current working directory) and will go on the left side (since it also has no gravity and the last one went on the right). It will be offset from the edge by 2 pixels since there was an offset for it. Foreground will be red, background will be orange. The third gadget will be tiled with the contents of "/usr/lib/X11/bitmaps/iconbox.b" and will be placed against the second gadget on the left hand side since we specified a gravity. Colors will be foreground and background. The fourth gadget will display glyph #56 from the cursor font in green and black (it's gumby of course). IMPORTANT: Gadgets may be declared in any order, but you are not allowed to leave gaps, i.e. it's perfectly acceptable to declare gadgets in the order 0, 2, 3, 1, but not legal to Printed 3/22/89 4
TEKWM(1X11) COMMAND REFERENCE TEKWM(1X11) declare gadgets in the order 0, 3, 2, 4 as gadget #1 has been omitted. This restriction may be removed in the future, but for now you'll get a diagnostic and tekwm will exit. FUNCTION BINDING SYNTAX Mouse buttons may be bound to particular window manager functions with: function=[modifier key(s)]:[context]:mouse events or f.menu=[modifier key(s)]:[context]:mouse events:" menu name " or function=[modifier key(s)]:[context]:mouse events:<action character> "text" Function and mouse events are the only required fields. The menu name is required with the f.menu function definition only. Similarly, <action character> "text" is required only with the f.action and f.windowcommand function definitions. Window Manager Functions f.action Invokes a text action, which may be a shell command or a text string for the cut buffer. "text" should be in double quotes if it contains any whitespace. The text is preceded by an "action" character (one of '^', '!' or '|'). The syntax is identical to menu text actions which are discussed in greater detail under the Menus section of this document. f.action=[modifier key(s)]:[context]:mouse events:<action character> "text" f.windowcommand Invokes a shell command with a window ID argument. "command" should be in double quotes if it contains any whitespace. The command is preceded by the "window command" character, ('>'). There should be exactly one occurrence of "%<control>" in the command, where <control> is any printf-style integer conversion specification character (d, o, x, or u). The ID of the window to which the operation is bound or the window selected by the user in response to a target cursor is substituted for the "%<control>". ("%%" escapes a '%' into the command, just Printed 3/22/89 5
TEKWM(1X11) COMMAND REFERENCE TEKWM(1X11) like printf). f.windowcommand=[modifier key(s)]:[context]:mouse events: > "command" f.beep Emits a beep from the keyboard. Loudness is determined by the volume resource. f.circledown Causes the top window that is obscuring another window to drop to the bottom of the stack of windows. f.circleup Exposes the lowest window that is obscured by other windows. f.continue Releases the window server display action after you stop action with the f.pause function. f.[no]decorate Adds or removes "decorations" on the selected window. What decorations are added (or deleted) depends on the settings of various booleans and client-specific resources (see: SPECIAL RESOURCES). Does not apply to icons. The booleans titles, gadgets and borderContext.width currently influence tekwm's choice of default decorations. f.delete Delete the window. Multi-window clients are not forced to disconnect from the server; single-window clients are terminated (See f.terminate). f.destroy Another name for f.delete, for backward compatibility. f.endsession Terminates all current clients including the login and console windows. All clients are forced to disconnect from the server. A client which so desires is allowed to get its house in order before the connection is closed. Once all clients are terminated the command has the effect of logging the user out of the login window. f.exit Exits the window manager. If you've started tekwm from xinit (actually sort of useful in conjunction with the -e flag), this will also exit the window system. f.focus Permanently directs all keyboard input to the Printed 3/22/89 6
TEKWM(1X11) COMMAND REFERENCE TEKWM(1X11) selected window (and its children) or the selected icon. To reset the focus to following the pointer, invoke f.focus and select the root window, or invoke f.unfocus. f.iconify If a window is selected, f.iconify converts the window to its respective icon, at the icon's prior location and window stack order if it was previously iconified. If this is a new icon and the client specified an icon position, the icon is placed at the requested position, at the top of the window stack. If this is a new icon and the client did not specify an icon position, f.iconify calls f.newiconify to interactively place the icon, and the icon is placed at the top of the window stack. If an icon is selected, f.iconify converts the selected icon to its respective window at the window's prior size and location, but at the top of the window stack. f.kill Immediately disconnect the client owning the selected window from the server without warning the client. Caution - this function should only be used if f.terminate is unable to shut down the client, i.e. if the client is hung or otherwise not responding. Binding this function to naked mouse buttons is probably not a good idea! f.lower lowers the selected window or icon to the bottom of the window stack, unobstructing any windows that are below it. f.menu Invokes a menu. Enclose `menu name' in quotes if it contains blank characters or parentheses. f.menu=[modifier key(s)]:[context ]:mouse events:" menu name " f.move Moves a window or icon to a new location, which becomes the default location. f.moveopaque Moves a window or icon to a new screen location. When using this function, the window or icon is dynamically repainted during the move. The grid effect is not used with this function. f.newiconify Iconifies a window or deiconifies an icon Printed 3/22/89 7
TEKWM(1X11) COMMAND REFERENCE TEKWM(1X11) when the mouse button is pressed, (see f.iconify), and then positions the window or icon in a new location on the screen, where the button is released. A newly visible window or a new icon is placed at the top of the window stack. If the window had been iconified previously, the icon reappears in its current stack order. f.pause Temporarily stops all display action. To release the screen and immediately update all windows, use the f.continue function. f.pushdown Moves a window or icon down. The distance of the push is determined by the push resources. f.pushleft Moves a window or icon to the left. The distance of the push is determined by the push resources. f.pushright Moves a window or icon to the right. The distance of the push is determined by the push resources. f.pushup Moves a window or icon up. The distance of the push is determined by the push resources. f.raise Raises the selected window or icon to the top of the window stack, unobstructing it from other windows. f.raiseandlower Lowers the selected window or icon to the bottom of the window stack if it is fully visible, else raises it to the top. Handy for binding to a gadget. f.redraw Results in exposure events being sent to the client owning the window or icon selected, and all of its children. f.refresh Results in exposure events being sent to all clients for all visible or partially visible windows or icons. The windows will not refresh correctly if the exposure events are not handled properly by the clients. f.resize Resizes an existing window. Note that some clients, notably editors, react unpredictably if you resize the window while the client is running. Does not apply to icons. Printed 3/22/89 8
TEKWM(1X11) COMMAND REFERENCE TEKWM(1X11) f.restart Causes tekwm to restart, re-initializing all startup files and bitmaps, and rereading the current X resources. f.restartsession Terminates all current clients except the login and console windows. All clients are forced to disconnect from the server. A client which so desires is allowed to get its house in order before the connection is closed. Once all clients are terminated the window manager restarts the X session using the program passed via the -s sessionfile option, or the default xusersetup. f.terminate Force the client owning the selected window to disconnect from the server. A client which so desires is allowed to get its house in order before the connection is closed. f.unfocus Resets the focus to following the pointer (See f.focus). Modifier Keys Modifier keys are keys that must be pressed prior to pressing the mouse button in order to cause the desired function to occur. It is an established X convention to use meta as a window manager modifier key, in order to leave other modifiers available for applications, but one may also use ctrl, shift, lock, or no modifier key. Modifier keys must be entered in lower case, and can be abbreviated as: c, l, m, s for ctrl, lock, meta (mod1), and shift, respectively. It's also permissible to refer to the modifier keys directly as "mod1, mod2, mod3, mod4 or mod5" (abbreviated 1, 2, 3, 4, and 5). Most systems only define mod1, so if you want more modifiers you will need to use xmodmap(1) to add keysym(s) to each of the desired modifier(s). A mouse button press with no modifier key(s) is often referred to as a "naked" mouse button. You may bind any number of modifier keys to a function, by using the bar (|) character to combine them. Context The context refers to the screen location of the cursor when a command is initiated. When you include a context entry in a binding, the cursor must be in that context or the function will not be activated. The window manager recognizes the following seven contexts: icon, window, root, title, gadget[n] (where n is the gadget number), border and (null). Printed 3/22/89 9
TEKWM(1X11) COMMAND REFERENCE TEKWM(1X11) The icon context refers to any icon and may be safely bound without interfering with window events. The window context refers to application windows and should be used carefully to avoid usurping button events that applications may want for their own purposes. The root context refers to the root, or background window. The title context refers to the title bar area of a window, if one exists. The gadget context (with mandatory index) specifies a given gadget box. Binding to a gadget that's undefined (not initialized to anything) is an error. The border context refers to the artificial border area created when the resource borderContext.width is non-zero (see borderContext.width under X DEFAULTS). Using this context when no border area exists (i.e. borderContext.width is zero) is a noop. A (null) context is indicated when the context field is left blank, and allows a function to be invoked from any screen location. This is basically equivalent to specifying all the possible contexts. Combine contexts using the bar (|) character. Mouse Events A mouse event consists of a button name and an action. Both are required, but order does not matter. Any of the following mouse button names are accepted (in lower case) and may be abbreviated as l, m, or r, respectively: left, middle, right. With the specific button, you must identify the action of that button. Mouse actions can be: down Function occurs when the specified button is pressed down. up Function occurs when the specified button is released. delta Indicates that the mouse must be moved the number of pixels specified with the delta resource before the specified function is invoked. The mouse can be moved in any direction to satisfy the delta requirement. move Same as delta. Printed 3/22/89 10
TEKWM(1X11) COMMAND REFERENCE TEKWM(1X11) motion Same as delta. Note that it is legal and useful to bind multiple functions to one mouse button. For example, you can bind f.raise to "right down" and f.move to right delta, creating a single- stroke raise and move operation. Be careful, though of the following restrictions: The effective context for a "delta" binding is the context when the button was pressed. Therefore, for example, a binding of f.iconify to "icon : right down" and f.move to "icon : right delta" will not produce an intelligible result. Also, if the "down" function warps the pointer, (e.g. warpOnIconify) the "motion" function will be executed immediately without the user moving the mouse. The effective context for an "up" binding is the context when the button is released, regardless of the button press context. If one of the functions f.move, f.moveopaque, f.iconify, f.newiconify, or f.resize is bound to "down", no other functions can be bound to "delta" or "up" on the same button-modifier combination. (For f.iconify, a function bound to "delta" or "up" will be executed except when deiconifying an initially iconic window, or when the function switches to f.newiconify.) Also, these functions cannot be bound to an "up" action. You cannot bind multiple functions to a single button action (i.e. to "right down"). MENU DEFINITION After binding a set of function keys and a menu name to f.menu, you must define the menu to be invoked, using the following syntax: menu = " menu name " { item name : "action" "item name" : action . . . } Enter the menu name exactly the way it is entered with the f.menu function or the window manager will not recognize the link. If the menu name contains quotes, special characters, parentheses, spaces, or tabs, it must be quoted here and in Printed 3/22/89 11
TEKWM(1X11) COMMAND REFERENCE TEKWM(1X11) the f.menu function entry. If you haven't chosen to display a pixmap title in string, the menu name will be displayed at the top of the menu in whatever font has been chosen for menu.boldFont (or its default). You can enter as many menu items as your screen is long. You cannot scroll within menus. Any menu item name that contains quotes, special characters, or parentheses must be enclosed in double quotes. (Tabs are ignored.) Follow the item name by a colon (:). Any action that contains quotes, special characters, parentheses, spaces, or tabs must be enclosed in double quotes. Menu Actions Window manager functions Any function previously described, e.g., f.move or f.iconify. Using f.menu results in an item which you can use to "walk" between menus (see below). A "walk" can be done by releasing the button over the item and depressing the button again. Walking menus Select the function f.menu and separate it from the menu name with a colon (:) i.e. menu = "foo" { Walking Menu: f.menu: "NextMenu" } Text actions There are four kinds of special "actions" involving arbitrary strings of text. These are: Shell commands Preceded by an exclamation point ('!'). The command should end with an '&' to cause it to run in the background, if you wish the window manager to respond to further input before the command completes. You cannot include a new line character within a shell command. Window shell commands Preceded by a "greater than" character ('>'). Identical to shell commands, except that there should be exactly one occurrence of "%<control>" in the command, where <control> is any printf-style integer conversion specification character (d, o, x, or u). The ID of the window to which the operation is bound or the window selected by the user in response to a target cursor is substituted for the "%<control>". ("%%" Printed 3/22/89 12
TEKWM(1X11) COMMAND REFERENCE TEKWM(1X11) escapes a '%' into the command, just like printf). Text strings Text strings are placed in the window server's cut buffer. If the text is preceded by a up arrow ('^') it is entered into the cut buffer with a newline appended. If the text is preceded by a bar character ('|'), it is entered into the cut buffer without a newline. Menu actions that operate on a window (e.g. f.resize, f.lower) are processed differently depending on the context the menu is bound to (or the context of the parent menu, in the case of walking menus). If a menu is bound to a context of window, titlebar, border, gadget, or any combination of these, but nothing else, then that window is assumed to be the window to operate on. If the bound context includes root or icon, then when the action is selected from the menu, a "target cursor" appears, and the user must select the desired window. Note that for the five actions that require a button press and release (f.resize, f.move, f.moveopaque, f.newiconify, and sometimes f.iconify), the press is taken to be at the place in the window where the menu was invoked, and the user must press and release the button again to get a button release point. Also, even if another binding of the same function to root and/or icon exists, this binding will still auto-select. Color Menus The following syntax specifies colors for specific menus, overriding the colors specified by resources: menu = "menu name" (color1:color2:color3:color4) { "item name" : (color5 :color6) : " action " . . . } color1 Foreground color of the header. color2 Background color of the header. color3 Foreground color of the highlighter, the horizontal band of color that moves with the cursor within the menu. Printed 3/22/89 13
TEKWM(1X11) COMMAND REFERENCE TEKWM(1X11) color4 Background color of the highlighter. color5 Foreground color for all individual menu items. color6 Background color for all individual menu items. Color Defaults Colors default to the colors of the root window under any of the following conditions: 1) If you run out of color map entries, either before or during an invocation of tekwm. 2) If you specify a foreground or background color that does not exist in the RGB color database (/usr/lib/X11/rgb.txt). 3) If you omit a foreground or background color. 4) If you specify no colors in the startup file or resource database. X DEFAULTS A large number of resources that determine the behavior of tekwm are retrieved from the resource database. When a value cannot be found, a default (compiled into tekwm) is substituted. General window manager resources are obtained with the application name "tekwm.tekwm", and class "Tekwm.Wm". This allows "generic" window manager resources (i.e. those shared between different window managers) to be specified as "*Wm*<resource>", and tekwm-specific resources as "Tekwm*<resource>", for example. Some resources (e.g. whether to title a window) are obtained on a per-client basis. See the end of this section for details. In the descriptions below, resource names are listed in boldface, their type in parenthesis, and their default value in double quotes. Shared resource class names are listed as "(class: ClassName)". If the resource class is not given, it is simply the resource name capitalized, e.g. name borderContext.boldPixmap, class BorderContext.BoldPixmap. Boolean type resources take the value ``on'' if a string starting with `y` or `Y` is given, or any of the words "on", "true", or "enable" is given in any combination of upper or lower case letters (e.g. eNabLe). autoRaise (boolean) ``off'' (class Auto) Printed 3/22/89 14
TEKWM(1X11) COMMAND REFERENCE TEKWM(1X11) Automatically raise a window to the top if not fully visible when it gains the input focus. See also: raiseDelay autoSelect (boolean) ``off'' (class Warp) Specifies that the pointer be placed over the first item in a menu, rather than the title, when the menu is popped up. background (string) The default background color for all other color choices in tekwm. If reverseVideo is not set, this defaults to white, otherwise it defaults to black. References to background in this document refer to this resource. backingStoreMenus (string) ``off'' (class BackingStore) Specifies whether menus should request backing store in the server. border.background (string) ``background'' Background color to use for border pixmap. The border is the border of the client window, title bar, and gadgets (if present). Value is meaningless if borderWidth is zero or or border.boldPixmap and borderPixmap are undefined. border.boldPixmap (string) ``borderColor'' The name of a pixmap file to load and tile the border of the window (and title bar/gadgets) the focus is in. If border.highlight is on, focus changes will cause the border to alternate between borderPixmap and border.boldPixmap. Default is a solid borderColor color. border.highlight (boolean) ``highlight'' Specifies whether or not window border pixmaps are to be changed on focus changes. On focus in, the window border is changed to border.boldPixmap. On focus out, it is changed to a borderPixmap. borderColor (string) ``foreground'' (class Foreground) Specifies the border color to use for all windows (and their title bars and gadgets). This color may be drawn solid or as the pixmap foreground. Value is meaningless if borderWidth and gadget.borderWidth are zero. borderContext.background (string) ``background'' Background color to use for border context pixmaps. Value is meaningless if borderContext.width is undefined (or set to zero) or borderContext.pixmap and Printed 3/22/89 15
TEKWM(1X11) COMMAND REFERENCE TEKWM(1X11) borderContext.boldPixmap are undefined. borderContext.boldPixmap (string) ``borderContext.foreground'' The name of a pixmap file to load and tile the border context area of the window the focus is in. If borderContext.highlight is on, focus changes will cause the border context background to alternate between borderContext.pixmap and borderContext.boldPixmap. Default is a solid borderContext.foreground color. borderContext.cursor (int) ``XC_cross'' Glyph (in decimal) to retrieve from cursor font for use in border context. borderContext.foreground (string) ``foreground'' Foreground color to use for border context. Value is meaningless if borderContext.width is zero. borderContext.highlight (boolean) ``highlight'' Specifies whether or not window border context pixmaps are to be changed on focus changes. On focus in, the window border is changed to borderContext.boldPixmap. On focus out, it is changed to a borderContext.pixmap. borderContext.pixmap (string) ``grey/borderContext.foreground'' Pixmap to display as border context area. Value is meaningless if borderContext.width is zero. Used exclusively as the border context pixmap unless borderContext.boldPixmap is defined and borderContext.highlight is on. Default is a grey stipple on monochrome or solid grey on color servers if borderContext.highlight is on and focus is out, else a solid borderContext.foreground color. To get a solid border color when focus is out, set this resource to a solid black (off) pixmap, and set borderContext.background to the desired color. borderContext.width (int) ``0'' Number of pixels wide to make the border context. Though functions may be bound to the border context without setting this to a positive value, they will be impossible to invoke due to the fact that there will be nothing to click on. The border context should not be confused with the actual window border. It is an artificial area outside the regular window/title bar border that resembles a border. borderPixmap (string) ``grey/borderColor'' Pixmap to display in the window (and title bar/gadgets) border. Value is meaningless if borderWidth and gadget.borderWidth are zero. Used exclusively as the border pixmap unless border.boldPixmap is defined and Printed 3/22/89 16
TEKWM(1X11) COMMAND REFERENCE TEKWM(1X11) border.highlight is on. Default is a grey stipple on monochrome or solid grey on color servers if border.highlight is on and focus is out, else a solid borderColor color. To get a solid border color when focus is out, set this resource to a solid black (off) pixmap, and set border.background to the desired color. borderWidth (int) ``1'' width of the border surrounding all windows and associated title bars and gadgets. Not to be confused with the border context, which is an additional border outside this border. delta (int) ``1'' Number of pixels that must be moved over before a "delta" action is taken (see: BINDING SYNTAX). eventDebug (boolean) ``off'' Print a one-line summary of each event received by tekwm. Very useful when debugging client interactions, particularly with synchronize on. foreground (string) The default foreground color for all other color choices in tekwm. If reverseVideo is not set, this defaults to black, otherwise it defaults to white. References to foreground in this document refer to this resource. frameFocus (boolean) ``on'' Treat the window "frame" as part of the window for input focus and autoRaise. The frame includes the title bar and border context areas, if present. Setting this option on causes the focus to be set to the client window so that keyboard input will go the the client regardless of where the pointer is in the window frame. Windows will autoRaise/highlight (depending on the settings of those resources) when the pointer enters any portion of the frame. If set to off, this only happens when the pointer enters/leaves the client window itself. freeze (boolean) ``off'' Lock out all other clients during certain window manager tasks, such as move and resize. gadget.borderWidth (int) ``1'' The width of all gadget borders in pixels. Space is allowed for the entire border to be visible, except that only one border width is provided between gadgets. gadget.font (string) ``fixed'' Printed 3/22/89 17
TEKWM(1X11) COMMAND REFERENCE TEKWM(1X11) Which font to use for (textual) gadget labels. gadget.hPad (int) ``3'' (class: Gadget.Pad) The number of pixels (of the title.background color) to pad between gadgets if no offset is defined. This is in addition to the gadget border width above. gadgets (boolean) ``on'' Display gadgets in title bars, if any gadgets are declared and there is a title. grid (boolean) ``off'' Display a grid when positioning or resizing windows/icons. The window resize grid marks the boundaries for selecting which side or corner will be resized; the move "grid" is just an "X" through the window/icon. highlight (boolean) ``off'' Causes the following actions to occur when a window gains the input focus: 1. If showName is on: 1a. If title.boldFont is defined, the window name is redrawn in this font. 1b. If it's not, then the window name is redrawn in reversed colors. 2. If title.boldPixmap is defined, the background of the title bar is set to it. On focus out, the window name is redrawn in title.font and the title background is set to title.pixmap. Note that most icon resources only affect the textual icons owned by tekwm. Except for foreground and background colors, client-defined icons are left alone. icon.background (string) ``background'' Background color to use for icon text padding and client-defined pixmaps. Icon.Foreground) icon.borderColor (string) ``icon.foreground'' (class: Color to use for icon borders. icon.borderWidth (int) ``2'' Width of icon border in pixels. Printed 3/22/89 18
TEKWM(1X11) COMMAND REFERENCE TEKWM(1X11) icon.font (string) ``8x13'' Which font to use for icon text. icon.foreground (string) ``foreground'' Foreground color to use for icon text padding and client-defined pixmaps. icon.hPad (int) ``2'' (class: Icon.Pad) Number of pixels to pad icon text horizontally. icon.text.pixmap (string) ``grey'' Pixmap to show in the padding around the text of a textual icon. Since this pixmap will be used to tile all icons owned by tekwm, it's probably not a good idea to put application specific pictures in it. More typically, this will be a cross hatch pattern or some similar background weave. See also: path, icon.foreground, icon.background, icon.vPad, icon.hPad. Icon.Label.Background) icon.text.background (string) ``icon.background'' (class: Background color to use for icon text. Icon.Label.Foreground) icon.text.foreground (string) ``icon.foreground'' (class: Foreground color to use for icon text. icon.vPad (int) ``2'' (class: Icon.Pad) Number of pixels to pad icon text vertically. installColormap (boolean) ``off'' (class: ClientSupport) Install a given window's colormap when the pointer enters it. When the pointer leaves, the default colormap is installed. menu.background (string) ``background'' Default menu background color. Can be overridden for an individual menu in the startup file. Menu.Foreground) menu.borderColor (string) ``menu.foreground'' (class: Menu border color. menu.borderWidth (int) ``2'' Width of menu border in pixels. menu.font (string) ``8x13'' Which font to use in (textual) menu panes. menu.foreground (string) ``foreground'' Default menu foreground color. Can be overridden for an individual menu in the startup file. Printed 3/22/89 19
TEKWM(1X11) COMMAND REFERENCE TEKWM(1X11) menu.hPad (int) ``2'' (class: Menu.Pad) Number of pixels to pad menu text/pixmaps horizontally. ``menu.background''(class:Menu.Label.Background) menu.highlight.background (string) Default Menu highlighting (current selection) background color (for letters). Can be overridden for an individual menu in the startup file. Menu.Label.Foreground) menu.highlight.foreground (string) ``menu.foreground'' (class: Default menu highlighting (current selection) foreground color (between letters). Can be overridden for an individual menu in the startup file. Menu.Label.Background) menu.title.background (string) ``menu.background'' (class: Default background color (for letters) to use for menu titles. Can be overridden for an individual menu in the startup file. Menu.Label.Foreground) menu.title.foreground (string) ``menu.foreground'' (class: Default foreground color (between letters) to use for menu titles. Can be overridden for an individual menu in the startup file. Note that these four colors are used oppositely from normal - foreground is the color of the space behind the text. menu.vPad (int) ``2'' (class: Menu.Pad) Number of pixels to pad menu text/pixmaps vertically. noFocus (boolean) ``off'' Do not restore focus to following the cursor if a client grabs it. normali (boolean) ``on'' Make sure that icons created with f.newiconify stay wholly within the root window (on screen), regardless of attempted placement. If off, put icons wherever the cursor is placed. normalw (boolean) ``on'' Make sure that windows mapped with f.newiconify are placed on-screen, regardless of cursor position. If off, put windows wherever the cursor is placed. pixmapPath (string) ``null'' (class: FilePath) A number of items (titles, gadgets, etc) now allow you to specify a pixmap file, rather than just a text string to display. Since it would be tedious to type in full pathnames for these files if they all lived in the Printed 3/22/89 20
TEKWM(1X11) COMMAND REFERENCE TEKWM(1X11) same places, the directory(s) named by pixmapPath are searched if the pixmap file's pathname does not begin with a slash (/) or tilde (~) and the file is not found in the current directory. pixmapPath is a white-space separated list of one or more directories to search, much like that used by the C-shell in various UNIX* operating systems. The ~ notation used to designate your (or someone else's) home directory is supported, but wildcards are not. popup.background (string) ``background'' Background color to use for popup text. Popup.Foreground) popup.borderColor (int) ``popup.foreground'' (class: Color to use for popup border. popup.borderWidth (int) ``2'' Width of popup window border in pixels. popup.font (string) ``9x15'' Which font to use for popup window text. popup.foreground (string) `` Foreground color to use for popup text. popup.vPad (int) ``4'' (class: Popup.Pad) Number of pixels to pad popup text horizontally. printProtoErrors (boolean) ``off'' Tekwm traps all protocol errors in an attempt to recover from nasty asynchronous client actions like window deletion. To get a summary of each protocol error encountered, set this resource on. push (int) ``5'' Number of pixels to push (see f.push[up,down,left,right]). pushRelative (boolean) ``off'' When a window is pushed, push 1/push of the window. If off, move window push pixels. raiseDelay (int) ``100'' (class: Delay) Amount of time in milliseconds to wait after window gets focus and pointer stops moving before raising and highlighting. If pointer leaves window without remaining stationary for the specified time, raise and highlight are not performed. If raiseDelay is zero, window is raised immediately even if pointer is still moving inside window. Meaningless if autoRaise is off. Printed 3/22/89 21
TEKWM(1X11) COMMAND REFERENCE TEKWM(1X11) reverseVideo (boolean) ``off'' Reverse the background and foreground colors. In the absence of any other color specifications, this results in black-on-white. rootResizeBox (boolean) ``off'' Put the resize (popup) window in the upper left corner of the root window, rather than on the window being resized. This saves a potentially expensive refresh that would occur when the popup was unmapped. If your server supports save-unders, it's generally (but not always) better to turn saveUnder on instead. saveUnder (boolean) ``off'' Use save-unders for menus and popup windows. If the server does not support save-unders, this action does nothing. showName (boolean) ``on'' Display the window name in a title (assuming that the window is titled in the first place). synchronize (boolean) ``off'' Synchronize the connection through to the server and flush stdout after each Xlib call. Very useful when debugging client interactions, particularly with eventDebug on. title.background (string) ``background'' Background color to use for title pixmap or solid color background. title.boldFont (string) ``none'' Which font to use for title bar labels if focus is and highlight is enabled. If this isn't set, and highlight is, the title text will be displayed with title.font in reversed colors. title.boldPixmap (string) ``none'' The name of a pixmap file to load and tile title bars with when the focus is in. If this is defined, and highlight is set, focus changes will cause title backgrounds to alternate between title.pixmap and title.boldPixmap. (Any padding specified for the title bar text or gadgets is protected from being tiled with the pixmap.) title.cursor (int) ``XC_left_ptr'' Glyph (in decimal) to retrieve from cursor font for use in title bar. title.font (string) ``vtsingle'' Printed 3/22/89 22
TEKWM(1X11) COMMAND REFERENCE TEKWM(1X11) Which font to use for title bar labels. Used exclusively unless title.boldFont and highlight are set. title.foreground (string) ``foreground'' Foreground color to use when drawing title bar (both normal and bold) pixmaps. title.height (int) ``rational height'' Internal height in pixels of title bar. If set to the default value of zero, leave enough room for the gadgets and titles, if shown, including title vertical pad and gadget borders. title.pixmap (string) `title.background'' The name of a pixmap file to load and tile title bars with. This background is used exclusively unless the title.boldPixmap is defined and highlight is set. If title.boldPixmap is defined, but title.pixmap is not, a pixmap will be used in place of title.pixmap. (Any padding specified for the title bar text or gadgets is protected from being tiled with the pixmap.) title.text.background (string) ``title.background'' Background color to use when drawing title bar text. title.text.foreground (string) ``title.foreground'' Foreground color to use when drawing title bar text. title.vPad (int) ``2'' (class: Title.Pad) Number of pixels to pad title bar text vertically - adds this many pixels (of the title.text.background color) above and below the text. titles (boolean) ``on'' Put title bars on all windows (both existing windows and new ones as they're created. See also: f.title traceResources (boolean) ``off'' If this resource is set, Tekwm will print a summary of the resource class, resource name, and value obtained for each resource it obtains. Useful for debugging your resource settings. volume (int) ``2'' Specifies the bell volume (delta on volume set with xset). wall (boolean) ``off'' Restrict window movement to edges of screen (rootwindow). Affects initial placement as well as reconfiguration by the client or the user. Printed 3/22/89 23
TEKWM(1X11) COMMAND REFERENCE TEKWM(1X11) warpOnDeIconify (boolean) ``off'' (class Warp) Warp pointer to the center of the window on de-iconify (f.iconify or client-requested). Has no effect on f.newiconify. If off, pointer is not moved. warpOnIconify (boolean) ``off'' (class Warp) Warp pointer to center of icon on iconify (f.iconify or client-requested). Has no effect on f.newiconify. If off, pointer is not moved. warpOnRaise (boolean) ``off'' (class Warp) Warp pointer to the center of window on raise. Does not apply to icons. windowName.offset (int) ``0'' Number of pixels from the right or left edge of a title bar to print the window name (assuming that showName is set). If this value is negative, the name will be offset nameOffset (plus the name length) pixels from the right edge. If the value is positive, then the name will be offset nameOffset pixels from the left edge. If the value is zero, the name will be centered. Since the length of a window name can vary dynamically, this value will be adjusted, when necessary, to ensure that the name is visible in the title bar. zap (boolean) ``off'' Causes ghost lines to follow the window or icon from its previous location to its new location during a move, resize or iconify operation. SPECIAL RESOURCES name.wmoption.autoRaise (boolean) (class: Auto) name.wmoption.borderContext (boolean) name.wmoption.gadgets (boolean) name.wmoption.title (boolean) These resources determine whether or not a given application really wants to be auto-raised, or to have a border context area, gadgets or a title. The application's instance name and class name (in the WM_CLASS property) are checked against the string supplied for name. For example: XClock*wm_option.gadgets: off xclock.Wm_option.autoRaise: on Specifying one of these resources overrides any other Printed 3/22/89 24
TEKWM(1X11) COMMAND REFERENCE TEKWM(1X11) settings (i.e. tekwm*Auto *Wm*borderContext.width, *tekwm.gadgets, or Tekwm*titles) and may be used to turn things on and off at the application and/or class level for applications, regardless of tekwm's settings. BorderContext is an exception - if the tekwm borderContext.width resource is zero, you can't obtain a border context with wmoption.borderContext. Also, note that wm_option.gadgets has no effect if there is no title. These resources are ``special'' as they are checked for under the application's name, not tekwm's; I.E. xclock.wmoption.autoRaise is not tekwm*xclock.wmoption.autoRaise as one might think. EXAMPLES The following sample startup file shows the default window manager options: # # Mouse button/key maps # # FUNCTION KEYS CONTEXT BUTTON MENU(if any) # ======== ==== ======= ====== ============ f.newiconify = meta : w|i : delta left f.raise = meta : w|i : delta left f.lower = meta : w|i : left up f.raise = meta : w : middle down f.resize = meta : w : delta middle f.raise = meta : w|i : right down f.move = meta : w|i : delta right f.circledown = meta : root : left down f.circleup = meta : root : right down f.circledown = m|s : : left down f.menu = : root : middle down : "WindowOps" f.menu = m|s : : middle down : "WindowOps" f.menu = m|s : : middle down : "Preferences" f.circleup = m|s : : right down f.iconify = m|c : w|i : left down f.newiconify = m|l : w|i : left down f.raise = m|l : w|i : left up f.pushright = m|l : w|i : right down f.pushleft = m|c : w|i : right down f.pushup = m|l : w|i : middle down f.pushdown = m|c : w|i : middle down # # Menu specifications # menu = "WINDOW OPS" { New Window: !"xterm &" RefreshScreen: f.refresh Redraw: f.redraw Printed 3/22/89 25
TEKWM(1X11) COMMAND REFERENCE TEKWM(1X11) Move: f.move Resize: f.resize Lower: f.lower Raise: f.raise CircUp: f.circleup CircDown: f.circledown AutoIconify: f.iconify LowerIconify: f.newiconify NewIconify: f.newiconify Focus: f.focus Freeze: f.pause UnFreeze: f.continue Restart: f.restart } menu = "Preferences" { Bell Loud: !"xset b 7 &" Bell Normal: !"xset b 3 &" Bell Off: !"xset b off &" Click Loud: !"xset c 8 &" Click Soft: !"xset c on &" Click Off: !"xset c off &" Lock On: !"xset l on &" Lock Off: !"xset l off &" Mouse Fast: !"xset m 4 2 &" Mouse Normal: !"xset m 2 5 &" Mouse Slow: !"xset m 1 1 &" } RESTRICTIONS There's currently no way to specify a keysym in place of a button (up/down/delta) specification. FILES /usr/lib/X11/rgb.txt /usr/lib/X11/font /usr/lib/X11/tekwm/tekwmrc $HOME/.tekwmrc SEE ALSO X(1), X(8) COPYRIGHT Copyright (c) Tektronix Inc., 1989, all rights reserved. P.O. Box 4600, Beaverton, Oregon, 97076. Licensed Material -- Property of Tektronix, Inc. This program is the property of Tektronix, Inc. and is considered by Tektronix to be confidential. It is protected by U.S. copyright law as an unpublished work and is furnished pursuant to a written license agreement. It may not be used, copied or otherwise reproduced, or disclosed to others except in accordance with the terms and conditions of Printed 3/22/89 26
TEKWM(1X11) COMMAND REFERENCE TEKWM(1X11) that agreement. This program is based on work submitted to the public domain by the following: Copyright 1988 Ardent Computer Corporation Sunnyvale, Ca All Rights Reserved Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notices appear in all copies and that both that copyright notices and this permission notice appear in supporting documentation, and that the name of Ardent Computer Corporation or the authors not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. COPYRIGHT 1985, 1986 DIGITAL EQUIPMENT CORPORATION MAYNARD, MASSACHUSETTS ALL RIGHTS RESERVED. THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION. DIGITAL MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE FOR ANY PURPOSE. IT IS SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY. IF THE SOFTWARE IS MODIFIED IN A MANNER CREATING DERIVATIVE COPYRIGHT RIGHTS, APPROPRIATE LEGENDS MAY BE PLACED ON THE DERIVATIVE WORK IN ADDITION TO THAT SET FORTH ABOVE. Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Digital Equipment Corporation not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. AUTHORS M. Gancarz, DEC Ultrix Engineering Group, Merrimack, New Hampshire, using some algorithms originally by Bob Scheifler, MIT Laboratory for Computer Science Printed 3/22/89 27
TEKWM(1X11) COMMAND REFERENCE TEKWM(1X11) J. Hubbard, U.C. Berkeley, Berkeley, Ca. Ardent Computer, Sunnyvale, Ca. Various modifications and enhancements using code developed by M. Gancarz and Digital Equipment Corp. Glenn Widener, Tektronix, Inc. Wilsonville, OR. - more modifications and enhancements; ICCCM compliance. *UNIX is a registered trademark of AT&T. Printed 3/22/89 28
%%index%% na:336,95; sy:431,409; de:840,2317; op:3157,216;3781,3286;7475,4161;12044,3351;15803,3580;19791,4144;24343,3507;28258,3441;32107,3260;35775,2958;39141,2623;42172,2810;45390,2352;48150,3035;51593,6394;58395,8287;67090,4249;71747,5203;77358,5955;83721,5602;89731,4452;94591,4528;99527,5317;105252,4171;109831,2535; ex:112366,1758;114532,1412; fi:115944,280; se:116224,764;117396,2304;120108,393; %%index%%000000000427