Index of Section 1 Manual Pages

Interix / SUAfvwm2.1Interix / SUA

FVWM2(1)                                                 FVWM2(1)



NAME
       fvwm2 - F(?) Virtual Window Manager (version 2) for X11

SYNOPSIS
       fvwm2 [-blackout] [-clientId id] [-cmd config_command] [-d
       displayname] [-debug] [-debug_stack_ring] [-f config_file]
       [-h]  [-replace]  [-restore  state_file]  [-s]  [-version]
       [-visual visual_class] [-visualId id]


DESCRIPTION
       Fvwm is a window manager for X11.  It is designed to mini-
       mize  memory  consumption,  provide  a  3D  look to window
       frames, and a virtual desktop.

       Note that there are several window  managers  around  that
       have  "fvwm"  in  their name.  In the past, version 2.x of
       fvwm was commonly called fvwm2 to distinguish it from  the
       former  version  1.x  (fvwm or even fvwm1).  Since version
       1.x has been replaced by version 2.x a long  time  ago  we
       simply  call  version  2.x and all versions to come, fvwm,
       throughout this document, although the executable  program
       is named fvwm2.  There is an fvwm offspring called fvwm95.
       Although it is very similar to older versions of fvwm ver-
       sion  2  it is technically a different window manager that
       has been developed by different people.  The main goal  of
       fvwm95  was  to  supply  a  Windows 95 like look and feel.
       Since then fvwm has been greatly enhanced  and  only  very
       few  features  of  fvwm95 can not be imitated by fvwm.  No
       active development has been going on for fvwm95  for  sev-
       eral  years  now.   Unfortunately Red Hat (a popular Linux
       distributor) has a pre-configured fvwm  package  based  on
       fvwm version 2.x that is called fvwm95 too.

       Fvwm  provides  both  a large virtual desktop and multiple
       disjoint  desktops  which  can  be  used   separately   or
       together.   The virtual desktop allows you to pretend that
       your video screen is  really  quite  large,  and  you  can
       scroll  around  within the desktop.  The multiple disjoint
       desktops allow you to pretend that you really have several
       screens  to  work  at, but each screen is completely unre-
       lated to the others.

       Fvwm provides keyboard accelerators  which  allow  you  to
       perform  most  window-manager  functions, including moving
       and resizing windows, and operating the menus, using  key-
       board shortcuts.

       Fvwm  has  also blurred the distinction between configura-
       tion commands and built-in commands that most  window-man-
       agers  make.   Configuration commands typically set fonts,
       colors, menu contents, key and  mouse  function  bindings,
       while built-in commands typically do things like raise and
       lower  windows.   Fvwm  makes  no  such  distinction,  and
       allows,  to  the  extent that is practical, anything to be
       changed at any time.

       Other noteworthy differences between Fvwm  and  other  X11
       window  managers  are  the introduction of the SloppyFocus
       and  NeverFocus focus methods.  Focus policy can be speci-
       fied  for  individual  windows.  Windows using SloppyFocus
       acquire focus when the pointer moves into them and  retain
       focus  until  some other window acquires it.  Such windows
       do not lose focus when the pointer  moves  into  the  root
       window.   The  NeverFocus  policy is provided for use with
       windows into which one never types (e.g.  xclock,  oclock,
       xbiff,  xeyes,  tuxeyes)  -  for example, if a SloppyFocus
       terminal window has focus, moving the cursor over a Never-
       Focus  decoration  window  won't  deprive  the terminal of
       focus.


OPTIONS
       These are the command line options that are recognized  by
       fvwm:

       -blackout
              This  option is provided for backward compatibility
              only.  Blacking out the screen  during  startup  is
              not necessary anymore.

       -clientId id
              This  option is used when fvwm is started by a ses-
              sion manager. Should not be used by a user.


       -cmd config_command
              Causes fvwm to use config_command instead of  'Read
              .fvwm2rc'  as  its  initialization  command.  (Note
              that up to 10 -f and -cmd parameters can be  given,
              and they are executed in the order specified.)

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

       -debug Puts X transactions in synchronous mode, which dra-
              matically slows things down,  but  guarantees  that
              fvwm's  internal  error  messages are correct. Also
              causes fvwm to output debug messages while running.

       -debug_stack_ring
              Enables  stack ring debugging.  This option is only
              intended for internal debugging and should only  be
              used by developers.

       -f config_file
              Causes fvwm to read config_file instead of .fvwm2rc
              as its initialization file.  This is equivalent  to
              -cmd 'Read config_file'.

       -h     A short usage description is printed.

       -replace
              Try  to  take  over  from  a previously running wm.
              This does not work unless the other wm is ICCCM 2.0
              compliant.

       -restore state_file
              This  option is used when fvwm is started by a ses-
              sion manager.  Should not be used by a user.

       -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
              attempts  to  start  up  on all screens of a multi-
              screen display.

       -version
              Prints the version of fvwm to stderr.  Also  prints
              an  information  about  the compiled in support for
              readline, rplay, stroke, xpm, gnome hints,  session
              management and multibyte characters.

       -visual visual_class
              Causes fvwm to use visual_class for the window bor-
              ders and menus.  visual_class can be  "StaticGray",
              "GrayScale",  "StaticColor",  "PseudoColor", "True-
              Color" or "DirectColor".

       -visualId id
              Causes fvwm to use id as the visualId for the  win-
              dow  borders  and  menus.  id can be specified as N
              for decimal or 0xN for hexadecimal. See man page of
              xdpyinfo for a list of supported visuals.



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 begins a move
       operation on the window.  Pressing button 1 in the  corner
       frame pieces begins a resize operation.  Pressing button 2
       anywhere in the border brings up an extensive list of win-
       dow operations.

       Up  to ten title-bar buttons may exist.  Their use is com-
       pletely 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  command
       below.



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, divided into m by n pages
       which are each the size of the  physical  screen,  windows
       which  are  larger  than  the  screen  or  large groups of
       related windows can easily be viewed.

       The (m by n) size (i.e. number of pages)  of  the  virtual
       desktops can be changed any time, by using the DeskTopSize
       built-in command.  All virtual desktops must be (are)  the
       same size.  The total number of distinct desktops does not
       need to be specified, but is limited  to  approximately  4
       billion  total.  All windows on a range of desktops can be
       viewed in the FvwmPager, a miniature view of the desktops.
       The  pager is an accessory program, called a module, which
       is not essential for the window manager to operate.   Win-
       dows may also be listed, along with their geometries, in a
       window list, accessible as a pop-up menu, or as a separate
       window, called the FvwmWinList (another module).

       Fvwm  keeps the windows on the desktop in a layered stack-
       ing order; a window in a lower layer never obscures a win-
       dow  in  a  higher  layer.  The  layer  of a window can be
       changed by using the Layer command.  The concept of layers
       is  a  generalization of the StaysOnTop flag of older fvwm
       versions. The StaysOnTop and StaysPut  Style  options  are
       now  implemented by putting the windows in suitable layers
       and the previously missing StaysOnBottom Style option  has
       been added.

       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  gad-
       get  and it always stays with you.  Icons can also be made
       to stick to the glass, if desired.

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

            xterm -geometry +0+0

       creates a window in the upper-left hand corner of the vis-
       ible 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, invoking:

            xterm -geometry +1000+1000

       places a 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.  A geometry  specified  as  something
       like:

            xterm -geometry -5-5

       places  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 place  the  win-
       dow's  upper  right  hand corner 5 pixels above and to the
       left of the upper left hand corner of the  screen;  others
       may do just plain bizarre things.

       There  are  several  ways  to cause a window to map onto a
       desktop or page other than the currently active  one.  The
       geometry technique mentioned above (specifying x,y coordi-
       nates larger than the physical screen size), however, suf-
       fers  from the limitation of being interpreted relative to
       the current viewport:  the  window  may  not  consistently
       appear  on  a  specific page, unless you always invoke the
       application from the same page.

       A better way to place windows on a different page,  screen
       or  desk  from the currently mapped viewport is to use the
       StartsOnPageorStartsOnScreen style specification (the suc-
       cessors  to  the older StartsOnDesk style) in the .fvwm2rc
       configuration file.  The placement is consistent: it  does
       not  depend  on your current location on the virtual desk-
       top.

       Some applications that understand standard Xt command line
       arguments  and X resources, like xterm and xfontsel, allow
       the user to specify the start-up desk or page on the  com-
       mand line:

            xterm -xrm "*Desk:1"

       starts an xterm on desk number 1;

            xterm -xrm "*Page:3 2 1"

       starts  an  xterm two pages to the right and one down from
       the upper left hand page of desk number 3.  Not all appli-
       cations understand the use of these options, however.  You
       could achieve the same results with the following lines in
       your .Xdefaults file:

            XTerm*Desk: 1

       or

            XTerm*Page: 3 2 1




