TEKWM(1X11) MISC. REFERENCE MANUAL PAGES TEKWM(1X11) NAME tekwm - Window Manager X Client Application SYNOPSIS tekwm [ -f _f_i_l_e_n_a_m_e ] [ -s _s_e_s_s_i_o_n_f_i_l_e ] [ -b ] [ -i ] [ -e _e_x_e_c_f_i_l_e ] This is a supported client. DESCRIPTION The _t_e_k_w_m 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). _T_e_k_w_m complies fully with the public review draft Inter- Client Communication Conventions Manual (ICCCM), and imple- ments 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 specifica- tion detailing the compliance of Tekwm to the ICCCM are available. _T_e_k_w_m features a highly reconfigurable user interface. The user interface is defined by "startup files". When _t_e_k_w_m 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 /_u_s_r/_l_i_b/_X_1_1/_t_e_k_w_m/_t_e_k_w_m_r_c $HOME/._t_e_k_w_m_r_c The "built-in default bindings" are compiled into tekwm, and are listed at the end of this man page. /_u_s_r/_l_i_b/_X_1_1/_t_e_k_w_m/_t_e_k_w_m_r_c is a system-wide startup file for all users. $HOME/._t_e_k_w_m_r_c is the user-specific startup file. If either startup file exists, _t_e_k_w_m adds the definitions in that file to the previous definitions. New definitions override previous ones. To disable all previous defini- tions, include the directives resetbindings, resetmenus and resetgadgets at the top of the startup file. OPTIONS -b Causes _t_e_k_w_m to ignore the built-in default bindings and the system-wide startup file. Sun Release 4.1 Last change: 1 TEKWM(1X11) MISC. REFERENCE MANUAL PAGES TEKWM(1X11) -e _e_x_e_c_f_i_l_e 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 _t_e_k_w_m 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 _t_e_k_w_m! 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 _f_i_l_e_n_a_m_e Names an additional file as a _t_e_k_w_m startup file. This file is read in addition to the regular startup files. Only one such file may be specified. -h Causes _t_e_k_w_m to obey the client-requested initial win- dow 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 _t_e_k_w_m is restarted with this option the window will revert to iconic state. -i Causes _t_e_k_w_m to ignore $HOME/._t_e_k_w_m_r_c. -s _s_e_s_s_i_o_n_f_i_l_e Names a program to execute to restart the X session. The default is _x_u_s_e_r_s_e_t_u_p. The f.restartsession func- tion will execute this program after terminating all current clients. The program must be in the current $PATH shell search path. -v Causes _t_e_k_w_m to print version and copyright informa- tion, 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 defini- tion 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: Sun Release 4.1 Last change: 2 TEKWM(1X11) MISC. REFERENCE MANUAL PAGES TEKWM(1X11) f.action = : root : left down :!"" GADGETS Gadget definitions are of the form: gadget[_n]=_e_x_p_r Where _n is a positive integer indicating the gadget to ini- tialize and _e_x_p_r is one of the following: _s_t_r_i_n_g or "_s_t_r_i_n_g" [ ^ _a_t_t_r_i_b_u_t_e_s ] Set the name of the gadget to _s_t_r_i_n_g. The name will be painted in the gadget box with the gadget.font resource or an overriding font attribute (see below). _s_t_r_i_n_g 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. (_s_t_r_i_n_g) [ ^ _a_t_t_r_i_b_u_t_e_s ] Load a pixmap from the file named by _s_t_r_i_n_g and tile the gadget with it (see also: path). Additional _a_t_t_r_i_b_u_t_e_s may be specified after a '^' (caret) character in the form: [_o_f_f_s_e_t] | [_g_r_a_v_i_t_y] | [_f_o_r_e_g_r_o_u_n_d] | [_b_a_c_k_g_r_o_u_n_d] | [_f_o_n_t] Any omitted parameters will be set to default values. _o_f_f_s_e_t 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. _g_r_a_v_i_t_y 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. _f_o_r_e_g_r_o_u_n_d and _b_a_c_k_g_r_o_u_n_d specify the colors used to tile the gadget or draw the text. _f_o_n_t is the name of the font you want the gadget's name drawn in. This overrides the gadget.font setting for this gadget. Sun Release 4.1 Last change: 3 TEKWM(1X11) MISC. REFERENCE MANUAL PAGES TEKWM(1X11) The default values for _a_t_t_r_i_b_u_t_e_s 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 _g_r_a_v_i_t_y specification (i.e. we've defaulted to NoGravity), the win- dow 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 _g_r_a_v_i_t_y specifications, the window manager will place gadg- ets 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, back- ground 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 Sun Release 4.1 Last change: 4 TEKWM(1X11) MISC. REFERENCE MANUAL PAGES 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 _t_e_k_w_m will exit. FUNCTION BINDING SYNTAX Mouse buttons may be bound to particular window manager functions with: _f_u_n_c_t_i_o_n=[_m_o_d_i_f_i_e_r _k_e_y(_s)]:[_c_o_n_t_e_x_t]:_m_o_u_s_e _e_v_e_n_t_s or _f._m_e_n_u=[_m_o_d_i_f_i_e_r _k_e_y(_s)]:[_c_o_n_t_e_x_t]:_m_o_u_s_e _e_v_e_n_t_s:" _m_e_n_u _n_a_m_e " or _f_u_n_c_t_i_o_n=[_m_o_d_i_f_i_e_r _k_e_y(_s)]:[_c_o_n_t_e_x_t]:_m_o_u_s_e _e_v_e_n_t_s:<_a_c_t_i_o_n _c_h_a_r_a_c_t_e_r> "_t_e_x_t" Function and mouse events are the only required fields. The menu name is required with the _f._m_e_n_u function definition only. Similarly, "text" is required only with the _f._a_c_t_i_o_n and _f._w_i_n_d_o_w_c_o_m_m_a_n_d 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 con- tains 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=[_m_o_d_i_f_i_e_r _k_e_y(_s)]:[_c_o_n_t_e_x_t]:_m_o_u_s_e _e_v_e_n_t_s:<_a_c_t_i_o_n _c_h_a_r_a_c_t_e_r> "_t_e_x_t" 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 "%" in the com- mand, where 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 "%". ("%%" escapes a '%' into the command, just Sun Release 4.1 Last change: 5 TEKWM(1X11) MISC. REFERENCE MANUAL PAGES TEKWM(1X11) like printf). f.windowcommand=[_m_o_d_i_f_i_e_r _k_e_y(_s)]:[_c_o_n_t_e_x_t]:_m_o_u_s_e _e_v_e_n_t_s: > "_c_o_m_m_a_n_d" 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 func- tion. 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 com- patibility. 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 _t_e_k_w_m from _x_i_n_i_t (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 Sun Release 4.1 Last change: 6 TEKWM(1X11) MISC. REFERENCE MANUAL PAGES TEKWM(1X11) selected window (and its children) or the selected icon. To reset the focus to follow- ing the pointer, invoke _f._f_o_c_u_s 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 win- dow stack. If an icon is selected, f.iconify converts the selected icon to its respective window at the window's prior size and loca- tion, but at the top of the window stack. f.kill Immediately disconnect the client owning the selected window from the server without warn- ing 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 prob- ably 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=[_m_o_d_i_f_i_e_r _k_e_y(_s)]:[_c_o_n_t_e_x_t ]:_m_o_u_s_e _e_v_e_n_t_s:" _m_e_n_u _n_a_m_e " 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 loca- tion. 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 when the mouse button is pressed, (see Sun Release 4.1 Last change: 7 TEKWM(1X11) MISC. REFERENCE MANUAL PAGES TEKWM(1X11) f.iconify), and then positions the window or icon in a new location on the screen, where the button is released. A newly visible win- dow or a new icon is placed at the top of the window stack. If the window had been iconi- fied 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 dis- tance of the push is determined by the push resources. f.pushright Moves a window or icon to the right. The dis- tance 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. f.restart Causes _t_e_k_w_m to restart, re-initializing all Sun Release 4.1 Last change: 8 TEKWM(1X11) MISC. REFERENCE MANUAL PAGES TEKWM(1X11) 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 _s_e_s_s_i_o_n_f_i_l_e option, or the default _x_u_s_e_r_s_e_t_u_p. 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._f_o_c_u_s). Modifier Keys Modifier keys are keys that must be pressed prior to press- ing 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 func- tion 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). The icon context refers to any icon and may be safely bound without interfering with window events. Sun Release 4.1 Last change: 9 TEKWM(1X11) MISC. REFERENCE MANUAL PAGES TEKWM(1X11) 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 ini- tialized 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 con- text 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 follow- ing 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. motion Same as delta. Sun Release 4.1 Last change: 10 TEKWM(1X11) MISC. REFERENCE MANUAL PAGES TEKWM(1X11) 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 con- text when the button was pressed. Therefore, for exam- ple, 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 con- text 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 = " _m_e_n_u _n_a_m_e " { _i_t_e_m _n_a_m_e : "_a_c_t_i_o_n" "_i_t_e_m _n_a_m_e" : _a_c_t_i_o_n . . . } Enter the _m_e_n_u _n_a_m_e exactly the way it is entered with the f.menu function or the window manager will not recognize the link. If the _m_e_n_u _n_a_m_e contains quotes, special characters, parentheses, spaces, or tabs, it must be quoted here and in the f.menu function entry. If you haven't chosen to display a pixmap title in _s_t_r_i_n_g, the menu name will be displayed at Sun Release 4.1 Last change: 11 TEKWM(1X11) MISC. REFERENCE MANUAL PAGES TEKWM(1X11) 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 _m_e_n_u _n_a_m_e 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 back- ground, 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 ('>'). Identi- cal to shell commands, except that there should be exactly one occurrence of "%" in the command, where 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 "%". ("%%" escapes a '%' into the command, just like printf). Text strings Sun Release 4.1 Last change: 12 TEKWM(1X11) MISC. REFERENCE MANUAL PAGES TEKWM(1X11) 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 = "_m_e_n_u _n_a_m_e" (_c_o_l_o_r_1:_c_o_l_o_r_2:_c_o_l_o_r_3:_c_o_l_o_r_4) { "_i_t_e_m _n_a_m_e" : (_c_o_l_o_r_5 :_c_o_l_o_r_6) : " _a_c_t_i_o_n " . . . } color1 Foreground color of the header. This is the solid band of color between the letters, since this is "reverse video" by default. color2 Background color of the header. This is for the letters, since this is "reverse video" by default. color3 Foreground color (between the letters) of the highlighter, the horizontal band of color that moves with the cursor within the menu. Sun Release 4.1 Last change: 13 TEKWM(1X11) MISC. REFERENCE MANUAL PAGES TEKWM(1X11) color4 Background color (for the letters) of the highlighter. color5 Foreground color (for the letters) for all indivi- dual menu items. color6 Background color (between the letters) 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 _t_e_k_w_m. 2) If you specify a foreground or background color that does not exist in the RGB color database (/_u_s_r/_l_i_b/_X_1_1/_r_g_b._t_x_t). 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 _t_e_k_w_m are retrieved from the resource database. When a value cannot be found, a default (compiled into _t_e_k_w_m) is substi- tuted. 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*", and tekwm-specific resources as "Tekwm*", 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 Sun Release 4.1 Last change: 14 TEKWM(1X11) MISC. REFERENCE MANUAL PAGES TEKWM(1X11) lower case letters (e.g. eNabLe). autoRaise (boolean) ``off'' (class Auto) 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 _t_e_k_w_m. 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 bor- derWidth is zero or or border.boldPixmap and borderPix- map 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 meaning- less if borderWidth and gadget.borderWidth are zero. borderContext.background (string) ``background'' Background color to use for border context pixmaps. Sun Release 4.1 Last change: 15 TEKWM(1X11) MISC. REFERENCE MANUAL PAGES TEKWM(1X11) Value is meaningless if borderContext.width is unde- fined (or set to zero) or borderContext.pixmap and 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 stip- ple 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 artif- icial 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 Sun Release 4.1 Last change: 16 TEKWM(1X11) MISC. REFERENCE MANUAL PAGES TEKWM(1X11) gadget.borderWidth are zero. Used exclusively as the border pixmap unless border.boldPixmap is defined and 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 associ- ated title bars and gadgets. Not to be confused with the border context, which is an additional border out- side 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 _t_e_k_w_m. Very useful when debugging client interactions, particularly with synchronize on. foreground (string) The default foreground color for all other color choices in _t_e_k_w_m. 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 set- tings 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.autoExecute (boolean) ``on'' (class Auto) Specifies that menus bound to gadgets automatically execute the operation, using the associated window, the same as menus bound to windows, borders, or titlebars. Sun Release 4.1 Last change: 17 TEKWM(1X11) MISC. REFERENCE MANUAL PAGES TEKWM(1X11) Disabling gadget auto-execute allows creation of a "menu bar window" zero pixels high, with window- specific gadgets with text in them. See wm_option.gadgets.autoExecute for per-window setting of this resource. 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'' 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 boun- daries 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 _t_e_k_w_m. Except for foreground and background colors, client-defined icon pixmaps are left alone. Sun Release 4.1 Last change: 18 TEKWM(1X11) MISC. REFERENCE MANUAL PAGES TEKWM(1X11) 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. 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) ``stipple'' Pixmap to show in the padding around the text of a tex- tual icon. icon.foreground and icon.background deter- mine the colors used for the pixmap. Default is the "gray" pixmap, which is a fine stipple pattern. Since this pixmap will be used to tile all textual icons owned by _t_e_k_w_m, 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 color- map is installed. menu.background (string) ``background'' Default menu background color. Can be overridden for an individual menu in the startup file. Sun Release 4.1 Last change: 19 TEKWM(1X11) MISC. REFERENCE MANUAL PAGES TEKWM(1X11) 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. 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) back- ground 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) fore- ground 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 Sun Release 4.1 Last change: 20 TEKWM(1X11) MISC. REFERENCE MANUAL PAGES TEKWM(1X11) 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, icons, 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 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'' _T_e_k_w_m 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. printResources (boolean) ``off'' If this resource is set, Tekwm will print a resource Sun Release 4.1 Last change: 21 TEKWM(1X11) MISC. REFERENCE MANUAL PAGES TEKWM(1X11) specifier line for each resource it obtains. Useful for debugging your resource settings, or generating a default resource file. See also traceResources. (Note - this resource read only as Tekwm.printResources or Tekwm.PrintResources, or as .printResources or .PrintResources for tracing wm_option settings. Thus, to print all resources, set *prin- tResources.) 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 remain- ing 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. 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 Sun Release 4.1 Last change: 22 TEKWM(1X11) MISC. REFERENCE MANUAL PAGES TEKWM(1X11) 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 back- grounds 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'' 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 gadg- ets 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. Sun Release 4.1 Last change: 23 TEKWM(1X11) MISC. REFERENCE MANUAL PAGES TEKWM(1X11) 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. See also printResources. (Note - this resource read only as Tekwm.traceResources or Tekwm.TraceResources, or as .traceResources or .TraceResources for tracing wm_option set- tings. Thus, to trace all resources, set *tra- ceResources.) volume (int) ``2'' Specifies the bell volume (delta on volume set with _x_s_e_t). wall (boolean) ``off'' Restrict window movement to edges of screen (rootwin- dow). Affects initial placement as well as reconfi- guration by the client or the user. 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 Sun Release 4.1 Last change: 24 TEKWM(1X11) MISC. REFERENCE MANUAL PAGES TEKWM(1X11) 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 _n_a_m_e.wm_option.autoRaise (boolean) (class: Auto) _n_a_m_e.wm_option.borderContext (boolean) _n_a_m_e.wm_option.gadgets (boolean) _n_a_m_e.wm_option.title (boolean) These resources determine whether or not a given window really wants to be auto-raised, or to have a border context area, gadgets or a title. Note - you can request that an override_redirect window have a title or border context; if you do, it will be reparented. pletely) _n_a_m_e.wm_option.fixedPosition (boolean) ``off'' (class FixedCom- pletely) _n_a_m_e.wm_option.fixedSize (boolean) ``off'' (class FixedCom- These resources determine whether or not a given window wants to restrict movement or resize. The initial win- dow sizing is not affected, but once placed, the window may not be moved/resized for any reason. _n_a_m_e.wm_option.positionInsideBorder (boolean) ``off'' This resource determines whether a given window with a user or client-specified position should be placed relative to the inside of the window. Normally, if the client is given a position in its -geometry argument (e.g. -geometry -5-5), the outside of the window, including titles and all borders, is placed at the specified position. However, if positionInsideBorder is on, the window is placed based on the inside corner of the border, not the outside corner. Thus, even if the window manager sets a border width different from Sun Release 4.1 Last change: 25 TEKWM(1X11) MISC. REFERENCE MANUAL PAGES TEKWM(1X11) the client's window border width, or adds a title, a pixel at the fixed corner remains in the position it had when the client initially mapped the window. _n_a_m_e.wm_option.gadgets.autoExecute (boolean) ``on'' This resource determines whether menus attached to a given window's gadgets will automatically execute the operation. See the global resource gadget.autoExecute for details. For each of these resources, the application's instance name and class name (in the WM_CLASS property) are checked against the string supplied for _n_a_m_e. For example: XClock*wm_option.gadgets: off xclock.Wm_option.autoRaise: on Specifying one of these resources overrides any other 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 wm_option.borderContext. Also, note that wm_option.gadgets has no effect if there is no title. Caution - if you set *Auto, it will affect all .wm_option.autoRaise options, effectively overriding any general autoRaise setting such as *Wm*autoRaise! _n_a_m_e.wm_option.icon.pixmap () ``none'' _n_a_m_e.wm_option.icon.mask () ``none'' These resources give the names of two pixmap files to be used to create an icon pixmap, overriding the XWMHints.icon_pixmap, icon_mask, or icon_window given by the client, if any. The mask file is not required. The icon wil be the size of the icon.pixmap. These resources are ``special'' as they are checked for under the application's name, not _t_e_k_w_m's; I.E. xclock.wm_option.autoRaise is not tekwm*xclock.wm_option.autoRaise as one might think. Note, however, that they are still read by _t_e_k_w_m, not the client; you must restart _t_e_k_w_m and the client for them to take effect. Sun Release 4.1 Last change: 26 TEKWM(1X11) MISC. REFERENCE MANUAL PAGES TEKWM(1X11) 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 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" { Sun Release 4.1 Last change: 27 TEKWM(1X11) MISC. REFERENCE MANUAL PAGES TEKWM(1X11) 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 /_u_s_r/_l_i_b/_X_1_1/_r_g_b._t_x_t /_u_s_r/_l_i_b/_X_1_1/_f_o_n_t /_u_s_r/_l_i_b/_X_1_1/_t_e_k_w_m/_t_e_k_w_m_r_c $_H_O_M_E/._t_e_k_w_m_r_c 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 con- sidered 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 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 Sun Release 4.1 Last change: 28 TEKWM(1X11) MISC. REFERENCE MANUAL PAGES TEKWM(1X11) documentation, and that the name of Ardent Computer Corpora- tion 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 docu- mentation, and that the name of Digital Equipment Corpora- tion 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 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. Sun Release 4.1 Last change: 29