VMSAPPS help entry source for FVWM

! -------------------------------- cut here ------------------------------
1 FVWM
 fvwm - F(?) Virtual Window Manager for X11

 fvwm [ options ]

2 DESCRIPTION
 Fvwm  is  a  window  manager  for  X11.   It  is  a derivative of twm,
 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  twm,  due  primarily to a redesign of twm's method of
 storing mouse bindings.  In addition, many of the configurable options
 of twm 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.)

2 Note_for_XFREE86_users
 XFree86  provides  a  virtual  screen whose operation can be confusing
 when used in conjunction with fvwm.  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 fvwm'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  ineach  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 fvwm it is recommended that you disable
 XFree86's virtual screen by setting the virtual  screen  size  to  the
 physical  screen  size.   After  you become familiar with fvwm you may
 want to re-enable XFree86's virtual screen.


2 Copyrights
 Since fvwm is derived from twm code it shares twm's copyrights.

 fvwm  is  copyright 1988 by Evans and Sutherland Computer Corporation,
 Salt Lake City, Utah, and  1989  by  the  Massachusetts  Institute  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
 notice appear in supporting documentation, and that the names of Evans
 & Sutherland and M.I.T.  not  be  used  in  advertising  in  publicity
 pertaining  to  distribution of the software without specific, written
 prior permission.

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

2 Anatomy_OF_A_Window
 fvwm  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 button 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" configuration parameter below.

2 The_Virtual_DESKTOP
 Fvwm  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 (concept: 
 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 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 pixels
 from the lower right corner of the visible portion of the screen.  Not
 all applications support window geometries with negative 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 understand
 this option, however.


2 Initialization
 During initialization, fvwm 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, fvwm will search for a
 file named .fvwmrc in the users home directory. Failing that, it  will
 look  for the system.fvwmrc for system-wide defaults.  If that file is
 not found, fvwm will exit.

 Fvwm will set two environment variables which will be inherited by its
 children.  These are $DISPLAY which describes  the  display  on  which
 fvwm 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.

2 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.  Alternately, 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.

2 Icons
 The  basic Fvwm configuration uses monochrome bitmap icons, similar to
 twm.  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.


!! 2     MODULES
!!           A module is a separate program which runs as a separate Unix pro-
!!           cess but transmits commands to fvwm to execute. Future releases
!!           are expected to provide a means for these modules to extract win-
!!           dow information from fvwm.  Users can write their own modules to
!!           do any weird or bizarre manipulations without affecting the
!!           integrity of fvwm itself.
!! 
!!           Modules MUST be spawned by fvwm so that it can set up two pipes
!!           for fvwm 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.
!! 
!!           Modules can be spawned during fvwm 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 fvwm is told to quit, then fvwm 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 fvwm 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 fvwm 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.
!! 
2 ICCCM_Compliance
 Fvwm  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
 fvwm and most other window managers.

2 M4_Preprocessing
 If  fvwm is compiled with the M4 option, fvwm uses m4(1) to preprocess
 its setup files before parsing.  This way you can  use  m4  macros  to
 perform  operations  at runtime.  This makes it very easy to work with
 different displays with different characteristics.

 For  example,  depending  on your mood, you might want different color
 schemes.  One way of doing this is by using the -m4opt to specify your
 mood.  For a sunny mood use -m4opt -DSunny; for a dark mood use -m4opt
 -DDark.  Your .fvwmrc file might then contain:

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

               ifdef(`Dark',`
               StdForeColor        Black
               StdBackColor        #60a0c0
               HiForeColor         black
               HiBackColor         #c06077
               PagerBackColor      #5c54c0
               PagerForeColor      orchid
               StickyForeColor          Black
               StickyBackColor          #60c0a0 ')


 The following m4 symbols are predefined by fvwm:

    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 fvwm.

    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).

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

    TWM_TYPE                Tells which twm offshoot is running.  It
                            will always be set to the string "fvwm"
                            in this program.  This is useful for pro-
                            tecting parts of your .twmrc file that
                            fvwm proper won't understand (like
                            WorkSpaces) so that it is still usable
                            with other twm 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 m4(1) manual well and
 understand the power of m4, this will be a very  useful  and  powerful
 tool.   But  if you use any of the symbols which are predefined by m4,
 you are in severe danger! For example, Sun's m4 predefines 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 useful. 
 To  change  the  quoting  characters  used  by  m4,  use  the  options
 -m4-squote  and -m4-equote.  Be sure to specify both options otherwise
 m4 will be confused.  When these are given,  a  changequote  macro  is
 given before the users fvwmrc file is processed.

 NOTE:  Some versions of m4 are broken with respect to changing quoting
 characters and included files.  When the quoting  strings  are  longer
 than one character, the macro "include(<>)", 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  m4  an  additional  option is available.  By
 specifying -m4-prefix when starting fvwm, m4 is instructed  to  prefix
 all builtin macros with m4_.  Thus, include becomes m4_include.

 The availability of the m4 preprocessing is subject to the compilation
 define M4.

