


     Jan 28, 1994                                                 FVWM(1.2)



     NAME
          fvwm - F(?) Virtual Window Manager for X11

     SYNOPSIS
          fvwm [ _o_p_t_i_o_n_s ]

     DESCRIPTION
          _F_v_w_m is a window manager for X11. It is a derivative of _t_w_m,
          redesigned to minimize memory consumption, provide a 3-D look to
          window frames, and provide a simple virtual desktop.  Memory con-
          sumption is estimated at about one-half to one-third the memory
          consumption of _t_w_m, due primarily to a redesign of _t_w_m's method
          of storing mouse bindings. In addition, many of the configurable
          options of _t_w_m have been removed.

          The name "FVWM" used to stand for something, but I forgot what.
          (Feeble, famous, foobar? It doesn't really matter, this is an
          acronym based society anyway.)


     SPECIAL NOTE FOR XFREE86 USERS
          XFree86 provides a virtual screen whose operation can be confus-
          ing when used in conjunction with _f_v_w_m. With XFree86 all windows
          which appear on the virtual screen actually get drawn into video
          memory (whether or not they appear on the physical screen), so
          the virtual screen size is limited by available video memory.

          With _f_v_w_m's virtual desktop, windows which do not appear on the
          screen do not actually get drawn into video RAM. The size of the
          virtual desktop is limited to about 32,000 by 32,000 pixels, but
          it is probably impractical to use a virtual desktop more than
          about 5 times the visible screen in each direction.  Note that
          memory usage is a function of the number of windows which exist -
          the size of the desktop makes no difference.

          When becoming familiar with _f_v_w_m it is recommended that you dis-
          able XFree86's virtual screen by setting the virtual screen size
          to the physical screen size. After you become familiar with _f_v_w_m
          you may want to re-enable XFree86's virtual screen.


     COPYRIGHTS
          Since _f_v_w_m is derived from _t_w_m code it shares _t_w_m's copyrights.

          _f_v_w_m is copyright 1988 by Evans and Sutherland Computer Corpora-
          tion, Salt Lake City, Utah, and 1989 by the Massachusetts Insti-
          tute of Technology, Cambridge, Massachusetts, All rights
          reserved. It is also copyright 1993 and 1994 by Robert Nation.

          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


                                                                          1






     FVWM(1.2)                                                 Jan 28, 1994


          notice appear in supporting documentation, and that the names of
          Evans & Sutherland and M.I.T. not be used in advertising in pub-
          licity pertaining to distribution of the software without
          specific, written prior permission.

          ROBERT NATION, EVANS & SUTHERLAND, AND M.I.T. DISCLAIM ALL WAR-
          RANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WAR-
          RANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL EVANS &
          SUTHERLAND OR M.I.T. BE LIABLE FOR ANY SPECIAL, INDIRECT OR CON-
          SEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
          OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLI-
          GENCE OR OTHER TORTUOUS ACTION, ARISING OUT OF OR IN CONNECTION
          WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.


     ANATOMY OF A WINDOW
          _F_v_w_m puts a decorative border around most windows. This border
          consists of a bar on each side and a small "L" shaped section on
          each corner.  There is an additional top bar called the title bar
          which is used to display the name of the window. In addition,
          there are up to 10 title-bar buttons.  The top, side, and bottom
          bars are collectively known as the side-bars.  The corner pieces
          are called the frame.

          Unless the standard defaults files are modified, pressing mouse
          button 1 in the title or side-bars will begin a move operation on
          the window. Pressing button 1 in the corner frame pieces will
          begin a resize operation. Pressing button 2 anywhere in the
          border brings up an extensive list of window operations.

          Up to ten title-bar buttons may exist. Their use is completely
          user definable.  The default configuration has a title-bar button
          on each side of the title-bar. The one on the left is used to
          bring up a list of window options, regardless of which mouse but-
          ton is used. The one on the right is used to iconify the window.
          The number of title-bar buttons used depends on which ones have
          mouse actions bound to them. See the section on the "Mouse" con-
          figuration parameter below.



     THE VIRTUAL DESKTOP
          _F_v_w_m provides multiple virtual desktops for users who wish to use
          them. The screen is a viewport onto a desktop which may be larger
          than the screen. Several distinct desktops can be accessed (con-
          cept: one desktop for each project, or one desktop for each
          application, when view applications are distinct).  Since each
          desktop can be larger than the physical screen, windows which are
          larger than the screen or large groups of related windows can
          easily be viewed.

          The size of the virtual desktops can be specified at start-up.
          All virtual desktops must be the same size. The total number of
          distinct desktops need not be specified, but is limited to


     2






     Jan 28, 1994                                                 FVWM(1.2)


          approximately 4 billion total. All windows on the current desktop
          can be displayed in a Pager, a miniature view of the current
          desktop. Windows which are not on the current desktop can be
          listed, along with their geometries, in a window list, accessible
          as a pop-up menu.

          "Sticky" windows are windows which transcend the virtual desktop
          by "Sticking to the screen's glass." They always stay put on the
          screen.  This is convenient for things like clocks and xbiff's,
          so you only need to run one such gadget and it always stays with
          you.

          Window geometries are specified relative to the current viewport.
          That is:

               xterm -geometry +0+0

          will always show up in the upper-left hand corner of the visible
          portion of the screen. It is permissible to specify geometries
          which place windows on the virtual desktop, but off the screen.
          For example, if the visible screen is 1000 by 1000 pixels, and
          the desktop size is 3x3, and the current viewport is at the upper
          left hand corner of the desktop, then invoking:

               xterm -geometry +1000+1000

          will place the window just off of the lower right hand corner of
          the screen. It can be found by moving the mouse to the lower
          right hand corner of the screen and waiting for it to scroll into
          view.  There is currently no way to cause a window to map onto a
          desktop other than the currently active desk.

          A geometry specified as something like:

               xterm -geometry -5-5

          will generally place the window's lower right hand corner 5 pix-
          els from the lower right corner of the visible portion of the
          screen. Not all applications support window geometries with nega-
          tive offsets.

          Some applications, like xterm and xfontsel, allow the user to
          specify the start-up desk on the command line:

               xterm -xrm "*Desk:1"

          will start an xterm on desk number 1. Not all applications under-
          stand this option, however.


     INITIALIZATION
          During initialization, _f_v_w_m will search for a configuration file
          which describes key and button bindings, and a few other things.
          The format of these files will be described later. First, _f_v_w_m


                                                                          3






     FVWM(1.2)                                                 Jan 28, 1994


          will search for a file named .fvwmrc in the users home directory.
          Failing that, it will look for /usr/lib/X11/fvwm/system.fvwmrc
          for system-wide defaults. If that file is not found, _f_v_w_m will
          exit.

          _F_v_w_m will set two environment variables which will be inherited
          by its children. These are $DISPLAY which describes the display
          on which _f_v_w_m is running. $DISPLAY may be unix:0.0 or :0.0, which
          doesn't work too well when passed through rsh to another machine,
          so $HOSTDISPLAY will also be set and will use a network-ready
          description of the display.  $HOSTDISPLAY will always use the
          TCP/IP transport protocol (even for a local connection) so
          $DISPLAY should be used for local connections, as it may use
          Unix-domain sockets, which are faster.


     SHAPED WINDOWS
          If you typically use shaped windows such as xeyes or oclock, you
          have several options. You can make them all undecorated (NoBorder
          oclock and NoTitle oclock, for example) or you can use the
          default configuration and leave them decorated, in which case a
          decorative border and a solid-color backdrop are shown. Alter-
          nately, you can compile in the SHAPE extensions by changing a
          flag in the Makefile, in which case you get the shaped window
          with no backdrop, and a title bar floats above the window. The
          shaped window extensions increase the window manager's memory
          consumption by about 60 Kbytes when no shaped windows are present
          but have little effect when shaped windows are present.


     ICONS
          The basic _F_v_w_m configuration uses monochrome bitmap icons, simi-
          lar to _t_w_m. If XPM extensions are compiled in, then color icons
          similar to ctwm, MS-Windows, or the Macintosh icons can be used.
          In order to use these options you will need the XPM package, as
          described in the Makefile.noImake and the Imakefile.

          If both the SHAPE and XPM options are compiled in you will get
          shaped color icons, which are very spiffy.


     MODULES
          A module is a separate program which runs as a separate Unix pro-
          cess but transmits commands to _f_v_w_m to execute. Future releases
          are expected to provide a means for these modules to extract win-
          dow information from _f_v_w_m.  Users can write their own modules to
          do any weird or bizarre manipulations without affecting the
          integrity of _f_v_w_m itself.

          Modules MUST be spawned by _f_v_w_m so that it can set up two pipes
          for _f_v_w_m and the module to communicate with. The pipes will
          already be open for the module when it starts and the file
          descriptors for the pipes are provided as command line arguments.



     4






     Jan 28, 1994                                                 FVWM(1.2)


          Modules can be spawned during _f_v_w_m initialization via the Module
          option, or at any time during the X session by use of the Module
          built-in. Modules can exist for the duration of the X session, or
          can perform a single task and exit. If the module is still active
          when _f_v_w_m is told to quit, then _f_v_w_m will close the communication
          pipes and wait to receive a SIGCHLD from the module, indicating
          that it has detected the pipe closure and has exited. If modules
          fail to detect the pipe closure _f_v_w_m will exit after approxi-
          mately 30 seconds anyway. The number of simultaneously executing
          modules is limited by the operating system's maximum number of
          simultaneously open files, usually between 60 and 256.

          Modules simply transmit text commands to the _f_v_w_m built-in com-
          mand engine. Text commands are formatted just as in the case of a
          mouse binding in the .fvwmrc setup file. Certain auxiliary infor-
          mation is also transmitted, as in the sample module GoodStuff.
          The GoodStuff module is documented in its own man page.


     ICCCM COMPLIANCE
          _F_v_w_m attempts to be ICCCM 1.1 compliant. As of this (1.20l)
          colormap handling is not completely ICCCM compliant. In addition,
          ICCCM states that it should be possible for applications to
          receive ANY keystroke, which is not consistent with the keyboard
          shortcut approach used in _f_v_w_m and most other window managers.


     M4 PREPROCESSING

          If _f_v_w_m is compiled with the M4 option, _f_v_w_m uses _m_4(_1) to
          preprocess its setup files before parsing. This way you can use
          _m_4 macros to perform operations at runtime.  This makes it very
          easy to work with different displays with different characteris-
          tics.

          For example, depending on your mood, you might want different
          color schemes.  One way of doing this is by using the -_m_4_o_p_t to
          specify your mood.  For a sunny mood use -_m_4_o_p_t -_D_S_u_n_n_y; for a
          dark mood use -_m_4_o_p_t -_D_D_a_r_k.  Your .fvwmrc file might then con-
          tain:

               ifdef(`Sunny',`
               StdForeColor        Black
               StdBackColor        LightSkyBlue
               HiForeColor         yellow
               HiBackColor         PeachPuff1
               PagerBackColor      BlanchedAlmond ')

               ifdef(`Dark',`
               StdForeColor        Black
               StdBackColor        #60a0c0
               HiForeColor         black
               HiBackColor         #c06077
               PagerBackColor      #5c54c0


                                                                          5






     FVWM(1.2)                                                 Jan 28, 1994


               PagerForeColor      orchid
               StickyForeColor          Black
               StickyBackColor          #60c0a0 ')


          The following _m_4 symbols are predefined by _f_v_w_m:

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

          CLASS                   Your visual class.  Will return one of
                                  StaticGray, GrayScale, StaticColor, Pseu-
                                  doColor, TrueColor, DirectColor, or, if
                                  it cannot determine what you have, Non-
                                  Standard.

          CLIENTHOST              The machine that is running the clients.

          COLOR                   This will be either 'Yes' or 'No'.  This
                                  is just a wrapper around the CLASS defin-
                                  ition.  Returns 'Yes' on *Color and 'No'
                                  on StaticGray and GrayScale.

          FVWMDIR                 This is set to the path where the modules
                                  were configured to be installed.

          FVWM_VERSION            This is a string containing the version
                                  of _f_v_w_m.

          HEIGHT                  The height of your display in pixels.

          HOME                    The user's home directory.  Obtained from
                                  the environment.

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

          OPTIONS                 This is a string of compile time options
                                  used.  Each option is separated from the
                                  other by a space.

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

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

          REVISION                The X minor protocol revision.  As seen
                                  by ProtocolRevision(3).



     6






     Jan 28, 1994                                                 FVWM(1.2)


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

          TWM_TYPE                Tells which _t_w_m offshoot is running.  It
                                  will always be set to the string "fvwm"
                                  in this program.  This is useful for pro-
                                  tecting parts of your ._t_w_m_r_c file that
                                  _f_v_w_m proper won't understand (like
                                  WorkSpaces) so that it is still usable
                                  with other _t_w_m programs.

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

          VENDOR                  The vendor of your X server.  For exam-
                                  ple: MIT X Consortium.

          VERSION                 The X major protocol version.  As seen by
                                  ProtocolVersion(3).

          WIDTH                   The width of your display in pixels.

          X_RESOLUTION            The X resolution of your display in pix-
                                  els per meter.

          Y_RESOLUTION            The Y resolution of your display in pix-
                                  els per meter.

          You may well find that if you research the _m_4(_1) manual well and
          understand the power of _m_4, this will be a very useful and power-
          ful tool.  But if you use any of the symbols which are predefined
          by _m_4, you are in severe danger!  For example, Sun's _m_4 prede-
          fines include, so if you use that name in your .fvwmrc, you are
          out of luck.  The correct solution to this problem is to put a
          set of quotes around the troublesome word:  `include'.

          To help alleviate this problem, the following options may be use-
          ful.  To change the quoting characters used by _m_4, use the
          options -_m_4-_s_q_u_o_t_e and -_m_4-_e_q_u_o_t_e.  Be sure to specify both
          options otherwise _m_4 will be confused.  When these are given, a
          _c_h_a_n_g_e_q_u_o_t_e macro is given before the users fvwmrc file is pro-
          cessed.

          NOTE: Some versions of _m_4 are broken with respect to changing
          quoting characters and included files.  When the quoting strings
          are longer than one character, the macro "include(<<file>>)",
          where "<<" and ">>" are the quoting characters, contains extra
          characters around the contents of the included file.  This will
          confuse fvwm.  SunOS 4.1.3 is known to have this problem.

          If you are using GNU _m_4 an additional option is available.  By
          specifying -_m_4-_p_r_e_f_i_x when starting _f_v_w_m, _m_4 is instructed to
          prefix all builtin macros with _m_4_.  Thus, _i_n_c_l_u_d_e becomes
          _m_4__i_n_c_l_u_d_e.


                                                                          7






     FVWM(1.2)                                                 Jan 28, 1994


          The availability of the m4 preprocessing is subject to the compi-
          lation define M4.


     OPTIONS
          These are the command line options that are recoginzed by _f_v_w_m:

          -f _c_o_n_f_i_g__f_i_l_e
               Causes _f_v_w_m to use _c_o_n_f_i_g__f_i_l_e in the user's home directory
               instead of .fvwmrc as the window manager configuration file.

          -debug
               Puts X transactions in synchronous mode, which dramatically
               slows things down, but guarantees that _f_v_w_m's internal error
               messages are correct.

          -d _d_i_s_p_l_a_y_n_a_m_e
               Manage the display called "displayname" instead of the name
               obtained from the environment variable $DISPLAY.

          -s   On a multi-screen display, run _f_v_w_m only on the screen named
               in the $DISPLAY environment variable or provided through the
               -d option. Normally, _f_v_w_m will attempt to start up on all
               screens of a multi-screen display.

          -version
               Print the version of _f_v_w_m to stderr.

          The following options are available only if fvwm is compiled with
          the M4 option.

          -no-m4
               Do not use _m_4 to preprocess the .fvwmrc.  The default is to
               preprocess the startup file using _m_4(_1).

          -m4-prefix
               If GNU _m_4 is available, cause _m_4 to prefix all builtin com-
               mands with _m_4_.

          -m4opt _o_p_t_i_o_n
               Pass this option to _m_4.  The _o_p_t_i_o_n can be any string of
               characters without spaces.  This option can occur multiple
               times.  If GNU _m_4 is available, DO NOT pass the -_P option
               here.  Use -m4-prefix instead.

          -m4-squote _s_t_r_i_n_g
               Use this given string as the starting quote characters.  You
               must also specify -m4-equote.

          -m4-equote _s_t_r_i_n_g
               Use this given string as the ending quote characters.  You
               must also specify -m4-squote.

          -m4prog _p_a_t_h


     8






     Jan 28, 1994                                                 FVWM(1.2)


               Use _p_a_t_h as the location of the desired m4 processor.  By
               default, m4prog is set to "m4" which must exist somewhere on
               the user's path.  This option allows the user to explicitly
               choose the version of m4 to use.


     CONFIGURATION FILES
          The configuration file is used to describe mouse and button bind-
          ings, colors, the virtual display size, and related items. This
          section describes the configuration options. Lines beginning with
          '#' will be ignored by _f_v_w_m. Lines starting with '*' are expected
          to contain module configuration commands (rather than configura-
          tion commands for _f_v_w_m itself).


          AppsBackingStore
               Causes application windows to request backing store. This
               option compromises the ICCCM compliance of the window
               manager. While this option can speed things up in an X-
               terminal, where redraws of windows are expensive, it may not
               help much on regular workstations.


          AutoRaise _d_e_l_a_y
               Enables auto-raising of windows and specifies the time delay
               (in milliseconds) between when a window acquires the input
               focus and when it is automatically raised. This option works
               in focus-follows-mouse mode, and in click-to-focus mode if
               the focus is changed by clicking in the application window
               instead of a decoration window. In click-to-focus mode, you
               can suppress the raise-on-focus behavior by specifying a
               negative delay value.


          BackingStore
               Causes _f_v_w_m decorations to request backing store. See the
               discussion on AppsBackingStore.


          BoundaryWidth _W_i_d_t_h
               Changes the boundary width on decorated windows to the
               specified value.  The default is 6 pixels.

               The Style command provides another (more general) method for
               specifying BoundaryWidth.


          ButtonStyle _b_u_t_t_o_n# _W_i_d_t_hx_H_e_i_g_h_t
               Defines the rectangular decoration shape to be used in a
               title-bar button.  _b_u_t_t_o_n# is the title-bar button number,
               and is between 0 and 9.  A description of title-bar button
               numbers is given in the Mouse section below.  Width is the
               percentage of the full button width which is to be used.
               Height is the percentage of the full height to be used.


                                                                          9






     FVWM(1.2)                                                 Jan 28, 1994


               Negative numbers cause the shading to be inverted.

               And that's not all! If you use a line like:

                    ButtonStyle : 2 4 50x30@1 70x70@0 30x70@0 50x30@1

               then the button 2 decoration will use a 4-point pattern con-
               sisting of a line from (x=50,y=30) to (70,70) in the shadow
               color (@0), and then to (30,70) in the shadow color, and
               finally to (50,30) in the highlight color (@1). Is that too
               confusing? See the sample system.fvwmrc.


          CenterOnCirculate
               When circulating, the desktop page containing the window
               which the pointer is moving to is automatically selected. If
               CenterOnCirculate is selected then _f_v_w_m will do its best to
               center the target window in the desktop viewport, rather
               than just lining up to the closest page.


          CirculateSkip _w_i_n_d_o_w_n_a_m_e
               Causes windows with the indicated name to be skipped over
               when the circulate-up or circulate-down functions are
               invoked. _w_i_n_d_o_w_n_a_m_e can be a window's name or its class.

               The Style command provides another (more general) method for
               specifying CirculateSkip.


          CirculateSkipIcons
               Causes circulate and warp operations to skip over iconified
               windows.


          ClickTime _d_e_l_a_y
               Specifies the maximum delay (in milliseconds) between a but-
               ton press and a button release for the Function built-in to
               consider the action a mouse click. The default delay is 150
               milliseconds.


          ClickToFocus
               Normally keyboard input goes to the window the mouse pointer
               is in. If this option is set the keyboard input stays with
               one window until the mouse is clicked with the pointer posi-
               tioned in a new window.


          Cursor  _c_u_r_s_o_r__n_u_m _c_u_r_s_o_r__t_y_p_e
               This provides a very awkward way of changing cursor styles.
               _C_u_r_s_o_r__n_u_m tells which cursor you are changing, and is a
               number between 0 and 12, as follows:



     10






     Jan 28, 1994                                                 FVWM(1.2)


                  0 POSITION     - used when initially placing windows.
                  1 TITLE        - used in a window title-bar.
                  2 DEFAULT      - used in windows that don't set their cursor.
                  3 SYS          - used in one of the title-bar buttons.
                  4 MOVE         - used when moving or resizing windows.
                  5 WAIT         - used during an EXEC builtin command.
                  6 MENU         - used in menus.
                  7 SELECT       - used for various builtin commands such as iconify.
                  8 DESTROY      - used for DESTROY and DELETE built-ins.
                  9 TOP          - used in the top side-bar of a window.
                 10 RIGHT        - used in the right side-bar of a window.
                 11 BOTTOM       - used in the bottom side-bar of a window.
                 12 LEFT         - used in the left side-bar of a window.
                 13 TOP_LEFT     - used in the top left corner of a window.
                 14 TOP_RIGHT    - used in the top right corner of a window.
                 15 BOTTOM_LEFT  - used in the bottom left corner of a window.
                 16 BOTTOM_RIGHT - used in the bottom right corner of a window.

              The _c_u_r_s_o_r__t_y_p_e argument is a number which tells the cursor
              shape to use. The available numbers can be found in
              /usr/include/X11/cursorfont.h and are currently even numbers
              between 0 and 152. At the current time, the following cursor
              types are available:

                0   X_cursor                  2   arrow
                4   based_arrow_down          6   based_arrow_up
                8   boat                      10  bogosity
                12  bottom_left_corner        14  bottom_right_corner
                16  bottom_side               18  bottom_tee
                20  box_spiral                22  center_ptr
                24  circle                    26  clock
                28  coffee_mug                30  cross
                32  cross_reverse             34  crosshair
                36  diamond_cross             38  dot
                40  dotbox                    42  double_arrow
                44  draft_large               46  draft_small
                48  draped_box                50  exchange
                52  fleur                     54  gobbler
                56  gumby                     58  hand1
                60  hand2                     62  heart
                64  icon                      66  iron_cross
                68  left_ptr                  70  left_side
                72  left_tee                  74  leftbutton
                76  ll_angle                  78  lr_angle
                80  man                       82  middlebutton
                84  mouse                     86  pencil
                88  pirate                    90  plus
                92  question_arrow            94  right_ptr
                96  right_side                98  right_tee
                100 rightbutton               102 rtl_logo
                104 sailboat                  106 sb_down_arrow
                108 sb_h_double_arrow              110 sb_left_arrow
                112 sb_right_arrow            114 sb_up_arrow
                116 sb_v_double_arrow              118 shuttle


                                                                         11






     FVWM(1.2)                                                 Jan 28, 1994


                120 sizing                    122 spider
                124 spraycan                  126 star
                128 target                    130 tcross
                132 top_left_arrow            134 top_left_corner
                136 top_right_corner               138 top_side
                140 top_tee                   142 trek
                144 ul_angle                  146 umbrella
                148 ur_angle                  150 watch
                152 xterm



          DecorateTransients
               Causes transient windows, which are normally left
               undecorated, to be given the usual _f_v_w_m decorations. Note
               that some pop-up windows, such as the xterm menus, are not
               managed by the window manager and still do not receive
               decorations.


          DeskTopScale _S_c_a_l_e
               Defines the virtual desktop scale with respect to the
               screen.


          DeskTopSize _H_o_r_i_z_o_n_t_a_lx_V_e_r_t_i_c_a_l
               Defines the virtual desktop size in units of the physical
               screen size.


          DontMoveOff
               Prevents windows from being moved off or initially placed
               off of the desktop.  A few programs will not work correctly
               if you use this option. This only keeps windows from being
               completely lost off the edge of the desktop. It insists on
               keeping 16 pixels on the desktop but doesn't care a bit
               about keeping the whole window on the desk. See EdgeResis-
               tance if you don't like having windows partially off the
               screen.


          EdgeResistance _s_c_r_o_l_l_i_n_g _m_o_v_i_n_g
               Tells how hard it should be to change the desktop viewport
               by moving the mouse over the edge of the screen and how hard
               it should be to move a window over the edge of the screen.

               The first parameter tells how milliseconds the pointer must
               spend on the screen edge before _f_v_w_m will move the viewport.
               This is intended for people who use "EdgeScroll 100 100" but
               find themselves accidentally flipping pages when they don't
               want to.

               The second parameter tells how many pixels over the edge of
               the screen a window's edge must move before it actually


     12






     Jan 28, 1994                                                 FVWM(1.2)


               moves partially off the screen.

               Note that, with "EdgeScroll 0 0", it is still possible to
               move or resize windows across the edge of the current
               screen. By making the first parameter to EdgeResistance
               10000 this type of motion is impossible. With EdgeResistance
               less than 10000 but greater than 0 moving over pages becomes
               difficult but not impossible.


          EdgeScroll _h_o_r_i_z_o_n_t_a_l _v_e_r_t_i_c_a_l
               Specifies the percentage of a page to scroll when the cursor
               hits the edge of a page. If you don't want any paging or
               scrolling when you hit the edge of a page include
               "EdgeScroll 0 0" in your .fvwmrc file. If you want whole
               pages, use "EdgeScroll 100 100". Both horizontal and verti-
               cal should be positive numbers.

               If the horizontal and vertical percentages are multiplied by
               1000 then scrolling will wrap around at the edge of the
               desktop. If "EdgeScroll 100000 100000" is used _f_v_w_m will
               scroll by whole pages, wrapping around at the edge of the
               desktop.


          Font _f_o_n_t_n_a_m_e
               Makes _f_v_w_m use font _f_o_n_t_n_a_m_e instead of "fixed" for menus,
               the resize indicators, and icon labels (if IconFont is not
               specified).


          Function _F_u_n_c_t_i_o_n_N_a_m_e
               Starts the definition of a complex function, composed of the
               _f_v_w_m built-in functions, which will later be bound to a
               mouse button or key. _F_u_n_c_t_i_o_n_N_a_m_e must be enclosed in
               quotes.  Function entries are included on lines following
               the Function keyword. The definition ends with the key word
               EndFunction. Function entries are specified as shown in the
               following example. The first word on each line is the
               built-in function which will be performed, followed the type
               of event which should trigger the action (enclosed in
               quotes), followed by any additional arguments needed by the
               built-in function. Menus can be specified by using the Popup
               built-in as long as the menu was defined earlier in the con-
               figuration file.

               The trigger actions which are recognized are Immediate,
               Motion, Click, and DoubleClick. Immediate actions are exe-
               cuted as soon as the function is activated, even if a window
               has not been selected. If there are actions other than
               immediate ones, _f_v_w_m will wait to see if the user is click-
               ing, double-clicking, or dragging the mouse. After the deci-
               sion is made, _f_v_w_m will execute only the built-ins from the
               function definition whose trigger action matches the action


                                                                         13






     FVWM(1.2)                                                 Jan 28, 1994


               performed by the user.

               If the following example were bound to button 1 in a window
               title-bar, then, when button 1 is pressed, _f_v_w_m would wait
               150 msec to see if the button is released. If the button is
               not released _f_v_w_m will start a move operation. When the move
               operation is complete a raise operation will be performed.
               If a button release is detected then _f_v_w_m will wait another
               150 msec for a second click. If only one click is detected
               then the window will be raised. If two clicks are detected
               the window will be alternately raised and lowered. The 150
               msec wait duration can be altered using the ClickTime
               option.

                    Function "Move-or-Raise"
                        Move            "Motion"
                        Raise           "Motion"
                        Raise           "Click"
                        RaiseLower      "DoubleClick"
                    EndFunction

               The clicking and double clicking concepts do not carry
               through to using keyboard shortcuts.

               Two special functions exist: InitFunction and RestartFunc-
               tion. The InitFunction will be called when _f_v_w_m is started
               for the first time in any X session and can be used to start
               modules, set background patterns, and begin programs. The
               restart function will be called when _f_v_w_m is restarted. It
               can be used to start modules and set background patterns but
               probably should not be used to start programs.


          HiBackColor _c_o_l_o_r_n_a_m_e
               Sets the background color of the selected window to _c_o_l_o_r_-
               _n_a_m_e. When using a monochrome screen this option is ignored
               and white is used.


          HiForeColor _c_o_l_o_r_n_a_m_e
               Sets the color of the selected window's title to _c_o_l_o_r_n_a_m_e.
               When using a monochrome screen this option is ignored and
               black is used.


          Icon _w_i_n_d_o_w_n_a_m_e _b_i_t_m_a_p-_f_i_l_e
               Specifies the bitmap to be used for a window when it is
               iconified.  The _w_i_n_d_o_w_n_a_m_e can be an application's window
               name or class name and must be enclosed in quotes. The
               _b_i_t_m_a_p-_f_i_l_e is either the full path name to a standard X11
               bitmap file or a file in the IconPath or PixmapPath. The
               specified bitmap/pixmap is used in preference to any icon
               supplied by the window itself.



     14






     Jan 28, 1994                                                 FVWM(1.2)


               If _f_v_w_m is compiled with XPM support for color icons then
               _b_i_t_m_a_p can be an XPM pixmap file.

               _w_i_n_d_o_w_n_a_m_e should be enclosed in double quotes but _b_i_t_m_a_p-
               _f_i_l_e should not. Environment variables should not be used in
               the _b_i_t_m_a_p-_f_i_l_e specification.

               If _w_i_n_d_o_w_n_a_m_e is an empty string then the specified file is
               the default icon, and will be used if no other icon bitmap
               or pixmap can be found:

                    Icon "" my-favorite-icon


               The Style command provides another (more general) method for
               specifying Icon.


          IconBox _l_e_f_t _t_o_p _r_i_g_h_t _b_o_t_t_o_m
               Defines regions of the screen in which to place icons. Up to
               four icon boxes can be defined. If an IconBox line is pro-
               vided then icons will automatically be placed in them, if
               possible. Each time a window is iconified a new place is
               found for it. Icon boxes are searched for space going left
               to right, then top to bottom. Icons will not be auto-placed
               on top of other icons but they may be placed underneath
               application windows. If _l_e_f_t or _r_i_g_h_t is negative, then _f_v_w_m
               will add the screen width to it. If _t_o_p or _b_o_t_t_o_m is nega-
               tive, then _f_v_w_m will add the screen height to it. NOTE: -0
               is not parsed as the right or bottom pixel on the screen.
               You have to use -1 instead.

               If no IconBox line is provided or all icon boxes are full,
               then _f_v_w_m will place icons near the current pointer loca-
               tion.


          IconFont _f_o_n_t_n_a_m_e
               Makes _f_v_w_m use font _f_o_n_t_n_a_m_e for icon labels. If omitted,
               the menu font (specified by the Font configuration parame-
               ter) will be used instead.


          IconPath _p_a_t_h
               Specifies a colon separated list of full path names of
               directories where bitmap (monochrome) icons can be found.
               Each path should start with a slash. Note: if the M4 patches
               are included when _f_v_w_m is built, then _m_4 will want to mangle
               the word "include" which will frequently show up in the
               IconPath or PixmapPath command. To fix this add
               undefine(`include') prior to the IconPath command.


          Key _k_e_y_n_a_m_e _C_o_n_t_e_x_t _M_o_d_i_f_i_e_r_s _F_u_n_c_t_i_o_n


                                                                         15






     FVWM(1.2)                                                 Jan 28, 1994


               Binds a keyboard key to a specified _f_v_w_m built-in function.
               Definition is the same as for a mouse binding except that
               the mouse button number is replaced with a key name. The
               _k_e_y_n_a_m_e is one of the entries from
               /usr/include/X11/keysymdef.h, with the leading XK_ omitted.
               The _C_o_n_t_e_x_t and _M_o_d_i_f_i_e_r_s fields are defined as in the mouse
               binding.

               Binding a key to a title-bar button will not cause that but-
               ton to appear unless a mouse binding also exists.


          Lenience
               The ICCCM states that if an application sets the input field
               of the wm_hints structure to False, then it never wants the
               window manager to give it the input focus. The only applica-
               tion that I know of which needs this is sxpm, and that is a
               silly bug with a trivial fix and has no overall effect on
               the program anyway. Rumor is that some older applications
               have problems too.

               If this parameter is set then _f_v_w_m will ignore this ICCCM
               convention.


          MenuBackColor _c_o_l_o_r_n_a_m_e
               Sets the menu background color. When using monochrome this
               option is ignored. This option is only available if _f_v_w_m is
               compiled with MENUCOLOR defined.


          MenuForeColor _c_o_l_o_r_n_a_m_e
               Sets the menu foreground color. When using monochrome this
               option is ignored. This option is only available if _f_v_w_m is
               compiled with MENUCOLOR defined.


          MenuStippleColor _c_o_l_o_r_n_a_m_e
               Sets the color for shaded out entries in menus (for func-
               tions which are not allowed on the currently selected win-
               dow). When using monochrome this option is ignored and a
               stipple pattern is used.  This option is only available if
               _f_v_w_m is compiled with MENUCOLOR defined.


          Module _M_o_d_u_l_e_N_a_m_e
               Specifies a module which should be spawned during initiali-
               zation. At the current time the available modules are
               FvwmAudio, FvwmBacker, FvwmBanner, FvwmClean, FvwmDebug,
               FvwmFileMgr, FvwmIconBox, FvwmIdent, FvwmPager, FvwmSave,
               FvwmSaveDesk, FvwmScroll, FvwmWinList, and GoodStuff. These
               modules have their own man pages.  _M_o_d_u_l_e can also be used
               as a built-in. Modules can be short lived transient programs
               or, like GoodStuff, can remain for the duration of the X


     16






     Jan 28, 1994                                                 FVWM(1.2)


               session. Modules will be terminated by the window manager
               prior to restarts and quits, if possible. See the introduc-
               tory section on modules.


          ModulePath
               Specifies a colon separated list of paths for _f_v_w_m to search
               when looking for a module to load.  Individual directories
               do not need trailing slashes.


          Mouse _B_u_t_t_o_n _C_o_n_t_e_x_t _M_o_d_i_f_i_e_r_s _F_u_n_c_t_i_o_n
               Defines a mouse binding. _B_u_t_t_o_n is the mouse button number.
               If _B_u_t_t_o_n is zero then any button will perform the specified
               function.  _C_o_n_t_e_x_t describes where the binding applies.
               Valid contexts are R for the root window, W for an applica-
               tion window, T for a window title bar, S for a window side,
               top, or bottom bar, F for a window frame (the corners), I
               for an Icon window, or 0 through 9 for title-bar buttons, or
               any combination of these letters. A is for any context
               except for title-bar buttons. For instance, a context of FST
               will apply when the mouse is anywhere in a window's border
               except the title-bar buttons.

               _M_o_d_i_f_i_e_r_s is any combination of N for no modifiers, C for
               control, S for shift, M for Meta, or A for any modifier.
               For example, a modifier of SM will apply when both the Meta
               and shift keys are down. X11 modifiers mod1 through mod5 are
               represented as the digits 1 through 5.

               _F_u_n_c_t_i_o_n is one of _f_v_w_m's built-in functions.

               The title bar buttons are numbered with odd numbered buttons
               on the left side of the title bar and even numbers on the
               right. Smaller-numbered buttons are displayed toward the
               outside of the window while larger-numbered buttons appear
               toward the middle of the window (0 is short for 10). In sum-
               mary, the buttons are numbered:

                    1 3 5 7 9    0 8 6 4 2

               The highest odd numbered button which has an action bound to
               it determines the number of buttons drawn on the left side
               of the title bar. The highest even number determines the
               number or right side buttons which are drawn. Actions can be
               bound to either mouse buttons or keyboard keys.


          MWMBorders
               Substitutes MWM style 1 pixel wide relief lines instead of
               _f_v_w_m's 2 pixel borders.


          MWMButtons


                                                                         17






     FVWM(1.2)                                                 Jan 28, 1994


               Disables button press feedback for all decorations except
               the title bar and title-bar buttons, as in MWM.


          MWMDecorHints
               Causes _f_v_w_m to read the MOTIF_WM_HINTS atom from application
               windows and to parse and attempt to replicate the Motif
               behavior with regard to window decorations.  Note that mwm
               allows function hints to affect window decorations but these
               effects are not replicated by this option.


          MWMFunctionHints
               Causes _f_v_w_m to read the MOTIF_WM_HINTS atom from application
               windows and to parse and attempt to replicate the Motif
               behavior with regard to allowed window functions.  Unlike
               mwm, which simply removes prohibited functions from the
               window's menus, _f_v_w_m simply shades out the prohibited func-
               tions. Also, because _f_v_w_m implements some functions in user
               defined macros that mwm implements internally, the mapping
               of prohibited functions is partially based on the menu item
               label.


          MWMHintOverride
               If MWMFunctionHints is used then maximization and iconfica-
               tion are prohibited for transients. Also, windows can
               specify that the window manager should not destroy or delete
               them. Since these MWM rules are kind of stupid, especially
               with regard to the transient windows, I provide this MWMHin-
               tOverride option. When it is used menu items will be shaded
               out if MWM would prohibit their use, but the user can go
               ahead and select that item and it will operate as expected.

               The override should be used cautiously because some applica-
               tions will break if you override their mwm hints.


          MWMMenus
               Substitutes MWM look and feel menus in place of the standard
               _f_v_w_m versions.  This option also triggers a few other mwm-
               style options, such as centering the size/resize window on
               the screen, instead of leaving it in the upper left, and
               switches the resize-on-initial-placement trigger action to
               shift-button-1 instead of the _t_w_m style press-button-2


          NoBorder _w_i_n_d_o_w_n_a_m_e
               Keeps _f_v_w_m from putting decorative borders on windows named
               _w_i_n_d_o_w_n_a_m_e. This command has no effect on the title-bar.
               This is handy for clocks and similar gadgets that you don't
               want to take up too much space. _w_i_n_d_o_w_n_a_m_e can be a window's
               name or its class.



     18






     Jan 28, 1994                                                 FVWM(1.2)


               If you specify both NoBorder _w_i_n_d_o_w_n_a_m_e and NoTitle _w_i_n_-
               _d_o_w_n_a_m_e for the same window in your .fvwmrc file the window
               will be completely undecorated.

               _W_i_n_d_o_w_n_a_m_e can contain the wildcards "*" and "?" which match
               window names in the normal Unix filename matching manner.
               Actual "*", "?", and "\" characters in a window name can be
               entered by preceding the character with a "\".

               The Style command provides another (more general) method for
               specifying NoBorder.


          NoBoundaryWidth _W_i_d_t_h
               Changes the width of the decorations for windows with no
               titles and no borders.  The default is 1. Any positive or
               zero value is acceptable. Decorations for these undecorated
               windows have the same context as the side-bars on normally
               decorated windows.

               The Style command provides another (more general) method for
               specifying NoBoundaryWidth.


          NoPPosition
               Instructs _f_v_w_m to ignore the PPosition field when adding new
               windows.  Adherence to the PPosition field is required for
               some applications, but if you don't have one of those its a
               real headache.


          NoTitle _w_i_n_d_o_w_n_a_m_e
               Keeps _f_v_w_m from putting a title-bar in the decorations for
               windows named _w_i_n_d_o_w_n_a_m_e. This is handy for clocks and simi-
               lar gadgets that you don't want to take up too much space.
               _w_i_n_d_o_w_n_a_m_e can be a window's name or its class.

               _W_i_n_d_o_w_n_a_m_e can contain the wildcards "*" and "?" which match
               window names in the normal Unix filename matching manner.
               Actual "*", "?", and "\" characters in a window name can be
               entered by preceding the character with a "\".

               The Style command provides another (more general) method for
               specifying NoTitle.


          OpaqueMove _p_e_r_c_e_n_t_a_g_e
               Tells _f_v_w_m the maximum size window with which opaque window
               movement should be used. The percentage is percent of the
               total screen area. With "OpaqueMove 0" all windows will be
               moved using the traditional rubber-band outline. With "Opa-
               queMove 100" all windows will be move as solid windows. The
               default is "OpaqueMove 5", which allows small windows to be
               moved in an opaque manner but large windows are moved as


                                                                         19






     FVWM(1.2)                                                 Jan 28, 1994


               rubber-bands.


          OpaqueResize
               Causes resize operations to be done with the window itself
               instead of an outline.


          Pager  _X__L_o_c_a_t_i_o_n _Y__L_o_c_a_t_i_o_n
               Enables a paging style of moving across the desktop. A Pager
               window (not a pop-up) will appear at (X_Location,
               Y_Location). Miniature versions of all the non-sticky win-
               dows on the virtual desktop are shown in the pager.  The
               color of the miniature version is the same as the color of
               the full-size window's border.

               In the Pager window, pressing mouse button 1 will move the
               desktop viewport to the selected page (in click-to-focus
               mode; it will also move the keyboard focus to the window
               whose miniature you click on).  Pressing button 2 on a win-
               dow in the pager will begin a window move, using the minia-
               ture to quickly move the window anywhere on the desktop.
               Pressing button 3 will move the top-left corner of the
               viewport to the location of the button press, even if it
               does not line up with a page.  Dragging button 3 will cause
               the selected viewport to scroll as you move the pointer. The
               Pager is automatically sticky but does not automatically
               stay on top.


          PagerForeColor _c_o_l_o_r_n_a_m_e
               Causes the pager foreground color to be _c_o_l_o_r_n_a_m_e instead of
               black.  This is the color used to highlight the current
               viewport in the pager window.  On a monochrome screen this
               option is ignored. If the NO_PAGER option is set when build-
               ing _f_v_w_m this option is unavailable.


          PagerBackColor _c_o_l_o_r_n_a_m_e
               Causes the pager background color to be _c_o_l_o_r_n_a_m_e instead of
               white.  On a monochrome screen this option is ignored. If
               the NO_PAGER option is set when building _f_v_w_m this option is
               unavailable.


          PagerFont _f_o_n_t_n_a_m_e
               Makes _f_v_w_m use font _f_o_n_t_n_a_m_e for writing window icon names
               in the window's representation in the pager. If this option
               is omitted no names are written in the pager windows.


          PagingDefault _p_a_g_i_n_g_d_e_f_a_u_l_t_v_a_l_u_e
               Tells _f_v_w_m if it should start up with paging enabled or dis-
               abled.  "PagingDefault 0" will start _f_v_w_m with paging


     20






     Jan 28, 1994                                                 FVWM(1.2)


               disabled; "PagingDefault 1" will start _f_v_w_m with paging
               enabled by default.


          PixmapPath _p_a_t_h
               Specifies a colon separated list of full path names of
               directories where pixmap (color) icons can be found. Each
               path should start with a slash.


          Popup _P_o_p_u_p_N_a_m_e
               Starts the definition of a pop-up menu which will later be
               bound to a mouse button or key. _P_o_p_u_p_N_a_m_e must be enclosed
               in quotes. Menu entries are included on lines following the
               Popup keyword. The menu definition ends with the key word
               EndPopup. Menu entries are specified as shown in the follow-
               ing example. The first word on each line is the built-in
               function which will be performed, followed by the caption
               (enclosed in quotes) which will be shown in the menu, fol-
               lowed by any additional arguments needed by the built-in
               function. Sub-menus can be specified by using the Popup
               built-in as long as the sub-menu was defined earlier in the
               configuration file.

                    Popup "Window Ops"
                        Title   "Window Ops"
                        Move    "Move"
                        Resize  "Resize"
                        Raise   "Raise"
                        Lower   "Lower"
                        Iconify "(De)Iconify"
                        Nop     " "
                        Destroy "Destroy"
                        Title   "HARDCOPY"
                        Exec    "Hardcopy"  exec xdpr &
                        Exec    "Hardcopy RV"  exec xdpr -rv &
                    EndMenu

               Note that if a tab character is embedded in the caption of a
               menu entry then the text following the tab will be entered
               into a second column in the menu and the entire menu will be
               left-adjusted. This is intended for shortcut labeling. The
               tab character must really be a tab. If it is expanded into
               spaces it will not work! For example:

                    Popup "Window Ops"
                        Title   "Window Ops  Alt-F1"
                        .
                        .
                        .

               Is the start of a left adjusted menu. Alt-F1 will be placed
               toward the right side of the menu.



                                                                         21






     FVWM(1.2)                                                 Jan 28, 1994


               Shortcut keys may be specified in the menu definition by
               preceding the character with an ampersand.  The ampersand
               will not be displayed but the character after it will be
               displayed underlined, and if the user presses the
               corresponding key then that item will be activated as if the
               user had clicked on it with the mouse.  Only alphabetic and
               numeric characters may be used as shortcut keys.  The shift
               state of the keyboard is ignored when testing shortcut char-
               acters. For example:

                    Popup "Window Ops"
                        Maximize "Ma&ximise" 100 100
                    EndMenu

               When this menu is popped up the 'x' will be underlined and
               pressing the 'x' key will cause the current window to be
               maximized. Shortcut keys are not operative unless
               MENU_HOTKEYS was defined when building _f_v_w_m.  If
               WINDOWLIST_HOTKEYS was also defined then hot keys are
               automatically added to the WindowList when it is displayed.


          RandomPlacement
               Causes windows which would normally require user placement
               to be automatically placed in ever-so-slightly random loca-
               tions.  For the best of all possible worlds use both Random-
               Placement and SmartPlacement.


          SaveUnders
               Causes the _f_v_w_m decoration frames to request save-unders.
               This can significantly improve the performance during opaque
               moves but it causes a significant increase in memory usage.


          SloppyFocus
               This focusing mode is like focus-follows-mouse (the default)
               except that the focus will not be removed from a window
               until your mouse enters a new window. Exiting a window to
               enter the root window will leave the focus unchanged.


          SmartPlacement
               Causes windows which would normally require user placement
               to be automatically placed in a smart location - a location
               in which they do not overlap any other windows on the
               screen. If no such position can be found user placement or
               random placement will be used as a fall-back method.  For
               the best of all possible worlds use both RandomPlacement and
               SmartPlacement.


          StartsOnDesk _w_i_n_d_o_w_n_a_m_e _d_e_s_k-_n_u_m_b_e_r
               This command causes windows whose name or class is


     22






     Jan 28, 1994                                                 FVWM(1.2)


               _w_i_n_d_o_w_n_a_m_e to be initially placed on desktop number _d_e_s_k-
               _n_u_m_b_e_r.  _w_i_n_d_o_w_n_a_m_e should be enclosed in double quotes. If
               the window requires interactive placement, an outline will
               be displayed on the current desk but the window will appear
               on the specified desk.

               _W_i_n_d_o_w_n_a_m_e can contain the wildcards "*" and "?" which match
               window names in the normal Unix filename matching manner.
               Actual "*", "?", and "\" characters in a window name can be
               entered by preceding the character with a "\".

               The Style command provides another (more general) method for
               specifying StartsOnDesk.


          StaysOnTop _w_i_n_d_o_w_n_a_m_e
               These  windows always try to stay on top of the other win-
               dows. This might be handy for clocks or mailboxes that you
               would always like to be visible. If the window is explicitly
               lowered it will not try to force its way back to the top
               until it is explicitly raised. _w_i_n_d_o_w_n_a_m_e can be a window's
               name or its class.

               _W_i_n_d_o_w_n_a_m_e can contain the wildcards "*" and "?" which match
               window names in the normal Unix filename matching manner.
               Actual "*", "?", and "\" characters in a window name can be
               entered by preceding the character with a "\".

               The Style command provides another (more general) method for
               specifying StaysOnTop.


          StdBackColor _c_o_l_o_r_n_a_m_e
               Sets the background color for menus and non-selected windows
               to _c_o_l_o_r_n_a_m_e. When using a monochrome screen this option is
               ignored and white is used.

               The Style command provides another (more general) method for
               specifying StdBackColor.


          StdForeColor _c_o_l_o_r_n_a_m_e
               Sets the foreground color for menus and non-selected window
               titles to _c_o_l_o_r_n_a_m_e. When using a monochrome screen this
               option is ignored and black is used.

               The Style command provides another (more general) method for
               specifying StdForeColor.


          StickyBackColor _c_o_l_o_r_n_a_m_e
               Sets the background color for non-selected sticky windows to
               _c_o_l_o_r_n_a_m_e. When using a monochrome screen this option is
               ignored and white is used. Only available if -DMORE_COLORS


                                                                         23






     FVWM(1.2)                                                 Jan 28, 1994


               is used when compiling.


          StickyForeColor _c_o_l_o_r_n_a_m_e
               Sets the foreground color for non-selected sticky window
               titles to _c_o_l_o_r_n_a_m_e. When using a monochrome screen this
               option is ignored and black is used. Only available if
               -DMORE_COLORS is used when compiling.


          Sticky _w_i_n_d_o_w_n_a_m_e
               Sticky windows "stick to the screen's glass." That is, they
               don't move the the viewport into the virtual desktop
               changes.  _w_i_n_d_o_w_n_a_m_e can be a window's name or its class.

               _W_i_n_d_o_w_n_a_m_e can contain the wildcards "*" and "?" which match
               window names in the normal Unix filename matching manner.
               Actual "*", "?", and "\" characters in a window name can be
               entered by preceding the character with a "\".

               The Style command provides another (more general) method for
               specifying Sticky.


          StickyIcons
               Causes icons to always stick to the screen's glass. That is,
               icons always follow you around the desktop. When a window is
               de-iconified it gets un-stuck. Some people find this a use-
               ful way of moving windows around.


          StubbornIcons
               Changes de-iconification behavior a bit. Instead of having
               windows always de-iconify themselves on the current page
               they de-iconify into their original position.


          StubbornIconPlacement
               When used with IconBoxes, causes icons to avoid placing
               themselves underneath existing windows.


          StubbornPlacement
               When using SmartPlacement, causes new windows to avoid plac-
               ing themselves over icons.


          Style _w_i_n_d_o_w_n_a_m_e _o_p_t_i_o_n_s
               This command is intended to replace the commands NoBorder,
               NoTitle, StartsOnDesk, Sticky, StaysOnTop, Icon, WindowL-
               istSkip, CirculateSkip, SuppressIcons, BoundaryWidth,
               NoBoundaryWidth, StdForeColor, and StdBackColor with a sin-
               gle flexible and comprehensive command.  This command is
               used to set attributes of a window to values other than the


     24






     Jan 28, 1994                                                 FVWM(1.2)


               default or to set the window manager default styles.

               _w_i_n_d_o_w_n_a_m_e can be a window's name, class, or resource
               string. It can contain the wildcards * and/or ?, which are
               matched in the usual Unix filename manner.

               _o_p_t_i_o_n_s is a comma separated list containing some or all of
               the keywords BorderWidth, HandleWidth,NoIcon/Icon,
               NoTitle/Title, NoHandles/Handles,
               WindowListSkip/WindowListHit, CirculateSkip/CirculateHit,
               StaysOnTop/StaysPut, Sticky/Slippery,
               StartIconic/StartNormal, Color, ForeColor, BackColor,
               StartsOnDesk/StartsAnyWhere, IconTitle/NoIconTitle, and
               NoButton/Button.

               In the above list some options are listed as style-
               option/opposite-style-option. The opposite-style-option for
               entries that have them describes the _f_v_w_m default behavior
               and can be used if you want to change the _f_v_w_m default
               behavior.

               Icon takes an (optional) unquoted string argument which is
               the icon bitmap or pixmap to use.

               StartsOnDesk takes a numeric argument which is the desktop
               number on which the window should be initially placed.

               BorderWidth takes a numeric argument which is the width of
               the border to place the window if it does not have resize-
               handles.

               HandleWidth takes a numeric argument which is the width of
               the border to place the window if it does have resize-
               handles.

               Button and NoButton take a numeric argument which is the
               number of the title-bar button which is to be
               included/omitted.

               Color takes two arguments. The first is the window-label
               text color and the second is the window decoration's  normal
               background color.  The two colors are separated with a
               slash. If the use of a slash causes problems then the
               seperate ForeColor and BackColor options can be used.

               An example:

                    # Change default fvwm behavior to no title-bars on windows!
                    # Also define a default icon.
                    Style "*" NoTitle,Icon unknown1.xpm, BorderWidth 4,HandleWidth 5

                    # now, window specific changes:
                    Style "Fvwm*"     NoHandles,Sticky,WindowListSkip,BorderWidth 0
                    Style "Fvwm Pager"                 StaysOnTop, BorderWidth 0


                                                                         25






     FVWM(1.2)                                                 Jan 28, 1994


                    Style "*lock"     NoHandles,Sticky,StaysOnTop,WindowListSkip
                    Style "xbiff"               Sticky,           WindowListSkip
                    Style "GoodStuff" NoHandles,Sticky,WindowListSkip
                    Style "sxpm"      NoHandles
                    Style "makerkit"

                    # Put title-bars back on xterms only!
                    Style "xterm"     Title, Color black/grey

                    Style "rxvt"      Icon term.xpm
                    Style "xterm"     Icon rterm.xpm
                    Style "xcalc"     Icon xcalc.xpm
                    Style "xbiff"     Icon mail1.xpm
                    Style "xmh"       Icon mail1.xpm, StartsOnDesk 2
                    Style "xman"      Icon xman.xpm
                    Style "matlab"    Icon math4.xpm, StartsOnDesk 3
                    Style "xmag"      Icon magnifying_glass2.xpm
                    Style "xgraph"    Icon graphs.xpm
                    Style "GoodStuff" Icon toolbox.xpm

                    Style "Maker"     StartsOnDesk 1
                    Style "signal"    StartsOnDesk 3

               Note that all properties for a window will be OR'ed
               together. In the above example "FvwmPager" gets the property
               StaysOnTop via an exact window name match but also gets
               NoHandles, Sticky, and WindowListSkip by a match to "Fvwm*".
               It will get NoTitle by virtue of a match to "*". If con-
               flicting styles are specified for a window, then the last
               style specified will be used.

               If the NoIcon attribute is set then the specified window
               will simply disappear when it is iconified. The window can
               be recovered through the window-list. If Icon is set without
               an argument then the NoIcon attribute is cleared but no icon
               is specified. An example which allows only the FvwmPager
               module icon to exist:

                    Style "*" NoIcon
                    Style "Fvwm Pager" Icon



          SuppressIcons
               Prevents icon windows from being created or drawn. When used
               with the window-list this provides a sort of icon manager.

               The Style command provides another (more general) method for
               specifying SuppressIcons.


          WindowFont _f_o_n_t_n_a_m_e
               Makes _f_v_w_m use font _f_o_n_t_n_a_m_e instead of "fixed" for the win-
               dow title bar.


     26






     Jan 28, 1994                                                 FVWM(1.2)



          WindowListSkip _w_i_n_d_o_w_n_a_m_e
               Causes windows with the indicated name to be left out of the
               window list.

               _W_i_n_d_o_w_n_a_m_e can contain the wildcards "*" and "?" which match
               window names in the normal Unix filename matching manner.
               Actual "*", "?", and "\" characters in a window name can be
               entered by preceding the character with a "\".

               The Style command provides another (more general) method for
               specifying WindowListSkip.


          XORvalue _n_u_m_b_e_r
               Changes the value with which bits are XOR'ed when doing
               rubber-band window moving or resizing. Setting this value is
               a trial-and-error process.


     BUILT IN FUNCTIONS
          _F_v_w_m supports a set of built-in functions which can be bound to
          keyboard or mouse buttons:


          Beep Makes the computer beep.


          CirculateDown [ _n_a_m_e _w_i_n_d_o_w__n_a_m_e ]
               Causes the pointer to move to the next window in the list of
               windows for which CirculateSkip has not not been specified.

               If the optional arguments are supplied then the focus will
               move to the first window whose name (or icon name or class)
               matches _w_i_n_d_o_w__n_a_m_e.  The optional argument _n_a_m_e is required
               if _w_i_n_d_o_w__n_a_m_e is supplied and is enclosed in quotes. This
               argument is the name which appears in menus if the function
               is called from a menu, but serves no purpose if the function
               is not called from a menu.


          CirculateUp [ _n_a_m_e _w_i_n_d_o_w__n_a_m_e ]
               Causes the pointer to move to the previous window in the
               list of windows for which CirculateSkip has not not been
               specified.

               If the optional arguments are supplied then the focus will
               move to the first window whose name (or icon name or class)
               matches _w_i_n_d_o_w__n_a_m_e.  The optional argument _n_a_m_e is required
               if _w_i_n_d_o_w__n_a_m_e is supplied and is enclosed in quotes. This
               argument is the name which appears in menus if the function
               is called from a menu, but serves no purpose if the function
               is not called from a menu



                                                                         27






     FVWM(1.2)                                                 Jan 28, 1994


               Here's an example that move the focus to an xterm window
               when Alt-F1 is pressed:

                    Key F1 A M CirculateUp "whatever" xterm



          Close
               If the window accepts the delete window protocol a message
               is sent to the window asking it to gracefully remove itself.
               If the window does not understand the delete window protocol
               then the window is destroyed.


          CursorMove _h_o_r_i_z_o_n_a_l _v_e_r_t_i_c_a_l
               Moves the mouse pointer by _h_o_r_i_z_o_n_t_a_l pages in the X direc-
               tion and _v_e_r_t_i_c_a_l pages in the Y direction. Either or both
               entries may be negative. Both horizontal and vertical values
               are expressed in percent of pages, so "CursorMove 100 100"
               means to move down and left by one full page. "CursorMove 50
               25" means to move left half a page and down a quarter of a
               page. The CursorMove function should not be called from
               pop-up menus.


          Delete
               Sends a message to a window asking that it remove itself,
               frequently causing the application to exit.


          Desk _a_r_g_1 _a_r_g_2
               Changes to another desktop (workspace, room).

               If _a_r_g_1 is non zero then the next desktop number will be the
               current desktop number plus _a_r_g_1. Desktop numbers can be
               negative.

               If _a_r_g_1 is zero then the new desktop number will be _a_r_g_2.

               The number of active desktops is determined dynamically.
               Only desktops which contain windows or are currently being
               displayed are active. Desktop numbers must be between
               2147483647 and -2147483648 (is that enough?).


          Destroy
               Destroys a window. Guaranteed to get rid of the window, but
               is a fairly violent way to terminate an application.


          Exec _n_a_m_e _c_o_m_m_a_n_d
               Executes _c_o_m_m_a_n_d. _c_o_m_m_a_n_d is not quoted but _n_a_m_e is.  _n_a_m_e
               is the name that appears in a menu, if that is where the
               function is called from. _n_a_m_e is required even if the


     28






     Jan 28, 1994                                                 FVWM(1.2)


               function is not called from a menu.

               The following example binds function key F1 in the root win-
               dow, with no modifiers, to the exec function. The program
               rxvt will be started with an assortment of options.

                    Key F1 R N Exec "rxvt" exec rxvt -fg yellow -bg blue -e /bin/tcsh &



          Focus
               Moves the viewport or window as needed to make the selected
               window visible. Sets the keyboard focus to the selected win-
               dow.  Raises the window if needed to make it visible. Warps
               the pointer into the selected window in focus-follows-mouse
               mode.  Does not de-iconify. This function is primarily for
               use with a module such as  FvwmWinList.


          Function
               Used to bind a previously defined function to a key or mouse
               button.

               The following example binds mouse button 1 to a function
               called "Move-or-Raise", whose definition was provided as an
               example earlier in this man page. After performing this
               binding _f_v_w_m will execute to move-or-raise function whenever
               button 1 is pressed in a window title-bar.

                    Mouse 1 T A Function "Move-or-Raise"



          GotoPage  x y
               Moves the desktop viewport to page (x,y). The upper left
               page is (0,0), the upper right is (N,0), where N is one less
               than the current number of horizontal pages specified in the
               DeskTopSize command. The lower left page is (0,M), and the
               lower right page is (N,M), where M is the desktop's vertical
               size as specified in the DeskTopSize command. The GotoPage
               function should not be used in a pop-up menu.


          Iconify [ _v_a_l_u_e ]
               Iconifies a window if it is not already iconified or de-
               iconifies it if it is already iconified. If the optional
               argument _v_a_l_u_e is positive the only iconification will be
               allowed. It the optional argument is negative only de-
               iconification will be allowed.


          Lower
               Allows the user to lower a window.



                                                                         29






     FVWM(1.2)                                                 Jan 28, 1994



          Maximize [  _h_o_r_i_z_o_n_t_a_l _v_e_r_t_i_c_a_l ]
               Without its optional arguments Maximize causes the window to
               alternately switch from a full-screen size to its normal
               size.

               With the optional arguments horizontal and vertical, which
               are expressed as percentage of a full screen, the user can
               control the new size of the window. If horizontal is greater
               than 0 then the horizontal dimension of the window will be
               set to horizontal*screen_width/100. The vertical resizing is
               similar.  For example, the following will add a title-bar
               button to switch a window to the full vertical size of the
               screen:

                    Mouse 0 4 A Maximize 0 100

               The following causes windows to be stretched to the full
               width:

                    Mouse 0 4 A Maximize 100 0

               This makes a window that is half the screen size in each
               direction:

                    Mouse 0 4 A Maximize 50 50

               Values larger than 100 can be used with caution.


          Module _M_o_d_u_l_e_N_a_m_e
               Specifies a module which should be spawned. Modules can be
               short lived transient programs or can remain for the dura-
               tion of the X session. Modules will be terminated by the
               window manager prior to restarts and quits, if possible.


          Move Allows the user to move a window. If called from somewhere
               in a window or its border, then that window will be moved.
               If called from the root window then the user will be allowed
               to select the target window.


          Nop  Does nothing. This is used to insert a blank line or separa-
               tor in a menu. If the menu item specification is Nop " ",
               then a blank line is inserted. If it looks like Nop "", then
               a separator line is inserted.


          Popup
               This built-in has two purposes: to bind a menu to a key or
               mouse button, and to bind a sub-menu into a menu.  The for-
               mats for the two purposes differ slightly.



     30






     Jan 28, 1994                                                 FVWM(1.2)


               To bind a previously defined pop-up menu to a key or mouse
               button:

                 The following example binds mouse buttons 2 and 3 to a
                 pop-up called "Window Ops", whose definition was provided
                 as an example earlier in this man page.  The menu will pop
                 up if the buttons 2 or 3 are pressed in the window frame,
                 side-bar, or title-bar, with no modifiers (none of shift,
                 control, or meta).

                      Mouse 2 FST N Popup "Window Ops"
                      Mouse 3 FST N Popup "Window Ops"

                 Pop-ups can be bound to keys through the use of the key
                 modifier. Pop-ups can be operated without using the mouse
                 by binding to keys and operating via the up arrow, down
                 arrow, and enter keys.

              To bind a previously defined pop-up menu to another menu, for
              use as a sub-menu:

                The following example defines a sub menu, "Quit-Verify" and
                binds it into a main menu, called "Utilities":

                     Popup "Quit-Verify"
                         Title   "Really Quit Fvwm?"
                         Quit    "Yes, Really Quit"
                         Restart "Restart Fvwm" fvwm
                         Nop     ""
                         Nop     "No, Don't Quit"
                     EndPopup

                     Popup "Utilities"
                         Title   "Utilities"
                         Exec    "Xterm"         exec xterm &
                         Exec    "Rxvt"          exec rxvt &
                         Exec    "Top"           exec rxvt -T Top -n Top -e top &
                         Exec    "Calculator"    exec xcalc &
                         Exec    "Xman"          exec xman &
                         Exec    "Xmag"          exec xmag &
                         Nop     ""
                         Popup   "Exit Fvwm"     Quit-Verify
                     EndPopup

                Sub-menus must be defined prior to the main menu in which
                they are bound.  Sub-menu nesting can be arbitrarily deep.



          Quit Exits _f_v_w_m, generally causing X to exit too.


          Raise
               Allows the user to raise a window.


                                                                         31






     FVWM(1.2)                                                 Jan 28, 1994



          RaiseLower
               Alternately raises and lowers a window.


          Refresh
               Causes all windows on the screen to redraw themselves.


          Resize
               Allows the user to resize a window.


          Restart  _n_a_m_e _W_i_n_d_o_w_M_a_n_a_g_e_r_N_a_m_e
               Causes _f_v_w_m to restart itself if WindowManagerName is
               "fvwm", or to switch to an alternate window manager if Win-
               dowManagerName is other than "fvwm".  If the window manager
               is not in your default search path, then you should use the
               full path name for _W_i_n_d_o_w_M_a_n_a_g_e_r_N_a_m_e.

               _W_i_n_d_o_w_M_a_n_a_g_e_r_N_a_m_e  is not quoted but _n_a_m_e is.  _n_a_m_e is the
               name that appears in a menu, if that is where the function
               is called from. _n_a_m_e is required even if the function is not
               called from a menu.

               This command should not have a trailing ampersand or any
               command line arguments and should not make use of any
               environmental variables. Of the following examples, the
               first three are sure losers, but the third is OK:

                    Key F1 R N Restart " " fvwm &
                    Key F1 R N Restart " " $(HOME)/bin/fvwm
                    Key F1 R N Restart " " twm -f .mystartupfile
                    Key F1 R N Restart " " /home/nation/bin/fvwm



          Stick
               Makes a window sticky if it is not already sticky, or non-
               sticky if it is already sticky.


          Scroll _h_o_r_i_z_o_n_a_l _v_e_r_t_i_c_a_l
               Scrolls the virtual desktop's viewport by _h_o_r_i_z_o_n_t_a_l pages
               in the x-direction and _v_e_r_t_i_c_a_l pages in the y-direction.
               Either or both entries may be negative. Both horizontal and
               vertical values are expressed in percent of pages, so
               "Scroll 100 100" means to scroll down and left by one full
               page. "Scroll 50 25" means to scroll left half a page and
               down a quarter of a page. The scroll function should not be
               called from pop-up menus. Normally, scrolling stops at the
               edge of the desktop.

               If the horizontal and vertical percentages are multiplied by


     32






     Jan 28, 1994                                                 FVWM(1.2)


               1000 then scrolling will wrap around at the edge of the
               desktop. If "Scroll 100000 0" is executed over and over _f_v_w_m
               will move to the next desktop page on each execution and
               will wrap around at the edge of the desktop, so that every
               page is hit in turn.


          Title
               Does nothing. This is used to insert a title line in a popup
               or menu.


          TogglePage
               Temporarily disables edge scrolling. Edge scrolling can be
               re-enabled by calling this again.


          Wait _n_a_m_e
               This built-in is intended to be used in _f_v_w_m functions only.
               It causes execution of a function to pause until a new win-
               dow name _n_a_m_e appears. _F_v_w_m remains fully functional during
               a wait. This is particularly useful in the InitFunction if
               you are trying to start windows on specific desktops:

                    Function "InitFunction"
                         Exec "I"  exec xterm -geometry 80x64+0+0
                         Wait "I"  xterm
                         Desk "I"  0 2
                         Exec "I"  exec xmh -font fixed -geometry 507x750+0+0 &
                         Wait "I"  xmh
                         Desk      "I"  0 0
                    EndFunction

               The above function starts an xterm on the current desk,
               waits for it to map itself, then switches to desk 2 and
               starts an xmh. After the xmh window appears control moves to
               desk 0.


          Warp [ _n_a_m_e _w_i_n_d_o_w__n_a_m_e ]
               Same as CirculateDown but de-iconifies any iconified windows
               as it focuses on them.


          WindowsDesk _n_e_w__d_e_s_k
               Moves the selected window the the desktop specified as
               _n_e_w__d_e_s_k.


          WindowList _a_r_g_1 _a_r_g_2
               Generates a pop-up menu (and pops it up) in which the title
               and geometry of each of the windows currently on the desk
               top are shown. The geometry of iconified windows is shown in
               brackets. Selecting an item from the window list pop-up menu


                                                                         33






     FVWM(1.2)                                                 Jan 28, 1994


               will cause that window to be moved onto the desktop if it is
               currently not on it, will move the desktop viewport to the
               page containing the upper left hand corner of the window,
               will de-iconify the window if it is iconified, and will
               raise the window.

               If _a_r_g_1 is an even number then the windows will be listed
               using the window name (the name that shows up in the title-
               bar). If it is odd then the window's icon name is used.

               If _a_r_g_1 is less than 2 then all windows on all desktops
               (except those listed in WindowListSkip directives) will be
               shown.

               If _a_r_g_1 is 2 or 3 then only windows on the current desktop
               will be shown.

               If _a_r_g_1 is 4 or 5 then only windows on desktop number _a_r_g_2
               will be shown.


     KEYBOARD SHORTCUTS
          All (I think) window manager operations can be performed from the
          keyboard so mouseless operation should be possible. In addition
          to scrolling around the virtual desktop by binding the Scroll
          built-in to appropriate keys, pop-ups, move, resize, and most
          other built-ins can be bound to keys. Once a built-in function is
          started the pointer is moved by using the up, down, left, and
          right arrows, and the action is terminated by pressing return.
          Holding down the shift key will cause the pointer movement to go
          in larger steps and holding down the control key will cause the
          cursor movement to go in smaller steps. Standard emacs and vi
          cursor movement controls (^n, ^p, ^f, ^b, and ^j, ^k, ^h, ^l) can
          be used instead of the arrow keys.


     SUPPLIED CONFIGURATION
          A sample configuration file, system.fvwmrc, is supplied with the
          _f_v_w_m distribution. It is well commented and can be used as a
          source of examples for _f_v_w_m configuration.



     USE ON MULTI-SCREEN DISPLAYS
          If the -s command line argument is not given, _f_v_w_m will automati-
          cally start up on every screen on the specified display. After
          _f_v_w_m starts each screen is treated independently. Restarts of
          _f_v_w_m need to be performed separately on each screen. The use of
          EdgeScroll 0 0 is strongly recommended for multi-screen displays.

          You may need to quit on each screen to quit from the X session
          completely.

          Multi-screen support is only available if _f_v_w_m is compiled with


     34






     Jan 28, 1994                                                 FVWM(1.2)


          -DMULTIPLE_SCREENS



     BUGS
          As of fvwm 0.99 there were exactly 39.342 unidentified bugs.
          Identified bugs have mostly been fixed, though. Since then 9.34
          bugs have been fixed.  Assuming that there are at least 10
          unidentified bugs for every identified one, that leaves us with
          39.342 - 9.32 + 10 * 9.34 = 123.402 unidentified bugs. If we fol-
          low this to its logical conclusion we will have an infinite
          number of unidentified bugs before the number of bugs can start
          to diminish, at which point the program will be bug-free.  Since
          this is a computer program infinity = 3.4028e+38 if you don't
          insist on double-precision. At the current rate of bug discovery
          we should expect to achieve this point in 3.37e+27 years. I guess
          I better plan on passing this thing on to my children....

          Binding a key to a window decoration but not to the window itself
          is discouraged because when the key-press event finally gets to
          the window it will be marked as SYNTHETIC and will be ignored by
          many applications.

          Multi-screen mode is a little clumsy since restarts and quitting
          need to be done on each screen separately.

          The RaiseLower function gets confused by StaysOnTop windows. Not
          surprising really.


     AUTHOR
          Robert Nation (nation@rocket.sanders.lockheed.com) with help from
          many people, based on _t_w_m code, which was written by Thomas LaS-
          trange.






















                                                                         35