USE ON MULTI-SCREEN DISPLAYS
       If  the  -s command line argument is not given, fvwm auto-
       matically starts up on every screen on the specified  dis-
       play.   After  fvwm starts each screen is treated indepen-
       dently.  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.  This is not to be confused with Xinerama sup-
       port.



XINERAMA SUPPORT
       Fvwm supports the Xinerama extension of  newer  X  servers
       which  is similar to multi head support (multiple screens)
       but allows to move windows between screens.   If  Xinerama
       support  has  been compiled into fvwm, it is used whenever
       fvwm runs on an X server that supports and  uses  multiple
       screens  via  Xinerama.   Without  this  option, the whole
       desktop is treated as one big screen.  For example,  menus
       might  pop  up  right between two screens.  The EdgeResis-
       tance command allows to  specify  an  explicit  resistance
       value  for moving windows over the screen edge between two
       Xinerama screens.  Xinerama support can be enabled or dis-
       abled  on  the fly or from the configuration file with the
       Xinerama command.  Many modules and commands  work  nicely
       with Xinerama displays.

       Everywhere  where  a geometry in the usual X format can be
       supplied, fvwm's Xinerama extension allows  to  specify  a
       screen  in  addition  to  the geometry (or even the screen
       alone).  To do this, a '@' is added  to  the  end  of  the
       geometry  string followed by either the screen number or a
       letter.  A number is taken as the number of  the  Xinerama
       screen  to  be  used (as configured in the X server).  The
       letter can be one of 'g' for the global screen (the  rect-
       angle  that  encloses  all  Xinerama screens), 'p' for the
       primary screen (see below), 'c'  for  the  current  screen
       (the  one  that currently contains the pointer).  If the X
       server does not support Xinerama or  only  one  screen  is
       used, the screen bit is ignored.


            Style * IconBox 64x300-0-0@p


       Xinerama  support  can  be  configured  to  use  a primary
       screen.  Fwvm can be configured to place new  windows  and
       icons  on  this screen.  The primary screen is screen 0 by
       default but can be changed with the  XineramaPrimaryScreen
       command.

       Xinerama  support was designed to work out of the box with
       the same configurations file that would work on  a  single
       screen.   It may not work too well if the involved screens
       use different screen resolutions.  In this situation, win-
       dows  may  get  stuck  in the portion of the whole desktop
       that belongs to neither screen.  If this happens, the win-
       dows or icons can be retrieved with the command


            All MoveToScreen


       that can be entered in an FvwmConsole window or with Fvwm-
       Command.

       For multi-screen implementations other than Xinerama, such
       as  Single  Logical  Screen,  it is possible to simulate a
       Xinerama configuration if the total screen seen by FVWM is
       made  up  of  equal  sized monitors in a rectangular grid.
       The commands XineramaSls and XineramaSlsSize are  used  to
       configure this feature.



INITIALIZATION
       During  initialization,  fvwm searches for a configuration
       file which describes key and  button  bindings,  and  many
       other  things.  The  format  of  these  files is described
       later.  Fvwm first searches for configuration files  using
       the command

            Read .fvwm2rc

       This  looks  for  .fvwm2rc in $HOME/.fvwm or $FVWM_USERDIR
       directories, as described in Read below.  If  this  fails,
       fvwm also searches for this file in the $HOME directory or
       for system.fvwm2rc file in the system place.  If a config-
       uration file is not found, any mouse button or the Help or
       F1 keys on the root window brings up menus and forms  that
       can create a starting configuration file.

       Fvwm sets two environment variables which are inherited by
       its children.  These are $DISPLAY which describes the dis-
       play  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 is set to a net-
       work-ready  description  of  the  display.    $HOSTDISPLAY
       always  uses  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.

       If you want to start some  applications  or  modules  with
       fvwm, you can simply put

            Exec app

       or

            Module FvwmXxx

       into  your  .fvwm2rc,  but  it is not recommended; do this
       only if you know what you are doing. It is usually  criti-
       cal  to  start  applications  or modules after .fvwm2rc is
       read, because it contains styles or module  configurations
       which can affect window appearance and functionality.

       The  standard  way  to  start  applications  or modules on
       fvwm's start up is to add them to an initialization  func-
       tion  (usually  StartFunction  or InitFunction).  This way
       they  are  only  started  after  fvwm  reads  the   entire
       .fvwm2rc.

       Fvwm  has  three  special  functions  for  initialization:
       StartFunction, which is executed on startups and restarts;
       InitFunction  and RestartFunction, which are executed dur-
       ing initialization and restarts (respectively) just  after
       StartFunction.  These  functions  may  be  customized in a
       user's .fvwm2rc file via the AddToFunc command  (described
       later) to start up modules, xterms, or whatever you'd like
       to have started by fvwm.

       Fvwm has also a special exit function: ExitFunction,  exe-
       cuted when exiting or restarting before actually quitting.
       It could be used to explicitly kill modules, etc.

       If fvwm is run under a session manager, functions Session-
       InitFunction   and   SessionRestartFunction  are  executed
       instead of InitFunction and RestartFunction.   This  helps
       to  define  the  user's  .fvwm2rc file to be good for both
       running under a session manager and without it.  Generally
       it  is a bad idea to start xterms or other applications in
       "Session*" functions.  Also someone can  decide  to  start
       different modules while running under a session manager or
       not.  For the similar purposes SessionExitFunction is used
       instead of ExitFunction.

            DestroyFunc StartFunction
            AddToFunc StartFunction
             + I ModuleSynchronous FvwmTheme
             + I Module FvwmPager * *
             + I Module FvwmButtons

            DestroyFunc InitFunction
            AddToFunc InitFunction
             + I Module FvwmBanner
             + I Module FvwmTaskBar
             + I xsetroot -solid cyan
             + I Exec xterm
             + I Exec netscape

            DestroyFunc RestartFunction
            AddToFunc RestartFunction
             + I Module FvwmTaskBar

            DestroyFunc SessionInitFunction
            AddToFunc SessionInitFunction
             + I Module FvwmBanner

            DestroyFunc SessionRestartFunction
            AddToFunc SessionRestartFunction
             + I Nop

       You don't need to define all special functions if some are
       empty.