2 Options
 These are the command line options that are recoginzed by fvwm:

  -f config_file
       Causes fvwm to use config_file 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 fvwm's internal error
       messages are correct.

  -d displayname
       Manage the display called "displayname" instead of the name
       obtained from the environment variable $DISPLAY.

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

  -version
       Print the version of fvwm to stderr.

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

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

  -m4-prefix
       If GNU m4 is available, cause m4 to prefix all builtin com-
       mands with m4_.

  -m4opt option
       Pass this option to m4.  The option can be any string of
       characters without spaces.  This option can occur multiple
       times.  If GNU m4 is available, DO NOT pass the -P option
       here.  Use -m4-prefix instead.

  -m4-squote string
       Use this given string as the starting quote characters.  You
       must also specify -m4-equote.

  -m4-equote string
       Use this given string as the ending quote characters.  You
       must also specify -m4-squote.

  -m4prog path
       Use path 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.


2 Configuration_FILES
 The  configuration file is used to describe mouse and button bindings,
 colors, the virtual display size, and  related  items.   This  section
 describes the configuration options.  Lines beginning with '#' will be
 ignored by fvwm.  Lines starting with  '*'  are  expected  to  contain
 module  configuration commands (rather than configuration commands for
 fvwm 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 delay
        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 fvwm decorations to request backing store. See the
        discussion on AppsBackingStore.


   BoundaryWidth Width
        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 button# WidthxHeight
        Defines the rectangular decoration shape to be used in a
        title-bar button.  button# 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.
        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 fvwm will do its best to
        center the target window in the desktop viewport, rather
        than just lining up to the closest page.


   CirculateSkip windowname
        Causes windows with the indicated name to be skipped over
        when the circulate-up or circulate-down functions are
        invoked. windowname 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 delay
        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  cursor_num cursor_type
        This provides a very awkward way of changing cursor styles.
        Cursor_num tells which cursor you are changing, and is a
        number between 0 and 12, as follows:
           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 cursor_type argument is a number which tells the cursor
       shape to use. The available numbers can be found in
       the 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
         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 fvwm 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 Scale
        Defines the virtual desktop scale with respect to the
        screen.


   DeskTopSize HorizontalxVertical
        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 scrolling moving
        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 fvwm 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
        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 horizontal vertical
        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 fvwm will
        scroll by whole pages, wrapping around at the edge of the
        desktop.


   Font fontname
        Makes fvwm use font fontname instead of "fixed" for menus,
        the resize indicators, and icon labels (if IconFont is not
        specified).


   Function FunctionName
        Starts the definition of a complex function, composed of the
        fvwm built-in functions, which will later be bound to a
        mouse button or key. FunctionName 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, fvwm will wait to see if the user is click-
        ing, double-clicking, or dragging the mouse. After the deci-
        sion is made, fvwm will execute only the built-ins from the
        function definition whose trigger action matches the action
        performed by the user.

        If the following example were bound to button 1 in a window
        title-bar, then, when button 1 is pressed, fvwm would wait
        150 msec to see if the button is released. If the button is
        not released fvwm will start a move operation. When the move
        operation is complete a raise operation will be performed.
        If a button release is detected then fvwm 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 fvwm 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 fvwm is restarted. It
        can be used to start modules and set background patterns but
        probably should not be used to start programs.


   HiBackColor colorname
        Sets the background color of the selected window to color-
        name. When using a monochrome screen this option is ignored
        and white is used.


   HiForeColor colorname
        Sets the color of the selected window's title to colorname.
        When using a monochrome screen this option is ignored and
        black is used.


   Icon windowname bitmap-file
        Specifies the bitmap to be used for a window when it is
        iconified.  The windowname can be an application's window
        name or class name and must be enclosed in quotes. The
        bitmap-file 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.
        If fvwm is compiled with XPM support for color icons then
        bitmap can be an XPM pixmap file.

        windowname should be enclosed in double quotes but bitmap-
        file should not. Environment variables should not be used in
        the bitmap-file specification.

        If windowname 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 left top right bottom
        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 left or right is negative, then fvwm
        will add the screen width to it. If top or bottom is nega-
        tive, then fvwm 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 fvwm will place icons near the current pointer loca-
        tion.


   IconFont fontname
        Makes fvwm use font fontname for icon labels. If omitted,
        the menu font (specified by the Font configuration parame-
        ter) will be used instead.


   IconPath path
        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 fvwm is built, then m4 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 keyname Context Modifiers Function
        Binds  a keyboard key to a specified fvwm 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
        keyname is one of the entries from the X11 keysymdef.h, with
        the  leading  XK_  omitted. The Context and Modifiers 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 fvwm will ignore this ICCCM
        convention.


   MenuBackColor colorname
        Sets the menu background color. When using monochrome this
        option is ignored. This option is only available if fvwm is
        compiled with MENUCOLOR defined.


   MenuForeColor colorname
        Sets the menu foreground color. When using monochrome this
        option is ignored. This option is only available if fvwm is
        compiled with MENUCOLOR defined.


   MenuStippleColor colorname
        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
        fvwm is compiled with MENUCOLOR defined.


   Module ModuleName
        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.  Module 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
        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 fvwm to search
        when looking for a module to load.  Individual directories
        do not need trailing slashes.


   Mouse Button Context Modifiers Function
        Defines a mouse binding. Button is the mouse button number.
        If Button is zero then any button will perform the specified
        function.  Context 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.

        Modifiers 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.

        Function is one of fvwm'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
        fvwm's 2 pixel borders.


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


   MWMDecorHints
        Causes fvwm 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 fvwm 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, fvwm simply shades out the prohibited func-
        tions. Also, because fvwm 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
        fvwm 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 twm style press-button-2


   NoBorder windowname
        Keeps fvwm from putting decorative borders on windows named
        windowname. 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. windowname can be a window's
        name or its class.
        If you specify both NoBorder windowname and NoTitle win-
        downame for the same window in your .fvwmrc file the window
        will be completely undecorated.

        Windowname 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 Width
        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 fvwm 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 windowname
        Keeps fvwm from putting a title-bar in the decorations for
        windows named windowname. This is handy for clocks and simi-
        lar gadgets that you don't want to take up too much space.
        windowname can be a window's name or its class.

        Windowname 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 percentage
        Tells fvwm 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
        rubber-bands.


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


   Pager  X_Location Y_Location
        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 colorname
        Causes the pager foreground color to be colorname 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 fvwm this option is unavailable.


   PagerBackColor colorname
        Causes the pager background color to be colorname instead of
        white.  On a monochrome screen this option is ignored. If
        the NO_PAGER option is set when building fvwm this option is
        unavailable.


   PagerFont fontname
        Makes fvwm use font fontname 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 pagingdefaultvalue
        Tells fvwm if it should start up with paging enabled or dis-
        abled.  "PagingDefault 0" will start fvwm with paging
        disabled; "PagingDefault 1" will start fvwm with paging
        enabled by default.


   PixmapPath path
        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 PopupName
        Starts the definition of a pop-up menu which will later be
        bound to a mouse button or key. PopupName 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.

        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 fvwm.  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 fvwm 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 windowname desk-number
        This command causes windows whose name or class is
        windowname to be initially placed on desktop number desk-
        number.  windowname 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.

        Windowname 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 windowname
        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. windowname can be a window's
        name or its class.

        Windowname 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 colorname
        Sets the background color for menus and non-selected windows
        to colorname. 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 colorname
        Sets the foreground color for menus and non-selected window
        titles to colorname. 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 colorname
        Sets the background color for non-selected sticky windows to
        colorname. When using a monochrome screen this option is
        ignored and white is used. Only available if -DMORE_COLORS
        is used when compiling.


   StickyForeColor colorname
        Sets the foreground color for non-selected sticky window
        titles to colorname. When using a monochrome screen this
        option is ignored and black is used. Only available if
        -DMORE_COLORS is used when compiling.


   Sticky windowname
        Sticky windows "stick to the screen's glass." That is, they
        don't move the the viewport into the virtual desktop
        changes.  windowname can be a window's name or its class.

        Windowname 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 windowname options
        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
        default or to set the window manager default styles.

        windowname 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.

        options 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 fvwm default behavior
        and can be used if you want to change the fvwm 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
             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 fontname
        Makes fvwm use font fontname instead of "fixed" for the win-
        dow title bar.

   WindowListSkip windowname
        Causes windows with the indicated name to be left out of the
        window list.

        Windowname 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 number
        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.

2 Built-IN_Functions
 Fvwm  supports  a  set  of  built-in  functions  which can be bound to
 keyboard or mouse buttons:

   Beep Makes the computer beep.


   CirculateDown [ name window_name ]
        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 window_name.  The optional argument name is required
        if window_name 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 [ name window_name ]
        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 window_name.  The optional argument name is required
        if window_name 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
        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 horizonal vertical
        Moves the mouse pointer by horizontal pages in the X direc-
        tion and vertical 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 arg1 arg2
        Changes to another desktop (workspace, room).

        If arg1 is non zero then the next desktop number will be the
        current desktop number plus arg1. Desktop numbers can be
        negative.

        If arg1 is zero then the new desktop number will be arg2.

        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 name command
        Executes command. command is not quoted but name is.  name
        is the name that appears in a menu, if that is where the
        function is called from. name is required even if the
        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 fvwm 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 [ value ]
        Iconifies a window if it is not already iconified or de-
        iconifies it if it is already iconified. If the optional
        argument value 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.

   Maximize [  horizontal vertical ]
        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 ModuleName
        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.
        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 fvwm, generally causing X to exit too.


   Raise
        Allows the user to raise a window.

   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  name WindowManagerName
        Causes fvwm 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 WindowManagerName.

        WindowManagerName  is not quoted but name is.  name is the
        name that appears in a menu, if that is where the function
        is called from. name 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 horizonal vertical
        Scrolls the virtual desktop's viewport by horizontal pages
        in the x-direction and vertical 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
        1000 then scrolling will wrap around at the edge of the
        desktop. If "Scroll 100000 0" is executed over and over fvwm
        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 name
        This built-in is intended to be used in fvwm functions only.
        It causes execution of a function to pause until a new win-
        dow name name appears. Fvwm 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 [ name window_name ]
        Same as CirculateDown but de-iconifies any iconified windows
        as it focuses on them.


   WindowsDesk new_desk
        Moves the selected window the the desktop specified as
        new_desk.


   WindowList arg1 arg2
        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
        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 arg1 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 arg1 is less than 2 then all windows on all desktops
        (except those listed in WindowListSkip directives) will be
        shown.

        If arg1 is 2 or 3 then only windows on the current desktop
        will be shown.

               If arg1 is 4 or 5 then only windows on desktop number arg2
               will be shown.

2 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.

2 Supplied_Configuration
 A  sample configuration file, system.fvwmrc, is supplied with the fvwm
 distribution.  It is well commented and can be used  as  a  source  of
 examples for fvwm configuration.
2 Use_ON_MULTI-SCREEN_Displays
 If  the -s command line argument is not given, fvwm will automatically
 start up on every screen on the specified display.  After fvwm  starts
 each  screen  is  treated  independently.  Restarts of fvwm 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 fvwm is compiled with

          -DMULTIPLE_SCREENS

2 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 follow 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.

2 AUTHOR
 Robert Nation (nation@rocket.sanders.lockheed.com) with help from many
 people, based on twm code, which was written by Thomas LaStrange.

 VMSPort:
 Hiromi Kimura      hiromi@tac.tsukuba.ac.jp