home | help
PIEWM(1)		     General Commands Manual			PIEWM(1)

NAME
     piewm - Tom's Virtual Tab Window Manager with Pie Menus

SYNTAX
     piewm [-display dpy] [-s] [-k] [-f initfile] [-v]

DESCRIPTION
     Piewm  is	a  window  manager for the X Window System based tvtwm, which is
     based on the X11R4 version of twm, with code segments from the X11R5 twm as
     well.  It includes pie menus, and a ``Virtual Desktop'' feature that effec-
     tively makes the root window of the screen larger than the physical  limits
     of  the display.  To change as little as possible in this manual, from here
     on the window manager is referred to as twm.

     Twm is a window manager for the X Window System.	It  provides  titlebars,
     shaped  windows,  pie  and  linear menus, several forms of icon management,
     user-defined macro functions, click-to-type and pointer-driven keyboard fo-
     cus, and user-specified key and pointer button bindings.

     This program is usually started by the user's session  manager  or  startup
     script.   When  used from xdm(1) or xinit(1) without a session manager, twm
     is frequently executed in the foreground as the last client.  When run this
     way, exiting twm causes the session to be terminated (i.e. logged out).

     By default, application windows are surrounded by a ``frame'' with a title-
     bar at the top and a special border around the window.  The  titlebar  con-
     tains the window's name, a rectangle that is lit when the window is receiv-
     ing  keyboard  input,  and  function boxes known as ``titlebuttons'' at the
     left and right edges of the titlebar.

     Pressing pointer Button1 (usually the left-most button unless it  has  been
     changed  with xmodmap) on a titlebutton will invoke the function associated
     with the button.  In the default interface, windows are iconified by click-
     ing (pressing and then immediately releasing) the left  titlebutton  (which
     looks  like  a small dot).  Conversely, windows are deiconified by clicking
     in the associated icon or entry in the icon manager (see description of the
     variable ShowIconManager and of the function f.showiconmgr).

     Windows are resized by pressing  the  right  titlebutton  (which  resembles
     group  of	nested	squares),  dragging  the pointer over edge that is to be
     moved, and releasing the pointer when the outline of the window is the  de-
     sired size.  Similarly, windows are moved by pressing in the title or high-
     light  region,  dragging a window outline to the new location, and then re-
     leasing when the outline is in the desired position.  Just clicking in  the
     title or highlight region raises the window without moving it.

     When new windows are created, twm will honor any size and location informa-
     tion requested by the user (usually through -geometry command line argument
     or  resources  for  the individual applications).	Otherwise, an outline of
     the window's default size, its titlebar, and lines dividing the window into
     a 3x3 grid that track the pointer are displayed.  Clicking pointer  Button1
     will  position  the  window at the current position and give it the default
     size.  Pressing pointer Button2 (usually the  middle  pointer  button)  and
     dragging  the  outline  will give the window its current position but allow
     the sides to be resized as described above.  Clicking pointer Button3 (usu-
     ally the right pointer button) will give the window  its  current	position
     but attempt to make it long enough to touch the bottom the screen.

OPTIONS
     Twm accepts the following command line options:

     -display dpy
	     This option specifies the X server to use.

     -s      This option indicates that only the default screen (as specified by
	     -display or by the DISPLAY environment variable) should be managed.
	     By default, twm will attempt to manage all screens on the display.

     -k      This  option  makes  twm leave a file in /tmp containing the prede-
	     fines that are generated and fed to m4  before  your  .twmrc  file.
	     Twm  passes  this	file,  followed  immediately by your .twmrc file
	     (which may not be called .twmrc.  See -f  option.),  to  m4(1)  for
	     preprocessing.  If you give twm the -k option, it will leave a copy
	     of the temporary file as /tmp/twmrc$$ (where $$ is variable).  This
	     is  often	useful	for knowing what you can use when adding m4 com-
	     mands and conditions to your .twmrc file.

     -f filename
	     This option specifies the name of the startup file to use.  By  de-
	     fault,  twm  will look in the user's home directory for files named
	     .twmrc.num (where num is a screen number) or .twmrc.

     -v      This option indicates that twm should print error messages whenever
	     an unexpected X Error event is received.  This can be  useful  when
	     debugging applications but can be distracting in regular use.