COMPILATION OPTIONS
       Fvwm has a number of compile-time options.   If  you  have
       trouble  using  a certain command or feature, check to see
       if support for it was included at compile time.   Optional
       features are described in the config.h file that is gener-
       ated during compilation.


ICONS
       The basic fvwm configuration uses monochrome bitmap icons.
       If XPM extensions are compiled in, then color icons can be
       used. In order to use these options you need the XPM pack-
       age, as described in the INSTALL.fvwm file.

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


MODULES
       A module is a separate program which runs  as  a  separate
       Unix  process  but  transmits commands to fvwm to execute.
       Users can write their own  modules  to  do  any  weird  or
       bizarre  manipulations  without  bloating or 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 are already 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 at any time during  the
       X  session by use of the Module built-in command.  Modules
       can exist for the duration of the X session, or  can  per-
       form  a  single  task  and  exit.   If the module is still
       active when fvwm is told to quit,  then  fvwm  closes  the
       communication  pipes  and  waits to receive a SIGCHLD from
       the module, indicating that it has detected the pipe  clo-
       sure  and  has exited.  If modules fail to detect the pipe
       closure fvwm exits after approximately 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
       command engine.  Text commands are formatted  just  as  in
       the  case  of  a mouse binding in the .fvwm2rc setup file.
       Certain auxiliary information is also transmitted,  as  in
       the  sample module FvwmButtons.  The FvwmButtons module is
       documented in its own man page.

       Please refer to the MODULE COMMANDS section for details.


ICCCM COMPLIANCE
       Fvwm attempts to be ICCCM  2.0  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.  In particular you cannot have  the  same
       keyboard shortcuts working with your fvwm and another fvwm
       running within Xnest (a nested X server running in a  win-
       dow).  The same problem exists with mouse bindings.

       The ICCCM states that windows possessing the property

            WM_HINTS(WM_HINTS):
                Client accepts input or input focus: False

       should not be given the keyboard input focus by the window
       manager. These windows can take the input focus  by  them-
       selves,  however.  A number of applications set this prop-
       erty, and yet expect the window-manager to give  them  the
       keyboard  focus  anyway,  so fvwm provides a window-style,
       Lenience, which allows fvwm to overlook this  ICCCM  rule.
       Even  with this window-style it is not guaranteed that the
       application accepts focus.

       The differences between ICCCM  1.1  and  2.0  include  the
       ability  to  take  over from a running ICCCM 2.0 compliant
       window manager; thus

            fvwm2; vi .fvwm2rc; fvwm2 -replace

       resembles the Restart command.   It  is  not  exactly  the
       same,  since  killing the previously running wm may termi-
       nate your X session, if the wm was  started  as  the  last
       client in your .Xclients or .Xsession file.

       Further  additions  are  support  for client-side colormap
       installation (see the  .SM  ICCCM  for  details)  and  the
       urgency  hint.   Clients can set this hint in the WM_HINTS
       property of their window and expect the window manager  to
       attract  the  users attention to the window.  Fvwm has two
       re-definable functions for this purpose, "UrgencyFunc" and
       "UrgencyDoneFunc",  which  are  executed  when the flag is
       set/cleared.  Their default definitions are:

            AddToFunc UrgencyFunc
             + I Iconify off
             + I FlipFocus
             + I Raise
             + I WarpToWindow 5p 5p
            AddToFunc UrgencyDoneFunc
             + I Nop



GNOME COMPLIANCE
       Fvwm   attempts   to   be    GNOME    compliant.     Check
       http://www.gnome.org  for  what that may mean.  GNOME sup-
       port is a compile time option which is on by default.   To
       disable   GNOME   hints  for  some  or  all  windows,  the
       GNOMEIgnoreHints style can be used.


MWM COMPATIBILITY
       Fvwm provides options  to  emulate  Motif  Window  Manager
       (Mwm)  as  well  as possible.  Please refer to the Emulate
       command as well as to the  Mwm  specific  options  of  the
       Style and MenuStyle commands for details.


OPEN LOOK and XVIEW COMPATIBILITY
OPEN LOOK and XVIEW COMPATIBILITY
       Fvwm  supports  all the Open Look decoration hints (except
       pushpins).  Should you use any  such  application,  please
       add the following line to your .fvwm2rc:

            Style * OLDecor

       Most  (perhaps  all) Open Look applications have a strange
       notion of keyboard focus handling.  Although a lot of work
       went  into  fvwm  to  work  well with these, you may still
       encounter problems.  It is recommended to use the NeverFo-
       cus  focus  policy  and  the NoLenience style for all such
       applications (the windows will still get the focus):

            Style  NeverFocus, NoLenience

       But in case you can not live with that focus  policy,  you
       can  try using one of the other focus policies in combina-
       tion with the Lenience style:

            Style  MouseFocus, Lenience
            Style  SloppyFocus, Lenience
            Style  ClickToFocus, Lenience



M4 PREPROCESSING
       M4 pre-processing is handled by a module in fvwm.  To  get
       more  details, try man FvwmM4.  In short, if you want fvwm
       to parse your files with m4, then replace the command Read
       with  FvwmM4 in your .fvwm2rc file (if it appears at all),
       and start fvwm with the command

            fvwm2 -cmd "FvwmM4 .fvwm2rc"



CPP PREPROCESSING
       Cpp is the C-language pre-processor.  fvwm offers cpp pro-
       cessing  which mirrors the m4 pre-processing.  To find out
       about it, re-read the M4 section above, but  replace  "m4"
       with "cpp".


AUTO-RAISE
       Windows  can  be  automatically  raised  when  it receives
       focus, or some number of milliseconds  after  it  receives
       focus, by using the auto-raise module, FvwmAuto.


CONFIGURATION FILES
       The  configuration file is used to describe mouse and but-
       ton  bindings,  colors,  the  virtual  display  size,  and
       related  items.   The initialization configuration file is
       typically called .fvwm2rc.  By using the Read built-in, it
       is easy to read in new configuration files as you go.

       Lines  beginning  with  '#'  are  ignored  by fvwm.  Lines
       starting with '*' are expected to contain module  configu-
       ration  commands  (rather  than configuration commands for
       fvwm itself). Like in shell scripts embedded newlines in a
       configuration  file  line  can be quoted by preceding them
       with a backslash.  All lines linked in  this  fashion  are
       treated  as a single line.  The newline itself is ignored.

       Fvwm makes no distinction between  configuration  commands
       and built-in commands, so anything mentioned in the built-
       in commands section can be placed on a line by itself  for
       fvwm  to execute as it reads the configuration file, or it
       can be placed as an executable command in a menu or  bound
       to  a  mouse  button  or a keyboard key.  It is left as an
       exercise for the user to decide which function make  sense
       for initialization and which ones make sense for run-time.



SUPPLIED CONFIGURATION
       A sample configuration file, .fvwm2rc,  is  supplied  with
       the  fvwm  distribution.   It is well commented and can be
       used as a source of examples for fvwm configuration.




KEYBOARD SHORTCUTS
       Almost all window manager operations can be performed from
       the  keyboard  so mouse-less operation should be possible.
       In addition to scrolling around  the  virtual  desktop  by
       binding  the  Scroll  built-in to appropriate keys, Popup,
       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 causes the pointer movement to go in  larger
       steps  and  holding down the control key causes 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.



SESSION MANAGEMENT
       Fvwm supports session management according to the  X  Ses-
       sion  Management  Protocol.   It saves and restores window
       position, size, stacking order, desk, stickiness,  shaded-
       ness,  maximizedness,  iconifiedness for all windows. Fur-
       thermore, some global state is saved.

       Fvwm  doesn't  save  any  information  regarding   styles,
       decors,  functions  or  menus.  If you change any on these
       resources during a session (e.g. by issuing Style commands
       or by using various modules), these changes are lost after
       saving and restarting the session.  To  become  permanent,
       such changes have to be added to the configuration file.

       Note  further that the current implementation has the fol-
       lowing anomaly when used on a multi-screen display: Start-
       ing  fvwm  for the first time, fvwm manages all screens by
       forking a copy of itself  for  each  screen.   Every  copy
       knows  its  parent  and  issuing  a  Quit  command  to any
       instance of fvwm kills the master and thus all  copies  of
       fvwm.   When you save and restart the session, the session
       manager brings up a copy of fvwm on each screen, but  this
       time they are started as individual instances managing one
       screen only.  Thus a Quit kills only the copy it was  sent
       to.   This  is  probably not a very serious problem, since
       with session management, you are supposed to quit  a  ses-
       sion  through  the session manager anyway. If it is really
       needed,

            Exec exec killall fvwm2

       still kills all copies of fvwm.  Your system must have the
       killall command though.


BOOLEAN ARGUMENTS
       A  number  of  commands  take one or several boolean argu-
       ments.  These take a few equivalent inputs:  "yes",  "on",
       "true",  "t"  and  "y"  all  evaluate  to true while "no",
       "off", "false", "f" and "n" evaluate to false.  Some  com-
       mands  allow  "toggle" too which means that the feature is
       disabled if it is currently enabled and vice versa.


BUILT IN KEY AND MOUSE BINDINGS
       The following commands are built-in to fvwm:

            Key Help R A Popup MenuFvwmRoot
            Key F1 R A Popup MenuFvwmRoot
            Key Tab A M WindowList Root c c NoDeskSort
            Key Escape A MC EscapeFunc
            Mouse 0 R N Menu MenuFvwmRoot
            Mouse 1 TS A FuncFvwmRaiseLowerX Move
            Mouse 1 F  A FuncFvwmRaiseLowerX Resize
            AddToFunc FuncFvwmRaiseLowerX I Raise
            + M $0
            + D Lower

       The Help and F1 keys invoke a built-in menu that fvwm cre-
       ates.   This is primarily for new users that have not cre-
       ated their own configuration file. Either key on the  root
       (background)  window  pops  up  an  menu  to  help you get
       started.

       The Tab key pressed anywhere with the Meta  key  (same  as
       the  Alt  key  on PC keyboards) held down pop-ups a window
       list.

       Mouse button 1 on the title-bar or side  frame  can  move,
       raise or lower a window.

       Mouse  button 1 on the window corners can resize, raise or
       lower a window.

       You can override or remove these bindings. To  remove  the
       window list binding, use this:

            Key Tab A M -