CUSTOMIZATION
     Much  of  twm's  appearance  and  behavior can be controlled by providing a
     startup file in one of the following locations (searched in order for  each
     screen being managed when twm begins):

     $HOME/.piewmrc.screennumber
	     The screennumber is a small positive number (e.g. 0, 1, etc.)  rep-
	     resenting	the  screen  number (e.g. the last number in the DISPLAY
	     environment variable host:displaynum.screennum) that would be  used
	     to  contact  that screen of the display.  This is intended for dis-
	     plays with multiple screens of differing visual types.

     $HOME/.piewmrc
	     This is the usual name for an individual user's startup file.

     $HOME/.tvtwmrc.screennumber
	     Same as .piewmrc.screennumber.

     $HOME/.tvtwmrc
	     Same as .piewmrc.

     $HOME/.twmrc.screennumber
	     Same as .piewmrc.screennumber.

     $HOME/.twmrc
	     Same as .piewmrc.

     /usr/lib/X11/twm/system.twmrc
	     If neither of the preceding files are found, twm will look in  this
	     file  for	a  default configuration.  This is often tailored by the
	     site administrator to provide convenient menus or familiar bindings
	     for novice users.

     If no startup files are found, twm will use the built-in defaults described
     above.  The only resource used by twm is bitmapFilePath for  a  colon-sepa-
     rated list of directories to search when looking for bitmap files (for more
     information, see the Athena Widgets manual and xrdb(1)).

     Twm  startup  files  are logically broken up into three types of specifica-
     tions:  Variables, Bindings, Menus.  The Variables section must come  first
     and is used to describe the fonts, colors, cursors, border widths, icon and
     window placement, highlighting, autoraising, layout of titles, warping, use
     of the icon manager.  The Bindings section usually comes second and is used
     to  specify  the  functions  that should be to be invoked when keyboard and
     pointer buttons are pressed in windows, icons,  titles,  and  frames.   The
     Menus  section gives any user-defined menus (containing functions to be in-
     voked or commands to be executed).

     Variable names and keywords are case-insensitive.	 Strings  must	be  sur-
     rounded by double quote characters (e.g. "blue") and are case-sensitive.  A
     pound  sign  (#)  outside	of  a string causes the remainder of the line in
     which the character appears to be treated as a comment.

M4 PREPROCESSING
     A new feature in this release of piewm is that it will use  m4(1)	to  pre-
     process  it's setup files.  When twm starts up, it will open a file for in-
     put as described above.  But, it will process that file through  m4  before
     parsing  it.   So, you can use m4 macro's to perform operations at runtime.
     This makes it very easy to work when you use many different display's, with
     different characteristics.  For example, If you want to set the lower right
     section of the screen to be your IconRegion, (see below for details on  the
     IconRegion  variable)  you can use m4 directives and pre-defined symbols to
     calculate the region you want.  For example:
     define(IRegion, translit(eval(WIDTH/3)*eval(HEIGHT/2)+eval(WIDTH-WIDTH/3)-0, *, x))
     IconRegion  "IRegion" SOUTH EAST 75 25
     will define the lower half, and right-hand third of the screen.  The  above
     makes  use  of symbols that are predefined in m4 by twm.  The symbols WIDTH
     and HEIGHT are calculated by twm and written into a temporary file  for  m4
     to use.  The following symbols are predefined by piewm:

     SERVERHOST 	     This  variable  is  set  to the name of the machine
			     that is running the X server.

     CLIENTHOST 	     The machine that is running the clients.  (ie, twm)

     HOSTNAME		     The canonical hostname running the clients.  (ie. a
			     fully-qualified version of CLIENTHOST)

     USER		     The name of the user running the  program.   Gotten
			     from the environment.

     HOME		     The  user's  home directory.  Gotten from the envi-
			     ronment.

     VERSION		     The X major protocol version.  As	seen  by  Proto-
			     colVersion(3).

     REVISION		     The  X  minor protocol revision.  As seen by Proto-
			     colRevision(3).

     VENDOR		     The vendor of your X server.  For	example:  MIT  X
			     Consortium.

     RELEASE		     The  release  number  of  your  X	server.  For MIT
			     X11R5, this is 5.

     WIDTH		     The width of your display in pixels.

     HEIGHT		     The height of your display in pixels.

     X_RESOLUTION	     The X resolution of your display in pixels per  me-
			     ter.

     Y_RESOLUTION	     The  Y resolution of your display in pixels per me-
			     ter.

     PLANES		     The number of bit planes your display  supports  in
			     the default root window.

     BITS_PER_RGB	     The  number  of  significant  bits in an RGB color.
			     (log base 2 of the number of distinct  colors  that
			     can  be  created.	This is often different from the
			     number of colors that can be displayed at once.)

     TWM_TYPE		     Tells which twm offshoot is running.  It  will  al-
			     ways  be set to the string "piewm" in this program.
			     This is useful for protecting parts of your  .twmrc
			     file  that twm proper won't understand (like Virtu-
			     alDesktop) so that it is still  usable  with  other
			     twm programs.

     CLASS		     Your  visual class.  Will return one of StaticGray,
			     GrayScale, StaticColor, PseudoColor, TrueColor, Di-
			     rectColor, or, if	it  cannot  determine  what  you
			     have, NonStandard.

     COLOR		     This  will be either 'Yes' or 'No'.  This is just a
			     wrapper around the above definition.  Returns 'Yes'
			     on *Color, and 'No' on StaticGray and GrayScale.

     NG_*		     There will be a large (about 16) number  of  prede-
			     fines that look like NG_EE or NG_AE.  These are for
			     access control.  When they are set to something in-
			     telligent,  you  can  protect  certain  machines or
			     groups of machines in login menus by which group of
			     people should be able to access them.  If you place
			     an ifelse(NG_STAFF, yes, `') in your  .twmrc  file,
			     and  place  the login menu, or the like, in between
			     the quotes, then it will only be seen by members of
			     the staff.  This is useful when you  have	a  whole
			     system  that  include()s  a system-wide login file.
			     This makes it easy to centrally  administer  things
			     such  as  login  menus,  and  have all users notice
			     changes without having to make  them  individually.
			     At  the moment, there is little or no functionality
			     in these.	 If  you  are  a  member  of  the  group
			     "staff",  you have them all set to 'Yes', else, you
			     have only NG_STD defined to 'Yes'.  I plan to  make
			     these symbols meaningful in the near future.

     You  may  well  find that if you research the m4(1) manual well, and under-
     stand the power of m4, this will be a very useful and powerful tool.

VIRTUAL DESKTOP
     The Virtual Desktop feature of tvtwm was modeled after the same feature  in
     swm  (Solbourne Window Manager).  The Virtual Desktop effectively makes the
     ``root'' window of the display larger than the physical screen  size.   The
     Virtual  Desktop  is  panned in one of two ways, either by executing one of
     the f.scroll commands or by using the panner.

     The panner is a special window that shows a miniature view  of  windows  on
     the  desktop.  The small windows in the panner will have the same colors as
     the titlebars and icons of their associated client windows.  The panner  is
     very  simply  to operate.	Mouse button one pressed inside the panner moves
     the view on the desktop to an integral number of  desktops  from  the  top-
     left.   Mouse button three pressed inside the panner allows you to move the
     outline indicating your current view on the desktop.  Releasing the  button
     will reposition the desktop to the point at which the outline is displayed.
     Mouse button two pressed in one of the small ``virtual'' windows allows you
     to  move the small window to another portion of the desktop.  If during the
     move operation, you would like to place the window in your current view  of
     the desktop, simply moving the pointer out of the panner will result in the
     window  outline  changing from the small outline to a large outline showing
     the dimensions of the client window.  The converse is true of any move  op-
     eration  started  outside	of  the panner: if the pointer is moved into the
     panner window, the outline will change to a small outline allowing  you  to
     place the window anywhere on the desktop.	Another feature of the panner is
     that  if  you  resize  it,  the Virtual Desktop will resize a corresponding
     amount.  During the resize, the dimensions shown reflect the Virtual  Desk-
     top size.

     There are two hints that client windows may use when asking the window man-
     ager  to  position top level windows:  User Specified Position (USPosition)
     and Program Specified Position (PPosition).  tvtwm handles  each  of  these
     two  hints  in a different manner.  If USPosition hints are set, the window
     will be placed at the pixel location requested.   If  PPosition  hints  are
     set,  the	window will be placed at the requested location plus the offsets
     of the current Virtual Desktop position.  For example, if	the  desktop  is
     positioned  at  +100+300  and a window is mapped at +100+100 with PPosition
     hints set, the window would be placed at +200+400 on the Virtual Desktop.

     Along with the Virtual Desktop comes a concept called  ``sticky''	windows.
     Sticky  windows  can  be  thought	of as stuck to the glass of the display.
     Sticky windows do not scroll out of view when the desktop is scrolled.

PIE MENUS
     This version of twm supports pie menus.  The  labels  of  a  pie  menu  are
     arranged  in a circle around the cursor, and the menu selection is based on
     the direction you move between clicking the button.  Pie menus are fast and
     easy to use because each of the items corresponds to a large  wedge  shaped
     area adjacent to the cursor.

     You  define  pie menus the same way as regular linear menus, using the word
     piemenu instead of menu.  They have an extra optional  argument:  an  ``@''
     sign followed by a number, specifying the direction of the first menu item,
     defaulting to 0 (to the right, increasing counter-clockwise).  You can make
     pie  menus  with  graphical labels, by specifying a label beginning with an
     underscore followed by a bitmap or pixmap file name.

     To pop up a pie menu (in a binding or as  a  submenu),  use  the  f.piemenu
     function instead of the f.menu function.  Pie menus can be submenus of lin-
     ear menus, and linear menus can be submenus of pie menus, too.

     Pie  menus  are  usually drawn in a rectangular window.  To have them drawn
     "in midair" using shapes,	specify  the  "NoMenuShadows"  keyword	in  your
     .piewmrc.

VARIABLES
     Many  of  the  aspects  of twm's user interface are controlled by variables
     that may be set in the user's startup file.  Some of the  options	are  en-
     abled  or	disabled  simply by the presence of a particular keyword.  Other
     options require keywords, numbers, strings, or lists of all of these.

     Lists are surrounded by braces and are usually separated by whitespace or a
     newline.  For example:
     AutoRaise { "emacs" "XTerm" "Xmh" }
     or
     AutoRaise
     {
	  "emacs"
	  "XTerm"
	  "Xmh"
     }
     When a variable containing  a  list  of  strings  representing  windows  is
     searched  (e.g.  to  determine  whether or not to enable autoraise as shown
     above), a string is considered to match a window if it is a  case-sensitive
     prefix  for  the window's name name (given by the WM_NAME window property),
     resource name or class name (both given by the WM_CLASS  window  property).
     The  preceding example would enable autoraise on windows named ``emacs'' as
     well as any xterm (since they are of class ``XTerm'') or xmh windows (which
     are of class ``Xmh'').

     String arguments that are interpreted as filenames (see the  Pixmaps,  Cur-
     sors, and IconDirectory below) will prepend the user's directory (specified
     by  the  HOME  environment variable) if the first character is a tilde (~).
     If, instead, the first character is a colon (:), the name is assumed to re-
     fer to one of the internal bitmaps that are used to create the default  ti-
     tlebars  symbols:	 :xlogo  or  :iconify  (both refer to the X used for the
     iconify button), :resize (the nested squares used by  the	resize	button),
     and :question (the question mark used for non-existent bitmap files).

     The  following variables may be specified at the top of a twm startup file.
     Lists of Window name prefix strings are indicated	by  win-list.	Optional
     arguments are shown in square brackets:

     AutoRaise { win-list }
	     This variable specifies a list of windows that should automatically
	     be  raised whenever the pointer enters the window.  This action can
	     be interactively enabled or disabled on  individual  windows  using
	     the function f.autoraise.

     AutoRelativeResize
	     This  variable  indicates	that  dragging out a window size (either
	     when initially sizing the window with pointer Button2 or  when  re-
	     sizing it) should not wait until the pointer has crossed the window
	     edges.   Instead, moving the pointer automatically causes the near-
	     est edge or edges to move by the same amount.  This  allows  allows
	     the  resizing  windows  that extend off the edge of the screen.  If
	     the pointer is in the center of the window, or if the resize is be-
	     gun by pressing a titlebutton, twm will still wait for the  pointer
	     to cross a window edge (to prevent accidents).  This option is par-
	     ticularly	useful for people who like the press-drag-release method
	     of sweeping out window sizes.

     BorderColor string [{ wincolorlist }]
	     This variable specifies the default  color  of  the  border  to  be
	     placed  around  all  non-iconified  windows,  and may only be given
	     within a Color or Monochrome list.  The optional wincolorlist spec-
	     ifies a list of window and color name pairs for specifying particu-
	     lar border colors for different types of windows.	For example:
	     BorderColor "gray50"
	     {
		  "XTerm"   "red"
		  "xmh"     "green"
	     }
	     The default is "black".

     BorderTileBackground string [{ wincolorlist }]
	     This variable specifies the default background color  in  the  gray
	     pattern  used  in unhighlighted borders (only if NoHighlight hasn't
	     been set), and may only be given within a Color or Monochrome list.
	     The optional wincolorlist allows per-window colors to be specified.
	     The default  is "black".

     BorderTileForeground string [{ wincolorlist }]
	     This variable specifies the default foreground color  in  the  gray
	     pattern  used  in unhighlighted borders (only if NoHighlight hasn't
	     been set), and may only be given within a Color or Monochrome list.
	     The optional wincolorlist allows per-window colors to be specified.
	     The default is "white".

     BorderWidth pixels
	     This variable specifies the width in pixels of the border surround-
	     ing all client window frames  if  ClientBorderWidth  has  not  been
	     specified.   This value is also used to set the border size of win-
	     dows created by twm (such as the icon manager).  The default is 2.

     ButtonIndent pixels
	     This variable specifies the amount by which titlebuttons should  be
	     indented  on  all	sides.	 Positive values cause the buttons to be
	     smaller than the window text and highlight area so that they  stand
	     out.   Setting  this  and the TitleButtonBorderWidth variables to 0
	     makes titlebuttons be as tall and wide as possible.  The default is
	     1.

     ClientBorderWidth
	     This variable indicates that  border  width  of  a  window's  frame
	     should  be  set  to  the initial border width of the window, rather
	     than to the value of BorderWidth.

     Color { colors-list }
	     This variable specifies a list of color assignments to be	made  if
	     the default display is capable of displaying more than simple black
	     and white.  The colors-list is made up of the following color vari-
	     ables   and  their  values:  DefaultBackground,  DefaultForeground,
	     MenuBackground, MenuForeground, MenuTitleBackground, MenuTitleFore-
	     ground,  and  MenuShadowColor.   VirtualDesktopBackground.   Virtu-
	     alDesktopForeground.    PannerBackground.	 PannerForeground.   The
	     following color variables may also be given a list  of  window  and
	     color  name  pairs  to allow per-window colors to be specified (see
	     BorderColor for details): BorderColor,  IconManagerHighlight,  Bor-
	     derTitleBackground,  BorderTitleForeground, TitleBackground, Title-
	     Foreground, IconBackground, IconForeground, IconBorderColor,  Icon-
	     ManagerBackground,  and  IconManagerForeground.  VirtualBackground,
	     and VirtualForeground.  For example:
	     Color
	     {
		  MenuBackground      "gray50"
		  MenuForeground      "blue"
		  BorderColor		   "red" { "XTerm" "yellow" }
		  TitleForeground	   "yellow"
		  TitleBackground	   "blue"
	     }
	     All of these color variables may also be specified  for  the  Mono-
	     chrome  variable,	allowing the same initialization file to be used
	     on both color and monochrome displays.

     ConstrainedMoveTime milliseconds
	     This variable specifies the length of time  between  button  clicks
	     needed  to  begin	a  constrained	move operation.  Double clicking
	     within this amount of time when invoking f.move will cause the win-
	     dow only be moved in a horizontal or vertical  direction.	 Setting
	     this value to 0 will disable constrained moves.  The default is 400
	     milliseconds.

     Cursors { cursor-list }
	     This  variable specifies the glyphs that twm should use for various
	     pointer cursors.  Each cursor may be defined either from the cursor
	     font or from two bitmap files.  Shapes from the cursor font may  be
	     specified directly as:
		  cursorname	 "string"
	     where  cursorname	is  one  of  the  cursor names listed below, and
	     string is the name of  a  glyph  as  found  in  the  file	/usr/in-
	     clude/X11/cursorfont.h (without the ``XC_'' prefix).  If the cursor
	     is  to  be  defined from bitmap files, the following syntax is used
	     instead:
		  cursorname	 "image"   "mask"
	     The image and mask strings specify the names  of  files  containing
	     the  glyph  image and mask in bitmap(1) form.  The bitmap files are
	     located in the same manner as icon bitmap files.  The following ex-
	     ample shows the default cursor definitions:
	     Cursors
	     {
		  Frame 	 "top_left_arrow"
		  Title 	 "top_left_arrow"
		  Icon	    "top_left_arrow"
		  IconMgr   "top_left_arrow"
		  Move	    "fleur"
		  Resize	 "fleur"
		  Menu	    "sb_left_arrow"
		  Button	 "hand2"
		  Wait	    "watch"
		  Select	 "dot"
		  Destroy   "pirate"
	     }

     DecorateTransients
	     This variable indicates that transient windows (those containing  a
	     WM_TRANSIENT_FOR  property)  should  have	titlebars.   By default,
	     transients are not reparented.

     DefaultBackground string
	     This variable specifies the background color to be used for  sizing
	     and information windows.  The default is "white".

     DefaultForeground string
	     This  variable specifies the foreground color to be used for sizing
	     and information windows.  The default is "black".

     DontIconifyByUnmapping { win-list }
	     This variable specifies a list of windows that should not be iconi-
	     fied by simply unmapping the window (as would be the case if Iconi-
	     fyByUnmapping had been set).  This is frequently used to force some
	     windows to be treated as icons while other windows are  handled  by
	     the icon manager.

     DontMoveOff
	     This  variable  indicates	that windows should not be allowed to be
	     moved off the screen.  It can  be	overridden  by	the  f.forcemove
	     function.

     DontSqueezeTitle [{ win-list }]
	     This  variable  indicates	that titlebars should not be squeezed to
	     their minimum size as described under SqueezeTitle below.	 If  the
	     optional  window  list is supplied, only those windows will be pre-
	     vented from being squeezed.

     ForceIcons
	     This variable indicates that icon pixmaps specified  in  the  Icons
	     variable should override any client-supplied pixmaps.

     FramePadding pixels
	     This  variable  specifies the distance between the titlebar decora-
	     tions (the button and text) and the window frame.	The default is 2
	     pixels.

     IconBackground string [{ win-list }]
	     This variable specifies the background color of bitmap  icons,  and
	     may  only	be specified inside of a Color or Monochrome list.  This
	     value is ignored when the icon is an Xpm  format  pixmap,	as  they
	     have  their  own colors.  The optional win-list is a list of window
	     names and colors so that per-window colors may be	specified.   See
	     the  BorderColor  variable  for  a complete description of the win-
	     list.  The default is "white".

     IconBorderColor string [{ win-list }]
	     This variable specifies the color of the border used for icon  win-
	     dows,  and  may  only  be specified inside of a Color or Monochrome
	     list.  This option only has an effect on icon  windows  that  don't
	     have their own shape mask (ie, only on rectangular icons).  The op-
	     tional  win-list  is a list of window names and colors so that per-
	     window colors may be specified.  See the BorderColor variable for a
	     complete description of the win-list.  The default is "black".

     IconBorderWidth pixels
	     This variable specifies the width in pixels of the border surround-
	     ing icon windows.	The default is 2.

     IconDirectory string
	     This variable specifies the directory that should be searched if if
	     a bitmap file cannot be found in any  of  the  directories  in  the
	     bitmapFilePath  resource.	 This  is  generally  a  poor  way to do
	     things.  It is much better to set your bitmapFilePath  resource  to
	     what you want it to be in your resources file.

     IconFont string
	     This  variable  specifies the font to be used to display icon names
	     within icons.  The default is "8x13".

     IconForeground string [{ win-list }]
	     This variable specifies the foreground color to be used  when  dis-
	     playing  bitmap  icons, and may only be specified inside of a Color
	     or Monochrome list.  This value is ignored when the icon is an  Xpm
	     format  pixmap,  as  they have their own colors.  The optional win-
	     list is a list of window names and colors so that per-window colors
	     may be specified.	See the BorderColor variable for a complete  de-
	     scription of the win-list.  The default is "black".

     IconifyByUnmapping [{ win-list }]
	     This  variable  indicates that windows should be iconified by being
	     unmapped without trying to map any icons.	This  assumes  that  the
	     user  is  will  remap  the  window  through  the  icon manager, the
	     f.warpto function, or the TwmWindows menu.  If  the  optional  win-
	     list  is  provided,  only those windows will be iconified by simply
	     unmapping.  Windows that have both this and the IconManagerDontShow
	     options set may not be accessible if no binding to  the  TwmWindows
	     menu is set in the user's startup file.

     IconManagerBackground string [{ win-list }]
	     This  variable  specifies the background color to use for icon man-
	     ager entries, and may only be specified inside of a Color or  Mono-
	     chrome  list.   The optional win-list is a list of window names and
	     colors so that per-window colors may be specified.  See the Border-
	     Color variable for a complete description of the win-list.  The de-
	     fault is "white".

     IconManagerDontShow [{ win-list }]
	     This variable indicates that the icon manager  should  not  display
	     any windows.  If the optional win-list is given, only those windows
	     will  not	be  displayed.	This variable is used to prevent windows
	     that are rarely iconified (such as xclock or xload) from taking  up
	     space in the icon manager.

     IconManagerFont string
	     This  variable  specifies	the font to be used when displaying icon
	     manager entries.  The default is "8x13".

     IconManagerForeground string [{ win-list }]
	     This variable specifies the foreground color to be used  when  dis-
	     playing icon manager entries, and may only be specified inside of a
	     Color  or Monochrome list.  The optional win-list is a list of win-
	     dow names and colors so that per-window colors  may  be  specified.
	     See the BorderColor variable for a complete description of the win-
	     list.  The default is "black".

     IconManagerGeometry string [ columns ]
	     This  variable  specifies	the geometry of the icon manager window.
	     The string argument is standard geometry specification  that  indi-
	     cates  the initial full size of the icon manager.	The icon manager
	     window is then broken into columns pieces and scaled  according  to
	     the  number  of  entries  in  the	icon manager.  Extra entries are
	     wrapped to form additional rows.  The default number of columns  is
	     1.

     IconManagerHighlight string [{ win-list }]
	     This variable specifies the border color to be used when highlight-
	     ing  the  icon  manager entry that currently has the focus, and can
	     only be specified inside of a Color or Monochrome	list.	The  op-
	     tional  win-list  is a list of window names and colors so that per-
	     window colors may be specified.  See the BorderColor variable for a
	     complete description of the win-list.  The default is "black".

     IconManagers { iconmgr-list }
	     This variable specifies a list of icon managers  to  create.   Each
	     item in the iconmgr-list has the following format:
		  "winname" ["iconname"]   "geometry" columns
	     where  winname  is  the name of the windows that should be put into
	     this icon manager, iconname is the name of that icon  manager  win-
	     dow's  icon,  geometry  is  a  standard geometry specification, and
	     columns is the number of columns in this icon manager as  described
	     in IconManagerGeometry.  For example:
	     IconManagers
	     {
		  "XTerm"   "=300x5+800+5" 5
		  "myhost"  "=400x5+100+5" 2
	     }
	     Clients whose name or class is ``XTerm'' will have an entry created
	     in  the  ``XTerm'' icon manager.  Clients whose name was ``myhost''
	     would be put into the ``myhost'' icon manager.

     IconManagerShow { win-list }
	     This variable specifies a list of windows that should appear in the
	     icon manager.  When  used	in  conjunction  with  the  IconManager-
	     DontShow  variable,  only the windows in this list will be shown in
	     the icon manager.

     IconRegion geomstring vgrav hgrav gridwidth gridheight
	     This variable specifies an area on the root window in  which  icons
	     are  placed if no specific icon location is provided by the client.
	     The geomstring is a quoted string containing  a  standard	geometry
	     specification.   If more than one IconRegion lines are given, icons
	     will be put into the succeeding icon  regions  when  the  first  is
	     full.   The vgrav argument should be either North or South and con-
	     trol and is used to control whether icons are first filled in  from
	     the  top  or bottom of the icon region.  Similarly, the hgrav argu-
	     ment should be either East or West and is used to	control  whether
	     icons should be filled in from left from the right.  Icons are laid
	     out  within  the  region in a grid with cells gridwidth pixels wide
	     and gridheight pixels high.

     Icons { win-list }
	     This  variable  specifies	a  list  of   window   names   and   the
	     pixmap/bitmap  filenames  that  should be used as their icons.  For
	     example:
	     Icons
	     {
		  "XTerm"	 "xterm.icon"
		  "xfd" 	 "xfd_icon"
		  "xeyes"	 "xeyes.xpm"
	     }
	     Windows that match ``XTerm'' and would not be iconified  by  unmap-
	     ping,  and  would	try  to  use  the icon pixmap/bitmap in the file
	     ``xterm.icon''.  If ForceIcons is specified, this	bitmap	will  be
	     used even if the client has requested its own icon pixmap.

     IconTitle { win-list }
	     This  variable  specifies a list of clients that will have the icon
	     name displayed below the icon and is used to request icon titles on
	     specific windows when NoIconTitle has been set.

     InterpolateMenuColors
	     This variable indicates that menu entry colors should  be	interpo-
	     lated between entry specified colors.  In the example below:
	     Menu "mymenu"
	     {
		  "Title"	 ("black":"red")	  f.title
		  "entry1"		   f.nop
		  "entry2"		   f.nop
		  "entry3"  ("white":"green")	f.nop
		  "entry4"		   f.nop
		  "entry5"  ("red":"white")	     f.nop
	     }
	     the  foreground colors for ``entry1'' and ``entry2'' will be inter-
	     polated between black and white, and the background colors  between
	     red  and  green.	Similarly, the foreground for ``entry4'' will be
	     half-way between white and red, and the background will be half-way
	     between green and white.

     MakeTitle { win-list }
	     This variable specifies a list  of  windows  on  which  a	titlebar
	     should  be placed and is used to request titles on specific windows
	     when NoTitle has been set.

     MaxWindowSize string
	     This variable specifies a geometry in which the  width  and  height
	     give  the	maximum size for a given window.  This is typically used
	     to restrict windows to the size of  the  screen.	The  default  is
	     "30000x30000".

     MenuBackground string
	     This  variable  specifies	the background color used for menus, and
	     can only be specified inside of a Color or  Monochrome  list.   The
	     default is "white".

     MenuFont string
	     This variable specifies the font to use when displaying menus.  The
	     default is "8x13".

     MenuForeground string
	     This  variable  specifies	the foreground color used for menus, and
	     can only be specified inside of a Color or  Monochrome  list.   The
	     default is "black".

     MenuShadowColor string
	     This  variable  specifies	the color of the shadow behind pull-down
	     menus and can only be specified inside of	a  Color  or  Monochrome
	     list.  The default is "black".

     MenuTitleBackground string
	     This variable specifies the background color for f.title entries in
	     menus,  and  can  only be specified inside of a Color or Monochrome
	     list.  The default is "white".

     MenuTitleFont string
	     This variable specifies the font to be used in menu titles.

     MenuTitleForeground string
	     This variable specifies the foreground color for f.title entries in
	     menus and can only be specified inside of	a  Color  or  Monochrome
	     list.  The default is "black".

     Monochrome { colors }
	     This  variable specifies a list of color assignments that should be
	     made if the screen has a depth of 1.  See the description	of  Col-
	     ors.

     MoveDelta pixels
	     This  variable specifies the number of pixels the pointer must move
	     before  the  f.move  function  starts  working.	Also   see   the
	     f.deltastop function.  The default is zero pixels.

     NoBackingStore
	     This variable indicates that twm's menus should not request backing
	     store to minimize repainting of menus.  This is typically used with
	     servers that can repaint faster than they can handle backing store.

     NoCaseSensitive
	     This  variable  indicates	that case should be ignored when sorting
	     icon names in an icon manager.  This option is typically used  with
	     applications that capitalize the first letter of their icon name.

     NoDefaults
	     This  variable indicates that twm should not supply the default ti-
	     tlebuttons and bindings.  This option should only be  used  if  the
	     startup  file contains a completely new set of bindings and defini-
	     tions.

     NoGrabServer
	     This variable indicates that twm should not grab  the  server  when
	     popping up menus and moving opaque windows.

     NoHighlight [{ win-list }]
	     This  variable  indicates that borders should not be highlighted to
	     track the location of the pointer.  If  the  optional  win-list  is
	     given,  highlighting will only be disabled for those windows.  When
	     the border is highlighted, it will be drawn in the current  Border-
	     Color.   When  the  border  is not highlighted, it will be stippled
	     with an gray pattern using  the  current  BorderTileForeground  and
	     BorderTileBackground colors.

     NoIconManagers
	     This variable indicates that no icon manager should be created.

     NoIconTitle [{ win-list }]
	     This variable indicates that icons should not display the icon name
	     of  the  client.	If  the  optional  win-list is given, only those
	     clients will not have icon titles.  IconTitle may be used with this
	     option to force icon titles to be put on on specific clients

     NoMenuShadows
	     This variable indicates that linear  menus  should  not  have  drop
	     shadows  drawn behind them.  For pie menus, it means that pie menus
	     should be shaped, not drawn on a background.

     NoRaiseOnDeiconify
	     This variable indicates that windows that	are  deiconified  should
	     not be raised.

     NoRaiseOnMove
	     This  variable  indicates	that  windows  should not be raised when
	     moved.  This is typically used to allow windows to slide underneath
	     each other.

     NoRaiseOnResize
	     This variable indicates that windows should not be raised when  re-
	     sized.   This  is typically used to allow windows to be resized un-
	     derneath each other.

     NoRaiseOnWarp
	     This variable indicates that windows should not be raised when  the
	     pointer  is  warped  into them with the f.warpto function.  If this
	     option is set, warping to an occluded  window  may  result  in  the
	     pointer  ending up in the occluding window instead the desired win-
	     dow (which causes unexpected behavior with f.warpring).

     NoSaveUnders
	     This variable indicates that menus should not  request  save-unders
	     to minimize window repainting following menu selection.  It is typ-
	     ically  used  with  displays  that can repaint faster than they can
	     handle save-unders.

     NoStackMode [{ win-list }]
	     This variable indicates  that  client  window  requests  to  change
	     stacking  order  should  be  ignored.   If the optional win-list is
	     given, only requests on those windows will  be  ignored.	This  is
	     typically	used  to  prevent applications from relentlessly popping
	     themselves to the front of the window stack.

     NoTitle [{ win-list }]
	     This variable indicates that windows should not have titlebars.  If
	     the optional win-list is given, only those windows  will  not  have
	     titlebars.   MakeTitle may be used with this option to force title-
	     bars to be put on specific windows.

     NoTitleFocus
	     This variable indicates that twm should not set keyboard input  fo-
	     cus  to each window as it is entered.  Normally, twm sets the focus
	     so that focus and key events from the titlebar  and  icon	managers
	     are  delivered to the application.  If the pointer is moved quickly
	     and twm is slow to respond, input can be directed to the old window
	     instead of the new.  This option is typically used to prevent  this
	     ``input  lag''  and  to work around bugs in older applications that
	     have problems with focus events.

     NoTitleHighlight [{ win-list }]
	     This variable indicates that the highlight area  of  the  titlebar,
	     which  is	used to indicate the window that currently has the input
	     focus, should not be displayed.  If the optional win-list is given,
	     only those windows will not have highlight  areas.   This	and  the
	     SqueezeTitle  options can be set to substantially reduce the amount
	     of screen space required by titlebars.

     OpaqueMove
	     This variable indicates that the f.move  function	should	actually
	     move the window instead of just an outline so that the user can im-
	     mediately	see  what the window will look like in the new position.
	     This option is typically used on fast displays (particularly if No-
	     GrabServer is set).

     PannerBackgroundPixmap string
	     This variable specifies the filename of a pixmap or bitmap file  to
	     be  used  as the background image of the panner.  If this file is a
	     bitmap, the PannerBackground and PannerForeground colors  are  used
	     when constructing the background.

     PannerGeometry string
	     This variable specifies the position of the Virtual Desktop panner.
	     The default geometry is "-0-0".

     PannerOpaqueScroll
	     This  variable  causes  the  panner  to  scroll the Virtual Desktop
	     opaquely.	This variable only takes effect if the StickyAbove vari-
	     able is also set.

     PannerScale scale
	     This variable specifies that scale of the Virtual Desktop Panner in
	     relation to the actual screen.  The default scale is 20.

     PannerState string
	     This variable specifies the initial state of  the	Virtual  Desktop
	     panner  window.   Possible  initial  state values include "normal",
	     "iconic", or "withdrawn".	The default initial state is "normal".

     PieMenuWait milliseconds
	     Wait this number of milliseconds before popping up a pie menu.

     Pixmaps { pixmaps }
	     This variable specifies a list of pixmaps that define  the  appear-
	     ance  of  various	images.   Each entry is a keyword indicating the
	     pixmap to set, followed by a string giving the name of  the  bitmap
	     file.  The following pixmaps may be specified:
	     Pixmaps
	     {
		  VirtualDesktopBackgroundPixmap     "/homes/davis/pictures/background.gif"
		  PannerBackgroundPixmap	"panner.xpm"
		  TitleHighlight	   "gray1"
	     }
	     The  default  for TitleHighlight is to use an even stipple pattern.
	     The   VirtualDesktopBackgroundPixmap   and   PannerBackgroundPixmap
	     pixmaps can be set as detailed in each of their own sections.

     RandomPlacement
	     This  variable  indicates	that  windows with no specified geometry
	     should should be placed in a pseudo-random location instead of hav-
	     ing the user drag out an outline.

     ResizeFont string
	     This variable specifies the font to be used for in  the  dimensions
	     window when resizing windows.  The default is "fixed".

     RestartPreviousState
	     This variable indicates that twm should attempt to use the WM_STATE
	     property  on  client windows to tell which windows should be iconi-
	     fied and which should be left visible.  This is typically	used  to
	     make  try to regenerate the state that the screen was in before the
	     previous window manager was shutdown.

     ScrollDistanceX percentage
	     This variable specifies the amount (as a percentage of  the  screen
	     width)  to  move  when  one of the scroll functions f.scrollleft or
	     f.scrollright is called.

     ScrollDistanceY percentage
	     This variable specifies the amount (as a percentage of  the  screen
	     height)  to  move	when  one  of the scroll functions f.scrollup or
	     f.scrolldown is called.

     ShowIconManager
	     This variable indicates that the icon manager window should be dis-
	     played when twm is started.  It can always be brought up using  the
	     f.showiconmgr function.

     ShowVirtualNames
	     This  variable  causes  client  window names to be displayed in the
	     small virtual windows inside the Virtual Desktop panner.  The names
	     will be displayed using the current VirtualFont.

     SortIconManager
	     This variable indicates that entries in the icon manager should  be
	     sorted  alphabetically  rather than by simply appending new windows
	     to the end.

     SqueezeTitle [{ squeeze-list }]
	     This variable indicates that twm should attempt to  use  the  SHAPE
	     extension	to  make  titlebars  occupy only as much screen space as
	     they need, rather than extending all the way across the top of  the
	     window.  The optional squeeze-list may be used to control the loca-
	     tion of the squeezed titlebar along the top of the window.  It con-
	     tains entries of the form:
		  "name"	 justification	num  denom
	     where  name is a window name, justification is either left, center,
	     or right, and num and denom are numbers specifying a  ratio  giving
	     the  relative  position about which the titlebar is justified.  The
	     ratio is measured from left to right if the numerator is  positive,
	     and  right  to left if negative.  A denominator of 0 indicates that
	     the numerator should be measured in pixels.  For  convenience,  the
	     ratio  0/0  is  the same as 1/2 for center and -1/1 for right.  For
	     example:
	     SqueezeTitle
	     {
		  "XTerm"   left      0    0
		  "xterm1"  left      1    3
		  "xterm2"  left      2    3
		  "oclock"  center	   0	0
		  "emacs"   right	   0	0
	     }
	     The DontSqueezeTitle list can be used to turn off squeezing on cer-
	     tain titles.

     StartIconified [{ win-list }]
	     This variable indicates that client  windows  should  initially  be
	     left as icons until explicitly deiconified by the user.  If the op-
	     tional  win-list  is  given,  only  those	windows  will be started
	     iconic.  This is useful for programs that do not support an -iconic
	     command line option or resource.

     StayUpMenus
	     This variable alters menu interaction.  By default, a menu item  is
	     selected  when  a	mouse button is released over it.  This variable
	     causes menu items to be selected on the next button press event.

     Sticky [{ win-list }]
	     This variable is a list of client windows that will  be  sticky  by
	     default.  See the VIRTUAL DESKTOP section for a full description of
	     sticky windows.

     StickyAbove
	     This  variable  causes  sticky  windows to be physically above non-
	     sticky windows.

     TitleBackground string [{ win-list }]
	     This variable specifies the background color used in titlebars, and
	     may only be specified inside of a Color or  Monochrome  list.   The
	     optional win-list is a list of window names and colors so that per-
	     window colors may be specified.  The default is "white".

     TitleButtonBorderWidth pixels
	     This variable specifies the width in pixels of the border surround-
	     ing titlebuttons.	This is typically set to 0 to allow titlebuttons
	     to take up as much space as possible and to not have a border.  The
	     default is 1.

     TitleFont string
	     This  variable  specifies	the  font  to used for displaying window
	     names in titlebars.  The default is "8x13".

     TitleFontPadding pixels
	     This variable specifies the number  of  pixels  of  padding  to  be
	     placed above window titles.  This allows for using small fonts with
	     larger buttons.

     TitleForeground string [{ win-list }]
	     This variable specifies the foreground color used in titlebars, and
	     may  only	be  specified inside of a Color or Monochrome list.  The
	     optional win-list is a list of window names and colors so that per-
	     window colors may be specified.  The default is "black".

     TitlePadding pixels
	     This variable specifies the distance between the  various	buttons,
	     text,  and  highlight areas in the titlebar.  The default is 8 pix-
	     els.

     UnknownIcon string
	     This variable specifies the filename of a bitmap file to be used as
	     the default icon.	This bitmap will be used  as  the  icon  of  all
	     clients  which  do not provide an icon bitmap and are not listed in
	     the Icons list.

     UsePPosition string
	     This variable specifies whether or not twm should honor program-re-
	     quested locations (given by  the  PPosition  flag	in  the  WM_NOR-
	     MAL_HINTS	property)  in  the absence of a user-specified position.
	     The argument string may have one of three values:	"off"  (the  de-
	     fault) indicating that twm should ignore the program-supplied posi-
	     tion,  "on"  indicating that the position should be used, and "non-
	     zero" indicating that the position should used if it is other  than
	     (0,0).   The  latter  option  is  for working around a bug in older
	     toolkits.

     VirtualDesktop string
	     This variable enables the Virtual Desktop feature and specifies the
	     initial size of the desktop, either in pixels or in integral multi-
	     ples of the screen size.  The size is specified as a standard geom-
	     etry string.  If a width or height value is smaller than the  width
	     or height of the physical display, it is assumed to mean a multiple
	     of the screen size, otherwise it is assumed to be in pixels.  So to
	     get a 2x2 sized Virtual Desktop across all platforms, one could use
	     the string "2x2" to enable the desktop.

     VirtualDesktopBackgroundPixmap string
	     This  variable  specifies the filename of a image to be used as the
	     background image of the Virtual Desktop.  If  you	have  configured
	     twm  to  use xloadimage(1) to load this image, the string must be a
	     full pathname, or be in  the  image-path  in  your  ~/.xloadimagerc
	     file.  If you have not configured twm to use xloadimage(1), then it
	     will  load  a  bitmap or pixmap in the traditional fashion.  If the
	     pixmap you load is a bitmap (one plane  deep),  VirtualDesktopBack-
	     ground and VirtualDesktopForeground colors are used when construct-
	     ing the background.

     WarpCursor [{ win-list }]
	     This variable indicates that the pointer should be warped into win-
	     dows when they are deiconified.  If the optional win-list is given,
	     the pointer will only be warped when those windows are deiconified.
	     This  will  also  change the position of the virtual desktop if the
	     unmapped window wasn't visible from the actual position.

     VirtualFont font
	     This is the font used to display window names in the small  windows
	     inside  the  panner  if the ShowVirtualNames variable is specified.
	     The default font is "5x8".

     WindowRing { win-list }
	     This  variable  specifies	a  list  of  windows  along  which   the
	     f.warpring function cycles.

     WarpUnmapped
	     This  variable indicates that that the f.warpto function should de-
	     iconify any iconified windows it  encounters.   This  is  typically
	     used  to make a key binding that will pop a particular window (such
	     as xmh), no matter where it is.  The default is for f.warpto to ig-
	     nore iconified windows.

     XorValue number
	     This variable specifies the value to use when drawing  window  out-
	     lines  for moving and resizing.  This should be set to a value that
	     will result in a variety of of distinguishable colors  when  exclu-
	     sive-or'ed with the contents of the user's typical screen.  Setting
	     this  variable  to 1 often gives nice results if adjacent colors in
	     the default colormap are distinct.  By default, twm will attempt to
	     cause temporary lines to appear at the opposite end of the colormap
	     from the graphics.

     Zoom [ count ]
	     This variable indicates that outlines suggesting movement of a win-
	     dow to and from its iconified state should be displayed whenever  a
	     window  is  iconified  or deiconified.  The optional count argument
	     specifies the number of outlines to be drawn.  The default count is
	     8.

     The following variables must be set after the fonts have been assigned,  so
     it  is usually best to put them at the end of the variables or beginning of
     the bindings sections:

     DefaultFunction function
	     This variable specifies the function to be executed when a  key  or
	     button event is received for which no binding is provided.  This is
	     typically bound to f.nop, f.beep, or a menu containing window oper-
	     ations.

     WindowFunction function
	     This  variable  specifies	the function to execute when a window is
	     selected from the TwmWindows menu.  If this variable  is  not  set,
	     the window will be deiconified and raised.

BINDINGS
     After the desired variables have been set, functions may be attached title-
     buttons  and  key	and pointer buttons.  Titlebuttons may be added from the
     left or right side and appear in the titlebar from left-to-right  according
     to  the order in which they are specified.  Key and pointer button bindings
     may be given in any order.

     Titlebuttons specifications must include the name of the pixmap to  use  in
     the  button  box  and  the  function to be invoked when a pointer button is
     pressed within them:
     LeftTitleButton "bitmapname"  = function
     or
     RightTitleButton "bitmapname" = function
     The bitmapname may refer to one of the  built-in bitmaps (which are  scaled
     to  match TitleFont) by using the appropriate colon-prefixed name described
     above.

     Key and pointer button specifications must give the modifiers that must  be
     pressed, over which parts of the screen the pointer must be, and what func-
     tion  is to be invoked.  Keys are given as strings containing the appropri-
     ate keysym name; buttons are given as the keywords Button1-Button5:
     "FP1"	    = modlist : context : function
     Button1   = modlist : context : function
     The modlist is any combination of the modifier names shift, control,  lock,
     meta, mod1, mod2, mod3, mod4, or mod5 (which may be abbreviated as s, c, l,
     m, m1, m2, m3, m4, m5, respectively) separated by a vertical bar (|).  Sim-
     ilarly, the context is any combination of window, title, icon, root, frame,
     iconmgr, their first letters (iconmgr abbreviation is m), or all, separated
     by  a  vertical bar.  The function is any of the f.  keywords described be-
     low.  For example, the default startup file contains  the	following  bind-
     ings:
     Button1   =    : root	   : f.menu "TwmWindows"
     Button1   = m  : window | icon	: f.function "move-or-lower"
     Button2   = m  : window | icon	: f.iconify
     Button3   = m  : window | icon	: f.function "move-or-raise"
     Button1   =    : title	   : f.function "move-or-raise"
     Button2   =    : title	   : f.raiselower
     Button1   =    : icon	   : f.function "move-or-iconify"
     Button2   =    : icon	   : f.iconify
     Button1   =    : iconmgr : f.iconify
     Button2   =    : iconmgr : f.iconify
     A	user who wanted to be able to manipulate windows from the keyboard could
     use the following bindings:
     "F1"      =    : all	   : f.iconify
     "F2"      =    : all	   : f.raiselower
     "F3"      =    : all	   : f.warpring "next"
     "F4"      =    : all	   : f.warpto "xmh"
     "F5"      =    : all	   : f.warpto "emacs"
     "F6"      =    : all	   : f.colormap "next"
     "F7"      =    : all	   : f.colormap "default"
     "F20"	    =	 : all		: f.warptoscreen "next"
     "Left"	    = m  : all		: f.backiconmgr
     "Right"   = m | s	 : all		: f.forwiconmgr
     "Up"      = m  : all	   : f.upiconmgr
     "Down"    = m | s	 : all		: f.downiconmgr
     Twm provides many more window manipulation primitives than  can  be  conve-
     niently  stored  in  a  titlebar, menu, or set of key bindings.  Although a
     small set of defaults are supplied (unless the  NoDefaults  is  specified),
     most  users will want to have their most common operations bound to key and
     button strokes.  To do this, twm associates names with each of  the  primi-
     tives  and provides user-defined functions for building higher level primi-
     tives and menus for interactively selecting among groups of functions.

     User-defined functions contain the name by which  they  are  referenced  in
     calls to f.function and a list of other functions to execute.  For example:
     Function "move-or-lower" { f.move f.deltastop f.lower }
     Function "move-or-raise" { f.move f.deltastop f.raise }
     Function "move-or-iconify"    { f.move f.deltastop f.iconify }
     Function "restore-colormap"   { f.colormap "default" f.lower }
     The  function  name must be used in f.function exactly as it appears in the
     function specification.

     In the descriptions below, if the function is said to operate  on	the  se-
     lected  window, but is invoked from a root menu, the cursor will be changed
     to the Select cursor and the next window to receive a button press will  be
     chosen:

     ! stringThis is an abbreviation for f.exec string.

     f.autoraise
	     This  function toggles whether or not the selected window is raised
	     whenever entered by the pointer.  See the description of the  vari-
	     able AutoRaise.

     f.backiconmgr
	     This  function warps the pointer to the previous column in the cur-
	     rent icon manager, wrapping back to the previous row if necessary.

     f.beep  This function sounds the keyboard bell.

     f.bottomzoom
	     This function is similar to the f.fullzoom  function,  but  resizes
	     the window to fill only the bottom half of the screen.

     f.circledown
	     This function lowers the top-most window that occludes another win-
	     dow.

     f.circleup
	     This function raises the bottom-most window that is occluded by an-
	     other window.

     f.colormap string
	     This  function  rotates  the  colormaps  (obtained from the WM_COL-
	     ORMAP_WINDOWS property on the window) that twm  will  display  when
	     the pointer is in this window.  The argument string may have one of
	     the following values: "next", "prev", and "default".

     f.constrainedmove
	     This  function  will  have  approximately the same behavior, except
	     that the move will be constrained without need for double clicking.

     f.deiconify
	     This function deiconifies the selected window.  If  the  window  is
	     not an icon, this function does nothing.

     f.deleteThis  function  sends  the WM_DELETE_WINDOW message to the selected
	     window if the client  application	has  requested	it  through  the
	     WM_PROTOCOLS  window  property.  The application is supposed to re-
	     spond to the message by removing the indicated window.  If the win-
	     dow has not requested WM_DELETE_WINDOW messages, the keyboard  bell
	     will  be rung indicating that the user should choose an alternative
	     method.

     f.deltastop
	     This function allows a user-defined function to be aborted  if  the
	     pointer has been moved more than MoveDelta pixels.  See the example
	     definition  given	for Function "move-or-raise" at the beginning of
	     the section.

     f.destroy
	     This function instructs the X server to close the	display  connec-
	     tion  of  the client that created the selected window.  This should
	     only be used as a last resort for shutting down runaway clients.

     f.downiconmgr
	     This function warps the pointer to the next row in the current icon
	     manger, wrapping to the beginning of the next column if necessary.

     f.exec string
	     This function passes the argument string to /bin/sh for  execution.
	     In multiscreen mode, if string starts a new X client without giving
	     a display argument, the client will appear on the screen from which
	     this function was invoked.

     f.focus This  function  toggles the keyboard focus of the server to the se-
	     lected window, changing the focus rule from pointer-driven if  nec-
	     essary.   If the selected window already was focused, this function
	     executes an f.unfocus.

     f.forcemove
	     This function is like f.move except that it ignores the DontMoveOff
	     variable.

     f.forwiconmgr
	     This function warps the pointer to the next column in  the  current
	     icon  manager,  wrapping to the beginning of the next row if neces-
	     sary.

     f.fullzoom
	     This function resizes the selected window to the full size  of  the
	     display  or  else	restores the original size if the window was al-
	     ready zoomed.

     f.function string
	     This function executes the  user-defined  function  whose	name  is
	     specified by the argument string.

     f.hbzoomThis function is a synonym for f.bottomzoom.

     f.hideiconmgr
	     This function unmaps the current icon manager.

     f.horizoom
	     This variable is similar to the f.zoom function except that the se-
	     lected window is resized to the full width of the display.

     f.htzoomThis function is a synonym for f.topzoom.

     f.hzoom This function is a synonym for f.horizoom.

     f.iconify
	     This function iconifies or deiconifies the selected window or icon,
	     respectively.

     f.identify
	     This  function  displays  a summary of the name and geometry of the
	     selected window.  Clicking the pointer or pressing  a  key  in  the
	     window will dismiss it.

     f.lefticonmgr
	     This  function  similar  to f.backiconmgr except that wrapping does
	     not change rows.

     f.leftzoom
	     This variable is similar to the f.bottomzoom  function  but  causes
	     the  selected  window  is only resized to the left half of the dis-
	     play.

     f.lower This function lowers the selected window.

     f.menu string
	     This function invokes the menu specified by  the  argument  string.
	     Cascaded  menus  may  be  built  by  nesting  calls  to  f.menu and
	     f.piemenu.

     f.move  This function drags an outline of the selected window (or the  win-
	     dow  itself  if  the OpaqueMove variable is set) until the invoking
	     pointer button is released.  Double clicking within the  number  of
	     milliseconds  given by ConstrainedMoveTime warps the pointer to the
	     center of the window and constrains the move to be either	horizon-
	     tal  or vertical depending on which grid line is crossed.	To abort
	     a move, press another button before releasing the first button.

     f.nexticonmgr
	     This function warps the pointer to the next icon manager containing
	     any windows on the current or any succeeding screen.

     f.nop   This function does nothing and is typically used with the	Default-
	     Function or WindowFunction variables or to introduce blank lines in
	     menus.

     f.opaquemove
	     This  function  will exact as does f.move, but it will do an opaque
	     move regardless of whether OpaqueMove is set or not.

     f.pannerThis function toggles the display of the panner window.

     f.piemenu string
	     This function invokes  the  pie  menu  specified  by  the	argument
	     string.   Cascaded menus may be built by nesting calls to f.piemenu
	     and f.menu.

     f.previconmgr
	     This function warps the pointer to the previous icon  manager  con-
	     taining any windows on the current or preceding screens.

     f.quit  This  function causes twm to restore the window's borders and exit.
	     If twm is the first client invoked from xdm, this will result in  a
	     server reset.

     f.raise This function raises the selected window.

     f.raiselower
	     This function raises the selected window to the top of the stacking
	     order  if	it is occluded by any windows, otherwise the window will
	     be lowered.

     f.refresh
	     This function causes all windows to be refreshed.

     f.relativeresize
	     This function will do a resize and behave as if  AutoRelativeResize
	     were set, whether it is or not

     f.resizeThis function displays an outline of the selected window.	Crossing
	     a	border (or setting AutoRelativeResize) will cause the outline to
	     begin to rubber band until the invoking  button  is  released.   To
	     abort  a  resize,	press  another button before releasing the first
	     button.

     f.restart
	     This function kills and restarts twm.

     f.righticonmgr
	     This function is similar to f.nexticonmgr except that wrapping does
	     not change rows.

     f.rightzoom
	     This variable is similar to the f.bottomzoom function  except  that
	     the  selected  window is only resized to the right half of the dis-
	     play.

     f.saveyourself
	     This function sends a WM_SAVEYOURSELF message to the selected  win-
	     dow  if  it  has  requested  the message in its WM_PROTOCOLS window
	     property.	Clients that accept this message are supposed to  check-
	     point  all  state associated with the window and update the WM_COM-
	     MAND property as specified in the ICCCM.  If  the	selected  window
	     has not selected for this message, the keyboard bell will be rung.

     f.scroll string
	     This  function  scrolls  the  Virtual Desktop to a specific logical
	     screen quadrant.  The string parameter is a geometry  specification
	     indicating  how  to  scroll the desktop.  For example, "+0+0" would
	     scroll the desktop to the home location and "+2+1" would scroll the
	     desktop to the quadrant in the third logical column and the  second
	     row.

     f.scrollback
	     This  function scrolls the Virtual Desktop back to its previous lo-
	     cation.

     f.scrolldown
	     This function scrolls the Virtual Desktop down a  fraction  of  the
	     height of the screen specified in ScrollDistanceY.

     f.scrollhome
	     This function scrolls the Virtual Desktop to the home location.

     f.scrollleft
	     This  function  scrolls  the Virtual Desktop left a fraction of the
	     width of the screen specified in ScrollDistanceX.

     f.scrollright
	     This function scrolls the Virtual Desktop right a fraction  of  the
	     width of the screen specified in ScrollDistanceX.

     f.scrollup
	     This  function scrolls the Virtual Desktop up one a fraction of the
	     height of the screen specified in ScrollDistanceY.

     f.showiconmgr
	     This function maps the current icon manager.

     f.sorticonmgr
	     This function sorts the entries in the current icon manager  alpha-
	     betically.  See the variable SortIconManager.

     f.stick This funtion toggles making a window sticky.

     f.title This function provides a centered, unselectable item in a menu def-
	     inition.  It should not be used in any other context.

     f.topzoom
	     This  variable  is similar to the f.bottomzoom function except that
	     the selected window is only resized to the top half of the display.

     f.unfocus
	     This function resets the focus back to pointer-driven.  This should
	     be used when a focused window is no longer desired.

     f.upiconmgr
	     This function warps the pointer to the previous row in the  current
	     icon manager, wrapping to the last row in the same column if neces-
	     sary.

     f.vlzoomThis function is a synonym for f.leftzoom.

     f.vrzoomThis function is a synonym for f.rightzoom.

     f.warpring string
	     This  function warps the pointer to the next or previous window (as
	     indicated by the argument string, which may be  "next"  or  "prev")
	     specified in the WindowRing variable.

     f.warpto string
	     This  function  warps the pointer to the window which has a name or
	     class that matches string.  If the window is iconified, it will  be
	     deiconified  if  the  variable WarpUnmapped is set or else ignored.
	     In addition to warping the pointer to the window the Virtual  Desk-
	     top will be scrolled to the logical quadrant that contains the win-
	     dow.

     f.warptoiconmgr string
	     This  function  warps the pointer to the icon manager entry associ-
	     ated with the window containing the pointer  in  the  icon  manager
	     specified	by  the  argument string.  If string is empty (i.e. ""),
	     the current icon manager is chosen.

     f.warptoscreen string
	     This function warps the pointer to the screen specified by the  ar-
	     gument  string.  String may be a number (e.g. "0" or "1"), the word
	     "next" (indicating the current screen plus 1, skipping over any un-
	     managed screens), the word "back" (indicating  the  current  screen
	     minus  1,	skipping over any unmanaged screens), or the word "prev"
	     (indicating the last screen visited.

     f.winrefresh
	     This function is similar to the f.refresh function except that only
	     the selected window is refreshed.

     f.zoom  This function is similar to the f.fullzoom  function,  except  that
	     the only the height of the selected window is changed.

MENUS
     Functions	may  be  grouped  and  interactively selected using pop-up (when
     bound to a pointer button) or pull-down (when associated with  a  titlebut-
     ton)  linear  menus or pie menus.	Normal menus have a vertical layout, and
     pie menus have a circular layout.	Each  menu  specification  contains  the
     name of the menu as it will be referred to by f.menu or f.piemenu, optional
     initial  direction  (for  pie menus), optional default foreground and back-
     ground colors, the list of item names and the functions they should invoke,
     and optional foreground and background colors for individual items:
     Menu "menuname" [ ("deffore":"defback") ]
     {
	  string1   [ ("fore1":"backn")]     function1
	  string2   [ ("fore2":"backn")]     function2
	       .
	       .
	       .
	  stringN   [ ("foreN":"backN")]     functionN
     }

     The menuname is case-sensitive.  The optional deffore and defback arguments
     specify the foreground and background colors used on  a  color  display  to
     highlight	menu entries.  The string portion of each menu entry will be the
     text which will appear in the menu.  The optional fore and  back  arguments
     specify  the  foreground  and  background colors of the menu entry when the
     pointer is not in the entry.  These colors will only be  used  on	a  color
     display.	The default is to use the colors specified by the MenuForeground
     and MenuBackground variables.  The function portion of the  menu  entry  is
     one  of  the functions, including any user-defined functions, or additional
     menus.

     There is a special menu named TwmWindows which contains the names of all of
     the client and twm-supplied windows.  Selecting an  entry	will  cause  the
     WindowFunction  to  be  executed  on that window.	If WindowFunction hasn't
     been set, the window will be deiconified and raised.  If the Virtual  Desk-
     top  is  enabled, the desktop will also be scrolled to the logical quadrant
     that contains the windows.

     Pie menus are defined in the same way as linear menus,  using  the  PieMenu
     command  instead of the Menu command.  They have an extra optional argument
     specifying the direction of the first label, in degrees.  Subsequent labels
     are evenly spaced in a circle around the center of the menu, in a	counter-
     clockwise direction.  The default direction if not specified is 0, which is
     to the right.
     PieMenu "piemenuname" [ ("deffore":"defback") ] [ @ degrees ]
     {
	  string1   [ ("fore1":"backn")]     function1
	  string2   [ ("fore2":"backn")]     function2
	       .
	       .
	       .
	  stringN   [ ("foreN":"backN")]     functionN
     }

ICONS
     Twm supports several different ways of manipulating iconified windows.  The
     common  pixmap-and-text  style  may  be  laid  out by hand or automatically
     arranged as described by the IconRegion variable.	 In  addition,	a  terse
     grid  of  icon names, called an icon manager, provides a more efficient use
     of screen space as well as the ability to navigate among windows  from  the
     keyboard.

     An  icon manager is a window that contains names of selected or all windows
     currently on the display.	In addition to the window name, a  small  button
     using  the default iconify symbol will be displayed to the left of the name
     when the window is iconified.  By default, clicking on an entry in the icon
     manager performs f.iconify.  To change the actions taken in the  icon  man-
     ager, use the the iconmgr context when specifying button and keyboard bind-
     ings.

     Moving the pointer into the icon manager also directs keyboard focus to the
     indicated	window	(setting  the focus explicitly or else sending synthetic
     events NoTitleFocus is set).  Using the f.upiconmgr, f.downiconmgr f.lefti-
     conmgr, and f.righticonmgr functions, the input focus can	be  changed  be-
     tween windows directly from the keyboard.

BUGS
     The  resource  manager  should  have been used instead of all of the window
     lists.

     The IconRegion variable should take a list.

     Double clicking very fast to get the constrained move function  will  some-
     times cause the window to move, even though the pointer is not moved.

     If  IconifyByUnmapping  is on and windows are listed in IconManagerDontShow
     but not in DontIconifyByUnmapping, they may be lost if they  are  iconified
     and no bindings to f.menu "TwmWindows" or f.warpto are setup.

FILES
      $HOME/.piewmrc.<screen number>
      $HOME/.piewmrc
      $HOME/.twmrc.<screen number>
      $HOME/.twmrc
      /usr/lib/X11/twm/system.twmrc

ENVIRONMENT VARIABLES
     DISPLAY This  variable  is  used to determine which X server to use.  It is
	     also set during f.exec so that  programs  come  up  on  the  proper
	     screen.

     HOME    This  variable  is  used  as the prefix for files that begin with a
	     tilde and for locating the twm startup file.

SEE ALSO
     X(1), Xserver(1), xdm(1), xrdb(1), m4(1)

COPYRIGHT
     Portions copyright 1988 Evans & Sutherland Computer  Corporation;	portions
     copyright	1989  Hewlett-Packard Company and the Massachusetts Institute of
     Technology,  See X(1) for a full statement of rights and permissions.

AUTHORS
     Tom LaStrange, Solbourne Computer; Chris Ross, University of Maryland;  Jim
     Fulton,  MIT  X  Consortium;	Steve Pitschke, Stardent Computer; Keith
     Packard, MIT X Consortium;   Dave Payne, Apple Computer; Don Hopkins, CMU.

     Virtual Desktop added by Tom LaStrange, Solbourne Computer.

     Pie menus designed and implemented by Don Hopkins, CMU.

X Version 11			    Release 5				PIEWM(1)

home | help