BUILT IN COMMANDS
       Fvwm  supports  a  set  of built-in functions which can be
       bound to keyboard or mouse buttons.  If  fvwm  expects  to
       find  a  built-in  function  in  a  command, but fails, it

       checks to see if the specified command should have been

            Function (rest of command)

       or

            Module (rest of command)

       This allows complex functions or modules to be invoked  in
       a  manner which is fairly transparent to the configuration
       file.

       Example: the .fvwm2rc file contains the line

            HelpMe

       Fvwm looks for a built-in  command  called  "HelpMe",  and
       fails.   Next it looks for a user-defined complex function
       called "HelpMe".  If no such user defined function exists,
       Fvwm tries to execute a module called "HelpMe".

       Note: There are many commands that affect look and feel of
       specific, some or all  windows,  like  Style,  Mouse,  the
       FvwmTheme module and many others.  For performance reasons
       such changes are not applied  immediately  but  only  when
       fvwm  is idle, i.e. no user interaction or module input is
       pending.  Specifically, new Style options that are set  in
       a  function  are  not applied until after the function has
       completed.  This can sometimes lead to unwanted effects.

       To force that all pending changes are applied immediately,
       use the UpdateStyles, Refresh or RefreshWindow commands.


   QUOTING
       Quotes are required only when needed to make fvwm consider
       two or more words to be a  single  argument.   Unnecessary
       quoting is allowed.  If you want a quote character in your
       text, you must escape it by using the backslash character.
       For  example,  if  you  have a pop-up menu called "Window-
       Ops", then you don't need quotes:

            Popup Window-Ops

       but if you replace the dash with a space,  then  you  need
       quotes:

            Popup "Window Ops"

       The supported quoting characters are double quotes, single
       quotes and reverse single  quotes.   All  three  kinds  of
       quotes are treated in the same way.  Single characters can
       be quoted with  a  preceding  backslash.   Quoting  single
       characters works even inside other kinds of quotes.


   COMMAND EXPANSION
       Whenever  a  fvwm  command line is executed, fvwm performs
       parameter expansion.  A parameter is a '$' followed  by  a
       word  enclosed  in  brackets  ($[...]) or a single special
       character.  If fvwm encounters an  unquoted  parameter  on
       the  command  line  it expands it to a string indicated by
       the  parameter  name.    Unknown   parameters   are   left
       untouched.  Parameter  expansion is performed before quot-
       ing.  To quote a '$' use "$$".

       In the past some single letter variables  were  supported.
       It  is  deprecated now, since they cause a number of prob-
       lems.  You should use the longer substitutes instead.

       Example:


            # Print the current desk number, horizontal
            # page and the window's class.
            Echo $[desk.n] $[page.nx] $[w.class]


       Note: If the command is called outside a  window  context,
       it  will print "$[w.class]" instead of the class name.  It
       is usually not enough to have the pointer over a window to
       have a context window.  To force using the window with the
       focus, the Current command can be used:

            Current Echo $[desk.n] $[page.nx] $[w.class]


       The parameters known by fvwm are:

            $$
               A literal '$'.

            $.
               The absolute directory of the currently Read file.
               Intended  for  creating  relative  and relocatable
               configuration trees.  If used outside of any  read
               file, the returned value is '.'.

            $c
               The  window's  resource  class  name or "$c" if no
               window is associated with the command.

               (Deprecated, use $[w.class] instead.)

            $d
               The current desk number.

               (Deprecated, use $[desk.n] instead.)

            $n
               The window's name or "$n" if no window is  associ-
               ated with the command.

               (Deprecated, use $[w.name] instead.)

            $r
               The window's resource name or "$r" if no window is
               associated with the command.

               (Deprecated, use $[w.resource] instead.)

            $v
               The first line printed  by  the  -version  command
               line option.

               (Deprecated, use $[version.line] instead.)

            $w
               The window-id (expressed in hex, e.g. 0x10023c) of
               the window the command was called for or  "$w"  if
               no window is associated with the command.

               (Deprecated, use $[w.id] instead.)

            $x
               The x coordinate of the current viewport.

               (Deprecated, use $[vp.x] instead.)

            $y
               The y coordinate of the current viewport.

               (Deprecated, use $[vp.y] instead.)

            $0 to $9
               The positional parameters given to a complex func-
               tion (a function that has been  defined  with  the
               AddToFunc  command).   "$0"  is  replaced with the
               first parameter, "$1" with  the  second  parameter
               and  so  on.   If  the  corresponding parameter is
               undefined, the "$..." is deleted from the  command
               line.

            $*
               All positional parameters given to a complex func-
               tion.  This includes parameters that follow  after
               "$9".

            $[version.num]
               The version number, like "2.6.0".

            $[version.info]
               The  version  info,  like " (from cvs)", empty for
               the official  releases.   (Always  empty  in  this
               branch.)

            $[version.line]
               The  first  line  printed  by the -version command
               line option.

            $[vp.x] $[vp.y] $[vp.width] $[vp.height]
               Either coordinate or the width or  height  of  the
               current viewport.

            $[desk.n]
               The current desk number.

            $[desk.width] $[desk.height]
               The width or height of the whole desktop, i.e. the
               width or height multiplied by the number of  pages
               in x or y direction.

            $[desk.pagesx] $[desk.pagesy]
               The  number  of  total  pages  in a desk in x or y
               direction.  This is the same as the values set  by
               DesktopSize.

            $[page.nx] $[page.ny]
               The  current page numbers, by X and Y axes, start-
               ing from 0.  page is equivalent  to  area  in  the
               GNOME terminology.

            $[w.id]
               The window-id (expressed in hex, e.g. 0x10023c) of
               the window the command was called for or "$[w.id]"
               if no window is associated with the command.

            $[w.x] $[w.y] $[w.width] $[w.height]
               Either  coordinate  or  the width or height of the
               current window if it is not iconified.  If no win-
               dow  is  associated with the command or the window
               is iconified, the string is left as is.

            $[w.name] $[w.iconname] $[w.class] $[w.resource]
               The window's name or icon name or  resource  class
               or  resource  name  respectivelly,  or  unexpended
               "$[w.]" string if no window is  associ-
               ated with the command.

            $[screen]
               The  screen number fvwm is running on.  Useful for
               setups with multiple screens.

            $[fg.cs]
            $[bg.cs]
            $[hilight.cs]
            $[shadow.cs]
               These class of parameters  is  replaced  with  the
               name  of  the  foreground  (fg),  background (bg),
               hilight (hilight) or shadow (shadow) color that is
               defined  in colorset  (replace  with zero or
               a positive integer).  For example  "$[fg.cs3]"  is
               expanded  to  the  name of the foreground color of
               colorset 3 (in rgb:rrrr/gggg/bbbb  form).   Please
               refer  to the man page of the FvwmTheme module for
               details about colorsets.  Note that although other
               parameters  cannot be used in module configuration
               lines, it is possible to use this class of parame-
               ters.   They can be used wherever a module expects
               a color name.  Since the FvwmTheme module  is  not
               running when fvwm first passes through its config-
               uration file, you may not get the desired  results
               if you use this in commands like

                    Style * HilightFore $[fg.cs0], HilightBack $[bg.cs0]


            $[...]
               If  the string within the braces is neither of the
               above, fvwm tries to find an environment  variable
               with  this  name  and replaces its value if one is
               found  (e.g.  "$[PAGER]"  could  be  replaced   by
               "more").  Otherwise the string is left as is.

       Some  examples  can  be  found  in  the description of the
       AddToFunc command.


   THE LIST OF BUILTIN COMMANDS
       The commands descriptions below are  grouped  together  in
       the following sections.  The sections are hopefully sorted
       in order of usefulness to the newcomer.

            - Menu commands
            - Miscellaneous commands
            - Commands affecting window movement and placement
            - Commands for focus and mouse movement
            - Commands controlling window state
            - Commands for mouse, key and stroke bindings
            - The Style command (controlling window styles)
            - Other commands controlling window styles
            - Commands controlling the virtual desktop
            - Commands for user functions and shell commands
            - Conditional commands
            - Module commands
            - Quit, restart and session management commands
            - Color gradients



   COMMANDS FOR MENUS
       AddToMenu menu-name [menu-label action]

              Begins or adds to a menu definition.   Typically  a
              menu definition looks like this:

                   AddToMenu Utilities Utilities Title
                    + Xterm           Exec  exec xterm -e tcsh
                    + Rxvt            Exec  exec rxvt
                    + "Remote Logins" Popup Remote-Logins
                    + Top             Exec  exec rxvt -T Top -n \
                                      Top -e top
                    + Calculator      Exec  exec xcalc
                    + Xman            Exec  exec xman
                    + Xmag            Exec  exec xmag
                    + emacs           Exec  exec xemacs
                    + Mail            MailFunction \
                                      xmh "-font fixed"
                    + ""              Nop
                    + Modules         Popup Module-Popup
                    + ""              Nop
                    + Exit Fvwm       Popup Quit-Verify

              The menu could be invoked via

                   Mouse 1 R A Menu Utilities Nop

              or

                   Mouse 1 R A Popup Utilities

              There  is no end-of-menu symbol.  Menus do not have
              to  be  defined  in  a  contiguous  region  of  the
              .fvwm2rc  file.   The  quoted  portion in the above
              examples is the menu label, which  appears  in  the
              menu  when the user pops it up.  The remaining por-
              tion is a built-in command which should be executed
              if the user selects that menu item.  An empty menu-
              label ("") and the Nop  function  can  be  used  to
              insert a separator into the menu.

              The keywords DynamicPopUpAction and DynamicPopDown-
              Action have a special meaning when used as the name
              of  a  menu item.  The action following the keyword
              is executed whenever the menu is popped up or down.
              This  way  you  can implement dynamic menus.  It is
              even possible to destroy  itself  with  DestroyMenu
              and  the  rebuild  from scratch.  When the menu has
              been destroyed (unless you used the recreate option
              when destroying the menu), do not forget to add the
              dynamic action again.

              Note: Do not  trigger  actions  that  require  user
              interaction.  They will probably fail and may screw
              up your menus.  See Silent command.

              Warning: Do not issue MenuStyle commands as dynamic
              menu  actions.   Chances  are  good  that this will
              crash fvwm.

              Example (File browser):

                   # You can find the shell script
                   # fvwm_make_browse_menu.sh in the utils
                   # directory of the distribution.
                   AddToMenu BrowseMenu
                   + DynamicPopupAction Piperead \
                     'fvwm_make_browse_menu.sh BrowseMenu'

              Example (Picture menu):

                   # Build a menu of all .jpg files in
                   # $HOME/Pictures
                   AddToMenu JpgMenu foo title
                   + DynamicPopupAction Function MakeJpgMenu

                   AddToFunc MakeJpgMenu
                   + I DestroyMenu recreate JpgMenu
                   + I AddToMenu JpgMenu Pictures Title
                   + I PipeRead 'for i in $HOME/Pictures/*.jpg; \
                     do echo AddToMenu JpgMenu "`basename $i`" Exec xv $i; done'

              The keyword MissingSubmenuFunction  has  a  similar
              meaning.  It is executed whenever you try to pop up
              a sub-menu that does not exist.  With this function
              you  can  define and destroy menus on the fly.  You
              can use any command after the keyword, but the name
              of  a  function  defined with AddToFunc follows it,
              fvwm executes this command:

                   Function  

              I.e. the name is passed  to  the  function  as  its
              first argument and can be referred to with "$0".

              Example:

                   # There is another shell script
                   # fvwm_make_directory_menu.sh in the utils
                   # directory of the distribution. To use it,
                   # define this function in your configuration
                   # file:

                   AddToFunc MakeMissingDirectoryMenu
                   + I Exec fvwm_make_directory_menu.sh $0

                   AddToMenu SomeMenu
                   + MissingSubmenuFunction MakeMissingDirectoryMenu
                   + "Root directory" Popup /

              This  is another implementation of the file browser
              that uses sub-menus for subdirectories.

              Titles can be used within the menu. If you add  the
              option  top  behind the keyword Title, the title is
              added to the top of the menu.  If there was a title
              already, it is overwritten.

                   AddToMenu Utilities Tools Title top

              All  text  up to the first Tab in the menu label is
              aligned to the left side  of  the  menu,  all  text
              right  of the first Tab is aligned to the left in a
              second column and all  text  thereafter  is  placed
              right  aligned in the third column.  All other Tabs
              are replaced by spaces.  Note that you  can  change
              this  format  with  the  ItemFormat  option  of the
              MenuStyle command.

              If the menu-label contains an ampersand ('&'),  the
              next  character  is taken as a hot-key for the menu
              item.  Hot-keys are underlined in  the  label.   To
              get  a literal '&', insert "&&".  Pressing the hot-
              key moves through the list of menu items with  this
              hot-key  or  selects  an  item that is the only one
              with this hot-key.

              If the menu-label contains a  sub-string  which  is
              set  off  by stars, then the text between the stars
              is expected to  be  the  name  of  an  xpm-icon  or
              bitmap-file  to  insert in the menu.  To get a lit-
              eral '*', insert "**".  For example

                    + Calculator*xcalc.xpm* Exec exec xcalc

              inserts a menu item  labeled  "Calculator"  with  a
              picture of a calculator above it.  The following:

                    + *xcalc.xpm*           Exec exec xcalc

              Omits  the  "Calculator" label, but leaves the pic-
              ture.

              If the menu-label contains a  sub-string  which  is
              set off by percent signs, then the text between the
              percent signs is expected to be the name of an xpm-
              icon  or  bitmap-file  (a  so  called  mini icon to
              insert to the left of the  menu  label.   A  second
              mini  icon  that  is drawn at the right side of the
              menu can be given in the same way.  To get  a  lit-
              eral '%', insert "%%". For example

                    + Calculator%xcalc.xpm% Exec exec xcalc

              inserts  a  menu  item  labeled "Calculator" with a
              picture of a calculator to the left.   The  follow-
              ing:

                    + %xcalc.xpm%           Exec exec xcalc

              Omits  the  "Calculator" label, but leaves the pic-
              ture.  The pictures used with this  feature  should
              be  small  (perhaps  16x16).  If the menu-name (not
              the label) contains a sub-string which is  set  off
              by  at  signs  ('@'), then the text between them is
              expected to be the name of an xpm or bitmap file to
              draw  along  the  left  side  of  the  menu (a side
              pixmap).  You may want to use the SidePic option of
              the  MenuStyle  command  instead.  To get a literal
              '@', insert "@@".  For example

                   AddToMenu StartMenu@linux-menu.xpm@

              creates a menu with a picture in  its  bottom  left
              corner.

              If  the  menu-name  also contains a sub-string sur-
              rounded by '^'s, then  the  text  between  '^'s  is
              expected  to  be  the  name of an X11 color and the
              column containing the side picture is colored  with
              that  color.   You  can  set  this color for a menu
              style using the SideColor option of  the  MenuStyle
              command.  To get a literal '^', insert "^^".  Exam-
              ple:

                   AddToMenu StartMenu@linux-menu.xpm@^blue^

              creates a menu with a picture in  its  bottom  left
              corner  and colors with blue the region of the menu
              containing the picture.

              In all the above cases, the name of  the  resulting
              menu  is name specified, stripped of the substrings
              between the various delimiters.


       ChangeMenuStyle menustyle menu ...
              Changes the menu style of menu to  menustyle.   You
              may  specified  more  than one menu in each call of
              ChangeMenuStyle.

                   ChangeMenuStyle pixmap1 \
                     ScreenSaverMenu ScreenLockMenu



       CopyMenuStyle orig-menustyle dest-menustyle
              Copy orig-menustyle to dest-menustyle, where  orig-
              menustyle  is  an existing menu style.  If the menu
              style dest_menustyle does not  exist,  then  it  is
              created.


       DestroyMenu [recreate] menu
              Deletes a menu, so that subsequent references to it
              are no longer valid.  You can use  this  to  change
              the contents of a menu during an fvwm session.  The
              menu can be rebuilt using AddToMenu.  The  optional
              parameter recreate tells fvwm not to throw away the
              menu completely but to  throw  away  all  the  menu
              items (including the title).

                   DestroyMenu Utilities



       DestroyMenuStyle menustyle
              Deletes  the menu style named menustyle and changes
              all menus using this style to  the  default  style,
              you cannot destroy the default menu style.

                   DestroyMenuStyle pixamp1



       Menu menu-name [ position ] [ double-click-action ]
              Causes a previously defined menu to be popped up in
              a sticky manner. That is, if the user  invokes  the
              menu  with a click action instead of a drag action,
              the menu stays up.  The command double-click-action
              is  invoked  if the user double-clicks a button (or
              hits the key rapidly twice if the menu is bound  to
              a  key)  when  bringing up the menu.  If the double
              click action is not specified, double  clicking  on
              the menu does nothing.  However, if the menu begins
              with a menu item (i.e. not with a title or a  sepa-
              rator)  and  the  double click action is not given,
              double clicking invokes the first item of the  menu
              (but only if the pointer really was over the item).

              Several other commands affect menu operation.   See
              MenuStyle  and  SetAnimation.  When in a menu, key-
              board   shortcuts   work   as   expected.    Cursor
              keystrokes  are  also  allowed.  Specifically, Tab,
              Meta-Tab, Cursor-Down, Ctrl-N, or  Ctrl-J  move  to
              the  next  item; Shift-Tab, Shift-Meta-Tab, Cursor-
              Up, Ctrl-P, or Ctrl-K move to the prior item;  Cur-
              sor-Left  or Ctrl-B returns to the prior menu; Cur-
              sor-Right or Ctrl-F pop up the next menu; Ctrl-Cur-
              sor-Up,  Shift-Ctrl-Meta-Tab  and  Page-Up  move up
              five  items;  Ctrl-Cursor-Down,  Ctrl-Meta-Tab  and
              Page-Down move down five items, respectively; Home,
              Shift-Cursor-Up or End, Shift-Cursor-Down  move  to
              the  first or last item, respectively; Meta-Cursor-
              Up or Meta-Cursor-Down move just behind the next or
              previous separator; Shift-Ctrl-Tab or Ctrl-Tab work
              exactly the same; Enter, Return, or Space  executes
              the  current  item; Insert opens the "More..." sub-
              menu if any; Escape and  Delete  exit  the  current
              sequence of menus.

              The pointer is warped to where it was when the menu
              was invoked if it was both invoked  and  terminated
              with a keystroke.

              The  position arguments allow placement of the menu
              somewhere on the screen, for  example  centered  on
              the visible screen or above a title bar.  Basically
              it works like this: you specify a context-rectangle
              and  an offset to this rectangle by which the upper
              left corner of the menu is  moved  from  the  upper
              left  corner  of the rectangle.  The position argu-
              ments consist of several parts:

                   [context-rectangle] x y [special-options]

              The context-rectangle can be one of:

                   Root
                      the root window of the current screen.
                   XineramaRoot
                      the  root  window  of  the  whole  Xinerama
                      screen.  Equivalent to "root" when Xinerama
                      is not used.
                   Mouse
                      a 1x1 rectangle at the mouse position.
                   Window
                      the window with the focus.
                   Interior
                      the inside of the focused window.
                   Title
                      the title of the focused window or icon.
                   Button
                      button #n of the focused window.
                   Icon
                      the focused icon.
                   Menu
                      the current menu.
                   Item
                      the current menu item.
                   Context
                      the current window, menu or icon.
                   This
                      whatever widget the pointer is on  (e.g.  a
                      corner of a window or the root window).
                   Rectangle 
                      the  rectangle  defined  by  in X
                      geometry format.  Width and height  default
                      to 1 if omitted.

              If  the  context-rectangle  is  omitted  or illegal
              (e.g. "item" on a window), "Mouse" is the  default.
              Note  that  not  all  of these make sense under all
              circumstances (e.g. "Icon" if the pointer is  on  a
              menu).

              The  offset values x and y specify how far the menu
              is moved from it's default position.   By  default,
              the  numeric  value  given is interpreted as a per-
              centage of the context rectangle's width  (height),
              but  with  a trailing 'm' the menu's width (height)
              is  used  instead.   Furthermore  a  trailing   'p'
              changes the interpretation to mean pixels.

              Instead  of  a  single  value you can use a list of
              values.  All additional numbers after the first one
              are separated from their predecessor by their sign.
              Do not use any other separators.

              If x or y are prefixed with "o" where   is an integer, the menu and the rectangle are
              moved to overlap at the specified  position  before
              any  other  offsets  are applied.  The menu and the
              rectangle are placed so that the pixel at  
              percent  of  the  rectangle's width/height is right
              over the pixel at  percent  of  the  menu's
              width/height.  So "o0" means that the top/left bor-
              ders of the menu and the  rectangle  overlap,  with
              "o100" it's the bottom/right borders and if you use
              "o50" they are centered upon each other (try it and
              you  will see it is much simpler than this descrip-
              tion).  The default is "o0".   The  prefix  "o" is an abbreviation for "+-m".

              A prefix of 'c' is equivalent to "o50".  Examples:

                   # window list in the middle of the screen
                   WindowList Root c c

                   # menu to the left of a window
                   Menu name window -100m c+0

                   # popup menu 8 pixels above the mouse pointer
                   Popup name mouse c -100m-8p

                   # somewhere on the screen
                   Menu name rectangle 512x384+1+1 +0 +0

                   # centered vertically around a menu item
                   AddToMenu foobar-menu
                    + "first item" Nop
                    + "special item" Popup "another menu" item \
                                     +100 c
                    + "last item" Nop

                   # above the first menu item
                   AddToMenu foobar-menu
                    + "first item" Popup "another menu" item \
                                   +0 -100m

              Note that you can put a sub-menu far off  the  cur-
              rent  menu so you could not reach it with the mouse
              without leaving the menu.  If  the  pointer  leaves
              the  current  menu  in the general direction of the
              sub-menu the menu stays up.

              The special-options:

                   The animated and Mwm or Win  menu  styles  may
                   move  a menu somewhere else on the screen.  If
                   you do not want this you can add Fixed  as  an
                   option.   This might happen for example if you
                   want the menu always in the top  right  corner
                   of the screen.

                   Where  do  you  want a menu to appear when you
                   click on it's menu item?  The  default  is  to
                   place  the  title under the cursor, but if you
                   want it where the position arguments say,  use
                   the  SelectInPlace  option.   If  you want the
                   pointer on the title of the menu, use  Select-
                   Warp  too.  Note that these options apply only
                   if the  PopupAsRootMenu  MenuStyle  option  is
                   used.

                   The  pointer  is warped to the title of a sub-
                   menu whenever the pointer would be on an  item
                   when  the  sub-menu  is  popped  up (fvwm menu
                   style) or never warped to  the  title  at  all
                   (Mwm  or Win menu styles). You can force (for-
                   bid) warping whenever the sub-menu  is  opened
                   with the WarpTitle (NoWarp) option.

                   Note  that  the special-options do work with a
                   normal menu that has no other  position  argu-
                   ments.


       MenuStyle stylename options
              Sets  a  new  menu  style  or  changes a previously
              defined style.  The stylename is the style name; if
              it  contains  spaces  or  tabs it has to be quoted.
              The name "*"  is  reserved  for  the  default  menu
              style.  The  default  menu  style is used for every
              menu-like object (e.g. the window  created  by  the
              WindowList  command)  that  had  not  be assigned a
              style using the ChangeMenuStyle.  See also Destroy-
              MenuStyle.  When using monochrome color options are
              ignored.

              options is a comma separated list  containing  some
              of  the  keywords  Fvwm  /  Mwm / Win, BorderWidth,
              Foreground,  Background,  Greyed,   HilightBack   /
              HilightBackOff,  ActiveFore  / ActiveForeOff, Menu-
              Colorset,      ActiveColorset,      GreyedColorset,
              Hilight3DThick   /  Hilight3DThin  /  Hilight3DOff,
              Hilight3DThickness, Animation / AnimationOff, Font,
              MenuFace,   PopupDelay,  PopupOffset,  TitleWarp  /
              TitleWarpOff, TitleUnderlines0 / TitleUnderlines1 /
              TitleUnderlines2, SeparatorsLong / SeparatorsShort,
              TrianglesSolid / TrianglesRelief,  PopupImmediately
              /  PopupDelayed,  PopdownImmediately  /  PopdownDe-
              layed, DoubleClickTime, SidePic,  SideColor,  Popu-
              pAsRootMenu   /  PopupAsSubmenu,  RemoveSubmenus  /
              HoldSubmenus, SubmenusRight / SubmenusLeft,  Selec-
              tOnRelease,     ItemFormat,    VerticalItemSpacing,
              VerticalTitleSpacing, AutomaticHotkeys /  Automati-
              cHotkeysOff.

              In the above list some options are listed as option
              pairs or triples with  a  '/'  in  between.   These
              options exclude each other.

              Fvwm,  Mwm, Win reset all options to the style with
              the same name in  former  versions  of  fvwm.   The
              default  for  new menu styles is Fvwm style.  These
              options  override  all  others  except  Foreground,
              Background,  Greyed,  HilightBack,  HilightFore and
              PopupDelay, so they should  be  used  only  as  the
              first option specified for a menu style or to reset
              the style to defined behavior.  The same effect can
              be  created by setting all the other options one by
              one.

              Mwm and Win style menus popup  sub-menus  automati-
              cally.  Win menus indicate the current menu item by
              changing the background to  dark.   Fvwm  sub-menus
              overlap  the  parent  menu, Mwm and Win style menus
              never overlap the parent menu.

              Fvwm  style  is   equivalent   to   HilightBackOff,
              Hilight3DThin,  ActiveForeOff,  AnimationOff, Font,
              MenuFace, PopupOffset 0 67, TitleWarp,  TitleUnder-
              lines1,  SeparatorsShort, TrianglesRelief, PopupDe-
              layed,  PopdownDelayed,  PopupAsSubmenu,   HoldSub-
              menus,   SubmenusRight,  BorderWidth  2,  Automati-
              cHotkeysOff.

              Mwm  style   is   equivalent   to   HilightBackOff,
              Hilight3DThick,  ActiveForeOff, AnimationOff, Font,
              MenuFace, PopupOffset -3 100, TitleWarpOff,  Title-
              Underlines2,  SeparatorsLong, TrianglesRelief, Pop-
              upImmediately,   PopdownDelayed,    PopupAsSubmenu,
              HoldSubmenus,  SubmenusRight,  BorderWidth 2, Auto-
              maticHotkeysOff.

              Win   style   is   equivalent    to    HilightBack,
              Hilight3DOff,  ActiveForeOff,  AnimationOff,  Font,
              MenuFace, PopupOffset -5 100, TitleWarpOff,  Title-
              Underlines1,  SeparatorsShort, TrianglesSolid, Pop-
              upImmediately,   PopdownDelayed,    PopupAsSubmenu,
              RemoveSubmenus, SubmenusRight, BorderWidth 2, Auto-
              maticHotkeysOff.

              BorderWidth  takes  the  thickness  of  the  border
              around  the  menus  in pixels. It may be zero to 50
              pixels.  The default is 2.  Using an illegal  value
              reverts the border width to the default.

              Foreground  and Background may have a color name as
              an argument.  This color is used for menu  text  or
              the menu's background.  You can omit the color name
              to reset these colors to the built in default.

              Greyed may have a color name as an argument.   This
              color  is  the  one  used  to draw a menu-selection
              which is prohibited (or not recommended) by the Mwm
              hints  which  an  application has specified. If the
              color is omitted the color of greyed  menu  entries
              is based on the background color of the menu.

              HilightBack  and  HilightBackOff  switch hilighting
              the background of the selected  menu  item  on  and
              off.   A  specific  background color may be used by
              providing the color name as an argument to Hilight-
              Back.   If  you use this option without an argument
              the color is based on the menu's background  color.

              ActiveFore   and   ActiveForeOff  switch hilighting
              the foreground of the selected  menu  item  on  and
              off.   A  specific  foreground color may be used by
              providing the color name as an argument to  Active-
              Fore.   Omitting the color name has the same effect
              as using ActiveForeOff.

              MenuColorset controls if a colorset is used instead
              of  the  Foreground,  Background  and MenuFace menu
              styles.  If the MenuColorset keyword is followed by
              a  number  equal to zero or greater, this number is
              taken as the number of the colorset to use.  If the
              number is omitted, the colorset is switched off and
              the regular menu styles are used again.  The  fore-
              ground  and background colors of the menu items are
              replaced by the colors from the colorset.   If  the
              colorset  has a pixmap defined, this pixmap is used
              as the background of the menu.  Note that the Menu-
              Face  menu style has been optimized for memory con-
              sumption and may use less  memory  than  the  back-
              ground  from  a  colorset.  The shape mask from the
              colorset is used to shape the menu.   Please  refer
              to  the description of the Colorset command and the
              documentation of the FvwmTheme module  for  details
              about colorsets.

              ActiveColorset works exactly like MenuColorset, but
              the foreground from the colorset replaces the color
              given  with  the ActiveFore menu style and the col-
              orset's background color replaces the  color  given
              with the HilightBack command (to turn on background
              hilighting you have to  use  the  HilightBack  menu
              style  too).   If specified, the hilight and shadow
              colors from the colorset are used too.  The  pixmap
              and shape mask from the colorset are not used.

              GreyedColorset works exactly like MenuColorset, but
              the foreground from the colorset replaces the color
              given  with  the Greyed menu style.  No other parts
              of the colorset are used.

              Hilight3DThick,  Hilight3DThin   and   Hilight3DOff
              determine  if  the  selected menu item is hilighted
              with a 3D relief.  Thick  reliefs  are  two  pixels
              wide, thin reliefs are one pixel wide.

              Hilight3DThickness  takes one numeric argument that
              may be between -50 and +50  pixels.  With  negative
              values  the  menu item gets a pressed in look.  The
              above three commands are equivalent to a  thickness
              of 2, 1 and 0.

              Animation  and  AnimationOff turn menu animation on
              or off.  When animation is on, sub-menus that don't
              fit  on  the  screen  cause  the  parent menu to be
              shifted to the left so the sub-menu can be seen.

              Font takes a font name as an argument.  If  a  font
              by  this name exists it is used for the text of all
              menu items.  If it does not exist or if the name is
              left blank the built in default is used.

              MenuFace  enforces  a  fancy  background  upon  the
              menus.  You can use the same options  for  MenuFace
              as for the ButtonStyle.  See description of Button-
              Style command and the COLOR GRADIENTS sections  for
              more  information.   If  you  use  MenuFace without
              arguments the style is reverted back to normal.

              Some examples of MenuFaces are:

                   MenuFace DGradient 128 2 lightgrey 50 blue 50 \
                     white
                   MenuFace TiledPixmap texture10.xpm
                   MenuFace HGradient 128 2 Red 40 Maroon 60 \
                     White
                   MenuFace Solid Maroon

              Note: The gradient styles H, V, B and D  are  opti-
              mized  for high speed and low memory consumption in
              menus.  This is not the case for all the other gra-
              dient  styles.   They  may be slow and consume huge
              amounts of memory, so if you encounter  performance
              problems  with  them  you  may be better off by not
              using them.  To improve performance you can try one
              or all of the following:

              Turn  hilighting of the active menu item other than
              foreground color off:

                   MenuStyle