1FVWM(1)                           Fvwm 2.5.24                          FVWM(1)
2
3
4

NAME

6       Fvwm - F? Virtual Window Manager for X11
7

SYNOPSIS

9       fvwm [-c config-command] [-d displayname] [-f config-file] [-r]
10            [-s [screen_num]] [-V] [-C visual-class | -I visual-id]
11            [-l colors [-L] [-A] [-S] [-P]] [-D] [-h] [-i client-id]
12            [-F state-file] [--debug-stack-ring] [-blackout]
13

DESCRIPTION

15       Fvwm is a window manager for X11.  It is designed to minimize memory
16       consumption, provide a 3D look to window frames, and a virtual desktop.
17
18       Note that there are several window managers around that have "fvwm" in
19       their name.  In the past, version 2.x of fvwm was commonly called fvwm2
20       to distinguish it from the former version 1.x (fvwm or even fvwm1).
21       Since version 1.x has been replaced by version 2.x a long time ago we
22       simply call version 2.x and all versions to come, fvwm, throughout this
23       document, and the executable program is named fvwm.  There is an fvwm
24       offspring called fvwm95, it is mostly a patched version of fvwm-2.0.43.
25       The main goal of fvwm95 was to supply a Windows 95 like look and feel.
26       Since then, fvwm has been greatly enhanced and practically all fvwm95
27       features can be achieved by fvwm.
28
29       Fvwm provides both, a large virtual desktop and multiple disjoint
30       desktops which can be used separately or together.  The virtual desktop
31       allows you to pretend that your video screen is really quite large, and
32       you can scroll around within the desktop.  The multiple disjoint
33       desktops allow you to pretend that you really have several screens to
34       work at, but each screen is completely unrelated to the others.
35
36       Fvwm provides keyboard accelerators which allow you to perform most
37       window manager functions, including moving and resizing windows, and
38       operating the menus, using keyboard shortcuts.
39
40       Fvwm has also overcome the distinction between configuration commands
41       and action commands that most window managers make.  Configuration
42       commands typically set fonts, colors, menu contents, key and mouse
43       function bindings, while action commands do things like raise and lower
44       windows.  Fvwm makes no such distinction, and allows anything to be
45       changed at any time.
46
47       Other noteworthy differences between fvwm and other X11 window managers
48       are the introduction of the SloppyFocus and NeverFocus focus methods.
49       Focus policy can be separately specified for different window groups.
50       Windows using SloppyFocus acquire focus when the pointer moves into
51       them and retain focus until some other window acquires it.  Such
52       windows do not lose focus when the pointer moves into the root window.
53       The NeverFocus policy is provided for use with windows into which one
54       never types (e.g. xclock, oclock, xbiff, xeyes, tuxeyes) - for example,
55       if a SloppyFocus terminal window has focus, moving the pointer over a
56       NeverFocus decoration window does not deprive the terminal of focus.
57

OPTIONS

59       These are the command line options that are recognized by fvwm:
60
61       -i | --clientid id
62           This option is used when fvwm is started by a session manager.
63           Should not be used by a user.
64
65       -c | --cmd config-command
66           Causes fvwm to use config-command instead of 'Read config' (or
67           'Read .fvwm2rc') as its initialization command.  (Note that up to
68           10 -f and -c parameters can be given, and they are executed in the
69           order specified.)
70
71           Any module started by command line arguments is assumed to be a
72           module that sends back config commands.  All command line modules
73           have to quit before fvwm proceeds on to the StartFunction and
74           setting border decorations and styles.  There is a potential
75           deadlock if you start a module other than FvwmCpp/FvwmM4/FvwmPerl
76           but there is a timeout so fvwm eventually gets going.
77
78           As an example, starting the pager this way hangs fvwm until the
79           timeout, but the following should work well:
80
81               fvwm -c "AddToFunc StartFunction I Module FvwmPager"
82
83       -d | --display displayname
84           Manage the display called displayname instead of the name obtained
85           from the environment variable $DISPLAY.
86
87       -D | --debug
88           Puts X transactions in synchronous mode, which dramatically slows
89           things down, but guarantees that fvwm's internal error messages are
90           correct.  Also causes fvwm to output debug messages while running.
91
92       -f config-file
93           Causes fvwm to read config-file instead of ~/.fvwm/config as its
94           initialization file.  This is equivalent to -c 'Read config-file'.
95
96       -h | --help
97           A short usage description is printed.
98
99       -r | --replace
100           Try to take over from a previously running wm.  This does not work
101           unless the other wm is ICCCM2 2.0 compliant.
102
103       -F | --restore state-file
104           This option is used when fvwm is started by a session manager.
105           Should not be used by a user.
106
107       -s | --single-screen [screen_num]
108           On a multi-screen display, run fvwm only on the screen named in the
109           $DISPLAY environment variable or provided through the -d option.
110           The optional argument screen_num should be positive or null and
111           override the screen number.  Normally, fvwm attempts to start up on
112           all screens of a multi-screen display.
113
114       -V | --version
115           Prints the version of fvwm to stderr.  Also prints an information
116           about the compiled in support for readline, rplay, stroke, xpm,
117           png, svg, GNOME hints, EWMH hints, session management,
118           bidirectional text, multibyte characters, xinerama and Xft aa font
119           rendering.
120
121       -C | --visual visual-class
122           Causes fvwm to use visual-class for the window borders and menus.
123           visual-class can be "StaticGray", "GrayScale", "StaticColor",
124           "PseudoColor", "TrueColor" or "DirectColor".
125
126       -I | --visualid id
127           Causes fvwm to use id as the visual id for the window borders and
128           menus.  id can be specified as N for decimal or 0xN for
129           hexadecimal.  See man page of xdpyinfo for a list of supported
130           visuals.
131
132       -l | --color-limit limit
133           Specifies a limit on the colors used in image, gradient and
134           possibly simple colors used by fvwm.  In fact, fvwm (and all the
135           modules) uses a palette with at most limit colors.  This option is
136           only useful with screens that display 256 colors (or less) with a
137           dynamic visual (PseudoColor, GrayScale or DirectColor).  The
138           default depends on your X server and how you run fvwm.  In most
139           case this default is reasonable.  The -l option should be used only
140           if you encounter problems with colors.  By default, fvwm tries to
141           detect large pre-allocated palettes.  If such a palette is detected
142           fvwm uses it and a priori the -l must not be used.  Moreover, in
143           this case the -A and -S options are forced.  Note that XFree-4.2
144           pre-allocates 244 colors (if you use a driver with Render support)
145           leaving only a few free colors.  This may lead to some color
146           problems (and nothing can be done).  XFree-4.3 or better
147           pre-allocate only 85 colors.  If no pre-allocated palette is auto
148           detected the defaults are as follow:
149
150           Display depth 8 (256 colors)
151
152                   PseudoColor: 68 (4x4x4 color cube + 4 grey)
153                   GrayScale: 64 regular grey
154                   DirectColor: 32 (3x3x3 color cube + 5 grey)
155
156           Display depth 4 (16 colors)
157
158                   PseudoColor: 10 (2x2x2 color cube + 2 grey)
159                   GrayScale: 8 regular grey
160                   DirectColor: 10 (2x2x2 color cube + 2 grey)
161
162           These defaults may change before version 2.6.  Note that if you use
163           a private color map (i.e., fvwm is started with the -C or the -I
164           options), then other defaults are used.
165
166           Now what to do if you encounter problems with colors? The first
167           thing to do is to check if you really cannot run your X server with
168           depth 15, 16 or better.  Check your X server documentation.  Note
169           that some hardware can support two different depths on the same
170           screen (typically depth 8 and depth 24).  If depth 8 is the
171           default, you can force fvwm to use the best depth by using the -C
172           option with TrueColor as argument.  So now we assume that you are
173           forced to run in depth 8 with a dynamic visual because your
174           hardware/driver cannot do better or because you need to use an
175           application which needs to run under this mode (e.g., because this
176           application needs read-write colors).  What it should be understand
177           is that you have only 256 colors and that all the applications
178           which use the default color map must share these colors.  The main
179           problem is that there are applications which use a lot or even all
180           the colors.  If you use such application you may have no more free
181           colors and some applications (which used only a few colors) may
182           fail to start or are unusable.  There are three things that can be
183           done (and fvwm does not really play a particular role, all
184           applications are concerned).  The first is to run the applications
185           which waste your (default) color map with a private color map.  For
186           example, run netscape with the -install option, run KDE or QT
187           applications with the --cmap option, use the -C option for fvwm.
188           The disadvantage of this method is that it is visually disturbing
189           (see the ColormapFocus command for a better control of the color
190           maps switching).  The second method is to limit the number of
191           colors that the applications use.  Again, some applications have
192           options to specify a given color limit.  With fvwm you may try
193           various values, 61 (a special "visual" palette), 56 (a 4x4x3 color
194           cube plus 6 grey), 29 (a 3x3x3 color cube plus 2 grey), 10 or 9.
195           Also, you may use the -L option.  However, limiting the number of
196           colors is not the definitive solution.  The definitive solution is
197           to try cause applications which use a lot of colors use the same
198           colors.  This is a difficult task as there are no formal standards
199           for this goal.  However, some toolkits as QT and GTK use color
200           cubes as palettes.  So, the idea is to configure your
201           applications/toolkits to all use the same color cube.  Moreover,
202           you can use the colors in this color cube in your X resources
203           configuration files and/or as arguments to colors options.  Fvwm
204           can use any color cube of the form RxGxB with 2 <= R <= 6, R = G,
205           R-1 =< B <= R and B >= 2.  To get an RxGxB color cube give an
206           argument to -l an integer c >= R*G*B and < (R+1)*(G+1)*B if B=R and
207           < R*G*(B+1) if B < R (and different from 61).  If c > R*G*B, then
208           some grey may be added to the color cube.  You can use the
209           PrintInfo Colors [1] command to get information on your fvwm colors
210           setting.  In particular, this command prints the palette used by
211           fvwm in rgb format (the last integer gives the number of times fvwm
212           has allocated the colors).
213
214       -L | --strict-color-limit
215           If the screen displays 256 colors (or less) and has a dynamic
216           visual, causes fvwm to use its palette for all the colors.  By
217           default, the palette is used only for images and gradients.
218
219       -P | --visual-palette
220           If the screen displays 256 colors (or less) and has a dynamic
221           visual, this option causes fvwm to use a palette designed for
222           limiting the "visual" color distance between the points of the
223           palette.  Moreover, for better color sharing, if possible colors
224           with a name in the X rgb data base are used for defining the colors
225           (with the hope that applications and images prefer to use named
226           colors).  If the -l option is not used this palette has 61 colors.
227           This palette is also automatically selected if 61 or 9 is used as
228           argument to the -l option.
229
230       -A | --allocate-palette
231           If the screen displays 256 colors (or less) and has a dynamic
232           visual this option causes fvwm to allocate all the colors of its
233           palette at start up for reserving these colors for future use.
234           This option forces the -static-palette option.  By default, fvwm
235           allocates (reserves) a color in its palette only if it needs this
236           color.
237
238       -S | --static-palette
239           If the screen displays 256 colors (or less) and has a dynamic
240           visual this option causes fvwm to never free the colors in its
241           palette.  By default, when fvwm does not need a color any more it
242           frees this color so that a new color can be used.  This option may
243           speed up image loading and save a few bits of memory.
244
245       -blackout
246           This option is provided for backward compatibility only.  Blacking
247           out the screen during startup is not necessary (and doesn't work)
248           anymore.  This option will be removed in the future.
249
250       --debug-stack-ring
251           Enables stack ring debugging.  This option is only intended for
252           internal debugging and should only be used by developers.
253

ANATOMY OF A WINDOW

255       Fvwm puts a decorative border around most windows.  This border
256       consists of a bar on each side and a small L-shaped section on each
257       corner.  There is an additional top bar called the title-bar which is
258       used to display the name of the window.  In addition, there are up to
259       10 title-bar buttons.  The top, side, and bottom bars are collectively
260       known as the side-bars.  The corner pieces are called the frame.
261
262       With the built-in minimal configuration, dragging mouse button 1 in the
263       frame or side-bars begins a resize operation on the window.  Dragging
264       mouse button 2 in the frame or side-bars begins a move operation.
265       There are raise/lower operations bound to a single clicking on borders.
266       Similarly for the window title.
267
268       Up to ten title-bar buttons may exist.  Their use is completely user
269       definable.  One popular configuration uses one button on the left that
270       is used to bring up a list of window options and two buttons on the
271       right used to iconify and maximize the window.  Another popular
272       configuration adds a close button to the right.  The number of
273       title-bar buttons used depends on which ones have mouse actions bound
274       to them.  See the Mouse command.
275

THE VIRTUAL DESKTOP

277       Fvwm provides multiple virtual desktops for users who wish to use them.
278       The screen is a viewport onto a desktop which may be larger than the
279       screen.  Several distinct desktops can be accessed (concept: one
280       desktop for each project, or one desktop for each application, when
281       view applications are distinct).  Since each desktop can be larger than
282       the physical screen, divided into m by n pages which are each the size
283       of the physical screen, windows which are larger than the screen or
284       large groups of related windows can easily be viewed.
285
286       The (m by n) size (i.e. number of pages) of the virtual desktops can be
287       changed any time, by using the DesktopSize command.  All virtual
288       desktops must be (are) the same size.  The total number of distinct
289       desktops does not need to be specified, but is limited to approximately
290       4 billion total.  All windows on a range of desktops can be viewed in
291       the FvwmPager, a miniature view of the desktops.  The pager is an
292       accessory program, called a module, which is not essential for the
293       window manager to operate.  Windows may also be listed, along with
294       their geometries, in a window list, accessible as a pop-up menu, or as
295       a separate window, called the FvwmWinList (another module).
296
297       Fvwm keeps the windows on the desktop in a layered stacking order; a
298       window in a lower layer never obscures a window in a higher layer.  The
299       layer of a window can be changed by using the Layer command.  The
300       concept of layers is a generalization of the StaysOnTop flag of older
301       fvwm versions.  The StaysOnTop and StaysPut Style options are now
302       implemented by putting the windows in suitable layers and the
303       previously missing StaysOnBottom Style option has been added.
304
305       Sticky windows are windows which transcend the virtual desktop by
306       "Sticking to the screen's glass".  They always stay put on the screen.
307       This is convenient for things like clocks and xbiffs, so you only need
308       to run one such gadget and it always stays with you.  Icons can also be
309       made to stick to the glass, if desired.
310
311       Window geometries are specified relative to the current viewport.  That
312       is:
313
314           xterm -geometry +0+0
315
316       creates a window in the upper left hand corner of the visible portion
317       of the screen.  It is permissible to specify geometries which place
318       windows on the virtual desktop, but off the screen.  For example, if
319       the visible screen is 1000 by 1000 pixels, and the desktop size is 3x3,
320       and the current viewport is at the upper left hand corner of the
321       desktop, invoking:
322
323           xterm -geometry +1000+1000
324
325       places a window just off of the lower right hand corner of the screen.
326       It can be found by moving the mouse to the lower right hand corner of
327       the screen and waiting for it to scroll into view.  A geometry
328       specified as something like:
329
330           xterm -geometry -5-5
331
332       places the window's lower right hand corner 5 pixels from the lower
333       right corner of the visible portion of the screen.  Not all
334       applications support window geometries with negative offsets.  Some
335       applications place the window's upper right hand corner 5 pixels above
336       and to the left of the upper left hand corner of the screen; others may
337       do just plain bizarre things.
338
339       There are several ways to cause a window to map onto a desktop or page
340       other than the currently active one.  The geometry technique mentioned
341       above (specifying x,y coordinates larger than the physical screen
342       size), however, suffers from the limitation of being interpreted
343       relative to the current viewport: the window may not consistently
344       appear on a specific page, unless you always invoke the application
345       from the same page.
346
347       A better way to place windows on a different page, screen or desk from
348       the currently mapped viewport is to use the StartsOnPage or
349       StartsOnScreen style specification (the successors to the older
350       StartsOnDesk style) in your config file.  The placement is consistent:
351       it does not depend on your current location on the virtual desktop.
352
353       Some applications that understand standard Xt command line arguments
354       and X resources, like xterm and xfontsel, allow the user to specify the
355       start-up desk or page on the command line:
356
357           xterm -xrm "*Desk:1"
358
359       starts an xterm on desk number 1;
360
361           xterm -xrm "*Page:3 2 1"
362
363       starts an xterm two pages to the right and one down from the upper left
364       hand page of desk number 3.  Not all applications understand the use of
365       these options, however.  You could achieve the same results with the
366       following lines in your .Xdefaults file:
367
368           XTerm*Desk: 1
369
370       or
371
372           XTerm*Page: 3 2 1
373

USE ON MULTI-SCREEN DISPLAYS

375       If the -s command line argument is not given, fvwm automatically starts
376       up on every screen on the specified display.  After fvwm starts each
377       screen is treated independently.  Restarts of fvwm need to be performed
378       separately on each screen.  The use of
379
380           EdgeScroll 0 0
381
382       is strongly recommended for multi-screen displays.  You may need to
383       quit on each screen to quit from the X session completely.  This is not
384       to be confused with Xinerama support.
385

XINERAMA SUPPORT

387       Fvwm supports the Xinerama extension of newer X servers which is
388       similar to multi head support (multiple screens) but allows to move
389       windows between screens.  If Xinerama support has been compiled into
390       fvwm, it is used whenever fvwm runs on an X server that supports and
391       uses multiple screens via Xinerama.  Without this option, the whole
392       desktop is treated as one big screen.  For example, menus might pop up
393       right between two screens.  The EdgeResistance option of the Style
394       command command allows for specifying an explicit resistance value for
395       moving windows over the screen edge between two Xinerama screens.
396       Xinerama support can be enabled or disabled on the fly or from the
397       configuration file with the Xinerama command.  Many modules and
398       commands work nicely with Xinerama displays.
399
400       Whenever a geometry in the usual X format can be supplied, fvwm's
401       Xinerama extension allows for specifying a screen in addition to the
402       geometry (or even the screen alone).  To do this, a '@' is added to the
403       end of the geometry string followed by either the screen number or a
404       letter.  A number is taken as the number of the Xinerama screen to be
405       used (as configured in the X server).  The letter can be one of 'g' for
406       the global screen (the rectangle that encloses all Xinerama screens),
407       'p' for the primary screen (see below), 'c' for the current screen (the
408       one that currently contains the pointer).  If the X server does not
409       support Xinerama or only one screen is used, the screen bit is ignored.
410
411           Style * IconBox 64x300-0-0@p
412
413       Xinerama support can be configured to use a primary screen.  Fvwm can
414       be configured to place new windows and icons on this screen.  The
415       primary screen is screen 0 by default but can be changed with the
416       XineramaPrimaryScreen command.
417
418       Xinerama support was designed to work out of the box with the same
419       configuration file that would work on a single screen.  It may not
420       perform very well if the involved screens use different screen
421       resolutions.  In this situation, windows may get stuck in the portion
422       of the whole desktop that belongs to neither screen.  When this
423       happens, the windows or icons can be retrieved with the command
424
425           All MoveToScreen
426
427       that can be entered in an FvwmConsole window or with FvwmCommand.
428
429       For multi-screen implementations other than Xinerama, such as Single
430       Logical Screen, it is possible to simulate a Xinerama configuration if
431       the total screen seen by fvwm is made up of equal sized monitors in a
432       rectangular grid.  The commands XineramaSls, XineramaSlsSize and
433       XineramaSlsScreens are used to configure this feature.
434

INITIALIZATION

436       During initialization, fvwm searches for a configuration file which
437       describes key and button bindings, and many other things.  The format
438       of these files is described later.  Fvwm first searches for
439       configuration files using the command
440
441           Read config
442
443       This looks for file config in $FVWM_USERDIR and $FVWM_DATADIR
444       directories, as described in Read.  If this fails more files are
445       queried for backward compatibility.  Here is the complete list of all
446       file locations queried in the default installation (only the first
447       found file is used):
448
449           $HOME/.fvwm/config
450           /usr/local/share/fvwm/config
451
452           $HOME/.fvwm/.fvwm2rc
453           $HOME/.fvwm2rc
454           /usr/local/share/fvwm/.fvwm2rc
455           /usr/local/share/fvwm/system.fvwm2rc
456           /etc/system.fvwm2rc
457
458       Please note, the last 5 locations are not guaranteed to be supported in
459       the future.
460
461       If a configuration file is not found, the left mouse button, or Help or
462       F1 keys on the root window bring up menus and forms that can create a
463       starting configuration file.
464
465       Fvwm sets two environment variables which are inherited by its
466       children.  These are $DISPLAY which describes the display on which fvwm
467       is running.  $DISPLAY may be unix:0.0 or :0.0, which doesn't work too
468       well when passed through ssh to another machine, so $HOSTDISPLAY is set
469       to a network-ready description of the display.  $HOSTDISPLAY always
470       uses the TCP/IP transport protocol (even for a local connection) so
471       $DISPLAY should be used for local connections, as it may use
472       Unix-domain sockets, which are faster.
473
474       If you want to start some applications or modules with fvwm, you can
475       simply put
476
477           Exec app
478
479       or
480
481           Module FvwmXxx
482
483       into your config, but it is not recommended; do this only if you know
484       what you are doing.  It is usually important to start applications or
485       modules after the entire config is read, because it contains styles or
486       module configurations which can affect window appearance and
487       functionality.
488
489       The standard way to start applications or modules on fvwm's start up is
490       to add them to an initialization function (usually StartFunction or
491       InitFunction).  This way they are only started after fvwm finishes to
492       read and execute config file.
493
494       Fvwm has three special functions for initialization: StartFunction,
495       which is executed on startups and restarts; InitFunction and
496       RestartFunction, which are executed during initialization and restarts
497       (respectively) just after StartFunction.  These functions may be
498       customized in a user's config file using the AddToFunc command
499       (described later) to start up modules, xterms, or whatever you'd like
500       to have started by fvwm.
501
502       Fvwm has also a special exit function: ExitFunction, executed when
503       exiting or restarting before actually quitting.  It could be used to
504       explicitly kill modules, etc.
505
506       If fvwm is run under a session manager, functions SessionInitFunction
507       and SessionRestartFunction are executed instead of InitFunction and
508       RestartFunction.  This helps to define the user's config file to be
509       good for both running under a session manager and without it.
510       Generally it is a bad idea to start xterms or other applications in
511       "Session*" functions.  Also someone can decide to start different
512       modules while running under a session manager or not.  For the similar
513       purposes SessionExitFunction is used instead of ExitFunction.
514
515           DestroyFunc StartFunction
516           AddToFunc StartFunction
517            + I Module FvwmPager * *
518            + I Module FvwmButtons
519
520           DestroyFunc InitFunction
521           AddToFunc InitFunction
522            + I Module FvwmBanner
523            + I Module FvwmTaskBar
524            + I Exec xsetroot -solid cyan
525            + I Exec xterm
526            + I Exec netscape
527
528           DestroyFunc RestartFunction
529           AddToFunc RestartFunction
530            + I Module FvwmTaskBar
531
532           DestroyFunc SessionInitFunction
533           AddToFunc SessionInitFunction
534            + I Module FvwmBanner
535
536           DestroyFunc SessionRestartFunction
537           AddToFunc SessionRestartFunction
538            + I Nop
539
540       You do not need to define all special functions if some are empty.
541       Also note, all these special functions may be emulated now using
542       StartFunction and ExitFunction, like this:
543
544           DestroyFunc StartFunction
545           AddToFunc StartFunction
546           + I Test (Init) Module FvwmBanner
547           + I Module FvwmPager * *
548           + I Test (Restart) Beep
549
550           DestroyFunc ExitFunction
551           AddToFunc ExitFunction
552           + I Test (Quit) Echo Bye-bye
553           + I KillModule MyBuggyModule
554           + I Test (ToRestart) Beep
555

COMPILATION OPTIONS

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

ICONS AND IMAGES

563       Fvwm can load .xbm, .xpm, .png and .svg images.  XBM images are
564       monochrome.  Fvwm can always display XBM files.  XPM and PNG formats
565       are color images.  SVG is a vector graphics image format.  Compile-time
566       options determine whether fvwm can display XPM, PNG or SVG icons and
567       images.  See the INSTALL.fvwm file for more information.
568
569       The related SHAPE compile-time option can make fvwm display spiffy
570       shaped icons.
571
572   SVG rendering options
573       SVG images are generated from (XML) text files.  A really simple SVG
574       file might look something like this:
575
576           <svg width="120" height="80">
577                <rect fill="red"     width="40" height="40"  x="0"   y="0"  />
578                <rect fill="lime"    width="40" height="40"  x="40"  y="0"  />
579                <rect fill="blue"    width="40" height="40"  x="80"  y="0"  />
580                <rect fill="cyan"    width="40" height="40"  x="0"   y="40" />
581                <rect fill="magenta" width="40" height="40"  x="40"  y="40" />
582                <rect fill="yellow"  width="40" height="40"  x="80"  y="40" />
583           </svg>
584
585       By default, SVG images are rendered as the image creator intended them
586       to.  But since SVG is a vector graphics format, the images can be
587       rendered at any choosen size and rotation, e.g. making it possible to
588       use the same icon file rendered at diffrent sizes for the Icon and
589       MiniIcon styles.
590
591       The rendering options are specified as a string appended to the SVG
592       filename as follows:
593
594       image.svg:[!] [(1) size] [(2) position] [(3) rotation] [(4) scale] ...
595
596       (1) [-]width{x}[-]height
597       (2) {- | +}xpos{- | +}ypos
598       (3) @[-]angle
599       (4) {* | /}[-]factor[x | y]
600
601       The option string always starts with a colon (':') to separate it from
602       the filename.  An empty option string can skip this colon, but it might
603       still be a good idea to include it to prevent ambiguity if the filename
604       contains any colon.
605
606           filename_without_colon.svg
607           filename:with:colon.svg:
608
609       An exclamation point ('!') transposes the entire final image (including
610       the rendering area), i.e. all the horizontal and all the vertical
611       coordinates are swapped with each other.
612
613           image.svg:!
614
615       width and height specifies the dimensions of the rendering area in
616       pixels, i.e. the dimensions of the resulting image.  The actual image
617       is fitted to fill the entire rendering area.
618
619           image.svg:60x60
620
621       Use a width or height value of 0 to keep the aspect ratio.
622
623           image.svg:0x60
624           image.svg:60x0
625
626       A '-' before width mirrors the rendering area horizontally.
627
628           image.svg:-0x0
629
630       A '-' before height mirrors the rendering area vertically.
631
632           image.svg:0x-0
633
634       xpos and ypos specifies a translation of the image in pixels.  A
635       positive xpos value moves the image to the right.  A positive ypos
636       value moves it down.  Moving it partially outside of the rendering area
637       results in a cropped image.
638
639           image.svg:-30-0
640           image.svg:-0+10
641           image.svg:-30+10
642
643       angle specifies a rotation around the actual image center in degrees.
644       This might result in a cropped image.  A positive value rotates the
645       image clockwise.  Floating point values are recognized.
646
647           image.svg:@180
648           image.svg:@-90
649           image.svg:@30
650           image.svg:@57.3
651
652       factor specifes a scaling of the actual image (not the rendering area).
653       Scaling it up results in a cropped image.  Floting point values are
654       recognized.  Division by zero is ignored.  If factor is directly
655       followed by a 'x' or a 'y', the scaling is horizontal or vertical
656       respectively.  Otherwise the scaling is uniform.
657
658           image.svg:*2
659           image.svg:/2
660           image.svg:/3x
661           image.svg:/2y
662
663       Scaling down a translated or rotated image can prevent cropping.
664
665           image.svg:@30*0.6
666
667       Repeated usage of translation, rotation, and scaling is allowed.
668       Translation and rotation are additive.  Scaling is multiplicative.
669
670           image.svg:*2/3
671           image.svg:/3x/2y
672
673       When combining affine transformations, the scaling is always done
674       first, then the rotation, and finally the translation.
675
676           image.svg:-30+10@30/3x/2y
677
678       Use a negative scale factor to mirror the actual image.
679
680           image.svg:-30+10@30/-3x/2y
681
682       Mirroring of the rendering area is done after any scaling, rotation or
683       translation of the image.
684
685           image.svg:-0x0-30+10@30/3x/2y
686
687       Transposing is done last of all, after everything else.
688
689           image.svg:!-0x0-30+10@30/3x/2y
690

MODULES

692       A module is a separate program which runs as a separate Unix process
693       but transmits commands to fvwm to execute.  Users can write their own
694       modules to do any weird or bizarre manipulations without bloating or
695       affecting the integrity of fvwm itself.
696
697       Modules must be spawned by fvwm so that it can set up two pipes for
698       fvwm and the module to communicate with.  The pipes are already open
699       for the module when it starts and the file descriptors for the pipes
700       are provided as command line arguments.
701
702       Modules can be spawned by fvwm at any time during the X session by use
703       of the Module command.  Modules can exist for the duration of the X
704       session, or can perform a single task and exit.  If the module is still
705       active when fvwm is told to quit, then fvwm closes the communication
706       pipes and waits to receive a SIGCHLD from the module, indicating that
707       it has detected the pipe closure and has exited.  If modules fail to
708       detect the pipe closure fvwm exits after approximately 30 seconds
709       anyway.  The number of simultaneously executing modules is limited by
710       the operating system's maximum number of simultaneously open files,
711       usually between 60 and 256.
712
713       Modules simply transmit commands to the fvwm command engine.  Commands
714       are formatted just as in the case of a mouse binding in the config
715       setup file.  Certain auxiliary information is also transmitted, as in
716       the sample module FvwmButtons.
717
718       Please refer to the Module Commands section for details.
719

ICCCM COMPLIANCE

721       Fvwm attempts to be ICCCM 2.0 compliant.  Check
722       http://tronche.com/gui/x/icccm/ for more info.  In addition, ICCCM
723       states that it should be possible for applications to receive any
724       keystroke, which is not consistent with the keyboard shortcut approach
725       used in fvwm and most other window managers.  In particular you cannot
726       have the same keyboard shortcuts working with your fvwm and another
727       fvwm running within Xnest (a nested X server running in a window).  The
728       same problem exists with mouse bindings.
729
730       The ICCCM states that windows possessing the property
731
732           WM_HINTS(WM_HINTS):
733               Client accepts input or input focus: False
734
735       should not be given the keyboard input focus by the window manager.
736       These windows can take the input focus by themselves, however.  A
737       number of applications set this property, and yet expect the window
738       manager to give them the keyboard focus anyway, so fvwm provides a
739       window style, Lenience, which allows fvwm to overlook this ICCCM rule.
740       Even with this window style it is not guaranteed that the application
741       accepts focus.
742
743       The differences between ICCCM 1.1 and 2.0 include the ability to take
744       over from a running ICCCM 2.0 compliant window manager; thus
745
746           fvwm; vi ~/.fvwm/config; fvwm -replace
747
748       resembles the Restart command.  It is not exactly the same, since
749       killing the previously running wm may terminate your X session, if the
750       wm was started as the last client in your .Xclients or .Xsession file.
751
752       Further additions are support for client-side colormap installation
753       (see the ICCCM for details) and the urgency hint.  Clients can set this
754       hint in the WM_HINTS property of their window and expect the window
755       manager to attract the user's attention to the window.  Fvwm has two
756       re-definable functions for this purpose, "UrgencyFunc" and
757       "UrgencyDoneFunc", which are executed when the flag is set/cleared.
758       Their default definitions are:
759
760           AddToFunc UrgencyFunc
761            + I Iconify off
762            + I FlipFocus
763            + I Raise
764            + I WarpToWindow 5p 5p
765           AddToFunc UrgencyDoneFunc
766            + I Nop
767

GNOME COMPLIANCE

769       Fvwm attempts to be GNOME (version 1) compliant.  Check
770       http://www.gnome.org for what that may mean.  To disable GNOME hints
771       for some or all windows, the GNOMEIgnoreHints style can be used.
772

EXTENDED WINDOW MANAGER HINTS

774       Fvwm attempts to respect the extended window manager hints (ewmh or
775       EWMH for short) specification:
776       http://www.freedesktop.org/wiki/Standards_2fwm_2dspec and some
777       extensions of this specification.  This allows fvwm to work with KDE
778       version >= 2, GNOME version 2 and other applications which respect this
779       specification (any application based on GTK+ version 2).  Applications
780       which respect this specification are called ewmh compliant
781       applications.
782
783       This support is configurable with styles and commands.  These styles
784       and commands have EWMH as the prefix (so you can find them easily in
785       this man page).
786
787       There is a new Context 'D' for the Key, PointerKey, Mouse and Stroke
788       commands.  This context is for desktop applications (such as kdesktop
789       and Nautilus desktop).
790
791       When a compliant taskbar asks fvwm to activate a window (typically when
792       you click on a button which represents a window in such a taskbar),
793       then fvwm calls the complex function EWMHActivateWindowFunc which by
794       default is Iconify Off, Focus and Raise.  You can redefine this
795       function.  For example:
796
797           DestroyFunc EWMHActivateWindowFunc
798           AddToFunc EWMHActivateWindowFunc I Iconify Off
799           + I Focus
800           + I Raise
801           + I WarpToWindow 50 50
802
803       additionally warps the pointer to the center of the window.
804
805       The EWMH specification introduces the notion of Working Area.  Without
806       ewmh support the Working Area is the full visible screen (or all your
807       screens if you have a multi head setup and you use Xinerama).  However,
808       compliant applications (such as a panel) can ask to reserve space at
809       the edge of the screen.  If this is the case, the Working Area is your
810       full visible screen minus these reserved spaces.  If a panel can be
811       hidden by clicking on a button the Working Area does not change (as you
812       can unhide the panel at any time), but the Dynamic Working Area is
813       updated: the space reserved by the panel is removed (and added again if
814       you pop up the panel).  The Dynamic Working Area may be used when fvwm
815       places or maximizes a window.  To know if an application reserves space
816       you can type "xprop | grep _NET_WM_STRUT" in a terminal and select the
817       application.  If four numbers appear then these numbers define the
818       reserved space as explained in the EwmhBaseStruts command.
819

MWM COMPATIBILITY

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

OPEN LOOK AND XVIEW COMPATIBILITY

826       Fvwm supports all the Open Look decoration hints (except pushpins).
827       Should you use any such application, please add the following line to
828       your config:
829
830           Style * OLDecor
831
832       Most (perhaps all) Open Look applications have a strange notion of
833       keyboard focus handling.  Although a lot of work went into fvwm to work
834       well with these, you may still encounter problems.  It is recommended
835       to use the NeverFocus focus policy and the Lenience style for all such
836       applications (the windows still get the focus):
837
838           Style <application name> NeverFocus, Lenience
839
840       But in case you can not live with that focus policy, you can try using
841       one of the other focus policies in combination with the Lenience style:
842
843           Style <application name> MouseFocus, Lenience
844           Style <application name> SloppyFocus, Lenience
845           Style <application name> ClickToFocus, Lenience
846

M4 PREPROCESSING

848       M4 pre-processing is handled by a module in fvwm.  To get more details,
849       try man FvwmM4.  In short, if you want fvwm to parse your files with
850       m4, then replace the command Read with FvwmM4 in your ~/.fvwm/config
851       file (if it appears at all), and start fvwm with the command
852
853           fvwm -cmd "FvwmM4 config"
854

CPP PREPROCESSING

856       Cpp is the C-language pre-processor.  fvwm offers cpp processing which
857       mirrors the m4 pre-processing.  To find out about it, re-read the M4
858       section, but replace "m4" with "cpp".
859

CONFIGURATION

861   Configuration Files
862       The configuration file is used to describe mouse and button bindings,
863       colors, the virtual display size, and related items.  The
864       initialization configuration file is typically called config (or
865       .fvwm2rc).  By using the Read command, it is easy to read in new
866       configuration files as you go.
867
868       Lines beginning with '#' are ignored by fvwm.  Lines starting with '*'
869       are expected to contain module configuration commands (rather than
870       configuration commands for fvwm itself).  Like in shell scripts
871       embedded newlines in a configuration file line can be quoted by
872       preceding them with a backslash.  All lines linked in this fashion are
873       treated as a single line.  The newline itself is ignored.
874
875       Fvwm makes no distinction between configuration commands and action
876       commands, so anything mentioned in the fvwm commands section can be
877       placed on a line by itself for fvwm to execute as it reads the
878       configuration file, or it can be placed as an executable command in a
879       menu or bound to a mouse button or a keyboard key.  It is left as an
880       exercise for the user to decide which function make sense for
881       initialization and which ones make sense for run-time.
882
883   Supplied Configuration
884       A sample configuration file, system.fvwm2rc, is supplied with the fvwm
885       distribution.  It is well commented and can be used as a source of
886       examples for fvwm configuration.  It may be copied to
887       /usr/local/share/fvwm/config file.
888
889       Alternatively, the built-in menu (accessible when no configuration file
890       is found) has options to create an initial config file for the user.
891
892       If you are new to fvwm, try fvwm-themes[] package demonstrating the
893       powerful fvwm functionality.
894

FONTS

896   Font names and font loading
897       The fonts used for the text of a window title, icon titles, menus and
898       geometry window can be specified by using the Font and IconFont Style,
899       the Font MenuStyle and the DefaultFont commands.  Also, all the Modules
900       which use text have configuration command(s) to specify font(s).  All
901       these styles and commands take a font name as an argument.  This
902       section explains what is a font name for fvwm and which fonts fvwm
903       loads.
904
905       First, you can use what we can call a usual font name, for example,
906
907           -adobe-courier-bold-r-normal--10-100-75-75-m-60-ISO8859-1
908           -adobe-courier-bold-r-normal--10-*
909           -*-fixed-medium-o-normal--14-*-ISO8859-15
910
911       That is, you can use an X Logical Font Description (XLFD for short).
912       Then the "first" font which matches the description is loaded and used.
913       This "first" font depends of your font path and also of your locale.
914       Fonts which match the locale charset are loaded in priority order.  For
915       example with
916
917           -adobe-courier-bold-r-normal--10-*
918
919       if the locale charset is ISO8859-1, then fvwm tries to load a font
920       which matches
921
922           -adobe-courier-bold-r-normal--10-*-ISO8859-1
923
924       with the locale charset ISO8859-15 fvwm tries to load
925
926           -adobe-courier-bold-r-normal--10-*-ISO8859-15.
927
928       A font name can be given as an extended XLFD.  This is a comma
929       separated list of (simple) XLFD font names, for example:
930
931           -adobe-courier-bold-r-normal--14-*,-*-courier-medium-r-normal--14-*
932
933       Each simple font name is tried until a matching font with the locale
934       charset is found and if this fails each simple font name is tried
935       without constraint on the charset.
936
937       More details on the XLFD can be found in the X manual page, the X
938       Logical Font Description Conventions document (called xlfd) and the
939       XLoadFont and XCreateFontSet manual pages.  Some useful font utilities
940       are: xlsfonts, xfontsel, xfd and xset.
941
942       If you have Xft support you can specify an Xft font name (description)
943       of a true type (or Type1) font prefixed by "xft:", for example:
944
945           "xft:Luxi Mono"
946           "xft:Luxi Mono:Medium:Roman:size=14:encoding=iso8859-1"
947
948       The "first" font which matches the description is loaded.  This first
949       font depends on the XftConfig configuration file with Xft1 and on the
950       /etc/fonts/fonts.conf file with Xft2.  One may read the Xft manual page
951       and the fontconfig man page with Xft2.  The first string which follows
952       "xft:" is always considered as the family.  With the second example
953       Luxi Mono is the Family (Other XFree TTF families: "Luxi Serif", "Luxi
954       Sans"), Medium is the Weight (other possible weights: Light, DemiBold,
955       Bold, Black), Roman is the slant or the style (other possibilities:
956       Regular, Oblique, Italic) size specifies the point size (for a pixel
957       size use pixelsize=), encoding allows for enforce a charset (iso8859-1
958       or iso10646-1 only; if no encoding is given the locale charset is
959       assumed).  An important parameter is "minspace=bool" where bool is True
960       or False.  If bool is False (the default?) Xft gives a greater font
961       height to fvwm than if bool is True.  This may modify text placement,
962       icon and window title height, line spacing in menus and FvwmIdent,
963       button height in some fvwm modules ...etc.  With a LCD monitor you may
964       try to add "rgba=mode" where mode is either rgb, bgr, vrgb or vbgr to
965       enable subpixel rendering.  The best mode depends on the way your LCD
966       cells are arranged.  You can pass other specifications in between ":",
967       as "foundry=foundry_name", "spacing=type" where type can be monospace,
968       proportional or charcell, "charwidth=integer", "charheight=integer" or
969       "antialias=bool" where bool is True or False.  It seems that these
970       parameters are not always taken in account.
971
972       To determine which Xft fonts are really loaded you can export
973       XFT_DEBUG=1 before starting fvwm and take a look to the error log.
974       With Xft2 you may use fc-list to list the available fonts.  Anyway, Xft
975       support is experimental (from the X and the fvwm point of view) and the
976       quality of the rendering depends on number of parameters (the XFree and
977       the freetype versions and your video card(s)).
978
979       After an Xft font name you can add after a ";" an XLFD font name
980       (simple or extended) as:
981
982           xft:Verdana:pixelsize=14;-adobe-courier-bold-r-normal--14-*
983
984       then, if either loading the Xft font fails or fvwm has no Xft support,
985       fvwm loads the font "-adobe-courier-bold-r-normal--14-*".  This allows
986       for writing portable configuration files.
987
988   Font and string encoding
989       Once a font is loaded, fvwm finds its encoding (or charset) using its
990       name (the last two fields of the name).  fvwm assumes that the strings
991       which are displayed with this font use this encoding (an exception is
992       that if an iso10646-1 font is loaded, then UTF-8 is assumed for string
993       encoding).  In a normal situation, (i) a font is loaded by giving a
994       font name without specifying the encoding, (ii) the encoding of the
995       loaded font is the locale encoding, and then (iii) the strings in the
996       fvwm configuration files should use the locale encoding as well as the
997       window and icon name.  With Xft the situation is bit different as Xft
998       supports only iso10646-1 and iso8859-1.  If you do not specify one of
999       these encodings in the Xft font name, then fvwm does strings conversion
1000       using (iii).  Note that with multibyte fonts (and in particular with
1001       "CJK" fonts) for good text rendering, the locale encoding should be the
1002       charset of the font.
1003
1004       To override the previous rules, it is possible to specify the string
1005       encoding in the beginning of a font description as follow:
1006
1007           StringEncoding=enc:_full_font_name_
1008
1009       where enc is an encoding supported by fvwm (usually font name charset
1010       plus some unicode encodings: UTF-8, USC-2, USC-4 and UTF-16).
1011
1012       For example, you may use an iso8859-1 locale charset and have an
1013       FvwmForm in Russian using koi8-r encoding.  In this case, you just have
1014       to ask FvwmForm to load a koi8-r font by specifying the encoding in the
1015       font name.  With a multibyte language, (as multibyte font works well
1016       only if the locale encoding is the charset of the font), you should use
1017       an iso10646-1 font:
1018
1019           StringEncoding=jisx0208.1983-0:-*-fixed-medium-r-*-ja-*-iso10646-1
1020
1021       or
1022
1023           "StringEncoding=jisx0208.1983-0:xft:Bitstream Cyberbit"
1024
1025       if your FvwmForm configuration uses jisx0208.1983-0 encoding.  Another
1026       possibility is to use UTF-8 encoding for your FvwmForm configuration
1027       and use an iso10646-1 font:
1028
1029           -*-fixed-medium-r-*-ja-*-iso10646-1
1030
1031       or
1032
1033           "StringEncoding=UTF-8:xft:Bitstream Cyberbit"
1034
1035       or equivalently
1036
1037           "xft:Bitstream Cyberbit:encoding=iso10646-1"
1038
1039       In general iso10646-1 fonts together with UTF-8 string encoding allows
1040       the display of any characters in a given menu, FvwmForm etc.
1041
1042       More and more, unicode is used and text files use UTF-8 encoding.
1043       However, in practice the characters used range over your locale charset
1044       (this is the case when you generate a menu with fvwm-menu-desktop with
1045       recent versions of KDE and GNOME).  For saving memory (an iso10646-1
1046       font may have a very large number of characters) or because you have a
1047       pretty font without an iso10646-1 charset, you can specify the string
1048       encoding to be UTF-8 and use a font in the locale charset:
1049
1050           StringEncoding=UTF-8:-*-pretty_font-*-12-*
1051
1052       In most cases, fvwm correctly determines the encoding of the font.
1053       However, some fonts do not end with valid encoding names.  When the
1054       font name isn't normal, for example:
1055
1056           -misc-fixed-*--20-*-my_utf8-36
1057
1058       you need to add the encoding after the font name using a slash as a
1059       delimiter.  For example:
1060
1061           MenuStyle * Font -misc-fixed-*--20-*-my_utf8-36/iso10646-1
1062
1063       If fvwm finds an encoding, fvwm uses the iconv system functions to do
1064       conversion between encodings.  Unfortunately, there are no standards.
1065       For conversion between iso8859-1 and UTF-8: a GNU system uses
1066       "ISO-8859-1" and other systems use "iso881" to define the converters
1067       (these two names are supported by fvwm).  Moreover, in some cases it
1068       may be necessary to use machine specific converters.  So, if you
1069       experience problems you can try to get information on your iconv
1070       implementation ("man iconv" may help) and put the name which defines
1071       the converter between the font encoding and UTF-8 at the end of the
1072       font name after the encoding hint and a / (another possible solution is
1073       to use GNU libiconv).  For example use:
1074
1075           Style * Font -misc-fixed-*--14-*-iso8859-1/*/latin1
1076
1077       to use latin1 for defining the converter for the iso8859-1 encoding.
1078       The "*" in between the "/" says to fvwm to determine the encoding from
1079       the end of the font name.  Use:
1080
1081           Style * Font \
1082                -misc-fixed-*--14-*-local8859-6/iso8859-6/local_iso8859_6_iconv
1083
1084       to force fvwm to use the font with iso8859-6 as the encoding (this is
1085       useful for bi-directionality) and to use local_iso8859_6_iconv for
1086       defining the converters.
1087
1088   Font Shadow Effects
1089       Fonts can be given 3d effects.  At the beginning of the font name (or
1090       just after a possible StringEncoding specification) add
1091
1092           Shadow=size [offset] [directions]]:
1093
1094       size is a positive integer which specifies the number of pixels of
1095       shadow.  offset is an optional positive integer which defines the
1096       number of pixels to offset the shadow from the edge of the character.
1097       The default offset is zero.  directions is an optional set of
1098       directions the shadow emanates from the character.  The directions are
1099       a space separated list of fvwm directions:
1100
1101       N, North, Top, t, Up, u, -
1102
1103       E, East, Right, r, Right, r, ]
1104
1105       S, South, Bottom, b, Down, d, _
1106
1107       W, West, Left, l, Left, l, [
1108
1109       NE, NorthEast, TopRight, tr, UpRight, ur, ^
1110
1111       SE, SouthEast, BottomRight, br, DownRight, dr, >
1112
1113       SW, SouthWest, BottomLeft, bl, DownLeft, dl, v
1114
1115       NW, NorthWest, TopLeft, tl, UpLeft, ul, <
1116
1117       C, Center, Centre, .
1118
1119       A shadow is displayed in each given direction.  All is equivalent to
1120       all the directions.  The default direction is BottomRight.  With the
1121       Center direction, the shadow surrounds the whole string.  Since this is
1122       a super set of all other directions, it is a waste of time to specify
1123       this along with any other directions.
1124
1125       The shadow effect only works with colorsets.  The color of the shadow
1126       is defined by using the fgsh option of the Colorset command.  Please
1127       refer to the Colorsets section for details about colorsets.
1128
1129       Note: It can be difficult to find the font, fg, fgsh and bg colors to
1130       make this effect look good, but it can look quite good.
1131

BI-DIRECTIONAL TEXT

1133       Arabic and Hebrew text require bi-directional text support to be
1134       displayed correctly, this means that logical strings should be
1135       converted before their visual presentation, so left-to-right and
1136       right-to-left sub-strings are determined and reshuffled.  In fvwm this
1137       is done automatically in window titles, menus, module labels and other
1138       places if the fonts used for displaying the text are of one of the
1139       charsets that require bidi (bi-directional) support.  For example, this
1140       includes iso8859-6, iso8859-8 and iso10646-1 (unicode), but not other
1141       iso8859-* fonts.
1142
1143       This bi-directional text support is done using the fribidi library
1144       compile time option, see INSTALL.fvwm.
1145

KEYBOARD SHORTCUTS

1147       Almost all window manager operations can be performed from the keyboard
1148       so mouse-less operation should be possible.  In addition to scrolling
1149       around the virtual desktop by binding the Scroll command to appropriate
1150       keys, Popup, Move, Resize, and any other command can be bound to keys.
1151       Once a command is started the pointer is moved by using the up, down,
1152       left, and right arrows, and the action is terminated by pressing
1153       return.  Holding down the Shift key causes the pointer movement to go
1154       in larger steps and holding down the control key causes the pointer
1155       movement to go in smaller steps.  Standard emacs and vi cursor movement
1156       controls ( n , p , f , b , and j , k , h , l ) can be used instead of
1157       the arrow keys.
1158

SESSION MANAGEMENT

1160       Fvwm supports session management according to the X Session Management
1161       Protocol.  It saves and restores window position, size, stacking order,
1162       desk, stickiness, shadiness, maximizedness, iconifiedness for all
1163       windows.  Furthermore, some global state is saved.
1164
1165       Fvwm doesn't save any information regarding styles, decors, functions
1166       or menus.  If you change any of these resources during a session (e.g.
1167       by issuing Style commands or by using various modules), these changes
1168       are lost after saving and restarting the session.  To become permanent,
1169       such changes have to be added to the configuration file.
1170
1171       Note further that the current implementation has the following anomaly
1172       when used on a multi-screen display: Starting fvwm for the first time,
1173       fvwm manages all screens by forking a copy of itself for each screen.
1174       Every copy knows its parent and issuing a Quit command to any instance
1175       of fvwm kills the master and thus all copies of fvwm.  When you save
1176       and restart the session, the session manager brings up a copy of fvwm
1177       on each screen, but this time they are started as individual instances
1178       managing one screen only.  Thus a Quit kills only the copy it was sent
1179       to.  This is probably not a very serious problem, since with session
1180       management, you are supposed to quit a session through the session
1181       manager anyway.  If it is really needed,
1182
1183           Exec exec killall fvwm
1184
1185       still kills all copies of fvwm.  Your system must have the killall
1186       command though.
1187

BOOLEAN ARGUMENTS

1189       A number of commands take one or several boolean arguments.  These take
1190       a few equivalent inputs: "yes", "on", "true", "t" and "y" all evaluate
1191       to true while "no", "off", "false", "f" and "n" evaluate to false.
1192       Some commands allow "toggle" too which means that the feature is
1193       disabled if it is currently enabled and vice versa.
1194

BUILTIN KEY AND MOUSE BINDINGS

1196       The following commands are built-in to fvwm:
1197
1198           Key Help R A Popup MenuFvwmRoot
1199           Key F1 R A Popup MenuFvwmRoot
1200           Key Tab A M WindowList Root c c NoDeskSort
1201           Key Escape A MC EscapeFunc
1202           Mouse 1 R A Menu MenuFvwmRoot
1203           Mouse 1 T   A FuncFvwmRaiseLowerX Move
1204           Mouse 1 FS  A FuncFvwmRaiseLowerX Resize
1205           Mouse 2 FST A FuncFvwmRaiseLowerX Move
1206           AddToFunc FuncFvwmRaiseLowerX
1207           + I Raise
1208           + M $0
1209           + D Lower
1210
1211       The Help and F1 keys invoke a built-in menu that fvwm creates.  This is
1212       primarily for new users that have not created their own configuration
1213       file.  Either key on the root (background) window pops up an menu to
1214       help you get started.
1215
1216       The Tab key pressed anywhere with the Meta key (same as the Alt key on
1217       PC keyboards) held down pop-ups a window list.
1218
1219       Mouse button 1 on the title-bar or side frame can move, raise or lower
1220       a window.
1221
1222       Mouse button 1 on the window corners can resize, raise or lower a
1223       window.
1224
1225       You can override or remove these bindings.  To remove the window list
1226       binding, use this:
1227
1228           Key Tab A M -
1229

COMMAND EXECUTION

1231   Module and Function Commands
1232       If fvwm encounters a command that it doesn't recognize, it checks to
1233       see if the specified command should have been
1234
1235           Function (rest of command)
1236
1237       or
1238
1239           Module (rest of command)
1240
1241       This allows complex functions or modules to be invoked in a manner
1242       which is fairly transparent to the configuration file.
1243
1244       Example: the config file contains the line
1245
1246           HelpMe
1247
1248       Fvwm looks for an fvwm command called "HelpMe", and fails.  Next it
1249       looks for a user-defined complex function called "HelpMe".  If no such
1250       function exists, fvwm tries to execute a module called "HelpMe".
1251
1252   Delayed Execution of Commands
1253       Note: There are many commands that affect look and feel of specific,
1254       some or all windows, like Style, Mouse, Colorset, TitleStyle and many
1255       others.  For performance reasons such changes are not applied
1256       immediately but only when fvwm is idle, i.e. no user interaction or
1257       module input is pending.  Specifically, new Style options that are set
1258       in a function are not applied until after the function has completed.
1259       This can sometimes lead to unwanted effects.
1260
1261       To force that all pending changes are applied immediately, use the
1262       UpdateStyles, Refresh or RefreshWindow commands.
1263

QUOTING

1265       Quotes are required only when needed to make fvwm consider two or more
1266       words to be a single argument.  Unnecessary quoting is allowed.  If you
1267       want a quote character in your text, you must escape it by using the
1268       backslash character.  For example, if you have a pop-up menu called
1269       "Window-Ops", then you do not need quotes:
1270
1271           Popup Window-Ops
1272
1273       but if you replace the dash with a space, then you need quotes:
1274
1275           Popup "Window Ops"
1276
1277       The supported quoting characters are double quotes, single quotes and
1278       reverse single quotes.  All three kinds of quotes are treated in the
1279       same way.  Single characters can be quoted with a preceding backslash.
1280       Quoting single characters works even inside other kinds of quotes.
1281

COMMAND EXPANSION

1283       Whenever an fvwm command line is executed, fvwm performs parameter
1284       expansion.  A parameter is a '$' followed by a word enclosed in
1285       brackets ($[...]) or a single special character.  If fvwm encounters an
1286       unquoted parameter on the command line it expands it to a string
1287       indicated by the parameter name.  Unknown parameters are left
1288       untouched.  Parameter expansion is performed before quoting.  To get a
1289       literal '$' use "$$".
1290
1291       If a command is prefixed with a '-' parameter expansion isn't
1292       performed.  This applies to the command immediately following the '-',
1293       in which the expansion normally would have taken place.  When uesed
1294       together with other prefix commands it must be added before the other
1295       prefix.
1296
1297       Example:
1298
1299           Pick -Exec exec xmessage '$[w.name]'
1300
1301       opens an xmessage dialog with "$[w.name]" unexpanded.
1302
1303       The longer variables may contain additional variables inside the name,
1304       which are expanded before the outer variable.
1305
1306       In earlier versions of fvwm, some single letter variables were
1307       supported.  It is deprecated now, since they cause a number of
1308       problems.  You should use the longer substitutes instead.
1309
1310       Example:
1311
1312           # Print the current desk number, horizontal page number
1313           # and the window's class (unexpanded here, no window).
1314           Echo $[desk.n] $[page.nx] $[w.class]
1315
1316       Note: If the command is called outside a window context, it prints
1317       "$[w.class]" instead of the class name.  It is usually not enough to
1318       have the pointer over a window to have a context window.  To force
1319       using the window with the focus, the Current command can be used:
1320
1321           Current Echo $[desk.n] $[page.nx] $[w.class]
1322
1323       The parameters known by fvwm are:
1324
1325       $$
1326           A literal '$'.
1327
1328       $.
1329           The absolute directory of the currently Read file.  Intended for
1330           creating relative and relocatable configuration trees.  If used
1331           outside of any read file, the returned value is '.'.
1332
1333       $0 to $9
1334           The positional parameters given to a complex function (a function
1335           that has been defined with the AddToFunc command).  "$0" is
1336           replaced with the first parameter, "$1" with the second parameter
1337           and so on.  If the corresponding parameter is undefined, the "$..."
1338           is deleted from the command line.
1339
1340       $*
1341           All positional parameters given to a complex function.  This
1342           includes parameters that follow after "$9".
1343
1344       $[n]
1345           The n:th positional parameter given to a complex function, counting
1346           from 0.  If the corresponding parameter is undefined, the "$[n]" is
1347           deleted from the command line.  The parameter is expanded unquoted.
1348
1349       $[n-m]
1350           The positional parameters given to a complex function, starting
1351           with parameter n and ending with parameter m.  If all the
1352           corresponding parameters are undefined, the "$[...]" is deleted
1353           from the command line.  If only some of the parameters are defined,
1354           all defined parameters are expanded, and the remaining silently
1355           ignored.  All parameters are expanded unquoted.
1356
1357       $[n-]
1358           All the positional parameters given to a complex function, starting
1359           with parameter n.  If all the corresponding parameters are
1360           undefined, the "$[...]" is deleted from the command line.  All
1361           parameters are expanded unquoted.
1362
1363       $[*]
1364           All the positional parameters given to a complex function.  This is
1365           equivalent of $[0-].
1366
1367       $[version.num]
1368           The version number, like "2.6.0".
1369
1370       $[version.info]
1371           The version info, like " (from cvs)", empty for the official
1372           releases.
1373
1374       $[version.line]
1375           The first line printed by the --version command line option.
1376
1377       $[vp.x] $[vp.y] $[vp.width] $[vp.height]
1378           Either coordinate or the width or height of the current viewport.
1379
1380       $[desk.n]
1381           The current desk number.
1382
1383       $[desk.name<n>]
1384           These parameters are replaced with the name of the desktop number
1385           <n> that is defined with the DesktopName command.  If no name is
1386           defined, then the default name is returned.
1387
1388       $[desk.width] $[desk.height]
1389           The width or height of the whole desktop, i.e. the width or height
1390           multiplied by the number of pages in x or y direction.
1391
1392       $[desk.pagesx] $[desk.pagesy]
1393           The number of total pages in a desk in x or y direction.  This is
1394           the same as the values set by DesktopSize.
1395
1396       $[page.nx] $[page.ny]
1397           The current page numbers, by X and Y axes, starting from 0.  page
1398           is equivalent to area in the GNOME terminology.
1399
1400       $[w.id]
1401           The window-id (expressed in hex, e.g. 0x10023c) of the window the
1402           command was called for or "$[w.id]" if no window is associated with
1403           the command.
1404
1405       $[w.name] $[w.iconname] $[w.class] $[w.resource] $[w.iconfile]
1406       $[w.miniiconfile] $[w.iconfile.svgopts] $[w.miniiconfile.svgopts]
1407           The window's name, icon name, resource class and resource name,
1408           file name of its icon or mini icon defined with the Icon or
1409           MiniIcon style (including the full path if the file was found on
1410           disk), and (if fvwm is compiled with SVG support) the icon or mini
1411           icon svg rendering options (including the leading colon), or
1412           unexpanded "$[w.<attribute>]" string if no window is associated
1413           with the command.
1414
1415           Note, the first 4 variables may include any kind of characters, so
1416           these variables are quoted.  It means that the value is surrounded
1417           by single quote characters and any contained single quote is
1418           prefixed with a backslash.  This guarantees that commands like:
1419
1420               Style $[w.resource] Icon norm/network.png
1421
1422           work correctly, regardless of any special symbols the value may
1423           contain, like spaces and different kinds of quotes.
1424
1425       $[w.x] $[w.y] $[w.width] $[w.height]
1426           Either coordinate or the width or height of the current window if
1427           it is not iconified.  If no window is associated with the command
1428           or the window is iconified, the string is left as is.
1429
1430       $[w.desk]
1431           The number of the desk on which the window is shown.  If the window
1432           is sticky the current desk number is used.
1433
1434       $[w.layer]
1435           The layer of the window.
1436
1437       $[cw.x] $[cw.y] $[cw.width] $[cw.height]
1438           These work like $[w....] but return the geometry of the client part
1439           of the window.  In other words: the border and title of the window
1440           is not taken into account.
1441
1442       $[i.x], $[it.x], $[ip.x] $[i.y], $[it.y], $[ip.y] $[i.width],
1443       $[it.width], $[ip.width] $[i.height], $[it.height], $[ip.height]
1444           These work like $[w....] but return the geometry of the icon
1445           ($[i....]), the icon title ($[it....]) or the icon picture
1446           ($[ip....]).
1447
1448       $[pointer.x] $[pointer.y]
1449           These return the position of the pointer on the screen.  If the
1450           pointer is not on the screen, these variables are not expanded.
1451
1452       $[pointer.wx] $[pointer.wy]
1453           These return the position of the pointer in the selected window.
1454           If the pointer is not on the screen, the window is iconified or no
1455           window is selected, these variables are not expanded.
1456
1457       $[pointer.cx] $[pointer.cy]
1458           These return the position of the pointer in the client portion of
1459           the selected window.  If the pointer is not on the screen, the
1460           window is shaded or iconified or no window is selected, these
1461           variables are not expanded.
1462
1463       $[screen]
1464           The screen number fvwm is running on.  Useful for setups with
1465           multiple screens.
1466
1467       $[fg.cs<n>] $[bg.cs<n>] $[hilight.cs<n>] $[shadow.cs<n>]
1468           These parameters are replaced with the name of the foreground (fg),
1469           background (bg), hilight (hilight) or shadow (shadow) color that is
1470           defined in colorset <n> (replace <n> with zero or a positive
1471           integer).  For example "$[fg.cs3]" is expanded to the name of the
1472           foreground color of colorset 3 (in rgb:rrrr/gggg/bbbb form).
1473           Please refer to the Colorsets section for details about colorsets.
1474
1475       $[schedule.last]
1476           This is replaced by the id of the last command that was scheduled
1477           with the Schedule command, even if this command was already
1478           executed.
1479
1480       $[schedule.next]
1481           This is replaced by the id the next command used with Schedule will
1482           get (unless a different id is specified explicitly).
1483
1484       $[cond.rc]
1485           The return code of the last conditional command.  This variable is
1486           only valid inside a function and can not be used in a conditional
1487           command.  Please refer to the section Conditional Commands in the
1488           command list.
1489
1490       $[func.context]
1491           The context character of the running command as used in the Mouse,
1492           Key or PointerKey command.  This is useful for example with:
1493
1494               Mouse 3 FS N WindowShade $$[func.context]
1495
1496
1497       $[gt.str]
1498           return the translation of str by looking in the current locale
1499           catalogs.  If no translation is found str is returned as is.  See
1500           the LocalePath command.
1501
1502       $[...]
1503           If the string within the braces is neither of the above, fvwm tries
1504           to find an environment variable with this name and replaces its
1505           value if one is found (e.g. "$[PAGER]" could be replaced by
1506           "more").  Otherwise the string is left as is.
1507
1508       Some examples can be found in the description of the AddToFunc command.
1509

SCRIPTING & COMPLEX FUNCTIONS

1511       To achieve the more complex effects, fvwm has a number of commands that
1512       improve its scripting abilities.  Scripts can be read from a file with
1513       Read, from the output of a command with PipeRead or written as a
1514       complex function with the AddToFunc command.  For the curious, section
1515       7 of the fvwm FAQ shows some real life applications of scripting.
1516       Please refer to the sections User Functions and Shell Commands and
1517       Conditional Commands for details.  A word of warning: during execution
1518       of complex functions, fvwm needs to take all input from the mouse
1519       pointer (the pointer is "grabbed" in the slang of X).  No other
1520       programs can receive any input from the pointer while a function is
1521       run.  This can confuse some programs.  For example, the xwd program
1522       refuses to make screen shots when run from a complex function.  To
1523       achieve the same functionality you can use the Read or PipeRead command
1524       instead.
1525

LIST OF FVWM COMMANDS

1527       The command descriptions below are grouped together in the following
1528       sections.  The sections are hopefully sorted in order of usefulness to
1529       the newcomer.
1530
1531       ·   Menu commands
1532
1533
1534       ·   Miscellaneous commands
1535
1536
1537       ·   Commands affecting window movement and placement
1538
1539
1540       ·   Commands for focus and mouse movement
1541
1542
1543       ·   Commands controlling window state
1544
1545
1546       ·   Commands for mouse, key and stroke bindings
1547
1548
1549       ·   The Style command (controlling window styles)
1550
1551
1552       ·   Other commands controlling window styles
1553
1554
1555       ·   Commands controlling the virtual desktop
1556
1557
1558       ·   Commands for user functions and shell commands
1559
1560
1561       ·   Conditional commands
1562
1563
1564       ·   Module commands
1565
1566
1567       ·   Quit, restart and session management commands
1568
1569
1570       ·   Colorsets
1571
1572
1573       ·   Color gradients
1574
1575
1576   Menus
1577       Before a menu can be opened, it has to be populated with menu items
1578       using the AddToMenu command and bound to a key or mouse button with the
1579       Key, PointerKey or Mouse command (there are many other ways to invoke a
1580       menu too).  This is usually done in the configuration file.
1581
1582       Fvwm menus are extremely configurable in look and feel.  Even the
1583       slightest nuances can be changed to the user's liking, including the
1584       menu item fonts, the background, delays before popping up sub menus,
1585       generating menus dynamically and many other features.  Please refer to
1586       the MenuStyle command to learn more.
1587
1588       Types of Menus
1589              In fvwm there are four slightly different types of menus:
1590
1591              Popup menus can appear everywhere on the screen on their own or
1592              attached to a part of a window.  The Popup command opens popup
1593              menus.  If the popup menu was invoked with a mouse button held
1594              down, it is closed when the button is released.  The item under
1595              the pointer is then activated and the associated action is
1596              executed.
1597
1598              Menu is a very similar command, but the menus it opens are
1599              slightly less transient.  When invoked by clicking a mouse
1600              button, it stays open and can be navigated with no button held.
1601              But if it is invoked by a button press followed by mouse motion,
1602              it behaves exactly like a popup menu.
1603
1604              Tear off menus or Pin up menus are menus from either of the
1605              above two commands that have been "torn off" their original
1606              context and pinned on the desktop like a normal window.  They
1607              are created from other menus by certain key presses or mouse
1608              sequences or with the TearMenuOff command from inside a menu.
1609
1610              Sub menus are menus inside menus.  When a menu item that has the
1611              Popup command as its action is selected, the named menu is
1612              opened as an inferior menu to the parent.  Any type of menu can
1613              have sub menus.
1614
1615       Menu Anatomy
1616              Menus consist of any number of titles which are inactive menu
1617              items that usually appear at the top of the menu, normal items
1618              triggering various actions when selected, separator lines
1619              between the items, tear off bars (a horizontal broken line) that
1620              tear off the menu when selected, and sub menu items indicated
1621              with a triangle pointing left or right, depending on the
1622              direction in which the sub menu appears.  All the above menu
1623              items are optional.
1624
1625              Additionally, if the menu is too long to fit on the screen, the
1626              excess menu items are put in a continuation menu and a sub menu
1627              with the string "More..." is placed at the bottom of the menu.
1628              The "More..." string honors the locale settings.
1629
1630              Finally, there may be a picture running up either side of the
1631              menu (a "side bar").
1632
1633       Menu Navigation
1634              Menus can be navigated either with the keyboard or with the
1635              mouse.  Many people prefer to use the mouse, but it can be
1636              rather tedious.  Once you get the hang of it, keyboard
1637              navigation can be much faster.  While fvwm displays a menu, it
1638              can do nothing else.  For example, new windows do not appear
1639              before the menu is closed.  However, this is not exactly true
1640              for tear off menus.  See the Tear Off Menus section for details.
1641
1642       Mouse Navigation
1643              Moving the pointer over a menu selects the item below it.
1644              Normally this is indicated by a 3d border around the item, but
1645              not all parts of a menu can be selected.  Pressing any mouse
1646              button while a menu is open by default activates the item below
1647              it.  Items of a popup menu are also activated by releasing a
1648              held mouse button.  In case of an item that hides a sub menu,
1649              the sub menu is displayed if the pointer hovers over the item
1650              long enough or moves close to the triangle indicating the sub
1651              menu.  This behaviour can be tuned with menu styles.
1652
1653              Scrolling a mouse wheel over a menu either wraps the pointer
1654              along the menu (default), scrolls the menu under the pointer or
1655              act as if the menu was clicked depending on the MouseWheel menu
1656              style.
1657
1658              Clicking on a selected item activates it - what happens exactly
1659              depends on the type of the item.
1660
1661              Clicking on a title, a separator, the side bar, or outside the
1662              menu closes the menu (exception: tear off menus can not be
1663              closed this way).  Pressing mouse button 2 over a menu title or
1664              activating a tear off bar creates a tear off menu from the
1665              current menu.  Clicking on a normal menu item invokes the
1666              command that is bound to it, and clicking on a sub menu item
1667              either closes all open menus and replaces them with the sub menu
1668              or posts the menu (default).
1669
1670              Posting menus is meant to ease mouse navigation.  Once a sub
1671              menu is posted, only items from that sub menu can be selected.
1672              This can be very useful to navigate the menu if the pointer
1673              tends to stray off the menu.  To unpost the menu and revert back
1674              to normal operation, either click on the same sub menu item or
1675              press any key.
1676
1677       Keyboard Navigation
1678              Just like with mouse navigation, the item below the pointer is
1679              selected.  This is achieved by warping the pointer to the menu
1680              items when necessary.  While a menu is open, all key presses are
1681              intercepted by the menu.  No other application can get keyboard
1682              input (although this is not the case for tear off menus).
1683
1684              Items can be selected directly by pressing a hotkey that can be
1685              configured individually for each menu item.  The hotkey is
1686              indicated by underlining it in the menu item label.  With the
1687              AutomaticHotkeys menu style fvwm automatically assigns hotkeys
1688              to all menu items.
1689
1690              The most basic keys to navigate through menus are the cursor
1691              keys (move up or down one item, enter or leave a sub menu),
1692              Space (activate item) and Escape (close menu).  Numerous other
1693              keys can be used to navigate through menus by default:
1694
1695              Enter, Return, Space activate the current item.
1696
1697              Escape, Delete, Ctrl-G exit the current sequence of menus or
1698              destroy a tear off menu.
1699
1700              J, N, Cursor-Down, Tab, Meta-Tab, Ctrl-F, move to the next item.
1701
1702              K, P, Cursor-Up, Shift-Tab, Shift-Meta-Tab, Ctrl-B, move to the
1703              prior item.
1704
1705              L, Cursor-Right, F enter a sub menu.
1706
1707              H, Cursor-Left, B return to the prior menu.
1708
1709              Ctrl-Cursor-Up, Ctrl-K Ctrl-P, Shift-Ctrl-Meta-Tab, Page-Up move
1710              up five items.
1711
1712              Ctrl-Cursor-Down, Ctrl-J Ctrl-N, Ctrl-Meta-Tab Page-Down move
1713              down five items.
1714
1715              Shift-P, Home, Shift-Cursor-Up, Ctrl-A move to the first item.
1716
1717              Shift-N, End, Shift-Cursor-Down, Ctrl-E move to the last item.
1718
1719              Meta-P, Meta-Cursor-Up, Ctrl-Cursor-Left, Shift-Ctrl-Tab, move
1720              up just below the next separator.
1721
1722              Meta-N, Meta-Cursor-Down, Ctrl-Cursor-Right, Ctrl-Tab, move down
1723              just below the next separator.
1724
1725              Insert opens the "More..." sub menu if any.
1726
1727              Backspace tears off the menu.
1728
1729       Menu Bindings
1730              The keys and mouse buttons used to navigate the menu can be
1731              configured using the Key and Mouse commands with the special
1732              context 'M', possible combined with 'T' for the menu title, 'I'
1733              for other menu items, 'S' for any border or sidepic, '[' for
1734              left border including a left sidepic, ']' for right border
1735              including a right sidepic, '-' for top border, '_' for bottom
1736              border.  The menu context uses its own set of actions that can
1737              be bound to keys and mouse buttons.  These are MenuClose,
1738              MenuCloseAndExec, MenuEnterContinuation, MenuEnterSubmenu,
1739              MenuLeaveSubmenu, MenuMoveCursor, MenuCursorLeft,
1740              MenuCursorRight, MenuSelectItem, MenuScroll and MenuTearOff.
1741
1742              It is not possible to override the key Escape with no modifiers
1743              for closing the menu.  Neither is it possible to undefine mouse
1744              button 1, the arrow keys or the enter key for minimal
1745              navigation.
1746
1747              MenuClose exits from the current sequence of menus or destroys a
1748              tear off menu.
1749
1750              MenuCloseAndExec exits from the current sequence of menus or
1751              destroys a tear off menu and executes the rest of the line as a
1752              command.
1753
1754              MenuEnterContinuation opens the "More..." sub menu if any.
1755
1756              MenuEnterSubmenu enters a sub menu.
1757
1758              MenuLeaveSubmenu returns to the prior menu.
1759
1760              MenuMoveCursor n [m] moves the selection to another item.  If
1761              the first argument is zero the second argument specifies an
1762              absolute item in the menu to move the pointer to.  Negative
1763              items are counted from the end of the menu.  If the first
1764              argument is non-zero, the second argument must be omitted, and
1765              the first argument specifies a relative change in the selected
1766              item.  The positions may be suffixed with a 's' to indicate that
1767              the items should refer only to the first items after separators.
1768
1769              MenuCursorLeft enters a sub menu with the SubmenusLeft menu
1770              style, and returns to the prior menu with the SubmenusRight menu
1771              style.
1772
1773              MenuCursorRight enters a sub menu with the SubmenusRight menu
1774              style, and returns to the prior menu with the SubmenusLeft menu
1775              style.
1776
1777              MenuSelectItem triggers the action for the menu item.
1778
1779              MenuScroll n performs menu scrolling according to the MouseWheel
1780              menu style with n items.  The distance can be suffixed with an
1781              's' to indicate the items should refer only to the first items
1782              after separators.
1783
1784              MenuTearOff turns a normal menu into a "torn off" menu.  See
1785              Tear Off Menus for details.
1786
1787       Tear Off Menus
1788              A tear off menu is any menu that has been "torn off" the window
1789              it was attached to and pinned to the root window.  There are
1790              three ways to tear off a menu: click on the menu title with
1791              mouse button 2, press Backspace in the menu or activate its tear
1792              off bar (a horizontal bar with a broken line).  Tear off bars
1793              must be added to the menu as any other item by assigning them
1794              the command TearMenuOff.
1795
1796              The builtin tear off actions can be overridden by undefining the
1797              builtin menu actions bound to tear off.  To remove the builtin
1798              mouse button 2 binding, use:
1799
1800                  Mouse 2 MT A -
1801
1802              and to remove the builtin backspace binding, use:
1803
1804                  Key Backspace M A -
1805
1806              See the section Menu Bindings for details on how to assign other
1807              bindings for tear off.
1808
1809              Note that prior to fvwm 2.5.20 the tear off mouse bindings were
1810              redefined in different way, which no longer work.
1811
1812              The window containing the menu is placed as any other window
1813              would be.  If you find it confusing to have your tear off menus
1814              appear at random positions on the screen, put this line in your
1815              configuration file:
1816
1817                  Style fvwm_menu UsePPosition
1818
1819              To remove borders and buttons from a tear-off menu but keep the
1820              menu title, you can use
1821
1822                  Style fvwm_menu !Button 0, !Button 1
1823                  Style fvwm_menu !Button 2, !Button 3
1824                  Style fvwm_menu !Button 4, !Button 5
1825                  Style fvwm_menu !Button 6, !Button 7
1826                  Style fvwm_menu !Button 8, !Button 9
1827                  Style fvwm_menu Title, HandleWidth 0
1828
1829              A tear off menu is a cross breeding between a window and a menu.
1830              The menu is swallowed by a window and its title is stripped off
1831              and displayed in the window title.  The main advantage is that
1832              the menu becomes permanent - activating an item does not close
1833              the menu.  Therefore, it can be used multiple times without
1834              reopening it.  To destroy such a menu, close its window or press
1835              the Escape key.
1836
1837              Tear off menus behave somewhat differently than normal menus and
1838              windows.  They do not take the keyboard focus, but while the
1839              pointer is over one of them, all key presses are sent to the
1840              menu.  Other fvwm key bindings are disabled as long as the
1841              pointer is inside the tear off menu or one of its sub menus.
1842              When the pointer leaves this area, all sub menus are closed
1843              immediately.  Note that the window containing a tear off menu is
1844              never hilighted as if it had the focus.
1845
1846              A tear off menu is an independent copy of the menu it originated
1847              from.  As such, it is not affected by adding items to that menu
1848              or changing its menu style.
1849
1850              To create a tear off menu without opening the normal menu first,
1851              the option TearOffImmediately can be added to the Menu or Popup
1852              command.
1853
1854       AddToMenu menu-name [menu-label action]
1855              Begins or adds to a menu definition.  Typically a menu
1856              definition looks like this:
1857
1858                  AddToMenu Utilities Utilities Title
1859                   + Xterm           Exec  exec xterm -e tcsh
1860                   + Rxvt            Exec  exec rxvt
1861                   + "Remote Logins" Popup Remote-Logins
1862                   + Top             Exec  exec rxvt -T Top -n Top -e top
1863                   + Calculator      Exec  exec xcalc
1864                   + Xman            Exec  exec xman
1865                   + Xmag            Exec  exec xmag
1866                   + emacs           Exec  exec xemacs
1867                   + Mail            MailFunction xmh "-font fixed"
1868                   + ""              Nop
1869                   + Modules         Popup Module-Popup
1870                   + ""              Nop
1871                   + Exit Fvwm       Popup Quit-Verify
1872
1873              The menu could be invoked via
1874
1875                  Mouse 1 R A Menu Utilities Nop
1876
1877              or
1878
1879                  Mouse 1 R A Popup Utilities
1880
1881              There is no end-of-menu symbol.  Menus do not have to be defined
1882              in a contiguous region of the config file.  The quoted (or first
1883              word) portion in the above examples is the menu label, which
1884              appears in the menu when the user pops it up.  The remaining
1885              portion is an fvwm command which is executed if the user selects
1886              that menu item.  An empty menu-label ("") and the Nop function
1887              are used to insert a separator into the menu.
1888
1889              The keywords DynamicPopUpAction and DynamicPopDownAction have a
1890              special meaning when used as the name of a menu item.  The
1891              action following the keyword is executed whenever the menu is
1892              popped up or down.  This way you can implement dynamic menus.
1893              It is even possible to destroy itself with DestroyMenu and the
1894              rebuild from scratch.  When the menu has been destroyed (unless
1895              you used the recreate option when destroying the menu), do not
1896              forget to add the dynamic action again.
1897
1898              Note: Do not trigger actions that require user interaction.
1899              They may fail and may screw up your menus.  See the Silent
1900              command.
1901
1902              Warning
1903              Do not issue MenuStyle commands as dynamic menu actions.
1904              Chances are good that this crashes fvwm.
1905
1906              There are several configurable scripts installed together with
1907              fvwm for automatic menu generation.  They have their own man
1908              pages.  Some of them, specifically fvwm-menu-directory and
1909              fvwm-menu-desktop, may be used with DynamicPopupAction to create
1910              a directory listing or GNOME/KDE application listing.
1911
1912              Example (File browser):
1913
1914                  # You can find the shell script fvwm_make_browse_menu.sh
1915                  # in the utils/ directory of the distribution.
1916                  AddToMenu BrowseMenu
1917                  + DynamicPopupAction PipeRead \
1918                    'fvwm_make_browse_menu.sh BrowseMenu'
1919
1920              Example (Picture menu):
1921
1922                  # Build a menu of all .jpg files in
1923                  # $HOME/Pictures
1924                  AddToMenu JpgMenu foo title
1925                  + DynamicPopupAction Function MakeJpgMenu
1926
1927                  AddToFunc MakeJpgMenu
1928                  + I DestroyMenu recreate JpgMenu
1929                  + I AddToMenu JpgMenu Pictures Title
1930                  + I PipeRead 'for i in $HOME/Pictures/*.jpg; \
1931                    do echo AddToMenu JpgMenu "`basename $i`" Exec xv $i; done'
1932
1933              The keyword MissingSubmenuFunction has a similar meaning.  It is
1934              executed whenever you try to pop up a sub menu that does not
1935              exist.  With this function you can define and destroy menus on
1936              the fly.  You can use any command after the keyword, but if the
1937              name of an item (that is a submenu) defined with AddToFunc
1938              follows it, fvwm executes this command:
1939
1940                  Function <function-name> <submenu-name>
1941
1942              i.e. the name is passed to the function as its first argument
1943              and can be referred to with "$0".
1944
1945              The fvwm-menu-directory script mentioned above may be used with
1946              MissingSubmenuFunction to create an up to date recursive
1947              directory listing.
1948
1949              Example:
1950
1951                  # There is another shell script fvwm_make_directory_menu.sh
1952                  # in the utils/ directory of the distribution. To use it,
1953                  # define this function in your configuration file:
1954
1955                  DestroyFunc MakeMissingDirectoryMenu
1956                  AddToFunc MakeMissingDirectoryMenu
1957                  + I PipeRead fvwm_make_directory_menu.sh $0
1958
1959                  DestroyMenu SomeMenu
1960                  AddToMenu SomeMenu
1961                  + MissingSubmenuFunction MakeMissingDirectoryMenu
1962                  + "Root directory" Popup /
1963
1964              This is another implementation of the file browser that uses sub
1965              menus for subdirectories.
1966
1967              Titles can be used within the menu.  If you add the option top
1968              behind the keyword Title, the title is added to the top of the
1969              menu.  If there was a title already, it is overwritten.
1970
1971                  AddToMenu Utilities Tools Title top
1972
1973              All text up to the first Tab in the menu label is aligned to the
1974              left side of the menu, all text right of the first Tab is
1975              aligned to the left in a second column and all text thereafter
1976              is placed right aligned in the third column.  All other Tab s
1977              are replaced by spaces.  Note that you can change this format
1978              with the ItemFormat option of the MenuStyle command.
1979
1980              If the menu-label contains an ampersand ('&'), the next
1981              character is taken as a hot-key for the menu item.  Hot-keys are
1982              underlined in the label.  To get a literal '&', insert "&&".
1983              Pressing the hot-key moves through the list of menu items with
1984              this hot-key or selects an item that is the only one with this
1985              hot-key.
1986
1987              If the menu-label contains a sub-string which is set off by
1988              stars, then the text between the stars is expected to be the
1989              name of an image file to insert in the menu.  To get a literal
1990              '*', insert "**".  For example
1991
1992                  + Calculator*xcalc.xpm* Exec exec xcalc
1993
1994              inserts a menu item labeled "Calculator" with a picture of a
1995              calculator above it.  The following:
1996
1997                  + *xcalc.xpm*           Exec exec xcalc
1998
1999              Omits the "Calculator" label, but leaves the picture.
2000
2001              If the menu-label contains a sub-string which is set off by
2002              percent signs, then the text between the percent signs is
2003              expected to be the name of image file (a so called mini icon to
2004              insert to the left of the menu label.  A second mini icon that
2005              is drawn at the right side of the menu can be given in the same
2006              way.  To get a literal '%', insert "%%".  For example
2007
2008                  + Calculator%xcalc.xpm% Exec exec xcalc
2009
2010              inserts a menu item labeled "Calculator" with a picture of a
2011              calculator to the left.  The following:
2012
2013                  + %xcalc.xpm%           Exec exec xcalc
2014
2015              Omits the "Calculator" label, but leaves the picture.  The
2016              pictures used with this feature should be small (perhaps 16x16).
2017
2018              If the menu-name (not the label) contains a sub-string which is
2019              set off by at signs ('@'), then the text between them is
2020              expected to be the name of an image file to draw along the left
2021              side of the menu (a side pixmap).  You may want to use the
2022              SidePic option of the MenuStyle command instead.  To get a
2023              literal '@', insert "@@".  For example
2024
2025                  AddToMenu StartMenu@linux-menu.xpm@
2026
2027              creates a menu with a picture in its bottom left corner.
2028
2029              If the menu-name also contains a sub-string surrounded by '^'s,
2030              then the text between '^'s is expected to be the name of an X11
2031              color and the column containing the side picture is colored with
2032              that color.  You can set this color for a menu style using the
2033              SideColor option of the MenuStyle command.  To get a literal
2034              '^', insert "^^".  Example:
2035
2036                  AddToMenu StartMenu@linux-menu.xpm@^blue^
2037
2038              creates a menu with a picture in its bottom left corner and
2039              colors with blue the region of the menu containing the picture.
2040
2041              In all the above cases, the name of the resulting menu is name
2042              specified, stripped of the substrings between the various
2043              delimiters.
2044
2045       ChangeMenuStyle menustyle menu ...
2046              Changes the menu style of menu to menustyle.  You may specify
2047              more than one menu in each call of ChangeMenuStyle.
2048
2049       CopyMenuStyle orig-menustyle dest-menustyle
2050              Copy orig-menustyle to dest-menustyle, where orig-menustyle is
2051              an existing menu style.  If the menu style dest_menustyle does
2052              not exist, then it is created.
2053
2054       DestroyMenu [recreate] menu
2055              Deletes a menu, so that subsequent references to it are no
2056              longer valid.  You can use this to change the contents of a menu
2057              during an fvwm session.  The menu can be rebuilt using
2058              AddToMenu.  The optional parameter recreate tells fvwm not to
2059              throw away the menu completely but to throw away all the menu
2060              items (including the title).
2061
2062                  DestroyMenu Utilities
2063
2064       DestroyMenuStyle menustyle
2065              Deletes the menu style named menustyle and changes all menus
2066              using this style to the default style, you cannot destroy the
2067              default menu style.
2068
2069                  DestroyMenuStyle pixmap1
2070
2071       Menu menu-name [position] [double-click-action]
2072              Causes a previously defined menu to be popped up in a sticky
2073              manner.  That is, if the user invokes the menu with a click
2074              action instead of a drag action, the menu stays up.  The command
2075              double-click-action is invoked if the user double-clicks a
2076              button (or hits the key rapidly twice if the menu is bound to a
2077              key) when bringing up the menu.  If the double click action is
2078              not specified, double clicking on the menu does nothing.
2079              However, if the menu begins with a menu item (i.e. not with a
2080              title or a separator) and the double click action is not given,
2081              double clicking invokes the first item of the menu (but only if
2082              the pointer really was over the item).
2083
2084              The pointer is warped to where it was when the menu was invoked
2085              if it was both invoked and closed with a keystroke.
2086
2087              The position arguments allow placement of the menu somewhere on
2088              the screen, for example centered on the visible screen or above
2089              a title bar.  Basically it works like this: you specify a
2090              context-rectangle and an offset to this rectangle by which the
2091              upper left corner of the menu is moved from the upper left
2092              corner of the rectangle.  The position arguments consist of
2093              several parts:
2094
2095              [context-rectangle] x y [special-options]
2096
2097              The context-rectangle can be one of:
2098
2099              Root
2100                  the root window of the current screen.
2101
2102              XineramaRoot
2103                  the root window of the whole Xinerama screen.  Equivalent to
2104                  "root" when Xinerama is not used.
2105
2106              Mouse
2107                  a 1x1 rectangle at the mouse position.
2108
2109              Window
2110                  the frame of the context window.
2111
2112              Interior
2113                  the inside of the context window.
2114
2115              Title
2116                  the title of the context window or icon.
2117
2118              Button<n>
2119                  button #n of the context window.
2120
2121              Icon
2122                  the icon of the context window.
2123
2124              Menu
2125                  the current menu.
2126
2127              Item
2128                  the current menu item.
2129
2130              Context
2131                  the current window, menu or icon.
2132
2133              This
2134                  whatever widget the pointer is on (e.g. a corner of a window
2135                  or the root window).
2136
2137              Rectangle <geometry>
2138                  the rectangle defined by <geometry> in X geometry format.
2139                  Width and height default to 1 if omitted.
2140
2141              If the context-rectangle is omitted or illegal (e.g. "item" on a
2142              window), "Mouse" is the default.  Note that not all of these
2143              make sense under all circumstances (e.g. "Icon" if the pointer
2144              is on a menu).
2145
2146              The offset values x and y specify how far the menu is moved from
2147              it's default position.  By default, the numeric value given is
2148              interpreted as a percentage of the context rectangle's width
2149              (height), but with a trailing 'm' the menu's width (height) is
2150              used instead.  Furthermore a trailing 'p' changes the
2151              interpretation to mean pixels.
2152
2153              Instead of a single value you can use a list of values.  All
2154              additional numbers after the first one are separated from their
2155              predecessor by their sign.  Do not use any other separators.
2156
2157              If x or y are prefixed with "'o<number>" where <number> is an
2158              integer, the menu and the rectangle are moved to overlap at the
2159              specified position before any other offsets are applied.  The
2160              menu and the rectangle are placed so that the pixel at <number>
2161              percent of the rectangle's width/height is right over the pixel
2162              at <number> percent of the menu's width/height.  So "o0" means
2163              that the top/left borders of the menu and the rectangle overlap,
2164              with "o100" it's the bottom/right borders and if you use "o50"
2165              they are centered upon each other (try it and you will see it is
2166              much simpler than this description).  The default is "o0".  The
2167              prefix "o<number>" is an abbreviation for "+<number>-<number>m".
2168
2169              A prefix of 'c' is equivalent to "o50".  Examples:
2170
2171                  # window list in the middle of the screen
2172                  WindowList Root c c
2173
2174                  # menu to the left of a window
2175                  Menu name window -100m c+0
2176
2177                  # popup menu 8 pixels above the mouse pointer
2178                  Popup name mouse c -100m-8p
2179
2180                  # somewhere on the screen
2181                  Menu name rectangle 512x384+1+1 +0 +0
2182
2183                  # centered vertically around a menu item
2184                  AddToMenu foobar-menu
2185                   + "first item" Nop
2186                   + "special item" Popup "another menu" item +100 c
2187                   + "last item" Nop
2188
2189                  # above the first menu item
2190                  AddToMenu foobar-menu
2191                   + "first item" Popup "another menu" item +0 -100m
2192
2193              Note that you can put a sub menu far off the current menu so you
2194              could not reach it with the mouse without leaving the menu.  If
2195              the pointer leaves the current menu in the general direction of
2196              the sub menu the menu stays up.
2197
2198              The special-options:
2199
2200              To create a tear off menu without opening the normal menu, add
2201              the option TearOffImmediately.  Normally the menu opens in
2202              normal state for a split second before being torn off.  As
2203              tearing off places the menu like any other window, a position
2204              should be specified explicitly:
2205
2206                  # Forbid fvwm to place the menu window
2207                  Style <name of menu> UsePPosition
2208                  # Menu at top left corner of screen
2209                  Menu Root 0p 0p TearOffImmediately
2210
2211              The Animated and Mwm or Win menu styles may move a menu
2212              somewhere else on the screen.  If you do not want this you can
2213              add Fixed as an option.  This might happen for example if you
2214              want the menu always in the top right corner of the screen.
2215
2216              Where do you want a menu to appear when you click on it's menu
2217              item? The default is to place the title under the cursor, but if
2218              you want it where the position arguments say, use the
2219              SelectInPlace option.  If you want the pointer on the title of
2220              the menu, use SelectWarp too.  Note that these options apply
2221              only if the PopupAsRootMenu MenuStyle option is used.
2222
2223              The pointer is warped to the title of a sub menu whenever the
2224              pointer would be on an item when the sub menu is popped up (fvwm
2225              menu style) or never warped to the title at all (Mwm or Win menu
2226              styles).  You can force (forbid) warping whenever the sub menu
2227              is opened with the WarpTitle (NoWarp) option.
2228
2229              Note that the special-options do work with a normal menu that
2230              has no other position arguments.
2231
2232       MenuStyle stylename [options]
2233              Sets a new menu style or changes a previously defined style.
2234              The stylename is the style name; if it contains spaces or tabs
2235              it has to be quoted.  The name "*" is reserved for the default
2236              menu style.  The default menu style is used for every menu-like
2237              object (e.g. the window created by the WindowList command) that
2238              had not be assigned a style using the ChangeMenuStyle.  See also
2239              DestroyMenuStyle.  When using monochrome color options are
2240              ignored.
2241
2242              options is a comma separated list containing some of the
2243              keywords Fvwm / Mwm / Win, BorderWidth, Foreground, Background,
2244              Greyed, HilightBack / !HilightBack, HilightTitleBack, ActiveFore
2245              / !ActiveFore, MenuColorset, ActiveColorset, GreyedColorset,
2246              TitleColorset, Hilight3DThick / Hilight3DThin / Hilight3DOff,
2247              Hilight3DThickness, Animation / !Animation, Font, TitleFont,
2248              MenuFace, PopupDelay, PopupOffset, TitleWarp / !TitleWarp,
2249              TitleUnderlines0 / TitleUnderlines1 / TitleUnderlines2,
2250              SeparatorsLong / SeparatorsShort, TrianglesSolid /
2251              TrianglesRelief, PopupImmediately / PopupDelayed,
2252              PopdownImmediately / PopdownDelayed, PopupActiveArea,
2253              DoubleClickTime, SidePic, SideColor, PopupAsRootMenu /
2254              PopupAsSubmenu / PopupIgnore / PopupClose, RemoveSubmenus /
2255              HoldSubmenus, SubmenusRight / SubmenusLeft, SelectOnRelease,
2256              ItemFormat, VerticalItemSpacing, VerticalTitleSpacing,
2257              AutomaticHotkeys / !AutomaticHotkeys, MouseWheel, ScrollOffPage
2258              / !ScrollOffPage, TrianglesUseFore / !TrianglesUseFore.
2259
2260              In the above list some options are listed as option pairs or
2261              triples with a '/' in between.  These options exclude each
2262              other.  All paired options can be negated to have the effect of
2263              the counterpart option by prefixing ! to the option.
2264
2265              Some options are now negated by prefixing ! to the option.  This
2266              is the preferred form for all such options.  The other negative
2267              forms are now deprecated and will be removed in the future.
2268
2269              This is a list of MenuStyle deprecated negative options:
2270              ActiveForeOff, AnimationOff, AutomaticHotkeysOff,
2271              HilightBackOff, TitleWarpOff
2272
2273              Fvwm, Mwm, Win reset all options to the style with the same name
2274              in former versions of fvwm.  The default for new menu styles is
2275              Fvwm style.  These options override all others except
2276              Foreground, Background, Greyed, HilightBack, ActiveFore and
2277              PopupDelay, so they should be used only as the first option
2278              specified for a menu style or to reset the style to defined
2279              behavior.  The same effect can be created by setting all the
2280              other options one by one.
2281
2282              Mwm and Win style menus popup sub menus automatically.  Win
2283              menus indicate the current menu item by changing the background
2284              to dark.  Fvwm sub menus overlap the parent menu, Mwm and Win
2285              style menus never overlap the parent menu.
2286
2287              Fvwm style is equivalent to !HilightBack, Hilight3DThin,
2288              !ActiveFore, !Animation, Font, MenuFace, PopupOffset 0 67,
2289              TitleWarp, TitleUnderlines1, SeparatorsShort, TrianglesRelief,
2290              PopupDelayed, PopdownDelayed, PopupDelay 150, PopdownDelay 150,
2291              PopupAsSubmenu, HoldSubmenus, SubmenusRight, BorderWidth 2,
2292              !AutomaticHotkeys, PopupActiveArea 75.
2293
2294              Mwm style is equivalent to !HilightBack, Hilight3DThick,
2295              !ActiveFore, !Animation, Font, MenuFace, PopupOffset -3 100,
2296              !TitleWarp, TitleUnderlines2, SeparatorsLong, TrianglesRelief,
2297              PopupImmediately, PopdownDelayed, PopdownDelay 150,
2298              PopupAsSubmenu, HoldSubmenus, SubmenusRight, BorderWidth 2,
2299              !AutomaticHotkeys, PopupActiveArea 75.
2300
2301              Win style is equivalent to HilightBack, Hilight3DOff,
2302              ActiveFore, !Animation, Font, MenuFace, PopupOffset -5 100,
2303              !TitleWarp, TitleUnderlines1, SeparatorsShort, TrianglesSolid,
2304              PopupImmediately, PopdownDelayed, PopdownDelay 150,
2305              PopupAsSubmenu, RemoveSubmenus, SubmenusRight, BorderWidth 2,
2306              !AutomaticHotkeys, PopupActiveArea 75.
2307
2308              BorderWidth takes the thickness of the border around the menus
2309              in pixels.  It may be zero to 50 pixels.  The default is 2.
2310              Using an illegal value reverts the border width to the default.
2311
2312              Foreground and Background may have a color name as an argument.
2313              This color is used for menu text or the menu's background.  You
2314              can omit the color name to reset these colors to the built-in
2315              default.
2316
2317              Greyed may have a color name as an argument.  This color is the
2318              one used to draw a menu-selection which is prohibited (or not
2319              recommended) by the Mwm hints which an application has
2320              specified.  If the color is omitted the color of greyed menu
2321              entries is based on the background color of the menu.
2322
2323              HilightBack and !HilightBack switch hilighting the background of
2324              the selected menu item on and off.  A specific background color
2325              may be used by providing the color name as an argument to
2326              HilightBack.  If you use this option without an argument the
2327              color is based on the menu's background color.  The
2328              ActiveColorset option overrides the specified color.  If the
2329              colorset has a non solid background it is used for the
2330              hilighting.
2331
2332              HilightTitleBack switches hilighting the background of menu
2333              titles on.  If a TitleColorset was used, the background colour
2334              is taken from there.  Otherwise the color is based on the menu's
2335              background color.  If the colorset has a non solid background it
2336              is used for the hilighting.
2337
2338              ActiveFore and !ActiveFore switch hilighting the foreground of
2339              the selected menu item on and off.  A specific foreground color
2340              may be used by providing the color name as an argument to
2341              ActiveFore.  Omitting the color turns hilighting on when an
2342              ActiveColorset is used.  ActiveFore turns off hilighting the
2343              foreground completely.  The ActiveColorset option overrides the
2344              specified color.
2345
2346              MenuColorset controls if a colorset is used instead of the
2347              Foreground, Background and MenuFace menu styles.  If the
2348              MenuColorset keyword is followed by a number equal to zero or
2349              greater, this number is taken as the number of the colorset to
2350              use.  If the number is omitted, the colorset is switched off and
2351              the regular menu styles are used again.  The foreground and
2352              background colors of the menu items are replaced by the colors
2353              from the colorset.  If the colorset has a pixmap defined, this
2354              pixmap is used as the background of the menu.  Note that the
2355              MenuFace menu style has been optimized for memory consumption
2356              and may use less memory than the background from a colorset.
2357              The shape mask from the colorset is used to shape the menu.
2358              Please refer to the Colorsets section for details about
2359              colorsets.
2360
2361              ActiveColorset works exactly like MenuColorset, but the
2362              foreground from the colorset replaces the color given with the
2363              ActiveFore menu style and the colorset's background color
2364              replaces the color given with the HilightBack command (to turn
2365              on background hilighting you have to use the HilightBack menu
2366              style too).  If specified, the hilight and shadow colors from
2367              the colorset are used too.  The pixmap and shape mask from the
2368              colorset are not used.  Hilighting the background or foreground
2369              can be turned off individually with the !ActiveFore or
2370              !HilightBack menu styles.
2371
2372              GreyedColorset works exactly like MenuColorset, but the
2373              foreground from the colorset replaces the color given with the
2374              Greyed menu style.  No other parts of the colorset are used.
2375
2376              TitleColorset works exactly like MenuColorset, but is used only
2377              for menu titles.
2378
2379              Hilight3DThick, Hilight3DThin and Hilight3DOff determine if the
2380              selected menu item is hilighted with a 3D relief.  Thick reliefs
2381              are two pixels wide, thin reliefs are one pixel wide.
2382
2383              Hilight3DThickness takes one numeric argument that may be
2384              between -50 and +50 pixels.  With negative values the menu item
2385              gets a pressed in look.  The above three commands are equivalent
2386              to a thickness of 2, 1 and 0.
2387
2388              Animation and !Animation turn menu animation on or off.  When
2389              animation is on, sub menus that do not fit on the screen cause
2390              the parent menu to be shifted to the left so the sub menu can be
2391              seen.
2392
2393              Font and TitleFont take a font name as an argument.  If a font
2394              by this name exists it is used for the text of all menu items.
2395              If it does not exist or if the name is left blank the built-in
2396              default is used.  If a TitleFont is given, it is used for all
2397              menu titles instead of the normal font.
2398
2399              MenuFace enforces a fancy background upon the menus.  You can
2400              use the same options for MenuFace as for the ButtonStyle.  See
2401              description of ButtonStyle command and the Color Gradients
2402              sections for more information.  If you use MenuFace without
2403              arguments the style is reverted back to normal.
2404
2405              Some examples of MenuFaces are:
2406
2407                  MenuFace DGradient 128 2 lightgrey 50 blue 50 white
2408                  MenuFace TiledPixmap texture10.xpm
2409                  MenuFace HGradient 128 2 Red 40 Maroon 60 White
2410                  MenuFace Solid Maroon
2411
2412              Note: The gradient styles H, V, B and D are optimized for high
2413              speed and low memory consumption in menus.  This is not the case
2414              for all the other gradient styles.  They may be slow and consume
2415              huge amounts of memory, so if you encounter performance problems
2416              with them you may be better off by not using them.  To improve
2417              performance you can try one or all of the following:
2418
2419              Turn hilighting of the active menu item other than foreground
2420              color off:
2421
2422                  MenuStyle <style> Hilight3DOff, !HilightBack
2423                  MenuStyle <style> ActiveFore <preferred color>
2424
2425              Make sure sub menus do not overlap the parent menu.  This can
2426              prevent menus being redrawn every time a sub menu pops up or
2427              down.
2428
2429                  MenuStyle <style> PopupOffset 1 100
2430
2431              Run your X server with backing storage.  If your X Server is
2432              started with the -bs option, turn it off.  If not try the -wm
2433              and +bs options:
2434
2435                  startx -- -wm +bs
2436
2437              You may have to adapt this example to your system (e.g. if you
2438              use xinit to start X).
2439
2440              PopupDelay requires one numeric argument.  This value is the
2441              delay in milliseconds before a sub menu is popped up when the
2442              pointer moves over a menu item that has a sub menu.  If the
2443              value is zero no automatic pop up is done.  If the argument is
2444              omitted the built-in default is used.  Note that the popup delay
2445              has no effect if the PopupImmediately option is used since sub
2446              menus pop up immediately then.
2447
2448              PopupImmediately makes menu items with sub menus pop up it up as
2449              soon as the pointer enters the item.  The PopupDelay option is
2450              ignored then.  If PopupDelayed is used fvwm looks at the
2451              PopupDelay option if or when this automatic popup happens.
2452
2453              PopdownDelay works exactly like PopupDelay but determines the
2454              timeout of the PopupDelayed style.
2455
2456              PopdownImmediately makes sub menus vanish as soon as the pointer
2457              leaves the sub menu and the correspondent item in the parent
2458              menu.  With the opposite option PopdownDelayed the sub menu only
2459              pops down after the time specified with the PopdownDelay option.
2460              This comes handy when the pointer often strays off the menu item
2461              when trying to move into the sub menu.  Whenever there is a
2462              conflict between the PopupImmediately, PopupDelayed, PopupDelay
2463              styles and the PopdownImmediately, PopdownDelayed, PopdownDelay
2464              styles, the Popup...  styles win when using mouse navigation and
2465              the Popdown...  styles win when navigating with the keyboard.
2466
2467              PopupOffset requires two integer arguments.  Both values affect
2468              where sub menus are placed relative to the parent menu.  If both
2469              values are zero, the left edge of the sub menu overlaps the left
2470              edge of the parent menu.  If the first value is non-zero the sub
2471              menu is shifted that many pixels to the right (or left if
2472              negative).  If the second value is non-zero the menu is moved by
2473              that many percent of the parent menu's width to the right or
2474              left.
2475
2476              PopupActiveArea requires an integer value between 51 and 100.
2477              Normally, when the pointer is over a menu item with a sub menu
2478              and the pointer enters the area that starts at 75% of the menu
2479              width, the sub menu is shown immediately.  This percentage can
2480              be changed with PopupActiveArea.  Setting this value to 100
2481              disables this kind of automatic popups altogether.  The default
2482              value is restored if no or an illegal value is given.
2483
2484              TitleWarp and !TitleWarp affect if the pointer warps to the menu
2485              title when a sub menu is opened or not.  Note that regardless of
2486              this setting the pointer is not warped if the menu does not pop
2487              up under the pointer.
2488
2489              TitleUnderlines0, TitleUnderlines1 and TitleUnderlines2 specify
2490              how many lines are drawn below a menu title.
2491
2492              SeparatorsLong and SeparatorsShort set the length of menu
2493              separators.  Long separators run from the left edge all the way
2494              to the right edge.  Short separators leave a few pixels to the
2495              edges of the menu.
2496
2497              TrianglesSolid and TrianglesRelief affect how the small
2498              triangles for sub menus is drawn.  Solid triangles are filled
2499              with a color while relief triangles are hollow.
2500
2501              DoubleClickTime requires one numeric argument.  This value is
2502              the time in milliseconds between two mouse clicks in a menu to
2503              be considered as a double click.  The default is 450
2504              milliseconds.  If the argument is omitted the double click time
2505              is reset to this default.
2506
2507              SidePic takes the name of an image file as an argument.  The
2508              picture is drawn along the left side of the menu.  The SidePic
2509              option can be overridden by a menu specific side pixmap (see
2510              AddToMenu).  If the file name is omitted an existing side pixmap
2511              is removed from the menu style.
2512
2513              SideColor takes the name of an X11 color as an argument.  This
2514              color is used to color the column containing the side picture
2515              (see above).  The SideColor option can be overridden by a menu
2516              specific side color (see AddToMenu).  If the color name is
2517              omitted the side color option is switched off.
2518
2519              PopupAsRootMenu, PopupAsSubmenu, PopupIgnore and PopupClose
2520              change the behavior when you click on a menu item that opens a
2521              sub menu.  With PopupAsRootMenu the original menu is closed
2522              before the sub menu appears, with PopupAsSubmenu it is not, so
2523              you can navigate back into the parent menu.  Furthermore, with
2524              PopupAsSubmenu the sub menu is held open (posted) regardless of
2525              where you move the mouse.  Depending on your menu style this may
2526              simplify navigating through the menu.  Any keystroke while a
2527              menu is posted reverts the menu back to the normal behavior.
2528              With PopupClose the menu is closed when a sub menu item is
2529              activated, and the menu stays open if PopupIgnore is used (even
2530              if the menu was invoked with the Popup command).  PopupAsSubmenu
2531              is the default.
2532
2533              RemoveSubmenus instructs fvwm to remove sub menu when you move
2534              back into the parent menu.  With HoldSubmenus the sub menu
2535              remains visible.  You probably want to use HoldSubmenus if you
2536              are using the PopupDelayed style.  RemoveSubmenus affects menu
2537              navigation with the keyboard.
2538
2539              SelectOnRelease takes an optional key name as an argument.  If
2540              the given key is released in a menu using this style, the
2541              current menu item is selected.  This is intended for Alt-Tab
2542              WindowList navigation.  The key name is a standard X11 key name
2543              as defined in /usr/include/X11/keysymdef.h, (without the XK_
2544              prefix), or the keysym database /usr/X11R6/lib/X11/XKeysymDB.
2545              To disable this behavior, omit the key name.
2546
2547              Note: Some X servers do not support KeyRelease events.
2548              SelectOnRelease does not work on such a machine.
2549
2550              ItemFormat takes a special string as its argument that
2551              determines the layout of the menu items.  Think of the format
2552              string as if it were a menu item.  All you have to do is tell
2553              fvwm where to place the different parts of the menu item (i.e.
2554              the labels, the triangle denoting a sub menu, the mini icons and
2555              the side pic) in the blank area.  The string consists of spaces,
2556              Tab characters and formatting directives beginning with '%'.
2557              Any illegal characters and formatting directives are silently
2558              ignored:
2559
2560              %l, %c and %r
2561                  Insert the next item label.  Up to three labels can be used.
2562                  The item column is left-aligned (%l), centered (%c) or
2563                  right-aligned (%r).
2564
2565              %i
2566                  Inserts the mini icon.
2567
2568              %> and %<
2569                  Insert the sub menu triangle pointing either to the right
2570                  (%>) or to the left (%<).
2571
2572              %|
2573                  The first %| denotes the beginning of the area that is
2574                  highlighted either with a background color or a relief (or
2575                  both).  The second %| marks the end of this area.  %| can be
2576                  used up to twice in the string.  If you do not add one or
2577                  both of them, fvwm sets the margins to the margins of the
2578                  whole item (not counting the side picture).
2579
2580              %s
2581                  Places the side picture either at the beginning or the end
2582                  of the menu.  This directive may be used only once and only
2583                  as the first or last in the format string.  If the %s is not
2584                  at the beginning of the string, menus are not drawn
2585                  properly.
2586
2587              Space, Tab, %Space and %Tab
2588                  Add gap of one space, or a tab, using the width of the menu
2589                  font.  When using a tab, the size of the gap can be one to 8
2590                  spaces since the tab position is a multiple of 8 from the
2591                  edge of the menu.  The whole string must be quoted if spaces
2592                  or tabs are used.
2593
2594              %p
2595                  Like Space and Tab %p inserts an empty area into the item,
2596                  but with better control of its size (see below).
2597
2598              You can define an additional space before and after each of the
2599              objects like this:
2600
2601                  %left.rightp
2602
2603              This means: if the object is defined in the menu (e.g. if it is
2604              %s and you use a side picture, or it is %l for the third column
2605              and there are items defined that actually have a third column),
2606              then add left pixels before the object and right pixels after
2607              it.  You may leave out the left or the .right parts if you do
2608              not need them.  All values up to the screen width are allowed.
2609              Even negative values can be used with care.  The p may be
2610              replaced with any other formatting directives described above.
2611
2612              Note: Only items defined in the format string are visible in the
2613              menus.  So if you do not put a %s in there you do not see a side
2614              picture, even if one is specified.
2615
2616              Note: The SubmenusLeft style changes the default ItemFormat
2617              string, but if it was set manually it is not modified.
2618
2619              Note: If any unformatted title of the menu is wider than the
2620              widest menu item, the spaces between the different parts of the
2621              menu items are enlarged to match the width of the title.
2622              Leading left aligned objects in the format string (%l, %i, %<,
2623              first %|) stick to the left edge of the menu and trailing right
2624              aligned objects (%r, %i, %>, second %|) stick to the right edge.
2625              The gaps between the remaining items are enlarged equally.
2626
2627              Examples:
2628
2629                  MenuStyle * ItemFormat "%.4s%.1|%.5i%.5l%.5l%.5r%.5i%2.3>%1|"
2630
2631              Is the default string used by fvwm: (side picture + 4 pixels
2632              gap) (beginning of the hilighted area + 1 pixel gap) (mini icon
2633              + 5p) (first column left aligned + 5p) (second column left
2634              aligned + 5p) (third column right aligned + 5p) (second mini
2635              icon + 5p) (2p + sub menu triangle + 3p) (1p + end of hilighted
2636              area).
2637
2638                  MenuStyle * ItemFormat "%.1|%3.2<%5i%5l%5l%5r%5i%1|%4s"
2639
2640              Is used by fvwm with the SubmenusLeft option below.
2641
2642              VerticalItemSpacing and VerticalTitleSpacing control the
2643              vertical spacing of menu items and titles like ItemFormat
2644              controls the horizontal spacing.  Both take two numeric
2645              arguments that may range from -100 to +100.  The first is the
2646              gap in pixels above a normal menu item (or a menu title), the
2647              second is the gap in pixels below it.  Negative numbers do not
2648              make much sense and may screw up the menu completely.  If no
2649              arguments are given or the given arguments are invalid, the
2650              built-in defaults are used: one pixel above the item or title
2651              and two below.
2652
2653              SubmenusLeft mirrors the menu layout and behavior.  Sub menus
2654              pop up to the left, the sub menu triangle is drawn left and the
2655              mini icon and side picture are drawn at the right side of the
2656              menu.  The default is SubmenusRight.  The position hints of a
2657              menu are also affected by this setting, i.e. position hints
2658              using item or menu as context rectangle and position hints using
2659              m offsets.
2660
2661              AutomaticHotkeys and !AutomaticHotkeys control the menu's
2662              ability to automatically provide hot-keys on the first character
2663              of each menu item's label.  This behavior is always overridden
2664              if an explicit hot-key is assigned in the AddToMenu command.
2665
2666              MouseWheel controls the ability to scroll the menu using a mouse
2667              wheel.  It takes one argument, that can be one of
2668              ScrollsPointer, ScrollsMenu, ScrollsMenuBackwards or
2669              ActivatesItem.  ScrollsPointer makes the mouse wheel scroll the
2670              pointer over a menu.  This is the default.  ScrollsMenu and
2671              ScrollsMenuBackwards scroll the menu beneath the pointer.
2672              ActivatesItem disables scrolling by mouse wheel and makes the
2673              use of a mouse wheel act as if the menu was clicked.  If no
2674              argument is supplied the default setting is restored.
2675
2676              ScrollOffPage allows a menu to be scrolled out of the visible
2677              area if MouseWheel is set to ScrollsMenu or
2678              ScrollsMenuBackwards.  This is the default.  The opposite,
2679              !ScrollOffPage disables this behaviour.
2680
2681              TrianglesUseFore draws sub menu triangles with the foreground
2682              color of the menu colorset (normally drawn with the hilight
2683              color).  !TrianglesUseFore disables this behaviour.
2684
2685              Examples:
2686
2687                  MenuStyle * Mwm
2688                  MenuStyle * Foreground Black, Background gray40
2689                  MenuStyle * Greyed gray70, ActiveFore White
2690                  MenuStyle * !HilightBack, Hilight3DOff
2691                  MenuStyle * Font lucidasanstypewriter-14
2692                  MenuStyle * MenuFace DGradient 64 darkgray MidnightBlue
2693
2694                  MenuStyle red Mwm
2695                  MenuStyle red Foreground Yellow
2696                  MenuStyle red Background Maroon
2697                  MenuStyle red Greyed Red, ActiveFore Red
2698                  MenuStyle red !HilightBack, Hilight3DOff
2699                  MenuStyle red Font lucidasanstypewriter-12
2700                  MenuStyle red MenuFace DGradient 64 Red Black
2701
2702              Note that all style options could be placed on a single line for
2703              each style name.
2704
2705       MenuStyle forecolor backcolor shadecolor font style [anim]
2706              This is the old syntax of the MenuStyle command.  It is obsolete
2707              and may be removed in the future.  Please use the new syntax as
2708              described above.
2709
2710              Sets the menu style.  When using monochrome the colors are
2711              ignored.  The shadecolor is the one used to draw a
2712              menu-selection which is prohibited (or not recommended) by the
2713              Mwm hints which an application has specified.  The style option
2714              is either Fvwm, Mwm or Win, which changes the appearance and
2715              operation of the menus.
2716
2717              Mwm and Win style menus popup sub menus automatically.  Win
2718              menus indicate the current menu item by changing the background
2719              to black.  Fvwm sub menus overlap the parent menu, Mwm and Win
2720              style menus never overlap the parent menu.
2721
2722              When the anim option is given, sub menus that do not fit on the
2723              screen cause the parent menu to be shifted to the left so the
2724              sub menu can be seen.  See also SetAnimation command.
2725
2726       Popup PopupName [position] [default-action]
2727              This command has two purposes: to bind a menu to a key or mouse
2728              button, and to bind a sub menu into a menu.  The formats for the
2729              two purposes differ slightly.  The position arguments are the
2730              same as for Menu.  The command default-action is invoked if the
2731              user clicks a button to invoke the menu and releases it
2732              immediately again (or hits the key rapidly twice if the menu is
2733              bound to a key).  If the default action is not specified, double
2734              clicking on the menu does nothing.  However, if the menu begins
2735              with a menu item (i.e. not with a title or a separator) and the
2736              default action is not given, double clicking invokes the first
2737              item of the menu (but only if the pointer really was over the
2738              item).
2739
2740              To bind a previously defined pop-up menu to a key or mouse
2741              button:
2742
2743              The following example binds mouse buttons 2 and 3 to a pop-up
2744              called "Window Ops".  The menu pops up if the buttons 2 or 3 are
2745              pressed in the window frame, side-bar, or title-bar, with no
2746              modifiers (none of shift, control, or meta).
2747
2748                  Mouse 2 FST N Popup "Window Ops"
2749                  Mouse 3 FST N Popup "Window Ops"
2750
2751              Pop-ups can be bound to keys through the use of the Key command.
2752              Pop-ups can be operated without using the mouse by binding to
2753              keys and operating via the up arrow, down arrow, and enter keys.
2754
2755              To bind a previously defined pop-up menu to another menu, for
2756              use as a sub menu:
2757
2758              The following example defines a sub menu "Quit-Verify" and binds
2759              it into a main menu, called "RootMenu":
2760
2761                  AddToMenu Quit-Verify
2762                   + "Really Quit Fvwm?" Title
2763                   + "Yes, Really Quit"  Quit
2764                   + "Restart Fvwm"      Restart
2765                   + "Restart Fvwm 1.xx" Restart fvwm1 -s
2766                   + ""                  Nop
2767                   + "No, Don't Quit"    Nop
2768
2769                  AddToMenu RootMenu "Root Menu" Title
2770                   + "Open XTerm Window" Popup NewWindowMenu
2771                   + "Login as Root"     Exec exec xterm -T Root -n Root -e su -
2772                   + "Login as Anyone"   Popup AnyoneMenu
2773                   + "Remote Hosts"      Popup HostMenu
2774                   + ""                  Nop
2775                   + "X utilities"       Popup Xutils
2776                   + ""                  Nop
2777                   + "Fvwm Modules"      Popup Module-Popup
2778                   + "Fvwm Window Ops"   Popup Window-Ops
2779                   + ""                  Nop
2780                   + "Previous Focus"    Prev (AcceptsFocus) Focus
2781                   + "Next Focus"        Next (AcceptsFocus) Focus
2782                   + ""                  Nop
2783                   + "Refresh screen"    Refresh
2784                   + ""                  Nop
2785                   + "Reset X defaults"  Exec xrdb -load \
2786                                         $HOME/.Xdefaults
2787                   + ""                  Nop
2788                   + ""                  Nop
2789                   + Quit                Popup Quit-Verify
2790
2791              Popup differs from Menu in that pop-ups do not stay up if the
2792              user simply clicks.  These are popup-menus, which are a little
2793              hard on the wrist.  Menu menus stay up on a click action.  See
2794              the Menu command for an explanation of the interactive behavior
2795              of menus.  A menu can be open up to ten times at once, so a menu
2796              may even use itself or any of its predecessors as a sub menu.
2797
2798       TearMenuOff
2799              When assigned to a menu item, it inserts a tear off bar into the
2800              menu (a horizontal broken line).  Activating that item tears off
2801              the menu.  If the menu item has a label, it is shown instead of
2802              the broken line.  If used outside menus, this command does
2803              nothing.  Examples:
2804
2805                  AddToMenu WindowMenu
2806                  + I "" TearMenuOff
2807
2808                  AddToMenu RootMenu
2809                  + I "click here to tear me off" TearMenuOff
2810
2811       Title
2812              Does nothing This is used to insert a title line in a popup or
2813              menu.
2814
2815   Miscellaneous Commands
2816       BugOpts [option [bool]], ...
2817              This command controls several workarounds for bugs in third
2818              party programs.  The individual options are separated by commas.
2819              The optional argument bool is a boolean argument and controls if
2820              the bug workaround is enabled or not.  It can either be "True"
2821              or "False" to turn the option on or off, or "toggle" to switch
2822              is back and forth.  If bool is omitted, the default setting is
2823              restored.
2824
2825              FlickeringMoveWorkaround disables ConfigureNotify events that
2826              are usually sent to an application while it is moved.  If some
2827              windows flicker annoyingly while being moved, this option may
2828              help you.  Note that if this problem occurs it is not an fvwm
2829              bug, it is a problem of the application.
2830
2831              MixedVisualWorkaround makes fvwm install the root colormap
2832              before it does some operations using the root window visuals.
2833              This is only useful when the -visual option is used to start
2834              fvwm and then only with some configurations of some servers
2835              (e.g. Exceed 6.0 with an 8 bit PseudoColor root and fvwm using a
2836              24 bit TrueColor visual).
2837
2838              The ModalityIsEvil option controls whether Motif applications
2839              have the ability to have modal dialogs (dialogs that force you
2840              to close them first before you can do anything else).  The
2841              default is to not allow applications to have modal dialogs.  Use
2842              this option with care.  Once this option is turned on, you have
2843              to restart fvwm to turn it off.
2844
2845              RaiseOverNativeWindows makes fvwm try to raise the windows it
2846              manages over native windows of the X server's host system.  This
2847              is needed for some X servers running under Windows, Windows NT
2848              or Mac OS X.  Fvwm tries to detect if it is running under such
2849              an X server and initializes the flag accordingly.
2850
2851              RaiseOverUnmanaged makes fvwm try to raise the windows it
2852              manages over override_redirect windows.  This is used to cope
2853              with ill-mannered applications that use long-lived windows of
2854              this sort, contrary to ICCCM conventions.  It is useful with the
2855              Unmanaged style option too.
2856
2857              FlickeringQtDialogsWorkaround suppresses flickering of the
2858              focused window in some modules when using KDE or QT applications
2859              with application modal dialog windows.  By default this option
2860              is turned on.  This option may be visually disturbing for other
2861              applications using windows not managed by fvwm.  Since these
2862              applications are rare it is most likely safe to leave this
2863              option at its default.
2864
2865              EWMHIconicStateWorkaround is needed by EWMH compliant pagers or
2866              taskbars which represent windows which are on a different
2867              desktops as iconified.  These pagers and taskbars use a version
2868              of the EWMH specification before version 1.2 (the current KDE 2
2869              & 3 versions).  These pagers and taskbars use the IconicState
2870              WM_STATE state to determine if an application is iconified.
2871              This state, according to the ICCCM, does not imply that a window
2872              is iconified (in the usual sense).  Turning on this option
2873              forces fvwm to establish an equivalence between the IconicState
2874              WM_STATE state and the iconified window.  This violates ICCCM
2875              compliance but should not cause big problems.  By default this
2876              option is off.
2877
2878              With the DisplayNewWindowNames enabled, fvwm prints the name,
2879              icon name (if available), resource and class of new windows to
2880              the console.  This can help in finding the correct strings to
2881              use in the Style command.
2882
2883              When the ExplainWindowPlacement option is enabled, fvwm prints a
2884              message to the console whenever a new window is placed or one of
2885              the commands PlaceAgain, Recapture or RecaptureWindow is used.
2886              The message explains on which desk, page, Xinerama screen and
2887              position it was placed and why.  This option can be used to
2888              figure out why a specific window does not appear where you think
2889              it should.
2890
2891              The DebugCRMotionMethod option enables some debugging code in
2892              the ConfigureRequest handling routines of fvwm.  It is not
2893              helpful for the user, but if you report a bug to the fvwm team
2894              we may ask you to enable this option.
2895
2896       BusyCursor [Option bool], ...
2897              This command controls the cursor during the execution of certain
2898              commands.  Option can be DynamicMenu, ModuleSynchronous, Read,
2899              Wait or *.  An option must be followed by a boolean argument
2900              bool.  You can use commas to separate individual options.  If
2901              you set an option to "True", then when the corresponding command
2902              is run, fvwm displays the cursor of the WAIT context of the
2903              CursorStyle command.  "False" forces to not display the cursor.
2904              The default is:
2905
2906                  BusyCursor DynamicMenu False, ModuleSynchronous False, \
2907                    Read False, Wait False
2908
2909              The * option refers to all available options.
2910
2911              The Read option controls the PipeRead command.
2912
2913              The DynamicMenu option affects the DynamicPopupAction and
2914              MissingSubmenuFunction options of the AddToMenu command.  If
2915              this option is set to "False", then the busy cursor is not
2916              displayed during a dynamic menu command even if this command is
2917              a Read or PipeRead command and the Read option is set to "True".
2918
2919              The ModuleSynchronous option affects the ModuleSynchronous
2920              command.  If this option is set to "False", then the busy cursor
2921              is not displayed while fvwm waits for a module started by
2922              ModuleSynchronous to complete its startup.
2923
2924              The Wait option affects only the root cursor.  During a wait
2925              pause the root cursor is replaced by the busy cursor and fvwm is
2926              still fully functional (you can escape from the pause, see the
2927              EscapeFunc command).  If you want to use this option and if you
2928              do not use the default root cursor, you must set your root
2929              cursor with the CursorStyle command.
2930
2931       ClickTime [delay]
2932              Specifies the maximum delay in milliseconds between a button
2933              press and a button release for the Function command to consider
2934              the action a mouse click.  The default delay is 150
2935              milliseconds.  Omitting the delay value resets the ClickTime to
2936              the default.
2937
2938       ColorLimit limit
2939              This command is obsolete.  See the --color-limit option to fvwm.
2940
2941       ColormapFocus FollowsMouse | FollowsFocus
2942              By default, fvwm installs the colormap of the window that the
2943              cursor is in.  If you use
2944
2945                  ColormapFocus FollowsFocus
2946
2947              then the installed colormap is the one for the window that
2948              currently has the keyboard focus.
2949
2950       CursorStyle context [num | name | None | Tiny | file [x y] [fg bg]]
2951              Defines a new cursor for the specified context.  Note that this
2952              command can not control the shapes an applications uses, for
2953              example, to indicate that it is busy.  The various contexts are:
2954
2955              POSITION (top_left_corner)
2956                  used when initially placing windows
2957
2958              TITLE (top_left_arrow)
2959                  used in a window title-bar
2960
2961              DEFAULT (top_left_arrow)
2962                  used in windows that do not set their cursor
2963
2964              SYS (hand2)
2965                  used in one of the title-bar buttons
2966
2967              MOVE (fleur)
2968                  used when moving or resizing windows
2969
2970              RESIZE (sizing)
2971                  used when moving or resizing windows
2972
2973              WAIT (watch)
2974                  used during certain fvwm commands (see BusyCursor for
2975                  details)
2976
2977              MENU (top_left_arrow)
2978                  used in menus
2979
2980              SELECT (crosshair)
2981                  used when the user is required to select a window
2982
2983              DESTROY (pirate)
2984                  used for Destroy, Close, and Delete commands
2985
2986              TOP (top_side)
2987                  used in the top side-bar of a window
2988
2989              RIGHT (right_side)
2990                  used in the right side-bar of a window
2991
2992              BOTTOM (bottom_side)
2993                  used in the bottom side-bar of a window
2994
2995              LEFT (left_side)
2996                  used in the left side-bar of a window
2997
2998              TOP_LEFT (top_left_corner)
2999                  used in the top left corner of a window
3000
3001              TOP_RIGHT (top_right_corner)
3002                  used in the top right corner of a window
3003
3004              BOTTOM_LEFT (bottom_left_corner)
3005                  used in the bottom left corner of a window
3006
3007              BOTTOM_RIGHT (bottom_right_corner)
3008                  used in the bottom right corner of a window
3009
3010              TOP_EDGE (top_side)
3011                  used at the top edge of the screen
3012
3013              RIGHT_EDGE (right_side)
3014                  used at the right edge of the screen
3015
3016              BOTTOM_EDGE (bottom_side)
3017                  used at the bottom edge of the screen
3018
3019              LEFT_EDGE (left_side)
3020                  used at the left edge of the screen
3021
3022              ROOT (left_ptr)
3023                  used as the root cursor
3024
3025              STROKE (plus)
3026                  used during a StrokeFunc command.
3027
3028              The defaults are shown in parentheses above.  If you ever want
3029              to restore the default cursor for a specific context you can
3030              omit the second argument.
3031
3032              The second argument is either the numeric value of the cursor as
3033              defined in the include file X11/cursorfont.h or its name
3034              (without the XC_ prefix).  Alternatively, the xpm file name may
3035              be specified.  The name can also be None (no cursor) or Tiny (a
3036              single pixel as the cursor).
3037
3038                  # make the kill cursor be XC_gumby (both forms work):
3039                  CursorStyle DESTROY 56
3040                  CursorStyle DESTROY gumby
3041
3042              Alternatively, the cursor can be loaded from an (XPM, PNG or
3043              SVG) image file.  If fvwm is compiled with Xcursor support, full
3044              ARGB is used, and (possibly animated) cursor files made with the
3045              xcursorgen program can be loaded.  Otherwise the cursor is
3046              converted to monochrome.
3047
3048              The optional x and y arguments (following a file argument)
3049              specifies the hot-spot coordinate with 0 0 as the top left
3050              corner of the image.  Coordinates within the image boundary are
3051              valid and overrides any hot-spot defined in the (XPM/Xcursor)
3052              image file.  An invalid or undefined hot-spot is placed in the
3053              center of the image.
3054
3055                  CursorStyle ROOT cursor_image.png 0 0
3056
3057              The optional fg and bg arguments specify the foreground and
3058              background colors for the cursor, defaulting to black and white
3059              (reverse video compared to the actual bitmap).  These colors are
3060              only used with monochrome cursors.  Otherwise they are silently
3061              ignored.
3062
3063                  CursorStyle ROOT nice_arrow.xpm yellow black
3064
3065       DefaultColors [foreground] [background]
3066              DefaultColors sets the default foreground and background colors
3067              used in miscellaneous windows created by fvwm, for example in
3068              the geometry feedback windows during a move or resize operation.
3069              If you do not want to change one color or the other, use - as
3070              its color name.  To revert to the built-in default colors omit
3071              both color names.  Note that the default colors are not used in
3072              menus, window titles or icon titles.
3073
3074       DefaultColorset [num]
3075              DefaultColorset sets the colorset used by the windows controlled
3076              by the DefaultColors command.  To revert back to the
3077              DefaultColors colors use
3078
3079                  DefaultColorset -1
3080
3081              or any variant of the DefaultColors command.
3082
3083       DefaultFont [fontname]
3084              DefaultFont sets the default font to font fontname.  The default
3085              font is used by fvwm whenever no other font has been specified.
3086              To reset the default font to the built-in default, omit the
3087              argument.  The default font is used for menus, window titles,
3088              icon titles as well as the geometry feedback windows during a
3089              move or resize operation.  To override the default font in a
3090              specific context, use the Style * Font, Style * IconFont, or
3091              MenuStyle commands.
3092
3093       DefaultIcon filename
3094              Sets the default icon which is used if a window has neither an
3095              client-supplied icon nor an icon supplied via the Icon option of
3096              the Style command.
3097
3098       DefaultLayers bottom put top
3099              Changes the layers that are used for the StaysOnBottom,
3100              StaysPut, StaysOnTop Style options.  Initially, the layers 2, 4
3101              and 6 are used.
3102
3103       Deschedule [command_id]
3104              Removes all commands that were scheduled with the id command_id
3105              with the Schedule command from the list of commands to be
3106              executed unless they were already executed.  If the command_id
3107              is omitted, the value of the variable $[schedule.last] is used
3108              as the id.
3109
3110       Emulate Fvwm | Mwm | Win
3111              This command is a catch all for how miscellaneous things are
3112              done by fvwm.  Right now this command affects where the
3113              move/resize feedback window appears and how window placement is
3114              aborted.  To have more Mwm- or Win-like behavior you can call
3115              Emulate with Mwm or Win as its argument.  With Mwm resize and
3116              move feedback windows are in the center of the screen, instead
3117              of the upper left corner.  This also affects how manual
3118              placement is aborted.  See the ManualPlacement description.
3119
3120       EscapeFunc
3121              By default the key sequence Ctrl-Alt-Escape allows for escaping
3122              from a Wait pause and from a locked ModuleSynchronous command.
3123              The EscapeFunc command used with the Key command allows for
3124              configuring this key sequence.  An example:
3125
3126                  Key Escape A MC -
3127                  Key Escape A  S EscapeFunc
3128
3129              replaces the Ctrl-Alt-Escape key sequence with Shift-Escape for
3130              aborting a Wait pause and ModuleSynchronous command.  EscapeFunc
3131              used outside the Key command does nothing.
3132
3133       FakeClick [command value] ...
3134              This command is mainly intended for debugging fvwm and no
3135              guarantees are made that it works for you.  FakeClick can
3136              simulate mouse button press and release events and pass them to
3137              fvwm or the applications.  The parameters are a list of commands
3138              which consist of pairs of command tokens and integer values, The
3139              press and release commands are followed by the appropriate mouse
3140              button number and generate a button press or release event on
3141              the window below the pointer.  The wait commands pauses fvwm for
3142              the given number of milliseconds.  The modifiers command
3143              simulates pressing or releasing modifier keys.  The values 1 to
3144              5 are mapped to Mod1 to Mod5 while 6, 7 and 8 are mapped to
3145              Shift , Lock and Control The modifier is set for any further
3146              button events.  To release a modifier key, use the corresponding
3147              negative number.  The depth command determines to which window
3148              the button events are sent.  With a depth of 1, all events go to
3149              the root window, regardless of the pointer's position.  With 2,
3150              the event is passed to the top level window under the pointer
3151              which is usually the frame window.  With 3, events go to the
3152              client window.  Higher numbers go to successive sub windows.
3153              Zero (0) goes to the smallest window that contains the pointer.
3154              Note that events propagate upward.
3155
3156                  FakeClick depth 2 press 1 wait 250 release 1
3157
3158              This simulates a click with button 1 in the parent window (depth
3159              2) with a delay of 250 milliseconds between the press and the
3160              release.  Note: all command names can be abbreviated with their
3161              first letter.
3162
3163       FakeKeypress [command value] ...
3164              This command is mainly intended for debugging fvwm and no
3165              guarantees are made that it works for you.  FakeKeypress can
3166              simulate key press and release events and pass them to fvwm or
3167              applications.  The parameters are a list of commands which
3168              consist of pairs of command tokens and values.  The press and
3169              release commands are followed by a key name.  The key name is a
3170              standard X11 key name as defined in
3171              /usr/include/X11/keysymdef.h, (without the XK_ prefix), or the
3172              keysym database /usr/X11R6/lib/X11/XKeysymDB.  The wait,
3173              modifiers and depth commands are the same as those used by
3174              FakeClick.
3175
3176              Save all GVim sessions with: "Esc:w\n"
3177
3178                  All (gvim) FakeKeypress press Escape \
3179                                          press colon \
3180                                          press w \
3181                                          press Return
3182
3183              Save & exit all GVim sessions with: "Esc:wq\n"
3184
3185                  All (gvim) FakeKeypress press Escape \
3186                                          press colon \
3187                                          press w \
3188                                          press q \
3189                                          press Return
3190
3191              Send A to a specific window:
3192
3193                  WindowId 0x3800002 FakeKeypress press A
3194
3195              Note: all command names can be abbreviated with their first
3196              letter.
3197
3198       GlobalOpts [options]
3199              This command is obsolete.  Please replace the global options in
3200              your configuration file according to the following table:
3201
3202                  GlobalOpts WindowShadeShrinks
3203                    -->
3204                  Style * WindowShadeShrinks
3205
3206                  GlobalOpts WindowShadeScrolls
3207                    -->
3208                  Style * WindowShadeScrolls
3209
3210                  GlobalOpts SmartPlacementIsReallySmart
3211                    -->
3212                  Style * MinOverlapPlacement
3213
3214                  GlobalOpts SmartPlacementIsNormal
3215                    -->
3216                  Style * TileCascadePlacement
3217
3218                  GlobalOpts ClickToFocusDoesntPassClick
3219                    -->
3220                  Style * ClickToFocusPassesClickOff
3221
3222                  GlobalOpts ClickToFocusPassesClick
3223                    -->
3224                  Style * ClickToFocusPassesClick
3225
3226                  GlobalOpts ClickToFocusDoesntRaise
3227                    -->
3228                  Style * ClickToFocusRaisesOff
3229
3230                  GlobalOpts ClickToFocusRaises
3231                    -->
3232                  Style * ClickToFocusRaises
3233
3234                  GlobalOpts MouseFocusClickDoesntRaise
3235                    -->
3236                  Style * MouseFocusClickRaisesOff
3237
3238                  GlobalOpts MouseFocusClickRaises
3239                    -->
3240                  Style * MouseFocusClickRaises
3241
3242                  GlobalOpts NoStipledTitles
3243                    -->
3244                  Style * !StippledTitle
3245
3246                  GlobalOpts StipledTitles
3247                    -->
3248                  Style * StippledTitle
3249
3250                  GlobalOpts CaptureHonorsStartsOnPage
3251                    -->
3252                  Style * CaptureHonorsStartsOnPage
3253
3254                  GlobalOpts CaptureIgnoresStartsOnPage
3255                    -->
3256                  Style * CaptureIgnoresStartsOnPage
3257
3258                  GlobalOpts RecaptureHonorsStartsOnPage
3259                    -->
3260                  Style * RecaptureHonorsStartsOnPage
3261
3262                  GlobalOpts RecaptureIgnoresStartsOnPage
3263                    -->
3264                  Style * RecaptureIgnoresStartsOnPage
3265
3266                  GlobalOpts ActivePlacementHonorsStartsOnPage
3267                    -->
3268                  Style * ManualPlacementHonorsStartsOnPage
3269
3270                  GlobalOpts ActivePlacementIgnoresStartsOnPage
3271                    -->
3272                  Style * ManualPlacementIgnoresStartsOnPage
3273
3274                  GlobalOpts RaiseOverNativeWindows
3275                    -->
3276                  BugOpts RaiseOverNativeWindows on
3277
3278                  GlobalOpts IgnoreNativeWindows
3279                    -->
3280                  BugOpts RaiseOverNativeWindows off
3281
3282
3283       HilightColor textcolor backgroundcolor
3284              This command is obsoleted by the Style options HilightFore and
3285              HilightBack.  Please use
3286
3287                  Style * HilightFore textcolor, HilightBack backgroundcolor
3288
3289              instead.
3290
3291       HilightColorset [num]
3292              This command is obsoleted by the Style option HilightColorset.
3293              Please use
3294
3295                  Style * HilightColorset num
3296
3297              instead.
3298
3299       IconFont [fontname]
3300              This command is obsoleted by the Style option IconFont.  Please
3301              use
3302
3303                  Style * IconFont fontname
3304
3305              instead.
3306
3307       IconPath path
3308              This command is obsolete.  Please use ImagePath instead.
3309
3310       ImagePath path
3311              Specifies a colon separated list of directories in which to
3312              search for images (both monochrome and pixmap).  To find an
3313              image given by a relative pathname, fvwm looks into each
3314              directory listed in turn, and uses the first file found.
3315
3316              If a directory is given in the form "/some/dir;.ext", this means
3317              all images in this directory have the extension ".ext" that
3318              should be forced.  The original image name (that may contain
3319              another extension or no extension at all) is not probed, instead
3320              ".ext" is added or replaces the original extension.  This is
3321              useful, for example, if a user has some image directories with
3322              ".xpm" images and other image directories with the same names,
3323              but ".png" images.
3324
3325              The path may contain environment variables such as $HOME (or
3326              ${HOME}).  Further, a '+' in the path is expanded to the
3327              previous value of the path, allowing appending or prepending to
3328              the path easily.
3329
3330              For example:
3331
3332                  ImagePath $HOME/icons:+:/usr/include/X11/bitmaps
3333
3334              Note: if the FvwmM4 module is used to parse your config files,
3335              then m4 may want to mangle the word "include" which frequently
3336              shows up in the ImagePath command.  To fix this one may add
3337
3338                  undefine(`include')
3339
3340              prior to the ImagePath command, or better: use the -m4-prefix
3341              option to force all m4 directives to have a prefix of "m4_" (see
3342              the FvwmM4 man page).
3343
3344       LocalePath path
3345              Specifies a colon separated list of "locale path" in which to
3346              search for string translations.  A locale path is constituted by
3347              a directory path and a text domain separated by a semicolon
3348              (';').  As an example the default locale path is:
3349
3350                  /install_prefix/share/locale;fvwm
3351
3352              where install_prefix is the fvwm installation directory.  With
3353              such a locale path translations are searched for in
3354
3355                  /install_prefix/share/locale/lang/LC_MESSAGES/fvwm.mo
3356
3357              where lang depends on the locale.  If no directory is given the
3358              default directory path is assumed.  If no text domain is given,
3359              fvwm is assumed.  Without argument the default locale path is
3360              restored.
3361
3362              As for the ImagePath command, path may contain environment
3363              variables and a '+' to append or prepend the locale path easily.
3364
3365              For example, the fvwm-themes package uses
3366
3367                  LocalePath ";fvwm-themes:+"
3368
3369              to add locale catalogs.
3370
3371              The default fvwm catalog contains a few strings used by the fvwm
3372              executable itself (Desk and Geometry) and strings used in some
3373              default configuration files and FvwmForm configuration.  You can
3374              take a look at the po/ subdirectory of the fvwm source to get
3375              the list of the strings with a possible translation in various
3376              languages.  At present, very few languages are supported.
3377
3378              The main use of locale catalogs is via the "$[gt.string]"
3379              parameter:
3380
3381                  DestroyMenu MenuFvwmWindowOps
3382                  AddToMenu   MenuFvwmWindowOps "$[gt.Window Ops]" Title
3383                  + "$[gt.&Move]"              Move
3384                  + "$[gt.&Resize]"            Resize
3385                  + "$[gt.R&aise]"             Raise
3386                  + "$[gt.&Lower]"             Lower
3387                  + "$[gt.(De)&Iconify]"       Iconify
3388                  + "$[gt.(Un)&Stick]"         Stick
3389                  + "$[gt.(Un)Ma&ximize]"      Maximize
3390                  + "" Nop
3391                  + "$[gt.&Close]"             Close
3392                  + "$[gt.&Destroy]"           Destroy
3393
3394              gives a menu in the locale languages if translations are
3395              available.
3396
3397              Note that the FvwmTaskBar module has its own catalog and that
3398              the FvwmScript module has a set of special instructions for
3399              string translation.  It is out of the scope of this discussion
3400              to explain how to build locale catalogs.  Please refer to the
3401              GNU gettext documentation.
3402
3403       PixmapPath path
3404              This command is obsolete.  Please use ImagePath instead.
3405
3406       PrintInfo subject [verbose]
3407              Print information on subject on stderr.  An optional integer
3408              argument verbose defines the level of information which is
3409              given.  The current valid subjects are:
3410
3411              Colors which prints information about the colors used by fvwm.
3412              This useful on screens which can only display 256 (or less)
3413              colors at once.  If verbose is one or greater the palette used
3414              by fvwm is printed.  If you have a limited color palette, and
3415              you run out of colors, this command might be helpful.
3416
3417              ImageCache which prints information about the images loaded by
3418              fvwm.  If verbose is one or greater all images in the cache will
3419              be listed together with their respective reuse.
3420
3421              Locale which prints information on your locale and the fonts
3422              that fvwm used.  verbose can be 1 or 2.
3423
3424              nls which prints information on the locale catalogs that fvwm
3425              used
3426
3427              style which prints information on fvwm styles.  verbose can be
3428              1.
3429
3430       Repeat
3431              When the Repeat command is invoked, the last command that was
3432              executed by fvwm is executed again.  This happens regardless of
3433              whether it was triggered by user interaction, a module or by an
3434              X event.  Commands that are executed from a function defined
3435              with the Function command, from the Read or PipeRead commands or
3436              by a menu are not repeated.  Instead, the function, menu or the
3437              Read or PipeRead command is executed again.
3438
3439       Schedule [Periodic] delay_ms [command_id] command
3440              The command is executed after about delay_ms milliseconds.  This
3441              may be useful in some tricky setups.  The command is executed in
3442              the same context window as the Schedule command.  An optional
3443              integer argument command_id may be given in decimal, hexadecimal
3444              or octal format.  This id can be used with the Deschedule
3445              command to remove the scheduled command before it is executed.
3446              If no id is given, fvwm uses negative id numbers, starting with
3447              -1 and decreasing by one with each use of the Schedule command.
3448              Note that the Schedule command and its arguments undergo the
3449              usual command line expansion, and, when command is finally
3450              executed, it is expanded again.  It may therefore be necessary
3451              to quote the parts of the command that must not be expanded
3452              twice.
3453
3454              Note: A window's id as it is returned with $[w.id] can be used
3455              as the command_id.  Example:
3456
3457                  Current Schedule 1000 $[w.id] WindowShade
3458
3459              The Schedule command also supports the optional keyword Periodic
3460              which indicates that the command should be executed every
3461              delay_ms.  Example:
3462
3463                  Schedule Periodic 10000 PipeRead '[ -N "$MAIL" ] && echo \
3464                       Echo You have mail'
3465
3466              Use the Deschedule command to stop periodic commands.
3467
3468       State state [bool]
3469              Sets, clears or toggles one of the 32 user defined states which
3470              are associated with each window.  The state is a number ranging
3471              from 0 to 31.  The states have no meaning in fvwm, but they can
3472              be checked in conditional commands like Next with the State
3473              condition.  The optional argument bool is a boolean argument.
3474              "True" sets the given state, while "False" clears it.  Using
3475              "toggle" switches to the opposite state.  If the bool argument
3476              is not given, the state is toggled.
3477
3478       WindowFont [fontname]
3479              This command is obsoleted by the Style option Font.  Please use
3480
3481                  Style * Font fontname
3482
3483              instead.
3484
3485       WindowList [(conditions)] [position] [options] [double-click-action]
3486              Generates a pop-up menu (and pops it up) in which the title and
3487              geometry of each of the windows currently on the desktop are
3488              shown.
3489
3490              The format of the geometry part is: desk(layer): x-geometry
3491              sticky, where desk and layer are the corresponding numbers and
3492              sticky is empty or a capital S.  The geometry of iconified
3493              windows is shown in parentheses.  Selecting an item from the
3494              window list pop-up menu causes the interpreted function
3495              "WindowListFunc" to be run with the window id of that window
3496              passed in as $0.  The default "WindowListFunc" looks like this:
3497
3498                  AddToFunc WindowListFunc
3499                  + I Iconify off
3500                  + I FlipFocus
3501                  + I Raise
3502                  + I WarpToWindow 5p 5p
3503
3504              You can destroy the built-in "WindowListFunc" and create your
3505              own if these defaults do not suit you.
3506
3507              The window list menu uses the "WindowList" menu style if it is
3508              defined (see MenuStyle command).  Otherwise the default menu
3509              style is used.  To switch back to the default menu style, issue
3510              the command
3511
3512                  DestroyMenuStyle WindowList
3513
3514              Example:
3515
3516                  MenuStyle WindowList SelectOnRelease Meta_L
3517
3518              The conditions can be used to exclude certain windows from the
3519              window list.  Please refer to the Current command for details.
3520              Only windows that match the given conditions are displayed in
3521              the window list.  The options below work vice versa: windows
3522              that would otherwise not be included in the window list can be
3523              selected with them.  The conditions always override the options.
3524
3525              The position arguments are the same as for Menu.  The command
3526              double-click-action is invoked if the user double-clicks (or
3527              hits the key rapidly twice if the menu is bound to a key) when
3528              bringing the window list.  The double-click-action must be
3529              quoted if it consists of more than one word.
3530
3531              The double-click-action is useful to define a default window if
3532              you have bound the window list to a key (or button) like this:
3533
3534                  # Here we call an existing function, but
3535                  # it may be different.  See the default
3536                  # WindowListFunc definition earlier in this
3537                  # man page.
3538                  AddToFunc SwitchToWindow
3539                  + I WindowListFunc
3540
3541                  Key Tab A M WindowList "Prev SwitchToWindow"
3542
3543              Hitting Alt-Tab once it brings up the window list, if you hit it
3544              twice the focus is flipped between the current and the last
3545              focused window.  With the proper SelectOnRelease menu style (see
3546              example above) a window is selected as soon as you release the
3547              Alt key.
3548
3549              The options passed to WindowList are separated by commas and can
3550              be Geometry / NoGeometry / NoGeometryWithInfo, NoDeskNum,
3551              NoLayer, NoNumInDeskTitle, NoCurrentDeskTitle, MaxLabelWidth
3552              width, TitleForAllDesks, Function funcname, Desk desknum,
3553              CurrentDesk, NoIcons / Icons / OnlyIcons, NoNormal / Normal /
3554              OnlyNormal, NoSticky / Sticky / OnlySticky, NoStickyAcrossPages
3555              / StickyAcrossPages / OnlyStickyAcrossPages, NoStickyAcrossDesks
3556              / StickyAcrossDesks / OnlyStickyAcrossDesks, NoOnTop / OnTop /
3557              OnlyOnTop, NoOnBottom / OnBottom / OnlyOnBottom, Layer m [n],
3558              UseSkipList / OnlySkipList, NoDeskSort, ReverseOrder,
3559              CurrentAtEnd, IconifiedAtEnd, UseIconName, Alphabetic /
3560              NotAlphabetic, SortByResource, SortByClass, NoHotkeys,
3561              SelectOnRelease.
3562
3563              (Note - normal means not iconic, sticky, or on top)
3564
3565              With the SortByResource option windows are alphabetically sorted
3566              first by resource class, then by resource name and then by
3567              window name (or icon name if UseIconName is specified).
3568              ReverseOrder also works in the expected manner.
3569
3570              With the SortByClass option windows are sorted just like with
3571              SortByResource, but the resource name is not taken into account,
3572              only the resource class.
3573
3574              The SelectOnRelease option works exactly like the MenuStyle
3575              option with the same name, but overrides the option given in a
3576              menu style.  By default, this option is set to the left Alt key.
3577              To switch it off, use SelectOnRelease without a key name.
3578
3579              If you pass in a function via Function funcname, it is called
3580              within a window context of the selected window:
3581
3582                  AddToFunc IFunc I Iconify toggle
3583                  WindowList Function IFunc, NoSticky, CurrentDesk, NoIcons
3584
3585              If you use the Layer m [n] option, only windows in layers
3586              between m and n are displayed.  n defaults to m.  With the
3587              ReverseOrder option the order of the windows in the list is
3588              reversed.
3589
3590              With the CurrentAtEnd option the currently focused window (if
3591              any) is shown at the bottom of the list.  This is mostly
3592              intended for simulating the Alt-Tab behavior in another GUI.
3593
3594              IconifiedAtEnd makes iconified windows be moved to the end of
3595              the list.  This is also from another GUI.
3596
3597              The NoGeometry option causes fvwm to not display the geometries
3598              as well as the separators which indicate the different desktops.
3599              NoGeometryWithInfo removes the geometries, but keep the desktop
3600              information and indicates iconic windows.  NoDeskNum causes fvwm
3601              to not display the desktop number in the geometry or before the
3602              window title with the NoGeometryWithInfo option.
3603              NoNumInDeskTitle is only useful if a desktop name is defined
3604              with the DesktopName command.  It causes fvwm to not display the
3605              desktop number before the desktop name.  By default, the
3606              WindowList menu have a title which indicates the current desk or
3607              the selected desktop if the Desk condition is used.  The
3608              NoCurrentDeskTitle option removes this title.  TitleForAllDesks
3609              causes fvwm to add a menu title with the desk name and/or number
3610              before each group of windows on the same desk.  With NoLayer,
3611              the layer of the window is not diplayed.  The options ShowPage,
3612              ShowPageX and ShowPageY enable displaying the page of the window
3613              rounded multiples of the display size.  With ShowScreen, the
3614              window's Xinerama screen number is displayed.
3615
3616              The MaxLabelWidth option takes the number of characters to print
3617              as its argument.  No more than that many characters of the
3618              window name are visible.
3619
3620              If you wanted to use the WindowList as an icon manager, you
3621              could invoke the following:
3622
3623                  WindowList OnlyIcons, Sticky, OnTop, Geometry
3624
3625              (Note - the Only options essentially wipe out all other ones...
3626              but the OnlyListSkip option which just causes WindowList to only
3627              consider the windows with WindowListSkip style.)
3628
3629       XSync
3630              When XSync is called, the X function with the same name is used
3631              to send all pending X requests to the server.  This command is
3632              intended for debugging only.
3633
3634       XSynchronize [bool]
3635              The XSynchronize command controls whether X requests are sent to
3636              the X server immediately or not.  Normally, requests are sent in
3637              larger batches to save unnecessary communication.  To send
3638              requests immediately, use "True" as the argument, to disable
3639              this use "False" or to toggle between both methods use "Toggle"
3640              or omit the bool argument.  Fvwm defaults to synchronized
3641              requests when started with the --debug option.  This command is
3642              intended for debugging only.
3643
3644       +
3645              Used to continue adding to the last specified decor, function or
3646              menu.  See the discussion for AddToDecor, AddToFunc, and
3647              AddToMenu.
3648
3649   Window Movement and Placement
3650       AnimatedMove x y [Warp]
3651              Move a window in an animated fashion.  Similar to Move command.
3652              The options are the same, except they are required, since it
3653              doesn't make sense to have a user move the window interactively
3654              and animatedly.  If the optional argument Warp is specified the
3655              pointer is warped with the window.
3656
3657       HideGeometryWindow [Never | Move | Resize]
3658              Hides the position or size window that is usually shown when a
3659              window is moved or resized interactively.  To switch it off only
3660              for move or resize operations the optional parameters Move and
3661              Resize can be used respectively.  To switch both on again use
3662              the Never option.
3663
3664       Layer [arg1 arg2] | [default]
3665              Puts the current window in a new layer.  If arg1 is non zero
3666              then the next layer is the current layer number plus arg1.  If
3667              arg1 is zero then the new layer is arg2.
3668
3669              As a special case, default puts the window in its default layer,
3670              i.e. the layer it was initially in.  The same happens if no or
3671              invalid arguments are specified.
3672
3673       Lower
3674              Allows the user to lower a window.  Note that this lowers a
3675              window only in its layer.  To bring a window to the absolute
3676              bottom, use
3677
3678                  AddToFunc lower-to-bottom
3679                   + I Layer 0 0
3680                   + I Lower
3681
3682       Move [[screen screen] [w | m]x[p | w] ... [w | m]y[p | w] ... [Warp]] |
3683       [pointer]
3684              Allows the user to move a window.  If called from somewhere in a
3685              window or its border, then that window is moved.  If called from
3686              the root window then the user is allowed to select the target
3687              window.
3688
3689              If the literal option screen followed by a screen argument is
3690              specified, the coordinates are interpreted as relative to the
3691              given screen.  The width and height of the screen are used for
3692              the calculations instead of the display dimensions.  The screen
3693              as interpreted as in the MoveToScreen command.  If the optional
3694              argument Warp is specified the pointer is warped with the
3695              window.  If the single argument pointer is given, the top left
3696              corner of the window is moved to the pointer position before
3697              starting the operation; this is mainly intended for internal use
3698              by modules like FvwmPager.
3699
3700              The operation can be aborted with Escape or any mouse button not
3701              set to place the window.  By default mouse button 2 is set to
3702              cancel the move operation.  To change this you may use the Mouse
3703              command with special context 'P' for Placement.
3704
3705              The window condition PlacedByButton can be used to check if a
3706              specific button was pressed to place the window (see Current
3707              command).
3708
3709              If the optional arguments x and y are provided, then the window
3710              is moved immediately without user interaction.  Each argument
3711              can specify an absolute or relative position from either the
3712              left/top or right/bottom of the screen.  By default, the numeric
3713              value given is interpreted as a percentage of the screen
3714              width/height, but a trailing 'p' changes the interpretation to
3715              mean pixels, while a trailing 'w' means precent of the window
3716              width/height.  To move the window relative to its current
3717              position, add the 'w' (for "window") prefix before the x and/or
3718              y value.  To move the window to a position relative to the
3719              current location of the pointer, add the 'm' (for "mouse")
3720              prefix.  To leave either coordinate unchanged, "keep" can be
3721              specified in place of x or y.
3722
3723
3724              For advanced uses, the arguments x and y can be used multiple
3725              times, but without the prefix 'm' or 'w'.  (See complex examples
3726              below).
3727
3728              Simple Examples:
3729
3730                  # Interactive move
3731                  Mouse 1 T A Move
3732                  # Move window to top left is at (10%,10%)
3733                  Mouse 2 T A Move 10 10
3734                  # Move top left to (10pixels,10pixels)
3735                  Mouse 3 T A Move 10p 10p
3736
3737              More complex examples (these can be bound as actions to
3738              keystrokes, etc.; only the command is shown, though):
3739
3740                  # Move window so bottom right is at bottom
3741                  # right of screen
3742                  Move -0 -0
3743
3744                  # Move window so top left corner is 10 pixels
3745                  # off the top left screen edge
3746                  Move +-10 +-10
3747
3748                  # Move window 5% to the right, and to the
3749                  # middle vertically
3750                  Move w+5 50
3751
3752                  # Move window up 10 pixels, and so left edge
3753                  # is at x=40 pixels
3754                  Move 40p w-10p
3755
3756                  # Move window to the mouse pointer location
3757                  Move m+0 m+0
3758
3759                  # Move window to center of screen (50% of screen
3760                  # poition minus 50% of widow size).
3761                  Move 50-50w 50-50w
3762
3763              See also the AnimatedMove command.
3764
3765       MoveToDesk [prev | arg1 [arg2] [min max]]
3766              Moves the selected window to another desktop.  The arguments are
3767              the same as for the GotoDesk command.  Without any arguments,
3768              the window is moved to the current desk.  MoveToDesk is a
3769              replacement for the obsolete WindowsDesk command, which can no
3770              longer be used.
3771
3772       MoveThreshold [pixels]
3773              When the user presses a mouse button upon an object fvwm waits
3774              to see if the action is a click or a drag.  If the mouse moves
3775              by more than pixels pixels it is assumed to be a drag.
3776
3777              Previous versions of fvwm hardwired pixels to 3, which is now
3778              the default value.  If pixels is negative or omitted the default
3779              value (which might be increased when 16000x9000 pixel displays
3780              become affordable) is restored.
3781
3782       MoveToPage [options] [x[p | w] y[p | w]] | [prev]
3783              Moves the selected window to another page (x,y).  The upper left
3784              page is (0,0), the upper right is (M,0), where M is one less
3785              than the current number of horizontal pages specified in the
3786              DesktopSize command.  Similarly the lower left page is (0,N),
3787              and the lower right page is (M,N).  Negative page numbers refer
3788              to pages from the rightmost/lowest page.  If x and y are not
3789              given, the window is moved to the current page (a window that
3790              has the focus but is off-screen can be retrieved with this).
3791              Moving windows to a page relative to the current page can be
3792              achieved by adding a trailing 'p' after any or both numerical
3793              arguments.  To move the window relative to its current location,
3794              add a trailing 'w'.  To move a window to the previous page use
3795              prev as the single argument.
3796
3797              Windows are usually not moved beyond desk boundaries.
3798
3799              Possible options are wrapx and wrapy to wrap around the x or y
3800              coordinate when the window is moved beyond the border of the
3801              desktop.  For example, with wrapx, when the window moves past
3802              the right edge of the desktop, it reappears on the left edge.
3803              The options nodesklimitx and nodesklimity allow moving windows
3804              beyond the desk boundaries in x and y direction (disabling the
3805              wrapx and wrapy options).
3806
3807              Examples:
3808
3809                  # Move window to page (2,3)
3810                  MoveToPage 2 3
3811
3812                  # Move window to lowest and rightmost page
3813                  MoveToPage -1 -1
3814
3815                  # Move window to last page visited
3816                  MoveToPage prev
3817
3818                  # Move window two pages to the right and one
3819                  # page up, wrap at desk boundaries
3820                  MoveToPage wrapx wrapy +2p -1p
3821
3822       MoveToScreen [screen]
3823              Moves the selected window to another Xinerama screen.  The
3824              screen argument can be 'p' for the primary screen, 'c' for the
3825              current screen (containing the mouse pointer), 'w' for the
3826              screen containing the center of +the the context window, 'g' for
3827              the global screen or the screen number itself (counting from
3828              zero).
3829
3830       OpaqueMoveSize [percentage]
3831              Tells fvwm the maximum size window with which opaque window
3832              movement should be used.  The percentage is percent of the total
3833              screen area (may be greater than 100).  With
3834
3835                  OpaqueMoveSize 0
3836
3837              all windows are moved using the traditional rubber-band outline.
3838              With
3839
3840                  OpaqueMoveSize unlimited
3841
3842              or if a negative percentage is given all windows are moved as
3843              solid windows.  The default is
3844
3845                  OpaqueMoveSize 5
3846
3847              which allows small windows to be moved in an opaque manner but
3848              large windows are moved as rubber-bands.  If percentage is
3849              omitted or invalid the default value is set.  To resize windows
3850              in an opaque manner you can use the ResizeOpaque style.  See the
3851              Style command.
3852
3853       PlaceAgain [Anim] [Icon]
3854              Causes the current window's position to be re-computed using the
3855              initial window placement logic.  The window is moved to where it
3856              would have been if it were a new window that had just appeared.
3857              Most useful with Smart or Clever (ReallySmart) placement.  With
3858              the optional argument Anim an animated move is used to place the
3859              window in its new position.  With the additional option Icon,
3860              the icon is placed again instead.
3861
3862       Raise
3863              Allows the user to raise a window.  Note that this raises a
3864              window only in its layer.  To bring a window to the absolute
3865              top, use
3866
3867                  AddToFunc raise-to-top
3868                   + I Layer 0 ontop
3869                   + I Raise
3870
3871              where ontop is the highest layer used in your setup.
3872
3873       RaiseLower
3874              Alternately raises and lowers a window.  The window is raised if
3875              it is obscured by any window (except for its own transients when
3876              RaiseTransient style is used; see the Style command) otherwise
3877              it is lowered.
3878
3879       Resize [[frame] [direction dir [warptoborder]] [fixeddirection]
3880       [w]width[p | c] [w]height[p | c]]
3881              Allows for resizing a window.  If called from somewhere in a
3882              window or its border, then that window is resized.  If called
3883              from the root window then the user is allowed to select the
3884              target window.
3885
3886              The operation can be aborted with Escape or by pressing any
3887              mouse button (except button 1 which confirms it).
3888
3889              If the optional arguments width and height are provided, then
3890              the window is resized so that its dimensions are width by
3891              height.  The units of width and height are percent-of-screen,
3892              unless a letter 'p' is appended to one or both coordinates, in
3893              which case the location is specified in pixels.  With a 'c'
3894              suffix the unit defined by the client application (hence the c)
3895              is used.  So you can say
3896
3897                  Resize 80c 24c
3898
3899              to make a terminal window just big enough for 80x24 characters.
3900
3901              If the width or height is prefixed with the letter 'w' the size
3902              is not taken as an absolute value but added to the current size
3903              of the window.  Example:
3904
3905                  # Enlarge window by one line
3906                  Resize keep w+1c
3907
3908              Both, width and height can be negative.  In this case the new
3909              size is the screen size minus the given value.  If either value
3910              is "keep", the corresponding dimension of the window is left
3911              untouched.  The new size is the size of the client window, thus
3912
3913                  Resize 100 100
3914
3915              may make the window bigger than the screen.  To base the new
3916              size on the size of the whole fvwm window, add the frame option
3917              after the command.  The options fixeddirection, direction and
3918              warptoborder are only used in interactive move operations.  With
3919              fixeddirection the same border is moved even if the pointer
3920              moves past the opposite border.  The direction option must be
3921              followed by a direction name such as "NorthWest", "South" or
3922              "East" (you get the idea).  Resizing is started immediately,
3923              even if the pointer is not on a border.  The warptoborder option
3924              changes the behaviour of the direction option so that the
3925              pointer is automatically warped to the border in the given
3926              direction before starting to resize.  Also, if resizing is
3927              started by clicking on the window border, the pointer is warped
3928              to the outer edge of the border.
3929
3930                  AddToFunc ResizeSE I Resize Direction SE
3931                  Mouse 3 A M ResizeSE
3932
3933       Resize [bottomright | br x y]
3934              An alternate syntax is used if the keyword bottomright or in
3935              short br follows the command name.  In this case, the arguments
3936              x and y specify the desired position of the bottom right corner
3937              of the window.  They are interpreted exactly like the x and y
3938              arguments of the Move command.  Actually, any of the options
3939              accepted by the Move command can be used.
3940
3941       ResizeMaximize [resize-arguments]
3942              Combines the effects of Resize and Maximize in a single command.
3943              When used on a maximized window, the window is resized and is
3944              still in the maximized state afterwards.  When used on an
3945              unmaximized window, the window is resized and put into the
3946              maximized state afterwards.  This is useful if the user wants to
3947              resize the window temporarily and then return to the original
3948              geometry.  The resize-arguments are the same as for the Resize
3949              command.
3950
3951       ResizeMove resize-arguments move-arguments
3952              This command does the same as the Resize and Move commands, but
3953              in a single call which is less visually disturbing.  The
3954              resize-arguments are exactly the same arguments as for the
3955              Resize command and the move-arguments are exactly the same
3956              arguments as for the Move command except the pointer option
3957              which is not supported by the ResizeMove command.
3958
3959              Examples:
3960
3961                  # Move window to top left corner and cover
3962                  # most of the screen
3963                  ResizeMove -10p -20p 0 0
3964
3965                  # Grow the focused window towards the top of screen
3966                  Current Resize keep w+$[w.y]p keep 0
3967
3968              Note: Fvwm may not be able to parse the command properly if the
3969              option bottomright of the Resize command is used.
3970
3971       ResizeMoveMaximize resize-arguments move-arguments
3972              Combines the effects of ResizeMove and Maximize in a single
3973              command.  When used on a maximized window, the window is resized
3974              and moved and is still in the maximized state afterwards.  When
3975              used on an unmaximized window, the window is resized and put
3976              into the maximized state afterwards.  This is useful if the user
3977              wants to resize the window temporarily and then return to the
3978              original geometry.  The resize-arguments and move-arguments are
3979              the same as for the ResizeMove command.
3980
3981       RestackTransients
3982              This command regroups the transients of a window close to it in
3983              the stacking order as if the window had just been lowered and
3984              then raised.  The position of the window itself is not altered.
3985              Only windows that use either the RaiseTransient or
3986              LowerTransient style are affected at all.  When
3987              RestackTransients is used on a transient window with the
3988              StackTransientParent style set, it is redirected to the parent
3989              window.
3990
3991       SetAnimation milliseconds-delay [fractions-to-move-list]
3992              Sets the time between frames and the list of fractional offsets
3993              to customize the animated moves of the AnimatedMove command and
3994              the animation of menus (if the menu style is set to animated;
3995              see MenuStyle command).  If the fractions-to-move-list is
3996              omitted, only the time between frames is altered.  The
3997              fractions-to-move-list specifies how far the window should be
3998              offset at each successive frame as a fraction of the difference
3999              between the starting location and the ending location.  e.g.:
4000
4001                  SetAnimation 10 -.01 0 .01 .03 .08 .18 .3 \
4002                    .45 .6 .75 .85 .90 .94 .97 .99 1.0
4003
4004              Sets the delay between frames to 10 milliseconds, and sets the
4005              positions of the 16 frames of the animation motion.  Negative
4006              values are allowed, and in particular can be used to make the
4007              motion appear more cartoonish, by briefly moving slightly in the
4008              opposite direction of the main motion.  The above settings are
4009              the default.
4010
4011       SnapAttraction [proximity [behaviour] [Screen]]
4012              The SnapAttraction command is obsolete.  It has been replaced by
4013              the Style command option SnapAttraction.
4014
4015       SnapGrid [x-grid-size y-grid-size]
4016              The SnapGrid command is obsolete.  It has been replaced by the
4017              Style command option SnapGrid.
4018
4019       WindowsDesk arg1 [arg2]
4020              Moves the selected window to another desktop.
4021
4022              This command has been removed and must be replaced by
4023              MoveToDesk, the arguments for which are the same as for the
4024              GotoDesk command.
4025
4026              Important
4027              You cannot simply change the name of the command: the syntax has
4028              changed.  If you used:
4029
4030
4031                  WindowsDesk n
4032
4033              to move a window to desk n, you have to change it to:
4034
4035                  MoveToDesk 0 n
4036
4037       XorPixmap [pixmap]
4038              Selects the pixmap with which bits are xor'ed when doing
4039              rubber-band window moving or resizing.  This has a better chance
4040              of making the rubber-band visible if XorValue does not give good
4041              results.  An example pixmap resize.rainbow.xpm is provided with
4042              the icon distribution.  To turn the XorPixmap off again use the
4043              XorValue command or omit the pixmap argument.
4044
4045       XorValue [number]
4046              Changes the value with which bits are xor'ed when doing
4047              rubber-band window moving or resizing.  Valid values range from
4048              zero to the maximum value of an unsigned long integer on your
4049              system.  Setting this value is a trial-and-error process.  The
4050              default value 0 tries to find a value that gives a good contrast
4051              to black and white.  The default value is used if the given
4052              number is omitted or invalid.
4053
4054   Focus & Mouse Movement
4055       CursorMove horizontal[p] vertical[p]
4056              Moves the mouse pointer by horizontal pages in the X direction
4057              and vertical pages in the Y direction.  Either or both entries
4058              may be negative.  Both horizontal and vertical values are
4059              expressed in percent of pages, so
4060
4061                  CursorMove 100 100
4062
4063              means to move down and right by one full page.
4064
4065                  CursorMove 50 25
4066
4067              means to move right half a page and down a quarter of a page.
4068              Alternatively, the distance can be specified in pixels by
4069              appending a 'p' to the horizontal and/or vertical specification.
4070              For example
4071
4072                  CursorMove -10p -10p
4073
4074              means move ten pixels up and ten pixels left.  The CursorMove
4075              function should not be called from pop-up menus.
4076
4077       FlipFocus [NoWarp]
4078              Executes a Focus command as if the user had used the pointer to
4079              select the window.  This command alters the order of the
4080              WindowList in the same way as clicking in a window to focus,
4081              i.e. the target window is removed from the WindowList and placed
4082              at the start.  This command is recommended for use with the
4083              Direction command and in the function invoked from WindowList.
4084
4085       Focus [NoWarp]
4086              Sets the keyboard focus to the selected window.  If the NoWarp
4087              argument is given, this is all it does.  Otherwise it also moves
4088              the viewport or window as needed to make the selected window
4089              visible.  This command does not automatically raise the window.
4090              Does not warp the pointer into the selected window (see
4091              WarpToWindow function).  Does not de-iconify.  This command does
4092              not alter the order of the WindowList, it rotates the WindowList
4093              around so that the target window is at the start.
4094
4095              When the NoWarp argument is given, Focus cannot transfer the
4096              keyboard focus to windows on other desks.
4097
4098              To raise and/or warp a pointer to a window together with Focus
4099              or FlipFocus, use a function, like:
4100
4101                  AddToFunc SelectWindow
4102                  + I Focus
4103                  + I Iconify false
4104                  + I Raise
4105                  + I WarpToWindow 50 8p
4106
4107       WarpToWindow x[p] y[p]
4108              Warps the cursor to the associated window.  The parameters x and
4109              y default to percentage of window down and in from the upper
4110              left hand corner (or number of pixels down and in if 'p' is
4111              appended to the numbers).  If a number is negative the opposite
4112              edge is used and the direction reversed.  This command works
4113              also with windows that are not managed by fvwm.  In this case
4114              fvwm does not bring the window onto the screen if it is not
4115              visible.  For example it is possible to warp the pointer to the
4116              center of the root window on screen 1:
4117
4118                  WindowId root 1 WarpToWindow 50 50
4119
4120   Window State
4121       Close
4122              If the window accepts the delete window protocol a message is
4123              sent to the window asking it to gracefully remove itself.  If
4124              the window does not understand the delete window protocol then
4125              the window is destroyed as with the Destroy command.  Note: if
4126              the window accepts the delete window protocol but does not close
4127              itself in response, the window is not deleted.
4128
4129       Delete
4130              Sends a message to a window asking that it remove itself,
4131              frequently causing the application to exit.
4132
4133       Destroy
4134              Destroys an application window, which usually causes the
4135              application to crash and burn.
4136
4137       Iconify [bool]
4138              Iconifies a window if it is not already iconified or
4139              de-iconifies it if it is already iconified.  The optional
4140              argument bool is a boolean argument.  "True" means only
4141              iconification is allowed, while "False" forces de-iconification.
4142              Using "toggle" switches between iconified and de-iconified
4143              states.
4144
4145              There are a number of Style options which influence the
4146              appearance and behavior of icons (e.g.  StickyIcon, NoIcon).
4147
4148              For backward compatibility, the optional argument may also be a
4149              positive number instead of "True", or a negative number instead
4150              of "False".  Note that this syntax is obsolete, and will be
4151              removed in the future.
4152
4153       Maximize [flags] [bool] [horizontal[p]] [vertical[p]]
4154              Without its optional arguments (or if the bool bit has the value
4155              "toggle") Maximize causes the window to alternately switch from
4156              a full-screen size to its normal size.  To force a window into
4157              maximized (normal) state you can use a "True" or "False" value
4158              for the bool argument.
4159
4160              With the optional arguments horizontal and vertical, which are
4161              expressed as percentage of a full screen, the user can control
4162              the new size of the window.  An optional suffix 'p' can be used
4163              to indicate pixels instead of percents of the screen size.  If
4164              horizontal is greater than 0 then the horizontal dimension of
4165              the window is set to horizontal*screen_width/100.  If the value
4166              is smaller than 0 the size is subtracted from the screen width,
4167              i.e. -25 is the same as 75.  If horizontal is "grow", it is
4168              maximized to curren available space until finding any obstacle.
4169              The vertical resizing is similar.  If both horizontal and
4170              vertical values are "grow", it expands vertically first, then
4171              horizontally to find space.  Instead of the horizontal "grow"
4172              argument, "growleft" or "growright" can be used respectively
4173              "growup" and "growdown".  The optional flags argument is a space
4174              separated list containing the following key words: ewmhiwa,
4175              growonwindowlayer, growonlayers and screen.  ewmhiwa causes fvwm
4176              to ignore the EWMH working area.  growonwindowlayer causes the
4177              various grow methods to ignore windows with a layer other than
4178              the current layer of the window which is maximized.  The
4179              growonlayers option must have two integer arguments.  The first
4180              one is the minimum layer and the second one the maximum layer to
4181              use.  Windows that are outside of this range of layers are
4182              ignored by the grow methods.  A negative value as the first or
4183              second argument means to assume no minimum or maximum layer.
4184              screen must have an argument which specifies the Xinerama screen
4185              on which to operate.  It can be 'p' for the primary screen, 'c'
4186              for the current screen (containing the mouse pointer), 'g' for
4187              the global screen or the screen number itself (counting from
4188              zero).  This option is only useful with multiple Xinerama
4189              screens.
4190
4191              Here are some examples.  The following adds a title-bar button
4192              to switch a window to the full vertical size of the screen:
4193
4194                  Mouse 0 4 A Maximize 0 100
4195
4196              The following causes windows to be stretched to the full width:
4197
4198                  Mouse 0 4 A Maximize 100 0
4199
4200              This makes a window that is half the screen size in each
4201              direction:
4202
4203                  Mouse 0 4 A Maximize 50 50
4204
4205              To expand a window horizontally until any other window is found:
4206
4207                  Mouse 0 4 A Maximize 0 grow
4208
4209              To expand a window until any other window on the same or a
4210              higher layer is hit.
4211
4212                  Mouse 0 4 A Maximize growonlayers $[w.layer] -1 grow grow
4213
4214              To expand a window but leave the lower 60 pixels of the screen
4215              unoccupied:
4216
4217                  Mouse 0 4 A Maximize 100 -60p
4218
4219              Values larger than 100 can be used with caution.
4220
4221       Recapture
4222              This command is obsolete and should not be used anymore.  Should
4223              you want to do something specific that you cannot do without it,
4224              please report this to the fvwm-workers mailing list
4225              <fvwm-workers@fvwm.org>.  This command may be removed at some
4226              point in the future.  Please read the note at the end of the
4227              section Delayed Execution of Commands to learn about how to
4228              avoid the Recapture command.
4229
4230              Causes fvwm to recapture all of its windows.  This ensures that
4231              the latest style parameters are used.  The recapture operation
4232              is visually disturbing.
4233
4234              Since fvwm version 2.4 only a very few Style options need a
4235              Recapture to take effect (e.g.  UseStyle).
4236
4237       RecaptureWindow
4238              This command is obsolete and should not be used anymore.  See
4239              Recapture For details.
4240
4241              Causes fvwm to recapture the chosen window.
4242
4243       Refresh
4244              Causes all windows on the screen to redraw themselves.  All
4245              pending updates of all windows' styles and looks are applied
4246              immediately.  E.g. if Style or TitleStyle commands were issued
4247              inside a fvwm function.
4248
4249       RefreshWindow
4250              Causes the chosen window to redraw itself.  All pending updates
4251              of the window's style and look are applied immediately.  E.g. if
4252              Style or TitleStyle commands were issued inside a fvwm function.
4253
4254       Stick [bool]
4255              If the bool argument is empty or "toggle", the Stick command
4256              makes a window sticky if it is not already sticky, or non-sticky
4257              if it is already sticky.  To make a window sticky regardless of
4258              its current state the bool argument must be "True".  To make it
4259              non-sticky use "False".
4260
4261       StickAcrossPages [bool]
4262              Works like Stick but only sticks a window across pages, not
4263              across desks.
4264
4265       StickAcrossDesks [bool]
4266              Works like Stick but only sticks a window across desks, not
4267              across pages.
4268
4269       WindowShade [bool] | [[ShadeAgain] direction]
4270              Toggles the window shade feature for titled windows.  Windows in
4271              the shaded state only display a title-bar.  If bool is not given
4272              or "toggle", the window shade state is toggled.  If bool is
4273              "True", the window is forced to the shaded state.  If bool is
4274              "False", then the window is forced to the non-shaded state.  To
4275              force shading in a certain direction, the direction argument can
4276              be used.  Any of the strings "North", "South", "West", "East",
4277              "NorthWest", "NorthEast", "SouthWest", "SouthEast" or "Last" can
4278              be given.  The direction can be abbreviated with the usual one
4279              or two letters "N", "NW", etc.  Using a direction on a window
4280              that was already shaded unshades the window.  To shade it in a
4281              different direction, use the ShadeAgain option.  The direction
4282              Last shades the window in the direction it last was shaded.  If
4283              the window has never been shaded before it is shaded as if no
4284              direction had been given.  Windows without titles can be shaded
4285              too.  Please refer also to the options WindowShadeSteps,
4286              WindowShadeShrinks, WindowShadeScrolls, WindowShadeLazy,
4287              WindowShadeAlwaysLazy and WindowShadeBusy options of the Style
4288              command.  Examples:
4289
4290                  Style * WindowShadeShrinks, WindowShadeSteps 20, \
4291                          WindowShadeLazy
4292                  Mouse 1 - S WindowShade North
4293                  Mouse 1 [ S WindowShade West
4294                  Mouse 1 ] S WindowShade E
4295                  Mouse 1 _ S WindowShade S
4296
4297              Note: When a window that has been shaded with a direction
4298              argument changes the direction of the window title (see
4299              TitleAtTop Style option), the shading direction does not change.
4300              This may look very strange.  Windows that were shaded without a
4301              direction argument stay shaded in the direction of the title
4302              bar.
4303
4304              For backward compatibility, the optional argument may also be 1
4305              to signify "on", and 2 to signify "off".  Note that this syntax
4306              is obsolete, and will be removed in the future.
4307
4308       WindowShadeAnimate [steps [p]]
4309              This command is obsolete.  Please use the WindowShadeSteps
4310              option of the Style command instead.
4311
4312   Mouse, Key & Stroke Bindings
4313       IgnoreModifiers [Modifiers]
4314              Tells fvwm which modifiers to ignore when matching Mouse or Key
4315              bindings.  IgnoreModifiers affects the ClickToFocus style too.
4316              This command belongs into your config.  If you issue it when
4317              your fvwm session is already up and running the results are
4318              unpredictable.  The should appear before any applications or
4319              modules are started in your config file (e.g. with the Exec
4320              command).
4321
4322              Modifiers has the same syntax as in the Mouse or Key bindings,
4323              with the addition of 'L' meaning the caps lock key.  The default
4324              is "L".  Modifiers can be omitted, meaning no modifiers are
4325              ignored.  This command comes in handy if the num-lock and
4326              scroll-lock keys interfere with your shortcuts.  With XFree86
4327              '2' usually is the num-lock modifier and '5' refers to the
4328              scroll-lock key.  To turn all these pesky modifiers off you can
4329              use this command:
4330
4331                  IgnoreModifiers L25
4332
4333              If the Modifiers argument is the string "default", fvwm reverts
4334              back to the default value "L".
4335
4336              Important
4337              This command creates a lot of extra network traffic, depending
4338              on your CPU, network connection, the number of Key or Mouse
4339              commands in your configuration file and the number of modifiers
4340              you want to ignore.  If you do not have a lightning fast machine
4341              or very few bindings you should not ignore more than two
4342              modifiers.  I.e. do not ignore scroll-lock if you have no
4343              problem with it.  In the FAQ you can find a better solution of
4344              this problem.
4345
4346       EdgeCommand [direction [Function]]
4347              Binds a specified fvwm command Function to an edge of the
4348              screen.  Direction may be one of "North", "Top", "West", "Left",
4349              "South", "Bottom", "Right" and "East".  If Function is omitted
4350              the binding for this edge is removed.  If EdgeCommand is called
4351              without any arguments all edge bindings are removed.
4352
4353              Function is executed when the mouse pointer enters the invisible
4354              pan frames that surround the visible screen.  The binding works
4355              only if EdgeThickness is set to a value greater than 0.  If a
4356              function is bound to an edge, scrolling specified by EdgeScroll
4357              is disabled for this edge.  It is possible to bind a function
4358              only to some edges and use the other edges for scrolling.  This
4359              command is intended to raise or lower certain windows when the
4360              mouse pointer enters an edge.  FvwmAuto can be used get a delay
4361              when raising or lowering windows.  The following example raises
4362              FvwmButtons if the mouse pointer enters the top edge of the
4363              screen.
4364
4365                  # Disable EdgeScrolling but make it possible
4366                  # to move windows over the screen edge
4367                  EdgeResistance -1
4368                  Style * EdgeMoveDelay 250
4369                  Style * EdgeMoveResistance 20
4370
4371                  # Set thickness of the edge of the screen to 1
4372                  EdgeThickness 1
4373
4374                  # Give focus to FvwmButtons if the mouse
4375                  # hits top edge
4376                  EdgeCommand Top Next (FvwmButtons) Focus
4377                  # Make sure the Next command matches the window
4378                  Style FvwmButtons CirculateHit
4379
4380                  Module FvwmButtons
4381                  Module FvwmAuto 100 "Silent AutoRaiseFunction" \
4382                       "Silent AutoLowerFunction"
4383
4384                  # If any window except FvwmButtons has
4385                  # focus when calling this function
4386                  # FvwmButtons are lowered
4387                  DestroyFunc AutoLowerFunction
4388                  AddToFunc AutoLowerFunction
4389                  + I Current (!FvwmButtons) All (FvwmButtons) Lower
4390
4391                  # If FvwmButtons has focus when calling this function raise it
4392                  DestroyFunc AutoRaiseFunction
4393                  AddToFunc AutoRaiseFunction
4394                  + I Current (FvwmButtons) Raise
4395
4396              Normally, the invisible pan frames are only on the screen edges
4397              that border virtual pages.  If a screen edge has a command bound
4398              to it, the pan frame is always created on that edge.
4399
4400       EdgeLeaveCommand [direction [Function]]
4401              Binds a specified fvwm command Function to an edge of the
4402              screen.  Direction may be one of "North", "Top", "West", "Left",
4403              "South", "Bottom", "Right" and "East".  If Function is omitted
4404              the binding for this edge is removed.  If EdgeLeaveCommand is
4405              called without any arguments all edge bindings are removed.
4406
4407              Function is executed when the mouse pointer leaves the invisible
4408              pan frames that surround the visible screen.  The binding works
4409              only if EdgeThickness is set to a value greater than 0.  If a
4410              function is bound to an edge, scrolling specified by EdgeScroll
4411              is disabled for this edge.  It is possible to bind a function
4412              only to some edges and use the other edges for scrolling.  This
4413              command is intended to raise or lower certain windows when the
4414              mouse pointer leaves an edge.  FvwmAuto can be used get a delay
4415              when raising or lowering windows.  See example for EdgeCommand
4416
4417              Normally, the invisible pan frames are only on the screen edges
4418              that border virtual pages.  If a screen edge has a command bound
4419              to it, the pan frame is always created on that edge.
4420
4421       GnomeButton
4422              Used in conjunction with Mouse to pass mouse button presses on
4423              the root window to a GNOME program (such as GMC).  The following
4424              example passes presses of mouse buttons 1 and 3 to such a
4425              program.
4426
4427                  Mouse 1 R A GnomeButton
4428                  Mouse 3 R A GnomeButton
4429
4430       Key [(window)] Keyname Context Modifiers Function
4431              Binds a keyboard key to a specified fvwm command, or removes the
4432              binding if Function is '-'.  The syntax is the same as for a
4433              Mouse binding except that the mouse button number is replaced
4434              with a Keyname.  Normally, the key binding is activated when the
4435              key is pressed.  Keyname is a standard X11 key name as defined
4436              in /usr/include/X11/keysymdef.h, (without the XK_ prefix), or
4437              the keysym database /usr/X11R6/lib/X11/XKeysymDB.  Only key
4438              names that are generated with no modifier keys or with just the
4439              Shift key held are guaranteed to work.  The Context and
4440              Modifiers fields are defined as in the Mouse binding.  However,
4441              when you press a key the context window is the window that has
4442              the keyboard focus.  That is not necessarily the same as the
4443              window the pointer is over (with SloppyFocus or ClickToFocus).
4444              Note that key bindings with the 'R' (root window) context do not
4445              work properly with SloppyFocus and ClickToFocus.  If you
4446              encounter problems, use the PointerKey command instead.  If you
4447              want to bind keys to a window with SloppyFocus or ClickToFocus
4448              that are supposed to work when the pointer is not over the
4449              window, fvwm assumes the pointer is over the client window (i.e.
4450              you have to use the 'W' context).
4451
4452              The special context 'M' for menus can be used to (re)define the
4453              menu controls.  It be used alone or together with 'T', 'S', 'I',
4454              '[', ']', '-' and '_'.  See the Menu Bindings section for
4455              details.
4456
4457              The following example binds the built-in window list to pop up
4458              when Alt-Ctrl-Shift-F11 is hit, no matter where the mouse
4459              pointer is:
4460
4461                  Key F11 A SCM WindowList
4462
4463              Binding a key to a title-bar button causes that button to
4464              appear.  Please refer to the Mouse command for details.
4465
4466       Mouse [(window)] Button Context Modifiers Function
4467              Defines a mouse binding, or removes the binding if Function is
4468              '-'.  Button is the mouse button number.  If Button is zero then
4469              any button performs the specified function.  Note that only
4470              mouse buttons 1 to 5 are fully supported by X11.  Any number
4471              above this works only partially.  Complex functions can not be
4472              used with these buttons and neither any operation that requires
4473              dragging the pointer with the button held.  This is due to
4474              limitations of X11.  By default, the highest allowed button
4475              number is 9.
4476
4477              Context describes where the binding applies.  Valid contexts are
4478              'R' for the root window, 'W' for an application window, 'D' for
4479              a desktop application (as kdesktop or Nautilus desktop), 'T' for
4480              a window title-bar, 'S' for a window side, top, or bottom bar,
4481              '[', ']', '-' and '_' for the left, right, top or bottom side
4482              only, 'F' for a window frame (the corners), '<', '^', '>' and
4483              'v' for the top left, top right, bottom right or bottom left
4484              corner, 'I' for an icon window, or '0' through '9' for title-bar
4485              buttons, or any combination of these letters.  'A' is for any
4486              context.  For instance, a context of "FST" applies when the
4487              mouse is anywhere in a window's border except the title-bar
4488              buttons.  Only 'S' and 'W' are valid for an undecorated window.
4489
4490              The special context 'M' for menus can be used to (re)define the
4491              menu controls.  It can be used alone or together with 'T', 'S',
4492              'I', '[', ']', '-' and '_'.  See the Menu Bindings section for
4493              details.
4494
4495              The special context 'P' controls what buttons that can be used
4496              to place a window.  When using this context no modifiers are
4497              allowed (Modifiers must be N), no window is allowed, and the
4498              Function must be one of PlaceWindow, PlaceWindowDrag,
4499              PlaceWindowInteractive, CancelPlacement, CancelPlacementDrag,
4500              CancelPlacementInteractive or -.
4501
4502              PlaceWindow makes Button usable for window placement, both for
4503              interactive and drag move.  CancelPlacement does the inverse.
4504              That is makes Button to cancel move for both interactive and
4505              drag move.  It may however not override how new windows are
4506              resized after being placed.  This is controlled by the Emulate
4507              command.  Also a window being dragged can always be placed by
4508              releasing the button hold while dragging, regardless of if it is
4509              set to PlaceWindow or not.
4510
4511              PlaceWindowDrag and PlaceWindowInteractive/CancelPlacementDrag
4512              and CancelPlacementInteractive work as
4513              PlaceWindow/CancelPlacement with the exception that they only
4514              affect either windows dragged / placed interactively.
4515
4516              - is equivalent to CancelPlacement.
4517
4518              The following example makes all buttons but button 3 usable for
4519              interactive placement and makes drag moves started by other
4520              buttons than one cancel if button 1 is pressed before finishing
4521              the move:
4522
4523                  Mouse 0 P N PlaceWindow
4524                  Mouse 3 P N CancelPlacement
4525                  Mouse 1 P N CancelPlacementDrag
4526
4527              By default, the binding applies to all windows.  You can specify
4528              that a binding only applies to specific windows by specifying
4529              the window name in brackets.  The window name is a wildcard
4530              pattern specifying the class, resource or name of the window you
4531              want the binding to apply to.
4532
4533              The following example shows how the same key-binding can be used
4534              to perform different functions depending on the window that is
4535              focused:
4536
4537                  Key (rxvt)  V A C Echo ctrl-V-in-RXVT
4538                  Key (*term) V A C Echo ctrl-V-in-Term
4539                  Key (*vim)  V A C --
4540                  Key         V A C Echo ctrl-V-elsewhere
4541
4542              A '--' action indicates that the event should be propagated to
4543              the specified window to handle.  This is only a valid action for
4544              window-specific bindings.
4545
4546              This example shows how to display the WindowList when Button 3
4547              is pressed on an rxvt window:
4548
4549                  Mouse (rxvt) 3 A A WindowList
4550
4551              Note that Fvwm actually intercepts all events for a
4552              window-specific binding and (if the focused window doesn't match
4553              any of the bindings) sends a synthetic copy of the event to the
4554              window.  This should be transparent to most applications,
4555              however (for security reasons) some programs ignore these
4556              synthetic events by default - xterm is one of them.  To enable
4557              handling of these events, add the following line to your
4558              ~/.Xdefaults file:
4559
4560                  XTerm*allowSendEvents:  true
4561
4562              Modifiers is any combination of 'N' for no modifiers, 'C' for
4563              control, 'S' for shift, 'M' for Meta, 'L' for Caps-Lock or 'A'
4564              for any modifier.  For example, a modifier of "SM" applies when
4565              both the Meta and Shift keys are down.  X11 modifiers mod1
4566              through mod5 are represented as the digits '1' through '5'.  The
4567              modifier 'L' is ignored by default.  To turn it on, use the
4568              IgnoreModifiers command.
4569
4570              Function is one of fvwm's commands.
4571
4572              The title-bar buttons are numbered with odd numbered buttons on
4573              the left side of the title-bar and even numbers on the right.
4574              Smaller-numbered buttons are displayed toward the outside of the
4575              window while larger-numbered buttons appear toward the middle of
4576              the window (0 is short for 10).  In summary, the buttons are
4577              numbered:
4578
4579                  1 3 5 7 9    0 8 6 4 2
4580
4581              The highest odd numbered button which has an action bound to it
4582              determines the number of buttons drawn on the left side of the
4583              title bar.  The highest even number determines the number of
4584              right side buttons which are drawn.  Actions can be bound to
4585              either mouse buttons or keyboard keys.
4586
4587       PointerKey [(window)] Keyname Context Modifiers Function
4588              This command works exactly like the Key command.  The only
4589              difference is that the binding operates on the window under the
4590              pointer.  Normal key bindings operate on the focused window
4591              instead.  The PointerKey command can for example be used to bind
4592              keys to the root window if you are using SloppyFocus or
4593              ClickToFocus.  However, some applications (xterm is one example)
4594              are unable to handle this key anymore, even if the pointer is
4595              over the xterm window.  It is recommended to use the PointerKey
4596              command only for key combinations that are not needed in any
4597              application window.
4598
4599              Example:
4600
4601                  Style * SloppyFocus
4602                  PointerKey f1 a m Menu MainMenu
4603
4604       Stroke [(window)] Sequence Button Context Modifiers Function
4605              Binds a mouse stroke sequence to a specified fvwm command, or
4606              removes the binding if Function is '-'.  The syntax is the same
4607              as for a Mouse binding except that Sequence is inserted in front
4608              of the button number and a value of 0 for Button concerns the
4609              StrokeFunc command.  The Context and Modifiers fields are
4610              defined as in the Mouse binding.  However, only the 'R' Context
4611              really works (if you want to use other contexts you need to use
4612              the StrokeFunc below).
4613
4614              Strokes sequences are defined in a telephone grid like this:
4615
4616                   1  2  3
4617
4618                   4  5  6
4619
4620                   7  8  9
4621
4622              or in a numeric pad grid like this:
4623
4624                   7  8  9
4625
4626                   4  5  6
4627
4628                   1  2  3
4629
4630              The telephone grid is used by default, to use the numeric pad
4631              grid you should begin the sequence with a 'N'.  Note that a
4632              complex motion may produce several different sequences (see the
4633              "netscape" example below to handle such motion).  Moreover,
4634              sequences are limited to 20 elements (with the present version
4635              of libstroke), however, in practice it is preferable to use
4636              sequence with less than 12 elements.
4637
4638              Because of the default button menu in fvwm, you may need to
4639              remove a mouse button binding (using an empty action) before
4640              using the stroke
4641
4642                  Mouse 3 R N
4643
4644              Also, you can still use the stroke "sequence 0" to simulate a
4645              click:
4646
4647                  Stroke 0 3 R N Menu WindowList Nop
4648
4649              The following example starts xterm when the mouse drags an 'I'
4650              on the root window with button 3 pressed down:
4651
4652                  Stroke 258  3  R  N  Exec exec xterm
4653
4654              An example for Netscape:
4655
4656                  Stroke 7415963    3  R  N  Exec exec netscape
4657                  Stroke 74148963   3  R  N  Exec exec netscape
4658                  Stroke 74158963   3  R  N  Exec exec netscape
4659                  Stroke 7418963    3  R  N  Exec exec netscape
4660                  Stroke 415963     3  R  N  Exec exec netscape
4661
4662              You may prefer to use the numeric pad grid since you have such a
4663              grid on your machine.  Here an example:
4664
4665                  Stroke N78963214   3  R  N FvwmForm FvwmForm-QuitVerify
4666                  Stroke N789632147  3  R  N FvwmForm FvwmForm-QuitVerify
4667
4668              This example starts the "QuitVerify" form if you draw a box that
4669              begins in the top left corner.
4670
4671              Note: You need libstroke installed and fvwm compiled with stroke
4672              support.  libstroke can be obtained at
4673              http://www.etla.net/~willey/projects/libstroke/
4674
4675       StrokeFunc [Options]
4676              Causes fvwm to record a mouse stroke sequence and to execute the
4677              corresponding action as defined in a Stroke command.  The cursor
4678              is modified to the STROKE context of the CursorStyle command
4679              during recording.  When the stroke is finished StrokeFunc looks
4680              for a stroke binding of the form
4681
4682                  Stroke sequence 0 Context Modifiers action
4683
4684              and executes the corresponding action (Note the 0).  Normal use
4685              of this function is via a Mouse or Key command.  Examples:
4686
4687                  Mouse 3 A M StrokeFunc
4688                  Key x R N StrokeFunc
4689
4690              If you press mouse button 3 and Alt anywhere (respectively,
4691              press the key x when the cursor is on the root window), then
4692              fvwm records the mouse motions until the mouse button 3
4693              (respectively, the x key) is released and then check if the
4694              recorded sequence corresponds to a stroke binding of the form
4695
4696                  "Stroke sequence 0 A M action"
4697                  "Stroke sequence 0 R N action"
4698
4699              Note that the Context and Modifiers are taken at the beginning
4700              of the execution of the StrokeFunc command (so you can release
4701              the modifiers before the end of the stroke recording in the case
4702              of a mouse binding and if you used, say, a title-bar context the
4703              mouse motion can go through an application window).  The keys
4704              Escape and Delete allow you to abort the command.
4705
4706              The StrokeFunc command has five options: NotStayPressed,
4707              EchoSequence, DrawMotion, FeedBack and StrokeWidth.  These
4708              options are disabled by default.  EchoSequence causes fvwm to
4709              Echo the recorded stroke sequence.  DrawMotion causes fvwm to
4710              draw the mouse motion on the screen.  FeedBack causes fvwm to
4711              display during a fraction of second the cursor of the WAIT
4712              context of the CursorStyle command if the recorded stroke
4713              sequence corresponds to a stroke binding.  StrokeWidth takes an
4714              integer argument, which must be >= 0 and <= 100 and which
4715              defines the width of the line for the DrawMotion option.
4716
4717              NotStayPressed works only if StrokeFunc is used via a Mouse or a
4718              Key command.  This option removes the need to have a button or
4719              the key pressed during the stroke, but you have to do a mouse
4720              click or press the Return or Space key to finish the mouse
4721              motion recording (these keys also work without the
4722              NotStayPressed option).
4723
4724              You can use the StrokeFunc "alone".  In this case it works as
4725              above with the NotStayPressed option enabled.  However,
4726              Modifiers, in general, may not work as expected (i.e., in this
4727              case use 'A' or 'N' as Modifiers in the stroke bindings).
4728
4729              Note that some computers do not support key release events.  If
4730              that is the case the StrokeFunc used via a Key command works as
4731              if the NotStayPressed option is enabled.
4732
4733   Controlling Window Styles
4734       For readability, the commands in this section are not sorted
4735       alphabetically.  The description of the Style command can be found at
4736       the end of this section.
4737
4738       FocusStyle stylename options
4739              works exactly like the Style command, but accepts only the focus
4740              policy related styles beginning with "FP".  The prefix can be
4741              removed, but at the cost of a little bit of time.  FocusStyle is
4742              meant to make the configuration file more readable.  Example:
4743
4744                  FocusStyle * EnterToFocus, !LeaveToUnfocus
4745
4746              is equivalent to
4747
4748                  Style * FPEnterToFocus, !FPLeaveToUnfocus
4749
4750       DestroyStyle style
4751              deletes the style named style.  The changes take effect
4752              immediately.  Note that style is not a wild-carded search
4753              string, but rather a case-sensitive string that should exactly
4754              match the original Style command.
4755
4756              Destroying style "*" can be done, but isn't really to be
4757              recommended.  For example:
4758
4759                  DestroyStyle Application*
4760
4761              This removes all settings for the style named "Application*",
4762              NOT all styles starting with "Application".
4763
4764       DestroyWindowStyle
4765              deletes the styles set by the WindowStyle command on the
4766              selected window.  The changes take effect immediately.
4767
4768       UpdateStyles
4769              All pending updates of all windows' styles and looks are applied
4770              immediately.  E.g. if Style, WindowStyle or TitleStyle commands
4771              were issued inside a fvwm function.
4772
4773       Style stylename options ...
4774              The Style command is used to set attributes of a window to
4775              values other than the default or to set the window manager
4776              default styles.
4777
4778              stylename can be a window's name, class, or resource string.  It
4779              may contain the wildcards '*' and '?', which are matched in the
4780              usual Unix filename manner.  Multiple style options in a single
4781              Style command are read from left to right as if they were issued
4782              one after each other in separate commands.  A given style always
4783              overrides all conflicting styles that have been issued earlier
4784              (or further left on the same style line).
4785
4786              Note: windows that have no name (WM_NAME) are given a name of
4787              "Untitled", and windows that do not have a class (WM_CLASS,
4788              res_class) are given class "NoClass" and those that do not have
4789              a resource (WM_CLASS, res_name) are given resource "NoResource".
4790
4791              If a window has the resource "fvwmstyle" set, the value of that
4792              resource is used in addition to any window names when selecting
4793              the style.
4794
4795              options is a comma separated list containing one or more of the
4796              following keywords.  Each group of style names is separated by
4797              slashes ('/').  The last style in these groups is the default.
4798              BorderWidth, HandleWidth, !Icon / Icon, MiniIcon, IconBox,
4799              IconGrid, IconFill, IconSize, !Title / Title, TitleAtBottom /
4800              TitleAtLeft / TitleAtRight / TitleAtTop, LeftTitleRotatedCW /
4801              LeftTitleRotatedCCW, RightTitleRotatedCCW / RightTitleRotatedCW,
4802              TopTitleRotated / TopTitleNotRotated, BottomTitleRotated /
4803              BottomTitleNotRotated, !UseTitleDecorRotation /
4804              UseTitleDecorRotation, StippledTitle / !StippledTitle,
4805              StippledIconTitle / !StippledIconTitle, IndexedWindowName /
4806              ExactWindowName, IndexedIconName / ExactIconName, !Borders /
4807              Borders, !Handles / Handles, WindowListSkip / WindowListHit,
4808              CirculateSkip / CirculateHit, CirculateSkipShaded /
4809              CirculateHitShaded, CirculateSkipIcon / CirculateHitIcon, Layer,
4810              StaysOnTop / StaysOnBottom / StaysPut, Sticky / Slippery,
4811              StickyAcrossPages / !StickyAcrossPages, StickyAcrossDesks /
4812              !StickyAcrossDesks, !StickyStippledTitle / StickyStippledTitle,
4813              !StickyStippledIconTitle / StickyStippledIconTitle, StartIconic
4814              / StartNormal, Color, ForeColor, BackColor, Colorset,
4815              HilightFore, HilightBack, HilightColorset, BorderColorset,
4816              HilightBorderColorset, IconTitleColorset,
4817              HilightIconTitleColorset, IconBackgroundColorset,
4818              IconTitleRelief, IconBackgroundRelief, IconBackgroundPadding,
4819              Font, IconFont, StartsOnDesk / StartsOnPage / StartsAnyWhere,
4820              StartsOnScreen, StartShaded / !StartShaded,
4821              ManualPlacementHonorsStartsOnPage /
4822              ManualPlacementIgnoresStartsOnPage, CaptureHonorsStartsOnPage /
4823              CaptureIgnoresStartsOnPage, RecaptureHonorsStartsOnPage /
4824              RecaptureIgnoresStartsOnPage, StartsOnPageIncludesTransients /
4825              StartsOnPageIgnoresTransients, IconTitle / !IconTitle,
4826              MwmButtons / FvwmButtons, MwmBorder / FvwmBorder, MwmDecor /
4827              !DecorHint, MwmFunctions / !FuncHint, HintOverride / !Override,
4828              !Button / Button, ResizeHintOverride / !ResizeOverride, OLDecor
4829              / !OLDecor, GNOMEUseHints / GNOMEIgnoreHints, StickyIcon /
4830              SlipperyIcon, StickyAcrossPagesIcon / !StickyAcrossPagesIcon,
4831              StickyAcrossDesksIcon / !StickyAcrossDesksIcon, ManualPlacement
4832              / CascadePlacement / MinOverlapPlacement /
4833              MinOverlapPercentPlacement / TileManualPlacement /
4834              TileCascadePlacement / PositionPlacement,
4835              MinOverlapPlacementPenalties,
4836              MinOverlapPercentPlacementPenalties, DecorateTransient /
4837              NakedTransient, DontRaiseTransient / RaiseTransient,
4838              DontLowerTransient / LowerTransient, DontStackTransientParent /
4839              StackTransientParent, SkipMapping / ShowMapping,
4840              ScatterWindowGroups / KeepWindowGroupsOnDesk, UseDecor,
4841              UseStyle, !UsePPosition / NoPPosition / UsePPosition,
4842              !UseUSPosition, NoUSPosition / UseUSPosition,
4843              !UseTransientPPosition, NoTransientPPosition /
4844              UseTransientPPosition, !UseTransientUSPosition /
4845              NoTransientUSPosition / UseTransientUSPosition, !UseIconPosition
4846              / NoIconPosition / UseIconPosition, Lenience / !Lenience,
4847              ClickToFocus / SloppyFocus / MouseFocus|FocusFollowsMouse /
4848              NeverFocus, ClickToFocusPassesClickOff /
4849              ClickToFocusPassesClick, ClickToFocusRaisesOff /
4850              ClickToFocusRaises, MouseFocusClickRaises /
4851              MouseFocusClickRaisesOff, GrabFocus / GrabFocusOff,
4852              GrabFocusTransientOff / GrabFocusTransient, FPFocusClickButtons,
4853              FPFocusClickModifiers, !FPSortWindowlistByFocus /
4854              FPSortWindowlistByFocus, FPClickRaisesFocused /
4855              !FPClickRaisesFocused, FPClickDecorRaisesFocused /
4856              !FPClickDecorRaisesFocused, FPClickIconRaisesFocused /
4857              !FPClickIconRaisesFocused, !FPClickRaisesUnfocused /
4858              FPClickRaisesUnfocused, FPClickDecorRaisesUnfocused /
4859              !FPClickDecorRaisesUnfocused, FPClickIconRaisesUnfocused /
4860              !FPClickIconRaisesUnfocused, FPClickToFocus / !FPClickToFocus,
4861              FPClickDecorToFocus / !FPClickDecorToFocus, FPClickIconToFocus /
4862              !FPClickIconToFocus, !FPEnterToFocus / FPEnterToFocus,
4863              !FPLeaveToUnfocus / FPLeaveToUnfocus, !FPFocusByProgram /
4864              FPFocusByProgram, !FPFocusByFunction / FPFocusByFunction,
4865              FPFocusByFunctionWarpPointer / !FPFocusByFunctionWarpPointer,
4866              FPLenient / !FPLenient, !FPPassFocusClick / FPPassFocusClick,
4867              !FPPassRaiseClick / FPPassRaiseClick, FPIgnoreFocusClickMotion /
4868              !FPIgnoreFocusClickMotion, FPIgnoreRaiseClickMotion /
4869              !FPIgnoreRaiseClickMotion, !FPAllowFocusClickFunction /
4870              FPAllowFocusClickFunction, !FPAllowRaiseClickFunction /
4871              FPAllowRaiseClickFunction, FPGrabFocus / !FPGrabFocus,
4872              !FPGrabFocusTransient / FPGrabFocusTransient,
4873              FPOverrideGrabFocus / !FPOverrideGrabFocus, FPReleaseFocus /
4874              !FPReleaseFocus, !FPReleaseFocusTransient /
4875              FPReleaseFocusTransient, FPOverrideReleaseFocus /
4876              !FPOverrideReleaseFocus, StartsLowered / StartsRaised,
4877              IgnoreRestack / AllowRestack, FixedPosition / VariablePosition,
4878              FixedUSPosition / VariableUSPosition, FixedPPosition /
4879              VariablePPosition, FixedSize / VariableSize, FixedUSSize /
4880              VariableUSSize, FixedPSize / VariablePSize, !Closable /
4881              Closable, !Iconifiable / Iconifiable, !Maximizable /
4882              Maximizable, !AllowMaximizeFixedSize / AllowMaximizeFixedSize,
4883              IconOverride / NoIconOverride / NoActiveIconOverride,
4884              DepressableBorder / FirmBorder, MinWindowSize, MaxWindowSize,
4885              IconifyWindowGroups / IconifyWindowGroupsOff, ResizeOpaque /
4886              ResizeOutline, BackingStore / BackingStoreOff /
4887              BackingStoreWindowDefault, Opacity / ParentalRelativity,
4888              SaveUnder / SaveUnderOff, WindowShadeShrinks /
4889              WindowShadeScrolls, WindowShadeSteps, WindowShadeAlwaysLazy /
4890              WindowShadeBusy / WindowShadeLazy, EWMHDonateIcon /
4891              EWMHDontDonateIcon, EWMHDonateMiniIcon / EWMHDontDonateMiniIcon,
4892              EWMHMiniIconOverride / EWMHNoMiniIconOverride,
4893              EWMHUseStackingOrderHints / EWMHIgnoreStackingOrderHints,
4894              EWMHIgnoreStateHints / EWMHUseStateHints, EWMHIgnoreStrutHints /
4895              EWMHUseStrutHints, EWMHIgnoreWindowType / !EWMHIgnoreWindowType,
4896              EWMHMaximizeIgnoreWorkingArea / EWMHMaximizeUseWorkingArea /
4897              EWMHMaximizeUseDynamicWorkingArea,
4898              EWMHPlacementIgnoreWorkingArea / EWMHPlacementUseWorkingArea /
4899              EWMHPlacementUseDynamicWorkingArea, MoveByProgramMethod,
4900              Unmanaged, State, SnapGrid, SnapAttraction, EdgeMoveDelay,
4901              EdgeResizeDelay.  EdgeMoveResistance,
4902
4903              In the above list some options are listed as
4904              style-option/opposite-style-option.  The opposite-style-option
4905              for entries that have them describes the fvwm default behavior
4906              and can be used if you want to change the fvwm default behavior.
4907
4908              Focus policy
4909                     ClickToFocus instructs fvwm to give the focus to a window
4910                     when it is clicked in.  The default MouseFocus (or its
4911                     alias FocusFollowsMouse) tells fvwm to give a window the
4912                     focus as soon as the pointer enters the window, and take
4913                     it away when the pointer leaves the window.  SloppyFocus
4914                     is similar, but doesn't give up the focus if the pointer
4915                     leaves the window to pass over the root window or a
4916                     ClickToFocus window (unless you click on it, that is),
4917                     which makes it possible to move the mouse out of the way
4918                     without losing focus.  A window with the style NeverFocus
4919                     never receives the focus.  This is useful for modules
4920                     like FvwmButtons.  for example.  Note: Once any of the
4921                     "FP..." styles has been used, the defaults that come with
4922                     the basic focus policies are not restored when the latter
4923                     are used again.  For example, once !FPGrabFocus has been
4924                     used, using ClickToFocus does not restore FPGrabFocus.
4925
4926                     The focus model can be augmented with several additional
4927                     options.  In fvwm-2.5.3 and later, there are a large
4928                     number of advanced options beginning with "FP" or "!FP".
4929                     These options shall replace the older options one day and
4930                     are described first.  Using any of these new options may
4931                     limit compatibility with older releases.  In general,
4932                     options beginning with "FP" turn a feature on, while
4933                     those beginning with "!FP" turn it off.
4934
4935              Focusing the window
4936                     With FPEnterToFocus, when the pointer enters a window it
4937                     receives focus.
4938
4939                     With FPLeaveToUnfocus a window loses focus when the
4940                     pointer leaves it.
4941
4942                     With FPClickToFocus, FPClickDecorToFocus or
4943                     FPClickIconToFocus, a window receives focus when the
4944                     inside of the window or the decorations or its icon is
4945                     clicked.
4946
4947                     The FPFocusByProgram style allows windows to take the
4948                     focus themselves.
4949
4950                     The !FPFocusByFunction style forbids that a window
4951                     receives the focus via the Focus and FlipFocus commands.
4952
4953                     The FPFocusByFunctionWarpPointer style controls if the
4954                     pointer is warped to a selected window when the Focus
4955                     command is used.
4956
4957                     FPLenient allows focus on windows that do not want it,
4958                     like FvwmPager or xclock.
4959
4960                     The FPFocusClickButtons style takes a list of mouse
4961                     buttons that can be clicked to focus or raise a window
4962                     when the appropriate style is used.  The default is to
4963                     use the first three buttons ("123").
4964
4965                     The FPFocusClickModifiers style takes a list of modifier
4966                     keys just like the Key command.  The exact combination of
4967                     modifier keys must be pressed for the click to focus or
4968                     raise a window to work.  The default is to use no
4969                     modifiers ("N").
4970
4971                     With the FPPassFocusClick style, the click that was used
4972                     to focus a window is passed to the application.
4973
4974                     With the FPAllowFocusClickFunction style, the click that
4975                     was used to focus a window can also trigger a normal
4976                     action that was bound to the window with the Mouse
4977                     command).
4978
4979                     If the FPIgnoreFocusClickMotion style is used, clicking
4980                     in a window and then dragging the pointer with the button
4981                     held down does not count as the click to focus the
4982                     window.  Instead, the application processes these events
4983                     normally.  This is useful to select text in a terminal
4984                     window with the mouse without raising the window.
4985                     However, mouse bindings on the client window are not
4986                     guaranteed to work anymore (see Mouse command).  This
4987                     style forces the initial click to be passed to the
4988                     application.  The distance that the pointer must be moved
4989                     to trigger this is controlled by the MoveThreshold
4990                     command.
4991
4992                     The FPSortWindowlistByFocus and !FPSortWindowlistByFocus
4993                     styles control whether the internal window list is sorted
4994                     in the order the windows were focused or in the order
4995                     they were created.  The latter is the default for
4996                     ClickToFocus and SloppyFocus.
4997
4998                     Clicking the window to raise
4999
5000                     The styles FPClickRaisesFocused,
5001                     FPClickDecorRaisesFocused and FPClickIconRaisesFocused
5002                     allow to raise the window when the interior or the
5003                     decorations or the icon of the window is clicked while
5004                     the window is already focused.
5005
5006                     The styles FPClickRaisesUnfocused,
5007                     FPClickDecorRaisesUnfocused and
5008                     FPClickIconRaisesUnfocused allow to raise the window when
5009                     the interior or the decorations or the icon of the window
5010                     is clicked while the window is not yet focused.
5011
5012                     With the FPPassRaiseClick style, the click that was used
5013                     to raise the window is passed to the application.
5014
5015                     With the FPAllowRaiseClickFunction style, the click that
5016                     was used to raise the window can also trigger a normal
5017                     action that was bound to the window with the Mouse
5018                     command.
5019
5020                     If the FPIgnoreRaiseClickMotion style is used, clicking
5021                     in a window and then dragging the pointer with the button
5022                     held down does not count as the click to raise the
5023                     window.  Instead, the application processes these events
5024                     normally.  This is useful to select text in a terminal
5025                     window with the mouse without raising the window.
5026                     However, mouse bindings on the client window are not
5027                     guaranteed to work anymore (see Mouse command.  Note that
5028                     this style forces that the initial click is passed to the
5029                     application.  The distance that the pointer must be moved
5030                     to trigger this is controlled by the MoveThreshold
5031                     command.
5032
5033                     Grabbing the focus when a new window is created
5034
5035                     New normal or transient windows with the FPGrabFocus or
5036                     FPGrabFocusTransient style automatically receive the
5037                     focus when they are created.  FPGrabFocus is the default
5038                     for windows with the ClickToFocus style.  Note that even
5039                     if these styles are disabled, the application may take
5040                     the focus itself.  Fvwm can not prevent this.
5041
5042                     The OverrideGrabFocus style instructs fvwm to never take
5043                     away the focus from such a window via the GrabFocus or
5044                     GrabFocusTransient styles.  This can be useful if you
5045                     like to have transient windows receive the focus
5046                     immediately, for example in a web browser, but not while
5047                     you are working in a terminal window or a text processor.
5048
5049                     The above three styles are accompanied by FPReleaseFocus,
5050                     FPReleaseFocusTransient and FPOverrideReleaseFocus.
5051                     These control if the focus is returned to another window
5052                     when the window is closed.  Otherwise no window or the
5053                     window under the pointer receives the focus.
5054
5055                     ClickToFocusPassesClickOff and ClickToFocusPassesClick
5056                     controls whether a mouse click to focus a window is sent
5057                     to the application or not.  Similarly,
5058                     ClickToFocusRaisesOff/MouseFocusClickRaisesOff and
5059                     ClickToFocusRaises/MouseFocusClickRaises control if the
5060                     window is raised (but depending on the focus model).
5061
5062                     Note: in fvwm versions prior to 2.5.3, the "Click..."
5063                     options applied only to windows with ClickToFocus while
5064                     the "Mouse..." options applied to windows with a
5065                     different focus policy.  This is no longer the case.
5066
5067                     The old GrabFocus style is equivalent to using
5068                     FPGrabFocus + FPReleaseFocus.
5069
5070                     The old GrabFocusTransient style is equivalent to using
5071                     FPGrabFocusTransient + FPReleaseFocusTransient.
5072
5073                     Lenience is equivalent to the new style FPLenient.
5074
5075              Window title
5076                     The Title and !Title options determine if the window has
5077                     a title-bar or not.  By default all windows have a
5078                     title-bar.  NoTitle is equivalent to !Title but is
5079                     deprecated.
5080
5081                     Windows with the TitleAtBottom, TitleAtLeft or
5082                     TitleAtRight style have a title-bar below, to the left or
5083                     to the right of the window instead of above as usual.
5084                     The TitleAtTop style restores the default placement.
5085                     Even if the window has the !Title style set, this affects
5086                     the WindowShade command.  Please check the WindowShade
5087                     command for interactions between that command and these
5088                     styles.  Titles on the left or right side of the windows
5089                     are augmented by the following styles:
5090
5091                     Normally, the text in titles on the left side of a window
5092                     is rotated counterclockwise by 90 degrees from the normal
5093                     upright position and 90 degrees clockwise for titles on
5094                     the right side.  It can also be rotated in the opposite
5095                     directions with LeftTitleRotatedCW if TitleAtLeft is
5096                     used, and with RightTitleRotatedCCW if TitleAtRight is
5097                     used.  The defaults can be restored with
5098                     LeftTitleRotatedCCW and RightTitleRotatedCW.  A normal
5099                     horizontal text may be rotated as well with
5100                     TopTitleRotated if TitleAtTop is used, and with
5101                     BottomTitleRotated if TitleAtBottom is used.  The
5102                     defaults can be restored with TopTitleNotRotated and
5103                     BottomTitleNotRotated.
5104
5105                     By default the title bar decoration defined using the
5106                     TitleStyle command is rotated following the title text
5107                     rotation (see the previous paragraph).  This can be
5108                     disabled by using the !UseTitleDecorRotation style.
5109                     UseTitleDecorRotation reverts back to the default.
5110
5111                     With the StippledTitle style, titles are drawn with the
5112                     same effect that is usually reserved for windows with the
5113                     Sticky, StickyAcrossPages or StickyAcrossDesks style.
5114                     !StippledTitle reverts back to normal titles.
5115                     StippledTitleOff is equivalent to !StippledTitle but is
5116                     deprecated.
5117
5118                     Color takes two arguments.  The first is the window-label
5119                     text color and the second is the window decorations
5120                     normal background color.  The two colors are separated
5121                     with a slash.  If the use of a slash causes problems then
5122                     the separate ForeColor and BackColor options can be used.
5123
5124                     Colorset takes the colorset number as its sole argument
5125                     and overrides the colors set by Color.  Instead, the
5126                     corresponding colors from the given colorset are used.
5127                     Note that all other features of a colorset are not used.
5128                     Use the Colorset decoration style in the TitleStyle and
5129                     ButtonStyle command for that.  To stop using the
5130                     colorset, the colorset number is omitted.
5131
5132                     The HilightFore, HilightBack and HilightColorset style
5133                     options work exactly like ForeColor, BackColor and
5134                     Colorset but are used only if the window has the focus.
5135                     These styles replace the old commands HilightColor and
5136                     HilightColorset.
5137
5138                     BorderColorset takes the colorset number as its sole
5139                     argument and overrides the colors set by Color or
5140                     Colorset.  for the window border.  To stop using a
5141                     colorset, the argument is omitted.
5142
5143                     The HilightBorderColorset style option works similarly to
5144                     BorderColorset but is used when the window has the focus.
5145
5146                     !IconTitle disables displaying icon labels while the
5147                     opposite style IconTitle enables icon labels (default
5148                     behaviour).  NoIconTitle is equivalent to !IconTitle but
5149                     is deprecated.
5150
5151                     IconTitleColorset takes the colorset number as its sole
5152                     argument and overrides the colors set by Color or
5153                     Colorset.  To stop using this colorset, the argument is
5154                     omitted.
5155
5156                     HilightIconTitleColorset takes the colorset number as its
5157                     sole argument and overrides the colors set by
5158                     HilightColor or HilightColorset.  To stop using this
5159                     colorset, the argument is omitted.
5160
5161                     IconBackgroundColorset takes the colorset number as its
5162                     sole argument and uses it to set a background for the
5163                     icon picture.  By default the icon picture is not drawn
5164                     onto a background image.  To restore the default, the
5165                     argument is omitted.
5166
5167                     IconTitleRelief takes one numeric argument that may be
5168                     between -50 and +50 pixels and defines the thickness of
5169                     the 3D relief drawn around the icon title.  With negative
5170                     values the icon title gets a pressed in look.  The
5171                     default is 2 and it is restored if the argument is
5172                     omitted.
5173
5174                     IconBackgroundRelief takes one numeric argument that may
5175                     be between -50 and +50 pixels and defines the thickness
5176                     of the 3D relief drawn around the icon picture background
5177                     (if any).  With negative values the icon background gets
5178                     a pressed in look.  The default is 2 and it is restored
5179                     if the argument is omitted.
5180
5181                     IconBackgroundPadding takes one numeric argument that may
5182                     be between 0 and 50 pixels and defines the amount of free
5183                     space between the relief of the icon background picture
5184                     (if any) and the icon picture.  The default is 2 and it
5185                     is restored if the argument is omitted.
5186
5187                     The Font and IconFont options take the name of a font as
5188                     their sole argument.  This font is used in the window or
5189                     icon title.  By default the font given in the DefaultFont
5190                     command is used.  To revert back to the default, use the
5191                     style without the name argument.  These styles replace
5192                     the older WindowFont and IconFont commands.
5193
5194                     The IndexedWindowName style causes fvwm to use window
5195                     titles in the form
5196
5197                         name (i)
5198
5199                     where name is the exact window name and i is an integer
5200                     which represents the i th window with name as window
5201                     name.  ExactWindowName restores the default which is to
5202                     use the exact window name.  IndexedIconName and
5203                     ExactIconName work the same as IndexedWindowName and
5204                     ExactWindowName styles but for the icon titles.
5205
5206              Title buttons
5207                     Button and !Button take a numeric argument which is the
5208                     number of the title-bar button which is to be shown or
5209                     omitted.  NoButton is equivalent to !Button but is
5210                     deprecated.
5211
5212                     MwmButtons makes the Maximize button look pressed-in when
5213                     the window is maximized.  See the MwmDecorMax flag in
5214                     ButtonStyle for more information.  To switch this style
5215                     off again, use the FvwmButtons style.
5216
5217              Borders
5218                     !Borders suppresses the window border (but not the title)
5219                     completely.  The Borders style enables them again.
5220                     Without borders, all other styles affecting window
5221                     borders are meaningless.
5222
5223                     MwmBorder makes the 3D bevel more closely match Mwm's.
5224                     FvwmBorder turns off the previous option.
5225
5226                     With the !Handles style, the window does not get the
5227                     handles in the window corners that are commonly used to
5228                     resize it.  With !Handles, the width from the BorderWidth
5229                     style is used.  By default, or if Handles is specified,
5230                     the width from the HandleWidth style is used.  NoHandles
5231                     is equivalent to !Handles but is deprecated.
5232
5233                     HandleWidth takes a numeric argument which is the width
5234                     of the border to place the window if it does have
5235                     resize-handles.  Using HandleWidth without an argument
5236                     restores the default.
5237
5238                     BorderWidth takes a numeric argument which is the width
5239                     of the border to place the window if it does not have
5240                     resize-handles.  It is used only if the !Handles style is
5241                     specified too.  Using BorderWidth without an argument
5242                     restores the default.
5243
5244                     DepressableBorder makes the border parts of the window
5245                     decoration look sunken in when a button is pressed over
5246                     them.  This can be disabled again with the FirmBorder
5247                     style.
5248
5249              Icons, shading, maximizing, movement, resizing
5250                     Icon takes an (optional) unquoted string argument which
5251                     is the icon bitmap or pixmap to use.  Icons specified
5252                     this way override pixmap icons, but not icon windows or
5253                     the ewmh icon, provided by the client in the application
5254                     (with the WM_HINTS property or with the ewmh _NET_WM_ICON
5255                     property).  The IconOverride style changes the behavior
5256                     to override any client-provided icons; the NoIconOverride
5257                     style changes the behavior to not override any
5258                     client-provided icons; the default overriding behavior
5259                     can be activated with the NoActiveIconOverride style.
5260                     With this style, fvwm uses application provided icons if
5261                     the icon is changed but uses the icon provided in the
5262                     configuration file until then.
5263
5264                     There is one exception to these rules, namely
5265
5266                         Style * Icon unknown.xpm
5267
5268                     doesn't force the unknown.xpm icon on every window, it
5269                     just sets the default icon like the DefaultIcon command.
5270                     If you really want all windows to have the same icon, you
5271                     can use
5272
5273                         Style ** Icon unknown.xpm
5274
5275                     If the NoIcon attribute is set then the specified window
5276                     simply disappears when it is iconified.  The window can
5277                     be recovered through the window-list.  If Icon is set
5278                     without an argument then the NoIcon attribute is cleared
5279                     but no icon is specified.  An example which allows only
5280                     the FvwmPager module icon to exist:
5281
5282                         Style * NoIcon
5283                         Style FvwmPager Icon
5284
5285                     IconBox takes no argument, four numeric arguments (plus
5286                     optionally a screen specification), an X11 geometry
5287                     string or the string "none":
5288
5289                         IconBox [screen scr-spec] l t r b
5290
5291                     or
5292
5293                         IconBox geometry
5294
5295                     Where l is the left coordinate, t is the top, r is right
5296                     and b is bottom.  Negative coordinates indicate distance
5297                     from the right or bottom of the screen.  If the first
5298                     argument is the word screen, the scr-spec argument
5299                     specifies the Xinerama screen on which the IconBox is
5300                     defined.  It can be the usual screen Xinerama
5301                     specification, 'p', ´c', 'g', a screen number or the
5302                     additional 'w' for the screen where the window center is
5303                     located.  This is only useful with multiple Xinerama
5304                     screens.  The "l t r b" specification is more flexible
5305                     than an X11 geometry.  For example:
5306
5307                         IconBox -80 240 -1 -1
5308
5309                     defines a box that is 80 pixels wide from the right edge,
5310                     240 pixels down from the top, and continues to the bottom
5311                     of the screen.
5312
5313                     Perhaps it is easier to use is an X11 geometry string
5314                     though:
5315
5316                         IconBox 1000x70-1-1
5317
5318                     places an 1000 by 70 pixel icon box on the bottom of the
5319                     screen starting in the lower right hand corner of the
5320                     screen.  One way to figure out a geometry like this is to
5321                     use a window that resizes in pixel increments, for
5322                     example, xv.  Then resize and place the xv window where
5323                     you want the iconbox.  Then use FvwmIdent to read the
5324                     windows geometry.  The icon box is a region of the screen
5325                     where fvwm attempts to put icons for any matching window,
5326                     as long as they do not overlap other icons.  Multiple
5327                     icon boxes can be defined as overflow areas.  When the
5328                     first icon box is full, the second one is filled.  All
5329                     the icon boxes for one style must be defined in one Style
5330                     command.  For example:
5331
5332                         Style * IconBox -80 240 -1 -1, \
5333                                 IconBox 1000x70-1-1
5334
5335                     A Style command with the IconBox option replaces any icon
5336                     box defined previously by another Style command for the
5337                     same style.  Thats why the backslash in the previous
5338                     example is required.
5339
5340                     Note: The geometry for the icon box command takes the
5341                     additional screen specifier "@w" in case a Xinerama setup
5342                     is used.  This designates the screen where the window
5343                     center is located.  The additional screen specifier is
5344                     not allowed anywhere else.
5345
5346                     If you never define an icon box, or you fill all the icon
5347                     boxes, fvwm has a default icon box that covers the
5348                     screen, it fills top to bottom, then left to right, and
5349                     has an 80x80 pixel grid.  To disable all but the default
5350                     icon box you can use IconBox without arguments in a
5351                     separate Style command.  To disable all icon boxes
5352                     including the default icon box, the argument "none" can
5353                     be specified.
5354
5355                     Hint: You can auto arrange your icons in the icon box
5356                     with a simple fvwm function.  Put the
5357                     "DeiconifyAndRearrange" function below in your
5358                     configuration file:
5359
5360                         AddToFunc DeiconifyAndRearrange
5361                          + C Iconify off
5362                          + C All (CurrentPage, Iconic) PlaceAgain Icon
5363
5364                     And then replace all places where you call the Iconify
5365                     command to de-iconify an icon with a call to the new
5366                     function.  For example replace
5367
5368                         AddToFunc IconFunc
5369                          + C Iconify off
5370                          + M Raise
5371                          + M Move
5372                          + D Iconify off
5373
5374                         Mouse 1 I A Iconify off
5375
5376                     with
5377
5378                         AddToFunc IconFunc
5379                          + C DeiconifyAndRearrange
5380                          + M Raise
5381                          + M Move
5382                          + D DeiconifyAndRearrange
5383
5384                         Mouse 1 I A DeiconifyAndRearrange
5385
5386                     IconGrid takes 2 numeric arguments greater than zero.
5387
5388                         IconGrid x y
5389
5390                     Icons are placed in an icon box by stepping through the
5391                     icon box using the x and y values for the icon grid,
5392                     looking for a free space.  The default grid is 3 by 3
5393                     pixels which gives a tightly packed appearance.  To get a
5394                     more regular appearance use a grid larger than your
5395                     largest icon.  Use the IconSize definition to clip an
5396                     icon to a maximum size.  An IconGrid definition must
5397                     follow the IconBox definition that it applies to:
5398
5399                         Style * IconBox -80x240-1-1, IconGrid 90 90
5400
5401                     IconFill takes 2 arguments.
5402
5403                         IconFill Bottom Right
5404
5405                     Icons are placed in an icon box by stepping through the
5406                     icon box using these arguments to control the direction
5407                     the box is filled in.  By default the direction is left
5408                     to right, then top to bottom.  This would be expressed
5409                     as:
5410
5411                         IconFill left top
5412
5413                     To fill an icon box in columns instead of rows, specify
5414                     the vertical direction (top or bottom) first.  The
5415                     directions can be abbreviated or spelled out as follows:
5416                     "t", "top", "b", "bot", "bottom", "l", "lft", "left",
5417                     "r", "rgt", "right".  An IconFill definition must follow
5418                     the IconBox definition that it applies to:
5419
5420                         Style * IconBox -80x240-1-1, IconFill b r
5421
5422                     IconSize sets limits on the size of an icon image.  Both
5423                     user-provided and application-provided icon images are
5424                     affected.
5425
5426                         IconSize [ width height [ maxwidth maxheight ] ]
5427
5428                     All arguments are measured in pixels.  When all four
5429                     arguments are passed to IconSize, width and height
5430                     represent the minimum size of an icon, and maxwidth and
5431                     maxheight represent the maximum size of an icon.  Icon
5432                     images that are smaller than the minimum size are padded.
5433                     Icon images that are bigger than the maximum size are
5434                     clipped.
5435
5436                     If only two arguments are passed to IconSize, width and
5437                     height represent the absolute size of an icon.  Icons
5438                     covered by this style are padded or clipped to achieve
5439                     the given size.
5440
5441                     If no arguments are specified, the default values are
5442                     used for each dimension.  This effectively places no
5443                     limits on the size of an icon.
5444
5445                     The value of "-1" can be used in place of any of the
5446                     arguments to specify the default value for that
5447                     dimension.
5448
5449                     Note that application-provided icon windows are not
5450                     affected.
5451
5452                     MiniIcon specifies a pixmap to use as the miniature icon
5453                     for the window.  This miniature icon can be drawn in a
5454                     title-bar button (see ButtonStyle), and can be used by
5455                     various fvwm modules (FvwmWinList, FvwmIconMan and
5456                     FvwmTaskBar).  It takes the name of a pixmap as an
5457                     argument.
5458
5459                     WindowShadeShrinks and WindowShadeScrolls control if the
5460                     contents of a window that is being shaded with the
5461                     WindowShade command are scrolled (default) or if they
5462                     stay in place.  The shrinking mode is a bit faster
5463
5464                     The WindowShadeSteps option selects the number of steps
5465                     for animation when shading a window with WindowShade.  It
5466                     takes one number as its argument.  If the number has a
5467                     trailing 'p' it sets the number of pixels to use as the
5468                     step size instead of a fixed number of steps.  0 disables
5469                     the animation.  This happens too if the argument is
5470                     omitted or invalid.
5471
5472                     The WindowShade command has two modes of operation: busy
5473                     and lazy shading.  Busy shading can be 50% slower than
5474                     lazy shading, but the latter can look strange under some
5475                     conditions, for example, if the window borders, buttons
5476                     or the title are filled with a tiled pixmap.  Also, the
5477                     window handles are not drawn in lazy mode and the border
5478                     relief may only be drawn partially right before the
5479                     window reaches the shaded state or tight after leaves the
5480                     unshaded state.  By default, fvwm uses lazy mode if there
5481                     are no bad visual effects (not counting the window
5482                     handles) and busy mode otherwise.  Use the
5483                     WindowShadeAlwaysLazy or WindowShadeBusy to force using
5484                     the lazy or busy mode.  The default setting is restored
5485                     with WindowShadeLazy.
5486
5487                     ResizeOpaque instructs fvwm to resize the corresponding
5488                     windows with their contents visible instead of using an
5489                     outline.  Since this causes the application to redraw
5490                     frequently it can be quite slow and make the window
5491                     flicker excessively, depending on the amount of graphics
5492                     the application redraws.  The ResizeOutline style
5493                     (default) negates the ResizeOpaque style.  Many
5494                     applications do not like their windows being resized
5495                     opaque, e.g. XEmacs, Netscape or terminals with a pixmap
5496                     background.  If you do not like the result, do not use
5497                     the ResizeOpaque style for these windows.  To exempt
5498                     certain windows from opaque resizing you could use these
5499                     lines in your configuration file:
5500
5501                         Style * ResizeOpaque
5502                         Style rxvt ResizeOutline
5503                         Style emacs ResizeOutline
5504
5505                     Sticky makes the window sticky, i.e. it is always visible
5506                     on each page and each desk.  The opposite style, Slippery
5507                     reverts back to the default.
5508
5509                     StickyIcon makes the window sticky when its iconified.
5510                     It de-iconifies on top the active desktop.  SlipperyIcon
5511                     reverts back to the default.
5512
5513                     StickyAcrossPages and StickyAcrossPagesIcon work like
5514                     Sticky and StickyIcon, but stick the window only across
5515                     pages, not desks while StickyAcrossDesks and
5516                     StickyAcrossDesksIcon works the other way round.
5517
5518                     Windows that have been marked as Sticky or
5519                     StickyAcrossDesks or StickyAcrossPages will have stipples
5520                     drawn on the titlebar.  This can be negated with the
5521                     !StickyStippledTitle style.  The style
5522                     StickyStippledTitle puts back the stipples where that
5523                     window has also been marked as Sticky.  Note that this is
5524                     the default style for Sticky windows.  Sticky icons will
5525                     have stipples drawn on the icon title.  This can be
5526                     disabled in the same way with the
5527                     !StickyStippledIconTitle style.
5528
5529                     Windows with the StartIconic style are shown as icons
5530                     initially.  Note that some applications counteract that
5531                     by deiconifying themselves.  The default is to not
5532                     iconify windows and can be set with the StartNormal
5533                     style.
5534
5535                     StickyIcon makes the window sticky when its iconified.
5536                     It de-iconifies on top the active desktop.  SlipperyIcon
5537                     reverts back to the default.
5538
5539                     StickyIconPage works like StickyIcon, but sticks the icon
5540                     only across pages, not desks while StickyIconDesk works
5541                     the other way round.
5542
5543                     StippledIconTitle works like StippledTitle in that it
5544                     draws stipples on the titles of icons but doesn't make
5545                     the icon sticky.
5546
5547                     IgnoreRestack makes fvwm ignore attempts of clients to
5548                     raise or lower their own windows.  By default, the
5549                     opposite style, AllowRestack is active.
5550
5551                     FixedPosition and FixedUSPosition make fvwm ignore
5552                     attempts of the user to move the window.  It is still
5553                     possible to move the window by resizing it.  To allow the
5554                     user to move windows, use the VariablePosition or
5555                     VariableUSPosition style.
5556
5557                     FixedSize and FixedUSSize make fvwm ignore attempts of
5558                     the user to resize the window.  To allow the user to
5559                     resize windows, use the VariableSize or VariableUSSize
5560                     style.
5561
5562                     FixedPPosition and FixedPSize make fvwm ignore attempts
5563                     of the program to move or resize its windows.  To allow
5564                     this kind of actions, use the VariablePPosition or
5565                     VariablePSize style.  These styles may sometimes affect
5566                     the initial placement and dimensions of new windows
5567                     (depending on the application).  If windows are created
5568                     at strange places, try either the VariablePPosition or
5569                     NoPPosition styles.  The FixedPSize style may screw up
5570                     window dimensions for some applications.  Do Not use this
5571                     style in this case.
5572
5573                     MoveByProgramMethod affects how fvwm reacts to requests
5574                     by the application to move its windows.  By default, fvwm
5575                     tries to detect which method to use, but it sometimes
5576                     detects the wrong method.  You may come across a window
5577                     that travels across the screen by a few pixels when the
5578                     application resizes it, moves to a screen border with the
5579                     frame decorations off screen, that remembers its position
5580                     for the next time it starts but appears in a slighly
5581                     shifted position, or that attepmts to become full screen
5582                     but has the.  Try out both options, UseGravity and
5583                     IgnoreGravity on the window (and that window only) and
5584                     see if that helps.  By default, fvwm uses the AutoDetect
5585                     method.  Once the method was detected, it is never
5586                     changed again.  As long as fvwm can not detect the proper
5587                     method, it uses IgnoreGravity.  To force fvwm to retry
5588                     the detection, use one of the other two options first and
5589                     then use AutoDetect again.
5590
5591                     Note: This option was introduced to alleviate a problem
5592                     with the ICCCM specification.  The ICCCM clearly states
5593                     that the UseGravity option should be used, but
5594                     traditionally applications ignored this rule.
5595
5596                     Closable enables the functions Close, Delete and Destroy
5597                     to be performed on the windows.  This is on by default.
5598                     The opposite, !Closable, inhibits the window to be
5599                     closed.
5600
5601                     Iconifiable enables the function Iconify to be performed
5602                     on the windows.  This is on by default.  The opposite,
5603                     !Iconifiable, inhibits the window from being iconified.
5604
5605                     Maximizable enables the function Maximize to be performed
5606                     on the windows.  This is on by default.  The opposite,
5607                     !Maximizable, inhibits the window from being maximized.
5608
5609                     AllowMaximizeFixedSize enables the function Maximize to
5610                     be performed on windows that are not resizable, unless
5611                     maximization has been disabled either using the style
5612                     !Maximizable or through WM hints.  This is on by default.
5613                     The opposite, !AllowMaximizeFixedSize, inhibits all
5614                     windows that are not resizable from being maximized.
5615
5616                     ResizeHintOverride instructs fvwm to ignore the program
5617                     supplied minimum and maximum size as well as the resize
5618                     step size (the character size in many applications).
5619                     This can be handy for broken applications that refuse to
5620                     be resized.  Do not use it if you do not need it.  The
5621                     default (opposite) style is NoResizeOverride.
5622
5623                     MinWindowSize [ width [ p ] height [ p ] ] Tells fvwm the
5624                     minimum width and height of a window.  The values are the
5625                     percentage of the total screen area.  If the letter 'p'
5626                     is appended to either of the values, the numbers are
5627                     interpreted as pixels.  This command is useful for
5628                     certain versions of xemacs which freak out if their
5629                     windows become too small.  If you omit he parameters or
5630                     their values are invalid, both limits are set to 0 pixels
5631                     (which is the default value).
5632
5633                     MaxWindowSize [ width [ p ] height [ p ] ] Tells fvwm the
5634                     maximum width and height of a window.  The values are the
5635                     percentage of the total screen area.  If the letter 'p'
5636                     is appended to either of the values, the numbers are
5637                     interpreted as pixels.  This command is useful to force
5638                     large application windows to be fully visible.  Neither
5639                     height nor width may be less than 100 pixels.  If you
5640                     omit the parameters or their values are invalid, both
5641                     limits are set to 32767 pixels (which is the default).
5642
5643                     With IconifyWindowGroups all windows in the same window
5644                     group are iconified and deiconified at once when any
5645                     window in the group is (de)iconified.  The default is
5646                     IconifyWindowGroupsOff, which disables this behavior.
5647                     Although a number of applications use the window group
5648                     hint, it is rarely used in a proper way, so it is
5649                     probably best to use IconifyWindowGroups only for
5650                     selected applications.
5651
5652                     The option SnapAttraction affects interactive window
5653                     movement: If during an interactive move the window or
5654                     icon comes within proximity pixels of another the window
5655                     or icon, it is moved to make the borders adjoin.  The
5656                     default of 0 means that no snapping happens.  Calling
5657                     this command without arguments turns off snap attraction
5658                     and restores the default behavior.  Please refer also to
5659                     the SnapGrid command.
5660
5661                     The behavior argument is optional and may be set to one
5662                     of the four following values: With All both icons and
5663                     windows snap to other windows and other icons.  SameType
5664                     lets snap windows only to other windows and icons only to
5665                     other icons.  With Windows windows snap only to other
5666                     windows.  Icons do not snap.  Similarly with Icons icons
5667                     snap to only other icons and windows do not snap.
5668
5669                     If the behavior option is not given, the snapping
5670                     behavior is not changed.  The default behavior is All.
5671
5672                     If the Screen option is present windows and or icons are
5673                     snapped to the screen edges too.
5674
5675                     The option SnapGrid defines an invisible grid on the
5676                     screen.  During an interactive move a window or icon is
5677                     positioned such that its location (top left corner) is
5678                     coincident with the nearest grid point.  The default
5679                     x-grid-size and y-grid-size setting are both 1, which is
5680                     effectively no grid all.
5681
5682                     An interactive move with both SnapGrid and SnapAttraction
5683                     results in the window being moved to be adjacent to the
5684                     nearest window border (if within snap proximity) or grid
5685                     position.  The window moves the shortest distance
5686                     possible to satisfy both SnapGrid and SnapAttraction.
5687                     Note that the x and y coordinates are not coupled.  For
5688                     example, a window may snap to another window on the x
5689                     axis while snapping to a grid point on the y axis.  Using
5690                     this style without arguments reinstates the default
5691                     settings.
5692
5693                     The styles EdgeMoveDelay and EdgeResizeDelay tells how
5694                     hard it should be to change the desktop viewport by
5695                     moving or resizing a window over the edge of the screen.
5696                     The parameter tells how many milliseconds the pointer
5697                     must spend on the screen edge before fvwm moves the
5698                     viewport.  The command EdgeScroll determines how far the
5699                     viewport is scrolled.  If -1 is given as the delay, page
5700                     flipping is disabled completely.  The defaults are no
5701                     delay for moving (0) and no flipping for resizing (-1).
5702                     Using these styles without any argument restores the
5703                     default settings.  Note that, with
5704
5705                         EdgeScroll 0 0
5706
5707                     it is still possible to move or resize windows across the
5708                     edge of the current screen.  See also EdgeThickness.
5709
5710                     The option EdgeMoveResistance makes it easier to place a
5711                     window directly adjacent to the screen's or xinerama
5712                     screen's border.  It takes one or two parameters.  The
5713                     first parameter tells how many pixels over the edge of
5714                     the screen a window's edge must move before it actually
5715                     moves partially off the screen.  The optional second
5716                     parameter does the same as the first, but for individual
5717                     Xinerama screens.  If omitted, the value of the first
5718                     parameter is assumed for this type of movement.  Set the
5719                     second parameter to 0 to zero to ignore individual
5720                     xinerama screen edges.  Note that the center of the
5721                     window being moved determines the xinerama screen on
5722                     which the window should be kept.  Both values are 0 by
5723                     default.  To restore the defaults, the option
5724                     EdgeMoveResistance can be used without any parameters.
5725
5726              Window Manager placement
5727                     Applications can place windows at a particular spot on
5728                     the screen either by window manager hints or a geometry
5729                     specification.  When they do neither, then the window
5730                     manager steps in to find a place for the window.  Fvwm
5731                     knows several ways to deal with this situation.  The
5732                     default is TileCascadePlacement.
5733
5734                     PositionPlacement [Center|UnderMouse|move-arguments] When
5735                     used without an argument, new windows are placed in the
5736                     top left corner of the display.  With the argument
5737                     Center, all new window appear at the center of the
5738                     screen, and with UnderMouse, windows are centered under
5739                     the mouse pointer.  If any other move-arguments are
5740                     given, they are interpreted exactly as the Move command
5741                     does (with the exception that references to the current
5742                     window position do not work as the window has not been
5743                     placed yet).
5744
5745                     CascadePlacement automatically place new windows in a
5746                     cascading fashion.
5747
5748                     TileCascadePlacement automatically places new windows in
5749                     a smart location - a location in which they do not
5750                     overlap any other windows on the screen.  If no such
5751                     position can be found CascadePlacement is used as a
5752                     fall-back method.
5753
5754                     TileManualPlacement This is the same as
5755                     TileCascadePlacement, but uses ManualPlacement as the
5756                     fall-back method.
5757
5758                     MinOverlapPlacement automatically places new windows in a
5759                     location in which the overlapping area in pixels of other
5760                     windows is minimized.  By default this placement policy
5761                     tries to avoid overlapping icons and windows on higher
5762                     layers.  This can be configured with the
5763                     MinOverlapPlacementPenalties style.
5764
5765                     MinOverlapPercentPlacement is similar to
5766                     MinOverlapPlacement but tries to minimize the overlapped
5767                     percentages of other windows instead of the overlapped
5768                     area in pixels.  This placement policy tries to avoid
5769                     covering other windows completely and tries even harder
5770                     not to cover small windows.  This can be configured with
5771                     the MinOverlapPlacementPenalties and
5772                     MinOverlapPercentPlacementPenalties styles.
5773
5774                     MinOverlapPlacementPenalties takes at most 6 positive or
5775                     null decimal arguments:
5776
5777                         normal ontop icon sticky below strut
5778
5779                     if trailing arguments are missing the default is used
5780                     which is:
5781
5782                         1 5 10 1 0.05 50
5783
5784                     To reset this style to the default values, prefix it with
5785                     a '!'.  This style configures the MinOverlapPlacement and
5786                     MinOverlapPercentPlacement placement policy.  The normal
5787                     factor affects normal windows, the ontop factor affects
5788                     windows with a greater layer than the window being
5789                     placed, the icon factor affects icons, the sticky factor
5790                     affects sticky windows, the below factor affects windows
5791                     with a smaller layer than the window being placed, the
5792                     strut factor affects the complement of the EWMH working
5793                     area if the window being placed has the
5794                     EWMHPlacementUseWorkingArea style and windows with an
5795                     EWMH strut hint (i.e., a "please do not cover me" hint)
5796                     if the window being placed has the
5797                     EWMHPlacementUseDynamicWorkingArea style.  These factors
5798                     represent the amount of area that these types of windows
5799                     (or area) are counted as, when a new window is placed.
5800                     For example, by default the area of ontop windows is
5801                     counted 5 times as much as normal windows.  So
5802                     MinOverlapPlacement and MinOverlapPercentPlacement covers
5803                     5 times as much area of another window before it will
5804                     cover an ontop window.  To treat ontop windows the same
5805                     as other windows, set this to 1.  To really, really avoid
5806                     putting windows under ontop windows, set this to a high
5807                     value, say 1000.  This style affects the window already
5808                     mapped and not the window which is currently placed.
5809                     There is one exception to this rule: in the case of the
5810                     window being placed has the EWMHPlacementUseWorkingArea
5811                     style the strut factor affects the placed window.
5812
5813                     MinOverlapPercentPlacementPenalties takes at most 4
5814                     positive or null integer arguments:
5815
5816                         cover_100 cover_95 cover_85 cover_75
5817
5818                     if trailing arguments are missing the defaults are used
5819                     which are:
5820
5821                         12 6 4 1
5822
5823                     To reset this style to the default values, prefix it with
5824                     a '!'.  This style affects the MinOverlapPercentPlacement
5825                     placement policy and is similar to the
5826                     MinOverlapPlacementPenalties style.  The cover_xx factor
5827                     is used when the window being placed covers at least xx
5828                     percent of the window.  This factor is added to the
5829                     factor determined by the MinOverlapPlacementPenalties
5830                     style.
5831
5832                     ManualPlacement (aka active placement).  The user is
5833                     required to place every new window manually.  The window
5834                     only shows as a rubber band until a place is selected
5835                     manually.  The window is placed when a mouse button or
5836                     any key except Escape is pressed.  Escape aborts manual
5837                     placement which places the window in the top left corner
5838                     of the screen.  If mouse button 2 is pressed during the
5839                     initial placement of a window (respectively Shift and
5840                     mouse button 1 in case Mwm emulation has been enabled
5841                     with the Emulate command), the user is asked to resize
5842                     the window too.
5843
5844                     It is possible to define buttons usable to place windows
5845                     with the Move command and the special context 'P' for
5846                     placement (see Move command).  However, you can't
5847                     redefine the way to also resize the window other than the
5848                     way it is affected by the Emulate command.  The button
5849                     used for placing the window can be checked with the
5850                     PlacedByButton condition (see Current command).
5851
5852                     Example:
5853
5854                         Style * ManualPlacement
5855
5856                         *FvwmEvent: PassID
5857                         *FvwmEvent: add_window GrowDownFunc
5858                         AddToFunc StartFunction
5859                         + I FvwmEvent
5860
5861                         AddToFunc GrowDownFunc
5862                         + I windowid $0 (PlacedByButton 3) \
5863                           Resize bottomright keep -0p
5864
5865                     Now, whenever a window is created and the user presses
5866                     button 3 to finish initial placement, the window is
5867                     automatically enlarged until it hits the bottom screen
5868                     border.
5869
5870                     Old placement styles DumbPlacement / SmartPlacement /
5871                     SmartPlacementOff, CleverPlacement / CleverPlacementOff,
5872                     ActivePlacement / RandomPlacement,
5873                     ActivePlacementsHonorsStartsOnPage /
5874                     ActivePlacementsHonorsStartsOnPageOff, GlobalOpts
5875                     SmartPlacementIsReallySmart / GlobalOpts
5876                     SmartPlacementIsNormal are still supported but will be
5877                     removed in the future.  The old and new styles can be
5878                     translated according to the following table:
5879
5880                         GlobalOpts SmartPlacementIsReallySmart
5881                         Style * SmartPlacement
5882                         -->
5883                         Style * SmartPlacement, CleverPlacement
5884
5885                         GlobalOpts SmartPlacementIsNormal
5886                         Style * SmartPlacement
5887                           -->
5888                         Style * SmartPlacement, CleverPlacementOff
5889
5890                         Style * DumbPlacement, RandomPlacement
5891                           -->
5892                         Style * CascadePlacement
5893
5894                         Style * DumbPlacement, ActivePlacement
5895                           -->
5896                         Style * ManualPlacement
5897
5898                         Style * SmartPlacement, \
5899                         RandomPlacement, CleverPlacementOff
5900                           -->
5901                         Style * TileCascadePlacement
5902
5903                         Style * SmartPlacement, \
5904                         ActivePlacement, CleverPlacementOff
5905                           -->
5906                         Style * TileManualPlacement
5907
5908                         Style * SmartPlacement, CleverPlacement
5909                           -->
5910                         Style * MinOverlapPlacement
5911
5912                         Style * SmartPlacement, \
5913                         ActivePlacement, CleverPlacement
5914                           -->
5915                         Style * MinOverlapPercentPlacement
5916
5917                         Style * ActivePlacementsHonorsStartsOnPage
5918                           -->
5919                         Style * ManualPlacementsHonorsStartsOnPage
5920
5921                         Style * ActivePlacementsHonorsStartsOnPageOff
5922                           -->
5923                         Style * ManualPlacementsHonorsStartsOnPageOff
5924
5925              Placement policy options and window stacking
5926                     NoUsePPosition instructs fvwm to ignore the program
5927                     specified position (PPosition hint) when adding new
5928                     windows.  Using PPosition is required for some
5929                     applications, but if you do not have one of those its a
5930                     real headache.  Many programs set PPosition to something
5931                     obnoxious like 0,0 (upper left corner).  Note:
5932                     !UsePPosition is equivalent to the deprecated option
5933                     NoPPosition
5934
5935                     NoUseUSPosition works like !UsePPosition but applies
5936                     suppresses using the user specified position indicated by
5937                     the program (USPosition hint).  It is generally a bad
5938                     thing to override the user's choice, but some
5939                     applications misuse the USPosition hint to force their
5940                     windows to a certain spot on the screen without the
5941                     user's consent.  Note: !UseUSPosition is equivalent to
5942                     the deprecated option !USPosition
5943
5944                     NoUseTransientPPosition and UseTransientPPosition work
5945                     like !UsePPosition and UsePPosition but apply only to
5946                     transient windows.  Note: !UseTransientPPosition is
5947                     equivalent to the deprecated option !TransientPPosition
5948
5949                     NoUseIconPosition instructs fvwm to ignore the program
5950                     specified icon position (IconPosition hint) when
5951                     iconifying the window.  Note: !UseIconPosition is
5952                     equivalent to the deprecated option !IconPosition
5953
5954                     StartsOnDesk takes a numeric argument which is the
5955                     desktop number on which the window should be initially
5956                     placed.  Note that standard Xt programs can also specify
5957                     this via a resource (e.g. "-xrm '*Desk: 1'").
5958
5959                     StartsOnPage takes 1, 2, or 3 numeric arguments.  If one
5960                     or three arguments are given, the first (or only)
5961                     argument is the desktop number.  If three arguments are
5962                     given, the 2nd and 3rd arguments identify the x,y page
5963                     position on the virtual window.  If two arguments are
5964                     given, they specify the page position, and indicate no
5965                     desk preference.  If only one argument is given,
5966                     StartsOnPage functions exactly like StartsOnDesk.  For
5967                     those standard Xt programs which understand this usage,
5968                     the starting desk/page can also be specified via a
5969                     resource (e.g., "-xrm '*page: 1 0 2'").  StartsOnPage in
5970                     conjunction with SkipMapping is a useful technique when
5971                     you want to start an app on some other page and continue
5972                     with what you were doing, rather than waiting for it to
5973                     appear.
5974
5975                     StartsOnScreen takes one argument.  It can be 'p' for the
5976                     primary screen, 'c' for the current screen (containing
5977                     the mouse pointer), 'g' for the global screen or the
5978                     screen number itself (counting from zero).  A new window
5979                     is placed on the specified Xinerama screen.  The default
5980                     is to place windows on the screen that contains the mouse
5981                     pointer at the time the window is created.  However,
5982                     those windows which are not placed by fvwm (i.e., those
5983                     with a USPosition hint from a user specified geometry)
5984                     are normally placed in a position relative to the global
5985                     screen.  The StartsOnScreen style is also useful to cause
5986                     these windows to be placed relative to a specific
5987                     Xinerama screen.  For example:
5988
5989                         Style * StartsOnScreen c
5990
5991                     Would cause all windows, including those with their own
5992                     geometry to be placed relative to the current Xinerama
5993                     screen rather than the global screen.  For those standard
5994                     Xt programs which understand this usage, the starting
5995                     desk/page can also be specified via a resource (e.g.,
5996                     "-xrm '*fvwmscreen: c'").  ('fvwmscreen' was chosen
5997                     because some applications already use ´.screen' for other
5998                     purposes.)
5999
6000                     StartsOnPageIncludesTransients causes the StartsOnPage
6001                     style to be applied even for transient windows.  This is
6002                     not usually useful, since transients are usually pop ups
6003                     that you want to appear in your visible viewport; but
6004                     occasionally an application uses a transient for
6005                     something like a startup window that needs to be coerced
6006                     into place.
6007
6008                     ManualPlacementIgnoresStartsOnPage suppresses
6009                     StartsOnPage or StartsOnDesk placement in the event that
6010                     both ManualPlacement and SkipMapping are in effect when a
6011                     window is created.  This prevents you from interactively
6012                     placing a window and then wondering where it disappeared
6013                     to, because it got placed on a different desk or page.
6014                     ManualPlacementHonorsStartsOnPage allows this to happen
6015                     anyway.  The option has no effect if SkipMapping is not
6016                     in effect, because fvwm switches to the proper desk/page
6017                     to perform interactive placement.  The default is
6018                     ManualPlacementIgnoresStartsOnPage;
6019                     ManualPlacementHonorsStartsOnPage matches the way the old
6020                     StartsOnDesk style used to handle the situation.
6021
6022                     CaptureHonorsStartsOnPage causes the initial capture (of
6023                     an already existing window) at startup to place the
6024                     window according to the StartsOnPage and StartsOnScreen
6025                     desk, page and Xinerama screen specification.
6026                     CaptureIgnoresStartsOnPage causes fvwm to ignore these
6027                     settings (including StartsOnDesk) on initial capture.
6028                     The default is CaptureIgnoresStartsOnPage.
6029
6030                     RecaptureHonorsStartsOnPage causes a window to be placed
6031                     according to, or revert to, the StartsOnPage and
6032                     StartsOnScreen desk, page and Xinerama screen
6033                     specification on Restart or Recapture.
6034                     RecaptureIgnoresStartsOnPage causes fvwm to respect the
6035                     current window position on Restart or Recapture.  The
6036                     default is RecaptureIgnoresStartsOnPage.
6037
6038                     Layer accepts one optional argument: a non-negative
6039                     integer.  This is the layer the window is put in.  If no
6040                     argument is given, any previously set value is deleted
6041                     and the default layer is implied.
6042
6043                     StaysOnTop puts the window in the top layer.  This layer
6044                     can be changed by the command DefaultLayers; the default
6045                     is 6.
6046
6047                     StaysPut puts the window in the put layer.  This layer
6048                     can be changed by the command DefaultLayers; the default
6049                     is 4.
6050
6051                     StaysOnBottom puts the window in the bottom layer.  This
6052                     layer can be changed by the command DefaultLayers; the
6053                     default is 2.
6054
6055                     StartsLowered instructs fvwm to put the window initially
6056                     at the bottom of its layer rather than the default
6057                     StartsRaised.
6058
6059                     StartShaded tells fvwm to shade the window.  An optional
6060                     direction argument may be given, which can be one of
6061                     "North", "South", "West", "East", "NorthWest",
6062                     "NorthEast", "SouthWest", "SouthEast" or if no direction
6063                     is given, the default is to shade north.
6064
6065                     SkipMapping tells fvwm not to switch to the desk the
6066                     window is on when it gets mapped initially (useful with
6067                     StartsOnDesk or StartsOnPage).
6068
6069                     KeepWindowGroupsOnDesk makes new windows that have the
6070                     window group hint set appear on the same desk as the
6071                     other windows of the same group.  Since this behavior may
6072                     be confusing, the default setting is ScatterWindowGroups.
6073                     The window group hint is ignored when placing windows in
6074                     this case.
6075
6076              Transient windows
6077                     DecorateTransient causes transient windows, which are
6078                     normally left undecorated, to be given the usual fvwm
6079                     decorations (title bar, buttons, etc.).  Note that some
6080                     pop-up windows, such as the xterm menus, are not managed
6081                     by the window manager and still do not receive
6082                     decorations.  NakedTransient (the default) causes
6083                     transient windows not to be given the standard
6084                     decorations.  You can only bind keys or mouse buttons to
6085                     the sides and the client part of an undecorated window
6086                     ('S' and ´W' contexts in bindings, see Mouse and Key
6087                     commands).
6088
6089                     A window with the RaiseTransient style that has transient
6090                     windows raises all its transients when it is raised.  The
6091                     DontRaiseTransient style disables this behavior.  All
6092                     windows are then treated as if they had no transients.
6093
6094                     A window with the LowerTransient style that has transient
6095                     windows lowers all its transients when it is lowered.
6096                     The DontLowerTransient style disables this behavior.  All
6097                     windows are then treated as if they had no transients.
6098
6099                     The StackTransientParent style augments RaiseTransient
6100                     and LowerTransient styles.  Raising a window with
6101                     StackTransientParent style transfers the raise action to
6102                     the main window if the window being raised is a transient
6103                     and its main window has RaiseTransient style; this effect
6104                     makes raise on a transient act just like raise on its
6105                     main - the whole group is raised.  Similar behavior holds
6106                     for lowering a whole group of transients when the main
6107                     has LowerTransient style.  DontStackTransientParent turns
6108                     this behavior off.  (Dont)StackTransientParent has no
6109                     effect if RaiseTransient and LowerTransient are not used.
6110
6111                     A reasonable emulation of Motif raise/lower on transients
6112                     is possible like this
6113
6114                         Style * RaiseTransient
6115                         Style * LowerTransient
6116                         Style * StackTransientParent
6117
6118              Extended Window Manager Hints styles
6119                     To understand the used terminology in this sub section,
6120                     please read the Extended Window Manager Hints section.
6121
6122                     EWMHDonateIcon instructs fvwm to set the application ewmh
6123                     icon hint with the icon that is used by fvwm if the
6124                     application does not provide such hint (and if the icon
6125                     used by fvwm is not an icon window).  EWMHDonateMiniIcon
6126                     does the same thing for mini icons.  This allows
6127                     compliant pager, taskbar, iconbox ...etc to display the
6128                     same (mini) icons as fvwm.  Note that on some hardware
6129                     (e.g., 8-bit displays) these styles can slow down window
6130                     mapping and that in general only one of these styles is
6131                     needed by a compliant application.  EWMHDontDonateIcon
6132                     and EWMHDontDonateMiniIcon restore the defaults which are
6133                     to not set any ewmh (mini) icons hints.
6134
6135                     By default, if an application provides an ewmh icon hint
6136                     of small size (i.e., height and width less than or equal
6137                     to 22), then fvwm uses this icon as its mini icon.
6138                     EWMHMiniIconOverride instructs fvwm to ignore ewmh icons
6139                     and to use the mini icon provided by the MiniIcon style.
6140                     EWMHNoMiniIconOverride restores the default.
6141
6142                     EWMHUseStackingOrderHints causes fvwm to use EWMH hints
6143                     and respect EWMH hints which change the window layer.
6144                     EWMHIgnoreStackingOrderHints causes fvwm to ignore EWMH
6145                     layer hints.
6146
6147                     An application can ask for some reserved space on the
6148                     desktop by a hint.  In the EWMH terminology such a hint
6149                     is called a strut and it is used to compute the working
6150                     area and may be used for window placement and in the
6151                     maximize command.  EWMHIgnoreStrutHints causes fvwm to
6152                     ignore such hints, as EWMHUseStrutHints, causes fvwm to
6153                     use it which is the default.
6154
6155                     EWMHIgnoreStateHints causes fvwm to ignore initial EWMH
6156                     state hints when a new window is mapped.  The default
6157                     EWMHUseStateHints causes fvwm to accept such hints.
6158
6159                     EWMHIgnoreWindowType causes fvwm to ignore EWMH window
6160                     type specification.  The default !EWMHIgnoreWindowType
6161                     causes fvwm to style windows of specified types as such.
6162
6163                     EWMHMaximizeIgnoreWorkingArea causes fvwm to ignore the
6164                     EWMH working area when it executes a Maximize command.
6165                     With EWMHMaximizeUseWorkingArea the EWMH working area is
6166                     used as with EWMHMaximizeUseDynamicWorkingArea the EWMH
6167                     dynamic working area is used (the default).
6168
6169                     EWMHPlacementIgnoreWorkingArea causes fvwm to ignore the
6170                     EWMH working area when it places (or places again) a
6171                     window.  With EWMHPlacementUseWorkingArea the EWMH
6172                     working area is taken in account as with
6173                     EWMHPlacementUseDynamicWorkingArea the EWMH dynamic
6174                     working area is taken in account (the default).  Note
6175                     that with the MinOverlapPlacement and
6176                     MinOverlapPercentPlacement placement policy, the way the
6177                     EWMH (dynamic) working area is taken in account is
6178                     configurable with the MinOverlapPlacementPenalties style.
6179
6180              Miscellaneous
6181                     The BackingStore, BackingStoreOff and
6182                     BackingStoreWindowDefault determine if the X server uses
6183                     backing store for the window or not.  BackingStore means
6184                     that the X server tries to keep the obscured parts of a
6185                     window in memory.  This is usually slower if the client
6186                     runs on the same machine as the X server, but can be much
6187                     faster if the connection is slow (see also SaveUnder
6188                     below).  BackingStoreOff disables backing store for the
6189                     window.  By default, fvwm does not enable or disable
6190                     backing store itself but leaves is as the window
6191                     requested it.  To revert back to the application's
6192                     choice, use the BackingStoreWindowDefault style.
6193
6194                     Note: This style is useless if the X server does not
6195                     allow backing store.
6196
6197                     SaveUnder enables the corresponding window attribute in
6198                     the X server.  For a window using this style, the X
6199                     server tries to store the graphics below it in memory
6200                     which is usually slower if the client runs on the same
6201                     machine as the X server.  SaveUnder may speed up fvwm if
6202                     the connection to the X server is slow (e.g. over a modem
6203                     link).  To disable save under, use the SaveUnderOff
6204                     style.  This is the default.  See also BackingStore
6205                     above.
6206
6207                     Note: This style is useless if the X server does not
6208                     allow save under.
6209
6210                     ParentalRelativity enables clients that use a background
6211                     pixmap of type ParentRelative to achieve transparency.
6212                     Fvwm modules that support transparent colorsets require
6213                     this setting.  Opacity is the default and should be used
6214                     for all non-transparent clients for better performance.
6215
6216                     MwmDecor makes fvwm attempt to recognize and respect the
6217                     mwm decoration hints that applications occasionally use.
6218                     To switch this style off, use the NoDecorHint style.
6219
6220                     MwmFunctions makes fvwm attempt to recognize and respect
6221                     the mwm prohibited operations hints that applications
6222                     occasionally use.  HintOverride makes fvwm shade out
6223                     operations that mwm would prohibit, but it lets you
6224                     perform the operation anyway.  NoFuncHint allows turns
6225                     off the mwm hints completely.
6226
6227                     OLDecor makes fvwm attempt to recognize and respect the
6228                     olwm and olvwm hints that many older XView and OLIT
6229                     applications use.  Switch this option off with NoOLDecor.
6230
6231                     With GNOMEIgnoreHints fvwm ignores all GNOME hints for
6232                     the window, even if GNOME compliance is compiled in.
6233                     This is useful for those pesky applications that try to
6234                     be more clever than the user and use GNOME hints to force
6235                     the window manager to ignore the user's preferences.  The
6236                     GNOMEUseHints style switches back to the default
6237                     behavior.
6238
6239                     UseDecor This style is deprecated and will be removed in
6240                     the future.  There are plans to replace it with a more
6241                     flexible solution in fvwm-3.0.
6242
6243                     UseDecor accepts one argument: the name of a decor
6244                     created with AddToDecor.  If no decor name is specified,
6245                     the "Default" decor is used.  Windows do not actually
6246                     contain decors, but are always assigned to one.  If the
6247                     decor is later modified with AddToDecor, the changes are
6248                     visible for all windows which are assigned to it.  The
6249                     decor for a window can be reassigned with ChangeDecor.
6250
6251                     UseStyle This style is deprecated and will be removed in
6252                     the future.  There are plans to replace it with a more
6253                     flexible solution in fvwm-3.0.
6254
6255                     UseStyle takes one arg, which is the name of another
6256                     style.  That way you can have unrelated window names
6257                     easily inherit similar traits without retyping.  For
6258                     example:
6259
6260                           Style rxvt UseStyle XTerm
6261
6262                     Warning: If a style is built from one or more parent
6263                     styles and the parent styles are changed, the derived
6264                     style is not modified.  To achieve this you have to issue
6265                     the UseStyle line again.
6266
6267                     Unmanaged Windows with the Unmanaged style option are
6268                     ignored by fvwm.  They are not decorated, can not be
6269                     moved or resized, etc.  You probably want to use Bugopts
6270                     RaiseOverUnmanaged too.  This option can be turned off
6271                     with the !Unmanaged style.  However, windows that are
6272                     already ignored at the time when the option is set must
6273                     be recaptured with the Recapture command in order to
6274                     become managed.
6275
6276                     State sets the initial value of one of the 32 user
6277                     defined states which are associated with each window.
6278                     The state number ranges from 0 to 31 and must be given as
6279                     an argument.  The states have no meaning in fvwm, but
6280                     they can be checked in conditional commands like Next
6281                     with the State condition and manipulated with the State
6282                     command.
6283
6284                         # turn on state 11 for xterms ...
6285                         Style xterm State 11
6286                         # ... but not for rxvts.
6287                         Style rxvt !State 11
6288
6289
6290                     Windows with the WindowListSkip styles do not appear in
6291                     the menu that is created with the WindowList command or
6292                     the lists shown in several modules like FvwmIconMan or
6293                     FvwmWinList.  In the modules, the style can usually be
6294                     ignored with an option.  Please refer to the man page of
6295                     the module in question for further information.  To
6296                     disable this feature, use the default style
6297                     WindowListHit.
6298
6299                     The styles CirculateSkip and CirculateHit control whether
6300                     the window is considered by conditional commands, for
6301                     example Next, Prev or All.  Windows with CirculateSkip,
6302                     are never selected by conditional commands.  However, the
6303                     styles can be overridden explicitly in the condition with
6304                     the CirculateHit, CirculateHitIcon or CirculateHitShaded
6305                     conditions, and some conditional commands, e.g.  Current
6306                     and All, do this by default.  The styles
6307                     CirculateSkipIcon, CirculateHitIcon, CirculateSkipShaded
6308                     and CirculateHitShaded work like CirculateSkip and
6309                     CirculateHit but apply only to iconic or shaded windows.
6310                     Note: if multiple ...Skip... options are combined,
6311                     windows are only selected if they match none of the given
6312                     conditions.  So, with
6313
6314                         Style * CirculateSkipIcon, CirculateSkipShaded
6315
6316                     only windows that are neither iconic nor shaded are
6317                     selected.  Note: For historical reasons, the conditional
6318                     commands understand the names of these styles as
6319                     condition names.  Take care not to confuse them.
6320
6321              Examples
6322
6323                         # Change default fvwm behavior to no title-
6324                         # bars on windows! Also define a default icon.
6325                         Style *             !Title,                \
6326                                             Icon unknown1.xpm,     \
6327                                             BorderWidth 4,         \
6328                                             HandleWidth 5
6329
6330                         # now, window specific changes:
6331                         Style Fvwm*       !Handles, Sticky,        \
6332                                           WindowListSkip,          \
6333                                           BorderWidth 0
6334                         Style FvwmPager   StaysOnTop, BorderWidth 0
6335                         Style *lock       !Handles, Sticky,        \
6336                                           StaysOnTop, WindowListSkip
6337                         Style xbiff       Sticky, WindowListSkip
6338                         Style FvwmButtons !Handles, Sticky,        \
6339                                           WindowListSkip
6340                         Style sxpm        !Handles
6341
6342                         # Put title-bars back on xterms only!
6343                         Style xterm     Title, Color black/grey
6344
6345                         Style rxvt        Icon term.xpm
6346                         Style xterm       Icon rterm.xpm
6347                         Style xcalc       Icon xcalc.xpm
6348                         Style xbiff       Icon mail1.xpm
6349                         Style xmh         Icon mail1.xpm,         \
6350                                             StartsOnDesk 2
6351                         Style xman        Icon xman.xpm
6352                         Style matlab      Icon math4.xpm,         \
6353                                             StartsOnDesk 3
6354                         Style xmag        Icon magnifying_glass2.xpm
6355                         Style xgraph      Icon graphs.xpm
6356                         Style FvwmButtons Icon toolbox.xpm
6357                         Style Maker       StartsOnDesk 1
6358                         Style signal      StartsOnDesk 3
6359
6360                         # Fire up Netscape on the second desk, in the
6361                         # middle of my 3x3 virtual desktop, and do not
6362                         # bother me with it...
6363                         Style Netscape* SkipMapping,              \
6364                                         StartsOnPage 1 1 1
6365
6366                     Note that all properties for a window are or'ed together.
6367                     In the above example "FvwmPager" gets the property
6368                     StaysOnTop via an exact window name match but also gets
6369                     !Handles, Sticky and WindowListSkip by a match to
6370                     "Fvwm*".  It gets !Title by virtue of a match to "*".  If
6371                     conflicting styles are specified for a window, then the
6372                     last style specified is used.
6373
6374       WindowStyle options
6375              sets attributes (styles) on the selected window.  The options
6376              are exactly the same as for the Style command.
6377
6378   Window Styles
6379       AddButtonStyle button [state] [style] [-- [!]flag ...]
6380              Adds a button style to button.  button can be a button number,
6381              or one of "All", "Left" or "Right".  state can be "ActiveUp",
6382              "ActiveDown", "InactiveUp" or "InactiveDown", or "Active" (the
6383              same as both "ActiveUp" and "ActiveDown") or "Inactive" (the
6384              same as both "InactiveUp" and "InactiveDown") or any of these 6
6385              with "Toggled" prepended.  The "Active" states apply to the
6386              focused window, the "Inactive" ones apply to all other windows.
6387              The "Up" states apply to the non pressed buttons, the "Down"
6388              ones apply to pressed buttons.  The "Toggled" prefix refers to
6389              maximized, shaded or sticky windows that have the corresponding
6390              MwmDecor...  button style set.  Additionally, the following
6391              shortcuts may be used: "AllNormal", "AllToggled", "AllActive",
6392              "AllInactive", "AllUp", "AllDown".  They are actually different
6393              masks for 4 individual states from 8 total.  These are supported
6394              too: "AllActiveUp", "AllActiveDown", "AllInactiveUp",
6395              "AllInactiveDown".
6396
6397              If state is omitted, then the style is added to every state.  If
6398              the style and flags are enclosed in parentheses, then multiple
6399              state definitions can be placed on a single line.  Flags for
6400              additional button styles cannot be changed after definition.
6401
6402              Buttons are drawn in the order of definition, beginning with the
6403              most recent button style, followed by those added with
6404              AddButtonStyle.  To clear the button style stack, change style
6405              flags, or for descriptions of available styles and flags, see
6406              the ButtonStyle command.  Examples:
6407
6408                  ButtonStyle 1 Pixmap led.xpm -- Top Left
6409                  ButtonStyle 1 ActiveDown HGradient 8 grey black
6410                  ButtonStyle All --  UseTitleStyle
6411                  AddButtonStyle 1 \
6412                       ActiveUp (Pixmap a.xpm) \
6413                       ActiveDown (Pixmap b.xpm -- Top)
6414                  AddButtonStyle 1 Vector 4 50x30@1 70x70@0 30x70@0 50x30@1
6415
6416              Initially for this example all button states are set to a
6417              pixmap.  The second line replaces the "ActiveDown" state with a
6418              gradient (it overrides the pixmap assigned to it in the line
6419              before, which assigned the same style to every state).  Then,
6420              the UseTitleStyle flag is set for all buttons, which causes fvwm
6421              to draw any styles set with TitleStyle before drawing the
6422              buttons.  Finally, AddButtonStyle is used to place additional
6423              pixmaps for both "ActiveUp" and "ActiveDown" states and a vector
6424              button style is drawn on top of all states.
6425
6426       AddTitleStyle [state] [style] [-- [!]flag ...]
6427              Adds a title style to the title-bar.  state can be "ActiveUp",
6428              "ActiveDown", "InactiveUp" or "InactiveDown", or "Active" (the
6429              same as both "ActiveUp" and "ActiveDown") or "Inactive" (the
6430              same as both "InactiveUp" and "InactiveDown") or any of these 6
6431              with "Toggled" prepended.  If state is omitted, then the style
6432              is added to every state.  If the style and flags are enclosed in
6433              parentheses, then multiple state definitions can be placed on a
6434              single line.  This command is quite similar to the
6435              AddButtonStyle command.
6436
6437              Title-bars are drawn in the order of definition, beginning with
6438              the most recent TitleStyle, followed by those added with
6439              AddTitleStyle.  To clear the title style stack, change style
6440              flags, or for the descriptions of available styles and flags,
6441              see the TitleStyle and ButtonStyle commands.
6442
6443       AddToDecor decor
6444              This command is deprecated and will be removed in the future.
6445              There are plans to replace it with a more flexible solution in
6446              fvwm-3.0.
6447
6448              Add or divert commands to the decor named decor.  A decor is a
6449              name given to the set of commands which affect button styles,
6450              title-bar styles and border styles.  If decor does not exist it
6451              is created; otherwise the existing decor is modified.  Note:
6452              Earlier versions allowed to use the HilightColor,
6453              HilightColorset and WindowFont commands in decors.  This is no
6454              longer possible.  Please use the Style command with the
6455              Hilight... and Font options.
6456
6457              New decors start out exactly like the "default" decor without
6458              any style definitions.  A given decor may be applied to a set of
6459              windows with the UseDecor option of the Style command.
6460              Modifying an existing decor affects all windows which are
6461              currently assigned to it.
6462
6463              AddToDecor is similar in usage to the AddToMenu and AddToFunc
6464              commands, except that menus and functions are replaced by
6465              ButtonStyle, AddButtonStyle, TitleStyle, AddTitleStyle and
6466              BorderStyle commands.  Decors created with AddToDecor can be
6467              manipulated with ChangeDecor, DestroyDecor, UpdateDecor and the
6468              Style option.
6469
6470              The following example creates a decor "FlatDecor" and style
6471              "FlatStyle".  They are distinct entities:
6472
6473                  AddToDecor FlatDecor
6474                  + ButtonStyle All Active (-- flat) Inactive (-- flat)
6475                  + TitleStyle  -- flat
6476                  + BorderStyle -- HiddenHandles NoInset
6477
6478                  Style FlatStyle \
6479                       UseDecor FlatDecor, HandleWidth 4, ForeColor white, \
6480                       BackColor grey40, HilightFore black, HilightBack grey70
6481
6482                  Style xterm UseStyle FlatStyle
6483
6484              An existing window's decor may be reassigned with ChangeDecor.
6485              A decor can be destroyed with DestroyDecor.
6486
6487                  DestroyDecor FlatDecor
6488                  AddToDecor FlatDecor ...
6489
6490                  Style FlatStyle UseDecor FlatDecor
6491
6492              and now apply the style again:
6493
6494                  Style xterm UseStyle FlatStyle
6495
6496       BorderStyle state [style] [-- [!]flag ...]
6497              Defines a border style for windows.  state can be either
6498              "Active" or "Inactive".  If state is omitted, then the style is
6499              set for both states.  If the style and flags are enclosed in
6500              parentheses, then multiple state definitions can be specified
6501              per line.
6502
6503              style is a subset of the available button styles, and can only
6504              be TiledPixmap (uniform pixmaps which match the bevel colors
6505              work best this way) or Colorset.  If a '!' is prefixed to any
6506              flag, the behavior is negated.  If style is not specified, then
6507              one can change flags without resetting the style.
6508
6509              The HiddenHandles flag hides the corner handle dividing lines on
6510              windows with handles (this option has no effect for !Handles
6511              windows).  By default, HiddenHandles is disabled.
6512
6513              The NoInset flag supplements HiddenHandles.  If given, the inner
6514              bevel around the window frame is not drawn.  If HiddenHandles is
6515              not specified, the frame looks a little strange.
6516
6517              Raised causes a raised relief pattern to be drawn (default).
6518              Sunk causes a sunken relief pattern to be drawn.  Flat inhibits
6519              the relief pattern from being drawn.
6520
6521              To decorate the active and inactive window borders with a
6522              textured pixmap, one might specify:
6523
6524                  BorderStyle Active TiledPixmap marble.xpm
6525                  BorderStyle Inactive TiledPixmap granite.xpm
6526                  BorderStyle Active -- HiddenHandles NoInset
6527
6528              To clear the style for both states:
6529
6530                  BorderStyle Simple
6531
6532              To clear for a single state:
6533
6534                  BorderStyle Active Simple
6535
6536              To unset a flag for a given state:
6537
6538                  BorderStyle Inactive -- !NoInset
6539
6540              title-bar buttons can inherit the border style with the
6541              UseBorderStyle flag (see ButtonStyle).
6542
6543       ButtonState [ActiveDown bool] [Inactive bool] [InactiveDown bool]
6544              The ButtonState command controls which states of the window
6545              titles and title buttons are used.  The default is to use all
6546              four states: "ActiveUp>", "ActiveDown>", "InactiveUp>" and
6547              "InactiveDown>" (see ButtonStyle and TitleStyle commands).  The
6548              bool argument after the key word controls if the designated
6549              state is used ("True") or not ("False").  The "ActiveUp" state
6550              cannot be deactivated.  If no arguments are provided or the
6551              given arguments are illegal, the default is restored.
6552
6553              If ActiveDown argument is "False", no different button style for
6554              the pressed down buttons used, instead "ActiveUp" state is used
6555              even when button is pressed.
6556
6557              If Inactive argument is "False", focused and unfocused windows
6558              look similarly, the corresponding "Active" states are always
6559              used.
6560
6561              If InactiveDown argument is "False" (only applied when Inactive
6562              is "True"), the pressed titles and title buttons in non-focused
6563              windows are drawn using "InactiveUp" or "ActiveUp" states
6564              depending on the values of the other key words.
6565
6566       ButtonStyle button [state] [style] [-- [!]flag ...]
6567              Sets the button style for a title-bar button.  button is the
6568              title-bar button number between 0 and 9, or one of "All",
6569              "Left", "Right", or "Reset".  Button numbering is described in
6570              the Mouse command section.  If the style and flags are enclosed
6571              in parentheses, then multiple state definitions can be specified
6572              per line.
6573
6574              state refers to which button state should be set.  Button states
6575              are defined as follows: "ActiveUp" and "ActiveDown" refer to the
6576              un-pressed and pressed states for buttons on active windows;
6577              while the "InactiveUp" and "InactiveDown" states denote buttons
6578              on inactive windows.  The shortcut "Active" denotes both
6579              "ActiveUp" and "ActiveDown" states.  Shortcut "Inactive" denotes
6580              both "InactiveUp" and "InactiveDown" states.  The similar state
6581              names like just described, but with the "Toggled" prefix are
6582              used instead for title buttons which have one of the
6583              MwmDecorMax, MwmDecorShade, MwmDecorStick or MwmDecorLayer
6584              hints, if the window is maximized, shaded, sticky or placed on
6585              specific layer, respectively.
6586
6587                  AddToDecor Default
6588                   + ButtonStyle 6                   \
6589                     Vector 4 50x25@1 85x75@0 15x75@0 50x25@1
6590                   + ButtonStyle 6 ToggledActiveUp   \
6591                     Vector 4 50x75@0 85x25@1 15x25@0 50x75@0
6592                   + ButtonStyle 6 ToggledActiveDown \
6593                     Vector 4 50x75@0 85x25@1 15x25@0 50x75@0
6594                   + ButtonStyle 6 ToggledInactive   \
6595                     Vector 4 50x75@0 85x25@1 15x25@0 50x75@0
6596                   + ButtonStyle 6 - MwmDecorShade
6597                  Mouse 0 6 N WindowShade
6598
6599              Additionally, the following shortcuts may be used: "AllNormal",
6600              "AllToggled", "AllActive", "AllInactive", "AllUp", "AllDown".
6601              They are actually different masks for 4 individual states from 8
6602              total.  These are supported too: "AllActiveUp", "AllActiveDown",
6603              "AllInactiveUp", "AllInactiveDown".
6604
6605              If state is specified, that particular button state is set.  If
6606              state is omitted, every state is set.  Specifying a style
6607              destroys the current style (use AddButtonStyle to avoid this).
6608
6609              If style is omitted, then state-dependent flags can be set for
6610              the primary button style without destroying the current style.
6611              Examples (each line should be considered independent):
6612
6613                  ButtonStyle Left -- flat
6614                  ButtonStyle All ActiveUp (-- flat) Inactive (-- flat)
6615
6616              The first line sets every state of the left buttons to flat,
6617              while the second sets only the "ActiveUp" and "Inactive" states
6618              of every button to flat (only flags are changed; the buttons'
6619              individual styles are not changed).
6620
6621              If you want to reset all buttons to their defaults:
6622
6623                  ButtonStyle Reset
6624
6625              To reset the "ActiveUp" button state of button 1 to the default:
6626
6627                  ButtonStyle 1 ActiveUp Default
6628
6629              To reset all button states of button 1 to the default of button
6630              number 2:
6631
6632                  ButtonStyle 1 Default 2
6633
6634              For any button, multiple state definitions can be given on one
6635              line by enclosing the style and flags in parentheses.  If only
6636              one definition per line is given the parentheses can be omitted.
6637
6638              flags affect the specified state.  If a '!'  is prefixed to any
6639              flag, its behavior is negated.  The available state-dependent
6640              flags for all styles are described here (the ButtonStyle entry
6641              deals with state-independent flags).
6642
6643              Raised causes a raised relief pattern to be drawn.
6644
6645              Sunk causes a sunken relief pattern to be drawn.
6646
6647              Flat inhibits the relief pattern from being drawn.
6648
6649              UseTitleStyle causes the given button state to render the
6650              current title style before rendering the buttons' own styles.
6651              The Raised, Flat and Sunk TitleStyle flags are ignored since
6652              they are redundant in this context.
6653
6654              UseBorderStyle causes the button to inherit the decorated
6655              BorderStyle options.
6656
6657              Raised, Sunk and Flat are mutually exclusive, and can be
6658              specified for the initial ButtonStyle only.  UseTitleStyle and
6659              UseBorderStyle are also mutually exclusive (both can be off
6660              however).  The default is Raised with both UseBorderStyle and
6661              UseTitleStyle left unset.
6662
6663              Important
6664              for the "ActiveDown" and "InactiveDown" states:  When a button
6665              is pressed, the relief is inverted.  Because of this, to obtain
6666              the raised look in "ActiveDown" or "InactiveDown" states you
6667              must specify the opposite of the desired relief (i.e.  Sunk for
6668              "ActiveDown" or "InactiveDown").  This behavior is consistent,
6669              but may seem confusing at first.  The same applies to the
6670              "Toggled" states.
6671
6672              Button styles are classified as non-destructive, partially
6673              destructive, or fully destructive.  Non-destructive styles do
6674              not affect the image.  Partially destructive styles can obscure
6675              some or all parts of the underlying image (i.e.  Pixmap).  Fully
6676              destructive styles obscure the entire underlying image (i.e.
6677              Solid or one of the gradient styles).  Thus, if stacking styles
6678              with AddButtonStyle (or AddTitleStyle for title-bars), use care
6679              in sequencing styles to minimize redraw.
6680
6681              The available styles are:
6682
6683              Simple, Default, Solid, Colorset, Vector, ?Gradient, Pixmap,
6684              AdjustedPixmap, ShrunkPixmap, StretchedPixmap, TiledPixmap,
6685              MiniIcon
6686
6687              The description of these styles and their arguments follow:
6688
6689              The Simple style does nothing.  There are no arguments, and this
6690              style is an example of a non-destructive button style.
6691
6692              The Default style conditionally accepts one argument: a number
6693              which specifies the default button number to load.  If the style
6694              command given is ButtonStyle or AddButtonStyle, the argument is
6695              optional (if given, it overrides the current button).  If a
6696              command other than ButtonStyle or AddButtonStyle is used, the
6697              number must be specified.
6698
6699              The Solid style fills the button with a solid color.  The relief
6700              border color is not affected.  The color is specified as a
6701              single argument.  This style is fully destructive.
6702
6703              The Colorset cs [alpha] style fills the button with the Colorset
6704              cs.  The optional alpha argument is a percentage between 0 and
6705              100.  It causes fvwm to merge the colorset background onto the
6706              button using this percentage.  If the percentage is 0 the
6707              colorset background is hidden and if it is 100 the colorset
6708              background is fully applied.  The default is 100.  So, the
6709              destructiveness depends on the alpha argument.
6710
6711              The Vector num X[offsetp]xY[offsetp]@C ...  style draws a line
6712              pattern.  Since this is a standard button style, the keyword
6713              Vector is optional, num is a number of point specifications of
6714              the form X[offsetp]xY[offsetp]@C ...  X and Y are point
6715              coordinates inside the button, given in percents (from 0 to
6716              100).  An optional absolute offset in pixels, can be given as
6717              "+<offset>p" for a positive or "-<offset>p" for a negative
6718              offset.
6719
6720              C specifies a line color (0 - the shadow color, 1 - the
6721              highlight color, 2 - the background color, 3 - the foreground
6722              color, 4 - only move the point, do not draw).  The first point
6723              color is not used.  You can use up to 10000 points in a line
6724              pattern.  This style is partially destructive.
6725
6726              The specification is a little cumbersome:
6727
6728                  ButtonStyle 2 Vector 4 50x30@1 70x70@0 30x70@0 50x30@1
6729
6730              then the button 2 decoration uses a 4-point pattern consisting
6731              of a line from (x=50,y=30) to (70,70) in the shadow color (@0),
6732              and then to (30,70) in the shadow color, and finally to (50,30)
6733              in the highlight color (@1).  Is that too confusing? See the
6734              fvwm web pages for some examples with screenshots.
6735
6736              A more complex example of Vector:
6737
6738                  ButtonStyle 8 Vector 10 45x65@2 45x75@3 \
6739                    20x75@3 20x50@3 35x50@3 35x65@1 35x25@1 \
6740                    75x25@1 75x65@0 35x65@0
6741                  ButtonStyle 0 Vector 10 45x65@2 45x75@0 \
6742                    20x75@0 20x50@1 45x50@1 45x65@0 75x65@3 \
6743                    75x25@3 35x25@3 35x47@3
6744
6745              The ?Gradient styles denote color gradients.  Fill in the
6746              question mark with any one of the defined gradient types.
6747              Please refer to the Color Gradients section for a description of
6748              the gradient syntax.  The gradient styles are fully destructive.
6749
6750              The Pixmap style displays a pixmap.  A pixmap should be
6751              specified as an argument.  For example, the following would give
6752              button number 2 the same pixmap for all 4 states (2 active and 2
6753              inactive), and button number 4 all different pixmaps.
6754
6755                  ButtonStyle 2 Pixmap my_pixmap.xpm
6756                  ButtonStyle 4 \
6757                       ActiveUp (Pixmap activeup.xpm) \
6758                       ActiveDown (Pixmap activedown.xpm) \
6759                       Inactive (Pixmap inactiveup.xpm)
6760                  ButtonStyle 4 \
6761                       InactiveDown Pixmap inactivedown.xpm
6762
6763              The pixmap specification can be given as an absolute or relative
6764              pathname (see ImagePath).  If the pixmap cannot be found, the
6765              button style reverts to Simple.  Flags specific to the Pixmap
6766              style are Left, Right, Top, and Bottom.  These can be used to
6767              justify the pixmap (default is centered for both directions).
6768              Pixmap transparency is used for the color "None." This style is
6769              partially destructive.
6770
6771              The AdjustedPixmap style is similar to the Pixmap style.  But
6772              the image is resized to exactly fit the button.
6773
6774              The ShrunkPixmap style is similar to the Pixmap style.  But if
6775              the image is bigger than the button the image is resized to fit
6776              into the button.
6777
6778              The StretchedPixmap style is similar to the Pixmap style.  But
6779              if the image is smaller than the button the image is resized to
6780              cover the button.
6781
6782              The TiledPixmap style accepts a pixmap to be tiled as the button
6783              background.  One pixmap is specified as an argument.  Pixmap
6784              transparency is not used.  This style is fully destructive.
6785
6786              The MiniIcon style draws the window's miniature icon in the
6787              button, which is specified with the MiniIcon option of the Style
6788              command.  This button style accepts no arguments.  Example:
6789
6790                  Style *     MiniIcon mini-bx2.xpm
6791                  Style xterm MiniIcon mini-term.xpm
6792                  Style Emacs MiniIcon mini-doc.xpm
6793
6794                  ButtonStyle 1 MiniIcon
6795
6796       ButtonStyle button - [!]flag ...
6797              Sets state-independent flags for the specified button.
6798              State-independent flags affect button behavior.  Each flag is
6799              separated by a space.  If a '!'  is prefixed to the flag then
6800              the behavior is negated.  The special flag Clear clears any
6801              existing flags.
6802
6803              The following flags are usually used to tell fvwm which buttons
6804              should be affected by mwm function hints (see MwmFunctions
6805              option of the Style command.  This is not done automatically
6806              since you might have buttons bound to complex functions, for
6807              instance.
6808
6809              MwmDecorMenu should be assigned to title-bar buttons which
6810              display a menu.  The default assignment is the leftmost button.
6811              When a window with the MwmFunctions Style option requests not to
6812              show this button, it is hidden.
6813
6814              MwmDecorMin should be assigned to title-bar buttons which
6815              minimize or iconify the window.  The default assignment is the
6816              second button over from the rightmost button.  When a window
6817              with the MwmFunctions Style option requests not to show this
6818              button, it is hidden.
6819
6820              MwmDecorMax should be assigned to title-bar buttons which
6821              maximize the window.  The default assignment is the rightmost
6822              button.  When a window with the MwmFunctions Style option
6823              requests not to show this button, it is hidden.  When the window
6824              is maximized, the vector pattern on the button looks pressed in.
6825
6826              MwmDecorShade should be assigned to title-bar buttons which
6827              shade the window (see WindowShade command).  When the window is
6828              shaded, the vector pattern on the button looks pressed in.
6829
6830              MwmDecorStick should be assigned to title-bar buttons which make
6831              the window sticky.  When the window is sticky, the vector
6832              pattern on the button looks pressed in.
6833
6834              The flag MwmDecorLayer layer should be assigned to title-bar
6835              buttons which place the window in the layer numbered layer.
6836              When the window is on that specific layer, the vector pattern on
6837              the button looks pressed in.
6838
6839       ChangeDecor decor
6840              This command is deprecated and will be removed in the future.
6841              There are plans to replace it with a more flexible solution in
6842              fvwm-3.0.
6843
6844              Changes the decor of a window to decor.  decor is "Default" or
6845              the name of a decor defined with AddToDecor.  If decor is
6846              invalid, nothing occurs.  If called from somewhere in a window
6847              or its border, then that window is affected.  If called from the
6848              root window the user is allowed to select the target window.
6849              ChangeDecor only affects attributes which can be set using the
6850              AddToDecor command.
6851
6852                  ChangeDecor CustomDecor1
6853
6854       DestroyDecor [recreate] decor
6855              This command is deprecated and will be removed in the future.
6856              There are plans to replace it with a more flexible solution in
6857              fvwm-3.0.
6858
6859              Deletes the decor defined with AddToDecor, so that subsequent
6860              references to it are no longer valid.  Windows using this decor
6861              revert to the "Default" decor.  The optional parameter recreate
6862              tells fvwm not to throw away the decor completely but to throw
6863              away only its contents.  If the decor is created again later,
6864              windows do not use it before the UseDecor style is applied again
6865              unless the decor was destroyed with the recreate option.  The
6866              decor named "Default" cannot be destroyed.
6867
6868                  DestroyDecor CustomDecor1
6869
6870       TitleStyle [justification] [Height [num]] [MinHeight [num]]
6871              Sets attributes for the title-bar.  Justifications can be
6872              Centered, RightJustified or LeftJustified.  Height sets the
6873              title bar's height to an amount in pixels.  MinHeight sets the
6874              minimal height in pixels of the title bar.  Defaults are
6875              Centered, the window's font height and no minimal height.  To
6876              reset the font height to the default value, omit the num
6877              argument after the Height keyword.  The MinHeight height is
6878              reseted by Height or if given with no argument.  Example:
6879
6880                  TitleStyle LeftJustified Height 24
6881
6882       TitleStyle [state] [style] [-- [!]flag ...]
6883              Sets the style for the title-bar.  See also AddTitleStyle and
6884              ButtonStyle state can be one of "ActiveUp", "ActiveDown",
6885              "InactiveUp", or "InactiveDown".  Shortcuts like "Active" and
6886              "Inactive" are allowed.  The states with the "Toggled" prefix
6887              are allowed too, the title itself does not use "Toggled" states,
6888              but these states are used for the buttons with ButtonStyle
6889              UseTitleStyle.  If state is omitted, then the style is added to
6890              every state.  If parentheses are placed around the style and
6891              flags, then multiple state definitions can be given per line.
6892              style can be omitted so that flags can be set while not
6893              destroying the current style.
6894
6895              If a '!'  is prefixed to any flag, its behavior is negated.
6896              Valid flags for each state include Raised, Flat and Sunk (these
6897              are mutually exclusive).  The default is Raised.  See the note
6898              in ButtonStyle regarding the "ActiveDown" state.  Examples:
6899
6900                  TitleStyle ActiveUp HGradient 16 navy black
6901                  TitleStyle \
6902                       ActiveDown (Solid red -- flat) \
6903                       Inactive (TiledPixmap wood.xpm)
6904                  TitleStyle \
6905                       ActiveUp (-- Flat) \
6906                       ActiveDown (-- Raised) \
6907                       InactiveUp (-- Flat) \
6908                       InactiveDown (-- Sunk)
6909
6910              This sets the "ActiveUp" state to a horizontal gradient, the
6911              "ActiveDown" state to solid red, and the "Inactive" states to a
6912              tiled wood pixmap.  Finally, "ActiveUp" and "InactiveUp" are set
6913              to look flat, while "ActiveDown" set to be sunk (the Raised flag
6914              for the "ActiveDown" state causes it to appear sunk due to
6915              relief inversion), and "InactiveDown" is set to look raised.  An
6916              example which sets flags for all states:
6917
6918                  TitleStyle -- flat
6919
6920              For a flattened look:
6921
6922                  TitleStyle -- flat
6923                  ButtonStyle All Active (-- flat) Inactive (-- flat)
6924
6925              TitleStyle accepts all the ButtonStyle styles and arguments:
6926
6927              Simple, Default, Solid, Colorset, Vector, ?Gradient, Pixmap,
6928              AdjustedPixmap, ShrunkPixmap, StretchedPixmap, TiledPixmap,
6929              MiniIcon.
6930
6931              See the ButtonStyle command for a description of all these
6932              styles and their arguments.
6933
6934              In addition to these styles TitleStyle accepts a powerful
6935              MultiPixmap option.  This allows you to specify different
6936              pixmaps, colorsets or colors for different parts of the
6937              titlebar.  Some of them are tiled or stretched to fit a
6938              particular space; others are discrete "transition" images.  The
6939              definable sections are:
6940
6941              Main
6942                  The full titlebar
6943
6944              LeftMain
6945                  Left of title text
6946
6947              RightMain
6948                  Right of title text
6949
6950              UnderText
6951                  Underneath title text
6952
6953              LeftOfText
6954                  just to the left of the title text
6955
6956              RightOfText
6957                  just to the right of the title text
6958
6959              LeftEnd
6960                  at the far left end of the titlebar (just after left buttons
6961                  if any)
6962
6963              RightEnd
6964                  at the far right end of the titlebar (just before right
6965                  buttons if any)
6966
6967              Buttons
6968                  under buttons in case of UseTitleStyle
6969
6970              LeftButtons
6971                  under left buttons in case of UseTitleStyle
6972
6973              RightButtons
6974                  under right buttons in case of UseTitleStyle
6975
6976              None of these are mandatory except for Main (or, if you do not
6977              define Main you must define both LeftMain and RightMain).  If no
6978              Buttons pixmaps are defined and UseTitleStyle is specified for
6979              one or more buttons, Main, LeftMain or RightMain are used as
6980              appropriate.
6981
6982              The syntax for this style type is:
6983
6984                  MultiPixmap section style arg, ...
6985
6986              continuing for whatever you want to define.  The style can be
6987              either TiledPixmap, AdjustedPixmap, Colorset or Solid.  See the
6988              ButtonStyle command for the description of these styles.  In the
6989              case of a transition section, LeftEnd, LeftOfText, RightOfText
6990              or RightEnd, AdjustedPixmap only resize the pixmap in the "y"
6991              direction.  For the Colorset and Solid styles a width of the
6992              half of the title bar height is assumed for the transition
6993              sections.
6994
6995              An example:
6996
6997                  MultiPixmap Main AdjustedPixmap foo.xpm, \
6998                              UnderText TiledPixmap bar.xpm, \
6999                              Buttons Colorset 2
7000
7001              Note that the old syntax is still supported: if the style is
7002              omitted, TiledPixmap is assumed and adding "(stretched)" between
7003              the section and the file name implies AdjustedPixmap.
7004
7005       UpdateDecor [decor]
7006              This command is deprecated and will be removed in the future.
7007              There are plans to replace it with a more flexible solution in
7008              fvwm-3.0.
7009
7010              This command is kept mainly for backward compatibility.  Since
7011              all elements of a decor are updated immediately when they are
7012              changed, this command is mostly useless.
7013
7014              Updates window decorations.  decor is an optional argument which
7015              specifies the decor to update.  If given, only windows which are
7016              assigned to that particular decor are updated.  This command is
7017              useful, for instance, after a ButtonStyle, TitleStyle or
7018              BorderStyle (possibly used in conjunction with AddToDecor).
7019              Specifying an invalid decor results in all windows being
7020              updated.  This command is less disturbing than Recapture, but
7021              does not affect window style options as Recapture does.
7022
7023   Controlling the Virtual Desktop
7024       Desk arg1 [arg2] [min max]
7025              This command has been renamed.  Please see GotoDesk command.
7026
7027       DesktopName desk name
7028              Defines the name of the desktop number desk to name.  This name
7029              is used in the WindowList command and in the FvwmPager where it
7030              override the Label configuration option.  Moreover, if
7031              consecutive names starting from desktop 0 are defined, then
7032              these names can be used by any EWMH compliant application (as a
7033              pager).
7034
7035       DesktopSize HorizontalxVertical
7036              Defines the virtual desktop size in units of the physical screen
7037              size.
7038
7039       EdgeResistance delayEdgeResistance scrolling moving
7040       [xinerama-scrolling]
7041              Tells how hard it should be to change the desktop viewport by
7042              moving the mouse over the edge of the screen.  The parameter
7043              tells how many milliseconds the pointer must spend on the screen
7044              edge before fvwm moves the viewport.  This is intended for
7045              people who use
7046
7047                  EdgeScroll 100 100
7048
7049              but find themselves accidentally flipping pages when they do not
7050              want to.  If -1 is given as the delay, scrolling is disabled
7051              completely.
7052
7053              The second form of invocation with two or three arguments is
7054              obsolete and should be replaced with the following three
7055              commands as needed:
7056
7057                  EdgeResistance scrolling
7058                  Style * EdgeMoveDelay scrolling
7059                  Style * EdgeMoveResistance moving
7060                  or
7061                  Style * EdgeMoveResistance moving xinerama-scrolling
7062
7063              Fvwm does this substitution automatically and prints a warning.
7064
7065       EdgeScroll horizontal[p] vertical[p] [wrap | wrapx | wrapy]
7066              Specifies the percentage of a page to scroll when the cursor
7067              hits the edge of a page.  A trailing 'p' changes the
7068              interpretation to mean pixels.  If you do not want any paging or
7069              scrolling when you hit the edge of a page include
7070
7071                  EdgeScroll 0 0
7072
7073              in your config file, or possibly better, set the EdgeThickness
7074              to zero.  See the EdgeThickness command.  If you want whole
7075              pages, use
7076
7077                  EdgeScroll 100 100
7078
7079              Both horizontal and vertical should be positive numbers.
7080
7081              If the horizontal and vertical percentages are multiplied by
7082              1000 or one of the keywords wrap, wrapx and wrapy is given then
7083              scrolling wraps around at the edge of the desktop.  If
7084
7085                  EdgeScroll 100000 100000
7086
7087              is used fvwm scrolls by whole pages, wrapping around at the edge
7088              of the desktop.
7089
7090       EdgeThickness 0 | 1 | 2
7091              This is the width or height of the invisible window that fvwm
7092              creates on the edges of the screen that are used for the edge
7093              scrolling feature.
7094
7095              In order to enable page scrolling via the mouse, four windows
7096              called the "pan frames" are placed at the very edge of the
7097              screen.  This is how fvwm detects the mouse's presence at the
7098              window edge.  Because of the way this works, they need to be at
7099              the top of the stack and eat mouse events, so if you have any
7100              kind of error along the lines of: "mouse clicks at the edge of
7101              the screen do the wrong thing" you're having trouble with the
7102              pan frames and (assuming you do not use the mouse to flip
7103              between pages) should set the EdgeThickness to 0.
7104
7105              A value of 0 completely disables mouse edge scrolling, even
7106              while dragging a window.  1 gives the smallest pan frames, which
7107              seem to work best except on some servers.
7108
7109              2 is the default.
7110
7111              Pan frames of 1 or 2 pixels can sometimes be confusing, for
7112              example, if you drag a window over the edge of the screen, so
7113              that it straddles a pan frame, clicks on the window, near the
7114              edge of the screen are treated as clicks on the root window.
7115
7116       EwmhBaseStruts left right top bottom
7117              Where left, right, top and bottom are positive or null integers
7118              which define bands at the edge of the screen.  left defines a
7119              band on the left of your screen of width left, right defines a
7120              band on the right of your screen of width right, top defines a
7121              band on the top of your screen of height top and bottom defines
7122              a band on the bottom of your screen of height bottom.  The unit
7123              is the pixel and the default is 0 0 0 0.  These areas define
7124              additional reserved space to the reserved space defined by some
7125              ewmh compliant applications.  This is used to compute the
7126              Working Area.  See the Extended Window Manager Hints section for
7127              a definition of the Working Area.
7128
7129       EwmhNumberOfDesktops num [max]
7130              This command is useful only for an ewmh compliant pager or
7131              taskbar (as kpager or kicker taskbar) and not for fvwm modules (
7132              FvwmPager or FvwmIconMan).  It causes a compliant application to
7133              consider at least num desktops (desktop 0 to desktop num-1).
7134              The optional argument max causes a compliant application to
7135              never consider more than max desktops.  If max is 0 (the
7136              default) there is no limitation.  The actual number of desktops
7137              is determined dynamically.  It is at least num, but it can be d
7138              if there is a window on desktop d-1 (or if the current desktop
7139              is desktop d-1) and d is less or equal to max or max is null.
7140              Moreover, a compliant pager can ask to change num itself.  This
7141              is accepted by fvwm only if this number is less than or equal to
7142              max or if max is null.  Note that negative desktops are not
7143              supported by the ewmh specification.  The default is 4 0.
7144
7145       GotoDesk [prev | arg1 [arg2] [min max]]
7146              Switches the current viewport to another desktop (workspace,
7147              room).
7148
7149              The command takes 1, 2, 3, or 4 arguments.  A single argument is
7150              interpreted as a relative desk number.  Two arguments are
7151              understood as a relative and an absolute desk number.  Three
7152              arguments specify a relative desk and the minimum and maximum of
7153              the allowable range.  Four arguments specify the relative,
7154              absolute, minimum and maximum values.  (Desktop numbers can be
7155              negative).  If a literal prev is given as the single argument,
7156              the last visited desk number is used.
7157
7158              If arg1 is non zero then the next desktop number is the current
7159              desktop number plus arg1.
7160
7161              If arg1 is zero then the new desktop number is arg2.  (If arg2
7162              is not present, then the command has no effect.)
7163
7164              If min and max are given, the new desktop number is no smaller
7165              than min and no bigger than max.  Values out of this range are
7166              truncated (if you gave an absolute desk number) or wrapped
7167              around (if you gave a relative desk number).
7168
7169              The syntax is the same as for MoveToDesk, which moves a window
7170              to a different desktop.
7171
7172              The number of active desktops is determined dynamically.  Only
7173              desktops which contain windows or are currently being displayed
7174              are active.  Desktop numbers must be between 2147483647 and
7175              -2147483648 (is that enough?).
7176
7177       GotoDeskAndPage prev | desk xpage ypage
7178              Switches the current viewport to another desktop and page,
7179              similar to the GotoDesk and GotoPage commands.  The new desk is
7180              desk and the new page is (xpage,ypage).
7181
7182       GotoPage prev | [options] x[p] y[p]
7183              Moves the desktop viewport to page (x,y).  The upper left page
7184              is (0,0), the upper right is (M,0), where M is one less than the
7185              current number of horizontal pages specified in the DeskTopSize
7186              command.  The lower left page is (0,N), and the lower right page
7187              is (M,N), where N is the desktop's vertical size as specified in
7188              the DeskTopSize command.  To switch to a page relative to the
7189              current one add a trailing 'p' after any or both numerical
7190              arguments.
7191
7192              Possible options are wrapx and wrapy to wrap around the x or y
7193              coordinate when the viewport is moved beyond the border of the
7194              desktop.
7195
7196              To go to the last visited page use prev as the first argument.
7197              The GotoPage function should not be used in a pop-up menu.
7198
7199              Examples:
7200
7201                  # Go to page (2,3)
7202                  GotoPage 2 3
7203
7204                  # Go to lowest and rightmost page
7205                  GotoPage -1 -1
7206
7207                  # Go to last page visited
7208                  GotoPage prev
7209
7210                  # Go two pages to the right and one page up
7211                  GotoPage +2p -1p
7212
7213       Scroll [horizonal[p] vertical[p] | reverse]
7214              Scrolls the virtual desktop's viewport by horizontal pages in
7215              the x-direction and vertical pages in the y-direction or starts
7216              interactive scrolling of the viewport.  Either or both entries
7217              may be negative.  Both horizontal and vertical values are
7218              expressed in percent of pages, so
7219
7220                  Scroll 100 100
7221
7222              means to scroll down and right by one full page.
7223
7224                  Scroll 50 25
7225
7226              means to scroll right half a page and down a quarter of a page.
7227              The Scroll function should not be called from pop-up menus.
7228              Normally, scrolling stops at the edge of the desktop.
7229
7230              If the horizontal and vertical percentages are 100 or more and
7231              are multiplied by 1000 then scrolling wraps around at the edge
7232              of the desktop.  If
7233
7234                  Scroll 100000 0
7235
7236              is executed over and over fvwm moves to the next desktop page on
7237              each execution and wraps around at the edge of the desktop, so
7238              that every page is hit in turn.
7239
7240              If the letter 'p' is appended to each coordinate (horizontal
7241              and/or vertical), then the scroll amount is measured in pixels.
7242
7243              Without arguments or if the option reverse is given interactive
7244              scrolling takes place.  The viewport scrolls as the mouse is
7245              moved.  With the reverse option scrolling is done in opposite
7246              direction of the mouse movement, and without it scrolling in the
7247              same direction as the mouse.
7248
7249              The binding
7250
7251                  Mouse 1 A CM Scroll reverse
7252
7253              gives an effect of grabbing and dragging the viewport with
7254              button 1 if Control and Meta is pressed.
7255
7256       Xinerama [bool]
7257              Enables Xinerama support if the boolean argument is true and
7258              disables it if the argument is false.  Calling this command
7259              without arguments turns on Xinerama support if it was disabled
7260              before and turns it off if it was enabled.  For example:
7261
7262                  # Turn Xinerama support on, use primary screen 2
7263                  XineramaPrimaryScreen 2
7264                  Xinerama on
7265                  # Turn it off again
7266                  Xinerama off
7267
7268       XineramaPrimaryScreen [primary-screen]
7269              Takes an integer number or 'g' or 'c' as its argument.  A number
7270              is taken as the number of the Xinerama screen that is to be used
7271              as the primary screen.  The primary screen can be used as the
7272              preferred screen to place windows with
7273
7274                  XineramaPrimaryScreen <screen number>
7275                  Style * StartsOnScreen p
7276
7277              The primary screen is used in some of the modules and for the
7278              default icon box too.  Any number that is zero or more is taken
7279              as the primary screen's number.  Instead, the letter 'c'
7280              indicates to use the current screen (containing the pointer)
7281              whenever the primary screen is used.  This may be very confusing
7282              under some circumstances.  With 'g', the global screen is used
7283              as the primary screen, effectively disabling the primary screen.
7284              Calling this function with any other argument (including none)
7285              resets the primary screen to 0.
7286
7287       XineramaSls [bool]
7288              For multi-screen implementations other than Xinerama, such as
7289              Single Logical Screen, it is possible to simulate a Xinerama
7290              configuration if the total screen seen by fvwm is made up of
7291              equal sized monitors in a rectangular grid.  The XineramaSls
7292              command turns SLS support on or off or toggles it to the
7293              opposite state, depending on if the boolean argument is "True",
7294              "False" or "toggle".  If no argument is given, this is treated
7295              like "toggle".  The default layout uses one by one screens.  To
7296              configure the layout, use the XineramaSlsSize or
7297              XineramaSlsScreens command.
7298
7299       XineramaSlsSize Horizontal Vertical
7300              This command configures the layout of the Single Logical screen
7301              feature.  It takes two arguments, Horizontal and Vertical which
7302              must be an integer value dividing evenly into the total desktop
7303              width, and height.  For an example with two monitors side by
7304              side which appear as one screen through the X-Server with the
7305              right screen as the primary screen, use:
7306
7307                  XineramaSlsSize 2x1
7308                  XineramaSls On
7309                  XineramaPrimaryScreen 1
7310                  Xinerama On
7311
7312       XineramaSlsScreens number-of-screens [screen-spec ...]
7313              This command configures the layout of the Single Logical screen
7314              feature.  Its first argument is the number of screens to use.
7315              It must be followed by exactly this number of screen-spec
7316              arguments.  Each of these can be written either in standard X
7317              geometry format: "<width>x<height>+<x>+<y>" or as a space
7318              separated list of numbers: "x y width height".  Both ways of
7319              describing screens can be mixed in a single command.  All four
7320              numbers must be supplied.  The x and y values specify the origin
7321              of the screen in relation to the global screen's origin while
7322              width and height specify the size of the screen in pixels.  No
7323              checks are done if the geometries make sense, so it is possible
7324              to define overlapping screens (with random results) or screens
7325              that are not visible at all.
7326
7327                  XineramaSlsScreens 3 \
7328                    512x768+0+0 512x300+512+0 512 300 512 468
7329                  XineramaSls On
7330                  XineramaPrimaryScreen 1
7331                  Xinerama On
7332
7333   User Functions and Shell Commands
7334       AddToFunc [name [I | M | C | H | D action]]
7335              Begins or adds to a function definition.  Here is an example:
7336
7337                  AddToFunc Move-or-Raise I Raise
7338                   + M Move
7339                   + D Lower
7340
7341              The function name is "Move-or-Raise", and it could be invoked
7342              from a menu or a mouse binding or key binding:
7343
7344                  Mouse 1 TS A Move-or-Raise
7345
7346              The name must not contain embedded whitespace.  No guarantees
7347              are made whether function names with embedded whitespace work or
7348              not.  This behavior may also change in the future without
7349              further notice.  The letter before the action tells what kind of
7350              action triggers the command which follows it.  'I' stands for
7351              "Immediate", and is executed as soon as the function is invoked.
7352              'M' stands for "Motion", i.e. if the user starts moving the
7353              mouse.  'C' stands for "Click", i.e., if the user presses and
7354              releases the mouse button.  'H' stands for "Hold", i.e. if the
7355              user presses a mouse button and holds it down for more than
7356              ClickTime milliseconds.  'D' stands for "Double-click".  The
7357              action 'I' causes an action to be performed on the button-press,
7358              if the function is invoked with prior knowledge of which window
7359              to act on.
7360
7361              There is a number of predefined symbols that are replaced by
7362              certain values if they appear on the command line.  Please refer
7363              to the Command Expansion section for details.
7364
7365              Warning
7366              Please read the comments on executing complex functions in the
7367              section Scripting and Complex Functions.
7368
7369              Examples:
7370
7371              If you call
7372
7373                  Key F10 R A Function MailFunction xmh "-font fixed"
7374
7375              and "MailFunction" is
7376
7377                  AddToFunc MailFunction
7378                   + I Next ($0) Iconify off
7379                   + I Next (AcceptsFocus, $0) Focus
7380                   + I None ($0) Exec exec $0 $1
7381
7382              Then the last line of the function becomes
7383
7384                   + I None (xmh) Exec exec xmh -font fixed
7385
7386              The expansion is performed as the function is executed, so you
7387              can use the same function with all sorts of different arguments.
7388              You could use
7389
7390                  Key F11 R A Function MailFunction zmail "-bg pink"
7391
7392              in the same config, if you wanted.  An example of using
7393              "$[w.id]" is:
7394
7395                  AddToFunc PrintFunction
7396                   + I Raise
7397                   + I Exec xdpr -id $[w.id]
7398
7399              Note that "$$" is expanded to '$'.
7400
7401              Another example: bind right mouse button within the window
7402              button number 6 (this is a minimize button for the win95 theme)
7403              to iconify all windows of the same resource:
7404
7405                  AddToFunc FuncIconifySameResource "I" All ($0) Iconify on
7406                  Mouse 3 6 A FuncIconifySameResource $[w.resource]
7407
7408       Beep
7409              As might be expected, this makes the terminal beep.
7410
7411       DestroyFunc function
7412              Deletes a function, so that subsequent references to it are no
7413              longer valid.  You can use this to change the contents of a
7414              function during a fvwm session.  The function can be rebuilt
7415              using AddToFunc.
7416
7417                  DestroyFunc PrintFunction
7418
7419       Echo string
7420              Prints a message to stderr.  Potentially useful for debugging
7421              things in your config.
7422
7423                  Echo Beginning style definitions...
7424
7425       EchoFuncDefinition function
7426              The EchoFuncDefinition is similar to the Echo command but prints
7427              the definition for the given function to stderr.  It is useful
7428              to find out how fvwm handles quoting and for debugging functions
7429
7430       Exec command
7431              Executes command.  You should not use an ampersand '&' at the
7432              end of the command.  You probably want to use an additional
7433              "exec" at the beginning of command.  Without that, the shell
7434              that fvwm invokes to run your command stays until the command
7435              exits.  In effect, you'll have twice as many processes running
7436              as you need.  Note that some shells are smart enough to avoid
7437              this, but it never hurts to include the "exec" anyway.
7438
7439              The following example binds function key F1 in the root window,
7440              with no modifiers, to the exec function.  The program rxvt is
7441              started with an assortment of options.
7442
7443                  Key F1 R N Exec exec rxvt -fg yellow -bg blue \
7444                    -e /bin/tcsh
7445
7446              Note that this function doesn't wait for command to complete, so
7447              things like:
7448
7449                  Exec "echo AddToMenu ... > /tmp/file"
7450                  Read /tmp/file
7451
7452              do not work reliably (see the PipeRead command).
7453
7454       ExecUseShell [shell]
7455              Makes the Exec command use the specified shell, or the value of
7456              the $SHELL environment variable if no shell is specified,
7457              instead of the default Bourne shell (/bin/sh).
7458
7459                  ExecUseShell
7460                  ExecUseShell /usr/local/bin/tcsh
7461
7462       Function FunctionName
7463              Used to bind a previously defined function to a key or mouse
7464              button.  The following example binds mouse button 1 to a
7465              function called "Move-or-Raise", whose definition was provided
7466              as an example earlier in this man page.  After performing this
7467              binding fvwm executes the "move-or-raise" function whenever
7468              button 1 is pressed in a window's title-bar.
7469
7470                  Mouse 1 T A Function Move-or-Raise
7471
7472              The keyword Function may be omitted if FunctionName does not
7473              coincide with an fvwm command.
7474
7475              Warning: Please read the comments on executing complex functions
7476              in the section Scripting and Complex Functions.
7477
7478       Nop
7479              Does nothing.  This is used to insert a blank line or separator
7480              in a menu.  If the menu item specification is
7481
7482                  AddToMenu MyMenu " " Nop
7483
7484              then a blank line is inserted.  If it looks like
7485
7486                  + "" Nop
7487
7488              then a separator line is inserted.  Can also be used as the
7489              double-click action for Menu or Popup.
7490
7491       PipeRead command [quiet]
7492              Causes fvwm to read commands from the output of the command.
7493              This command is executed by /bin/sh as if you typed it on the
7494              command line.  If the command consists of more than one word it
7495              must be quoted.  Useful for building up dynamic menu entries
7496              based on a directories contents, for example.  If the keyword
7497              Quiet follows the command no message is produced if the command
7498              is not found.
7499
7500              Example:
7501
7502                  AddToMenu HomeDirMenu
7503                  PipeRead 'for i in $HOME/*; \
7504                    do echo "+ $i Exec xterm -e vi $i"; done'
7505
7506              Note: The PipeRead changes the pointer to a watch cursor by
7507              default during execution.  However, some commands, for example
7508              xwd, need to take control of the pointer themselves and do not
7509              work.  To disable the watch cursor, use the command prior to
7510              PipeRead
7511
7512                  BusyCursor Read off
7513
7514              The PipeRead command executes synchronously.  If you want to
7515              Exec something, but need the command to run synchronously, you
7516              might do something like:
7517
7518                  PipeRead 'command 1>&2'
7519
7520              The redirection causes any output from the program to go to
7521              stderr instead of being read as a sequence of commands by fvwm.
7522              PipeRead returns 1 if the given command could be executed or -1
7523              if not (see the section Conditional Commands for the meaning of
7524              return codes).
7525
7526       Read filename [quiet]
7527              Causes fvwm to read commands from the file named filename.  If
7528              the keyword Quiet follows the command no message is produced if
7529              the file is not found.  If the file name does not begin with a
7530              slash ('/'), fvwm looks in the user's data directory, then the
7531              system data directory.  The user's data directory is by default
7532              $HOME/.fvwm.  It can be overridden by exporting FVWM_USERDIR set
7533              to any other directory.  The Read command returns 1 if the given
7534              file could be read or -1 if not (see the section Conditional
7535              Commands for the meaning of return codes).
7536
7537       SetEnv variable value
7538              Set an environment variable to a new value, similar to the
7539              shell's export or setenv command.  The variable and its value
7540              are inherited by processes started directly by fvwm.  This can
7541              be especially useful in conjunction with the FvwmM4 module.  For
7542              example:
7543
7544                  SetEnv height HEIGHT
7545
7546              makes the FvwmM4 set variable HEIGHT usable by processes started
7547              by fvwm as the environment variable $height.  If value includes
7548              whitespace, you should enclose it in quotes.  If no value is
7549              given, the variable is deleted.
7550
7551       Silent command
7552              A number of commands require a window to operate on.  If no
7553              window was selected when such a function is invoked the user is
7554              asked to select a window.  Sometimes this behavior is unwanted,
7555              for example if the function was called by a module and the
7556              window that was selected at first does not exist anymore.  You
7557              can prevent this by putting Silent in front of the fvwm command.
7558              If a function that needs a window is called with Silent without
7559              a window selected, it simply returns without doing anything.  If
7560              Silent is used on a user defined function it affects all
7561              function and sub function calls until the original function
7562              exits.
7563
7564              Another usage of Silent is with binding commands Key, PointerKey
7565              and Mouse, this disables error messages.
7566
7567              Silent also disables the error message for non-existent
7568              commands.  Note: This command is treated as a prefix to its
7569              command.  Expansion of the command line is done as if Silent was
7570              not there.
7571
7572              Examples:
7573
7574                  Silent Move 0 0
7575                  Silent User_defined_function
7576                  # do not complain on keyboards without "Help" key
7577                  Silent Key Help R A Popup HelpMenu
7578
7579       UnsetEnv [variable]
7580              Unset an environment variable, similar to shell's export or
7581              unsetenv command.  The variable then is removed from the
7582              environment array inherited by processes started directly by
7583              fvwm.
7584
7585       Wait window
7586              This command is intended to be used in fvwm functions only.  It
7587              causes execution of a function to pause until a new window
7588              matching window appears.  This can be a window's name, class, or
7589              resource string.  It may contain the wildcards '*' and '?',
7590              which are matched in the usual Unix filename manner.  This is
7591              particularly useful in the "InitFunction" if you are trying to
7592              start windows on specific desktops:
7593
7594                  AddToFunc InitFunction
7595                   + I Exec exec xterm -geometry 80x64+0+0
7596                   + I Wait xterm
7597                   + I GotoDesk 0 2
7598                   + I Exec exec xmh -font fixed -geometry \
7599                         507x750+0+0
7600                   + I Wait xmh
7601                   + I GotoDesk 0 0
7602
7603              The above function starts an xterm on the current desk, waits
7604              for it to map itself, then switches to desk 2 and starts an xmh.
7605              After the xmh window appears control moves to desk 0.
7606
7607              Fvwm remains partially functional during a wait, but any input
7608              from the modules is queued up and processed only after the
7609              window appears or the command is aborted.  For example, windows
7610              can not be focused with FvwmTaskBar or FvwmWinList during a
7611              wait.
7612
7613              You can escape from a Wait pause by pressing Ctrl-Alt-Escape
7614              (where Alt is the first modifier).  To redefine this key
7615              sequence see the EscapeFunc command.
7616
7617   Conditional Commands
7618       Conditional commands are commands that are only executed if certain
7619       conditions are met.  Most conditional commands work on windows, like
7620       Next, ThisWindow or All.  There is one conditional command, Test, that
7621       works on global conditions unrelated to windows.  The syntax of the
7622       conditions is described below.  For readability, the list of conditions
7623       is located at the end of this section.
7624
7625       Return Codes
7626              All commands in this section (unless specifically stated for the
7627              command) also have a return code that can be 1 (if the condition
7628              was met) or 0 (if the condition was not met).  Some commands may
7629              return -1 which means that an error occurred and the return code
7630              is useless.  The Break command returns -2.  Additionally, the
7631              return codes of commands run in a complex functions are passed
7632              to the invoking complex function.  The return code is used by
7633              the TestRc command.  Please refer to the commands' description
7634              for examples.  The return code can also be accessed through the
7635              variable $[cond.rc].  Non conditional commands do not modify the
7636              return code of the last conditional command.  Important note:
7637              return codes are only defined inside functions created with the
7638              AddToFunc command and are not inherited by sub functions.  To
7639              run a command without altering the return code, the KeepRc
7640              command can be used.
7641
7642       The Ring of Windows
7643              Fvwm stores windows in a ring internally.  Think of the focused
7644              window as a cursor on the current position in the ring.  The
7645              Next command and many other commands search forwards through the
7646              ring for a matching window, and Prev searches backwards.  The
7647              windows in the ring are either ordered by creation time (if the
7648              !FPSortWindowlistByFocus, NeverFocus or MouseFocus styles are
7649              used) or by the last time they had the focus.
7650
7651       List of Conditional Commands
7652              All [options] [(conditions)] command
7653                     Execute command on all windows meeting the conditions.
7654                     It returns 1 if any window matches the condition and 0
7655                     otherwise.  The execution starts at the top of the window
7656                     ring and continues towards the bottom.  The options can
7657                     be any combination of Reverse and UseStack.  If the
7658                     option Reverse is given the execution order is reversed.
7659                     The option UseStack makes All use the stacking order
7660                     instead of the window ring when walking through windows.
7661                     See the Conditions section for a list of conditions.
7662
7663                     This command implies the conditions CirculateHit,
7664                     CirculateHitIcon and CirculateHitShaded.  They can be
7665                     turned off by specifying !CirculateHit etc.  explicitly.
7666
7667              Any [(conditions)] command
7668                     Performs command if any window which satisfies all
7669                     conditions exists.  The command is run in the context of
7670                     the root window.  See the Conditions section for a list
7671                     of conditions.
7672
7673              Break [levels]
7674                     If the break command is used in a function, function
7675                     execution is terminated immediately.  Further commands of
7676                     the function are not processed.  Normally, all nested
7677                     invocations of complex functions are left.  An optional
7678                     integer number levels may be given to break out of the
7679                     given number of nested functions and continue execution
7680                     of a higher level function.  The Break command always has
7681                     the return code -2.  Example:
7682
7683                         AddToFunc PickWindowRaiseAndDeiconify
7684                         + I Pick
7685                         + I TestRc (Error) Break
7686                         + I Raise
7687                         + I Iconify off
7688
7689              Current [(conditions)] command
7690                     Performs command on the currently focused window if it
7691                     satisfies all conditions.  See the Conditions section for
7692                     a list of conditions.
7693
7694                     This command implies the conditions CirculateHit,
7695                     CirculateHitIcon and CirculateHitShaded.  They can be
7696                     turned off by specifying !CirculateHit etc.  explicitly.
7697
7698              Direction [FromPointer] direction [(conditions)] command
7699                     Performs command (typically Focus) on a window in the
7700                     given direction which satisfies all conditions.
7701                     Normally, the center of the currently focused window or
7702                     the context window in which the command was invoked is
7703                     taken as the starting point.  Lacking such a window, or
7704                     when the FromPointer option is given, the current
7705                     position of the pointer is taken as the starting point.
7706                     The direction may be one of "North", "Northeast", "East",
7707                     "Southeast", "South", "Southwest", "West", "Northwest"
7708                     and "Center".  Which window Direction selects depends on
7709                     angle and distance between the center points of the
7710                     windows.  Closer windows are considered a better match
7711                     than those farther away.  The Center direction simply
7712                     selects the window closest to the starting point.
7713                     Returns -1 if an invalid direction was given.  See the
7714                     Conditions section for a list of conditions.
7715
7716              KeepRc command
7717                     Runs the command but does not alter the return code of
7718                     the previous command.  Note: KeepRc is treated as a
7719                     prefix to its command.  Expansion of the command line is
7720                     done as if KeepRc was not there.
7721
7722              Next [(conditions)] command
7723                     Performs command (typically Focus) on the next window
7724                     which satisfies all conditions.  If the command is
7725                     running in a window context, it starts looking for a
7726                     matching window from there.  Otherwise it starts at the
7727                     focused window.  See Conditions section for a list of
7728                     conditions.
7729
7730              None [(conditions)] command
7731                     Performs command if no window which satisfies all
7732                     conditions exists.  The command is run in the context of
7733                     the root window.  Returns 1 if no window matches the
7734                     conditions and 0 otherwise.  See Conditions section for a
7735                     list of conditions.
7736
7737                     This command implies the conditions CirculateHit,
7738                     CirculateHitIcon and CirculateHitShaded.  They can be
7739                     turned off by specifying !CirculateHit etc.  explicitly.
7740
7741              NoWindow command
7742                     Performs command, but removes the window context if any.
7743                     This is not really a conditional command, but a prefix
7744                     that may be useful in menu items that should operate
7745                     without a window even if such menu is bound to window
7746                     decorations.
7747
7748              Pick [(conditions)] command
7749                     Pick works like Function if invoked in the context of a
7750                     window.  If invoked in the root window, it first asks the
7751                     user to pick a window and then executes the command in
7752                     the context of that window.  This avoids annoying
7753                     multiple selections with complex functions.  The command
7754                     is executed only if the given conditions are met.
7755                     Returns -1 if no window was selected.  See Conditions
7756                     section for a list of conditions.
7757
7758                     This command implies the conditions CirculateHit,
7759                     CirculateHitIcon and CirculateHitShaded.  They can be
7760                     turned off by specifying !CirculateHit etc.  explicitly.
7761
7762              PointerWindow [(conditions)] command
7763                     Performs command if the window under the pointer
7764                     satisfies all conditions.  Returns -1 if there is no
7765                     window under the pointer.  See Conditions section for a
7766                     list of conditions.
7767
7768                     This command implies the conditions CirculateHit,
7769                     CirculateHitIcon and CirculateHitShaded.  They can be
7770                     turned off by specifying !CirculateHit etc.  explicitly.
7771
7772              Prev [(conditions)] command
7773                     Performs command (typically Focus) on the previous window
7774                     which satisfies all conditions.  If the command is
7775                     running in a window context, it starts looking for a
7776                     matching window from there.  Otherwise it starts at the
7777                     focused window.  See Conditions section for a list of
7778                     conditions.
7779
7780              ScanForWindow [FromPointer] dir1 dir2 [(conditions)] command
7781                     Performs command (typically Focus) on a window in the
7782                     given direction which satisfies all conditions.
7783                     Normally, the center of the currently focused window or
7784                     the context window in which the command was invoked is
7785                     taken as the starting point.  Lacking such a window, or
7786                     when the FromPointer option is given, the current
7787                     position of the pointer is taken as the starting point.
7788                     The direction dir1 may be one of "North", "NorthEast",
7789                     "East", "SouthEast", "South", "SouthWest", "West", and
7790                     "NorthWest".  Which window ScanForWindow selects depends
7791                     first on the position along the primary axis given by
7792                     dir1.  If any windows have the exact same coordinate
7793                     along the primary axis, the secondary direction is used
7794                     to order the windows.  The direction dir2 may be one of
7795                     the same set of values as dir1.  If dir2 is not perfectly
7796                     perpendicular to dir1, ScanForWindow returns a failure.
7797                     When using ScanForWindow repeatedly with the same
7798                     arguments, it is guaranteed that all windows matching the
7799                     conditions will eventually be found.  If the focus
7800                     reaches a limit along the primary axis, it will wrap
7801                     around to the opposite side.  Returns -1 if an invalid
7802                     direction was given.  See Conditions section for a list
7803                     of conditions.
7804
7805              Test [(test-conditions)] command
7806                     Performs command if all test-conditions are satisfied.
7807                     The test-conditions are keywords with possible arguments
7808                     from the list below and are separated by commas or
7809                     whitespace.  They include: Version operator x.y.z,
7810                     EnvIsSet varname, EnvMatch varname pattern,
7811                     EdgeHasPointer direction, EdgeIsActive direction, Start,
7812                     Init, Restart, Exit, Quit, ToRestart, True, False, F, R,
7813                     W, X and I.  A test-condition prefixed with "!" is
7814                     negated.
7815
7816                     The Version operator x.y.z test-condition is fulfilled if
7817                     the logical condition of the expression is true.  Valid
7818                     operator values are: >=, >, <=, <, == and !=.
7819
7820                     Example:
7821
7822                         Test (Version >= 2.5.11) Echo 2.5.11 or later.
7823
7824                     The EnvIsSet varname test-condition is true if the given
7825                     environment variable is set.  The EnvMatch varname
7826                     pattern test-condition is true if pattern matches the
7827                     given environment variable value.  The pattern may
7828                     contain special "*" and "?" chars.
7829
7830                     The EdgeHasPointer [direction] test-condition is true if
7831                     the edge in the given direction currently contains the
7832                     pointer.  The EdgeIsActive [direction] test-condition is
7833                     true if the edge in the given direction currently is
7834                     active.  An edge is active, and can contain a pointer if
7835                     either a command is bound to it or edge scroll is
7836                     available in that direction.  The direction may be one of
7837                      Any, North, Top, Up, West, Left, South, Bottom,
7838                      Down, Right and  East.  If no direction is specified Any
7839                     is assumed.
7840
7841                     The Start test-condition is the same as either Init or
7842                     Restart.  It is only true on startup or restart prior and
7843                     during StartFunction execution.  The Exit test-condition
7844                     is the same as either Quit or ToRestart.  It is only
7845                     valid on shutdown during ExitFunction function execution.
7846
7847                     The True and False test-conditions are unconditionally
7848                     true and false.
7849
7850                     Additionally, if a test-condition name is not recognized,
7851                     the Error return code is set and the command is not
7852                     executed.
7853
7854                     The F file, R file, W file, X file and I file
7855                     test-conditions test for existence of the given [F]ile
7856                     (possibly with [R]ead/[W]rite permissions), e[X]ecutable
7857                     (in $PATH), or the [I]mage (in ImagePath).
7858
7859                     Example:
7860
7861                         AddToFunc StartFunction I Test (Init) Exec exec xterm
7862
7863                         AddToFunc VerifyVersion
7864                         + I Test (Version 2.5.*) Echo 2.5.x detected
7865                         + I TestRc (NoMatch) \
7866                              Test (!Version 2.6.*) Echo Future version
7867                         + I TestRc (NoMatch) \
7868                              Echo 2.6.x is detected
7869
7870                         Test (F $[FVWM_USERDIR]/local-config) Read local-config
7871                         Test (X xterm-utf16) Exec exec xterm-utf16
7872
7873              TestRc [([!]returncode)] command
7874                     Performs command if the last conditional command returned
7875                     the value returncode.  Instead of the numeric values 0
7876                     (no match), 1 (match), -1 (error), and -2 (break) the
7877                     symbolic names "NoMatch", "Match", "Error" and "Break"
7878                     can be used.  If no returncode is given, the default 0 is
7879                     assumed.  If the return code is prefixed with '!', the
7880                     command is executed if returncode does not match the
7881                     value returned by the conditional command.  The TestRc
7882                     command can only be used inside functions.  If the
7883                     command is another conditional command, the previous
7884                     return code is replaced by the new one.  Example:
7885
7886                         AddToFunc ToggleXterm
7887                         + I All (my_xtermwindow) Close
7888                         + I TestRc (NoMatch) Exec xterm -T my_xtermwindow
7889
7890              ThisWindow [(conditions)] command
7891                     ThisWindow executes the specified command in the context
7892                     of the current operand window.  If there is no operand
7893                     window (it is invoked in the root window), the command is
7894                     ignored.  ThisWindow is never interactive.  The command
7895                     is executed only if the given conditions are met.  It
7896                     returns -1 if used outside a window context.  See
7897                     Conditions section for a list of conditions.
7898
7899                     This command implies the conditions CirculateHit,
7900                     CirculateHitIcon and CirculateHitShaded.  They can be
7901                     turned off by specifying "!CirculateHit" etc.
7902                     explicitly.
7903
7904              WindowId [id] [(conditions)] | [root [screen]] command
7905                     The WindowId command looks for a specific window id and
7906                     runs the specified command on it.  The second form of
7907                     syntax retrieves the window id of the root window of the
7908                     given screen.  If no screen is given, the current screen
7909                     is assumed.  The window indicated by id may belong to a
7910                     window not managed by fvwm or even a window on a
7911                     different screen.  Although most commands can not operate
7912                     on such windows, there are some exceptions, for example
7913                     the WarpToWindow command.  Returns -1 if no window with
7914                     the given id exists.  See Conditions section for a list
7915                     of conditions.
7916
7917                     This command implies the conditions CirculateHit,
7918                     CirculateHitIcon and CirculateHitShaded.  They can be
7919                     turned off by specifying !CirculateHit etc.  explicitly.
7920
7921                     Examples:
7922
7923                         WindowId 0x34567890 Raise
7924                         WindowId root 1 WarpToWindow 50 50
7925                         WindowId $0 (Silly_Popup) Delete
7926
7927                     In the past this command was mostly useful for functions
7928                     used with the WindowList command, or for selective
7929                     processing of FvwmEvent calls (as in the last example),
7930                     but currently these handler functions are called within a
7931                     window context, so this command is not really needed in
7932                     these cases.  Still it may be useful if, for example, the
7933                     window id should be stored in the environment variable
7934                     for a further proceeding.
7935
7936                         Pick SetEnv BOOKMARKED_WINDOW $[w.id]
7937                         WindowId $[BOOKMARKED_WINDOW] WarpToWindow
7938
7939       Conditions
7940              The conditions that may be given as an argument to any
7941              conditional command are a list of keywords separated by commas,
7942              enclosed in parentheses.  Unless stated otherwise, conditional
7943              commands accept all the conditions listed below.  Note that
7944              earlier versions of fvwm required the conditions to be separated
7945              by whitespace instead of commas and enclosed in brackets instead
7946              of parentheses (this is still supported for backward
7947              compatibility).
7948
7949              In addition, the conditions may include one or more window names
7950              to match to.  If more than one window name is given, all of them
7951              must match.  The window name, icon name, class, and resource are
7952              considered when attempting to find a match.  Each name may
7953              include the wildcards '*' and '?', and may consist of two or
7954              more alternatives, separated by the character '|', which acts as
7955              an OR operator.  (If OR operators are used, they must not be
7956              separated by spaces from the names.) Each window name can begin
7957              with '!', which prevents command if any of the window name, icon
7958              name, class or resource match.  However, '!' must not be applied
7959              to individual names in a group separated by OR operators; it may
7960              only be applied to the beginning of the group, and then it
7961              operates on the whole group.
7962
7963              Examples:
7964
7965                  Next ("Netscape|konqueror|Mozilla*") WarpToWindow 99 90
7966
7967              This goes to the next web browser window, no matter which of the
7968              three named web browsers is being used.
7969
7970                  Next ("Mozilla*", "Bookmark*") WarpToWindow 99 90
7971
7972              This goes to Mozilla's bookmark manager window, ignoring other
7973              Mozilla windows and other browsers' bookmark windows.
7974
7975                  All ("XTerm|rxvt", !console) Iconify
7976
7977              This iconifies all the xterm and rxvt windows on the current
7978              page, except that the one named "console" (with the -name option
7979              to xterm) is excluded.
7980
7981                  Next (!"FvwmPager|FvwmForm*|FvwmButtons") Raise
7982                  Next (!FvwmPager, !FvwmForm*, !FvwmButtons) Raise
7983
7984              These two commands are equivalent; either one raises the next
7985              window which is not one of the named fvwm modules.
7986
7987              Any condition can be negated by using a an exclamation mark
7988              ('!')  directly in front of its name.
7989
7990              AcceptsFocus, AnyScreen, CirculateHit, CirculateHitIcon,
7991              CirculateHitShaded, Closable, CurrentDesk, CurrentGlobalPage,
7992              CurrentGlobalPageAnyDesk, CurrentPage, CurrentPageAnyDesk,
7993              CurrentScreen, FixedPosition, FixedSize, Focused, HasHandles,
7994              HasPointer, Iconic, Iconifiable, Layer [n], Maximizable,
7995              Maximized, Overlapped, PlacedByButton n, PlacedByButton3,
7996              PlacedByFvwm, Raised, Shaded, State n, Sticky,
7997              StickyAcrossDesks, StickyAcrossPages, StickyIcon,
7998              StickyAcrossDesksIcon, StickyAcrossPagesIcon, Transient,
7999              Visible.
8000
8001              The AcceptsFocus condition excludes all windows that do not want
8002              the input focus (the application has set the "Input hints" for
8003              the window to False) and do not use the Lenience option of the
8004              Style command.  Also, all windows using the NeverFocus style are
8005              ignored.  Note: !Lenience is equivalent to the deprecated option
8006              NoLenience.
8007
8008              With the AnyScreen condition used together with any of the
8009              Current...  conditions, windows that do not intersect the
8010              Xinerama screen containing the mouse pointer are considered for
8011              a match too.  For example:
8012
8013                  # Focus next window on current page,
8014                  # regardless of Xinerama screen
8015                  Next (CurrentPage, AnyScreen) Focus
8016
8017              The CirculateHit and CirculateHitIcon options override the
8018              CirculateSkip and CirculateSkipIcon Style attributes for normal
8019              or iconic windows.  The CirculateHitShaded option overrides the
8020              CirculateSkipShaded Style.  All three options are turned on by
8021              default for the Current command.  They can be turned off by
8022              specifying !CirculateHit etc.  explicitly.  Note: Do not confuse
8023              these conditions with the style options of the same name.
8024              Specifically,
8025
8026                  Style foo CirculateSkip
8027                  Next (foo, CirculateHit) ...
8028
8029              is not the same as
8030
8031                  Style foo CirculateHit ...
8032                  Next (foo)
8033
8034              The prior selects windows with the name foo only in the Next
8035              command.  In the second example, these windows are always
8036              matched in all conditional commands.
8037
8038              The Closable condition matches only windows that are allowed to
8039              be closed.
8040
8041              The CurrentDesk condition matches only windows that are on the
8042              current desk.
8043
8044              The CurrentGlobalPage condition matches only windows that are on
8045              the current page of the current desk, regardless of whether
8046              Xinerama support is enabled or not.  This condition implicitly
8047              activates the CurrentDesk condition.
8048
8049              The CurrentGlobalPageAnyDesk condition matches only windows that
8050              are on the current page of any desk, regardless of whether
8051              Xinerama support is enabled or not.
8052
8053              The CurrentPage condition matches only windows that are on the
8054              current page of the current desk.  If Xinerama support is
8055              enabled, it only matches windows that are at least partially on
8056              the Xinerama screen containing the mouse pointer.  This
8057              condition implicitly activates the CurrentDesk condition.
8058
8059              The CurrentPageAnyDesk and CurrentScreen conditions matches only
8060              windows that are on the current page of any desk.  If Xinerama
8061              support is enabled, they only match windows that are at least
8062              partially on the Xinerama screen containing the mouse pointer.
8063
8064              The FixedPosition condition excludes all windows that do not
8065              have a fixed position, either set through WM hints or the Style
8066              option FixedPosition.  Example:
8067
8068                  DestroyFunc ToggleFixedGeometry
8069                  AddToFunc   ToggleFixedGeometry
8070                  + I Pick (FixedPosition) \
8071                       WindowStyle VariablePosition, VariableSize
8072                  + I TestRc (NoMatch) WindowStyle FixedPosition, FixedSize
8073
8074              The FixedSize condition excludes all windows that do not have a
8075              fixed size, either set through WM hints or the Style option
8076              FixedSize.
8077
8078              The Focused matches on the window that currently has the
8079              keyboard focus.  This is not useful for the Current command but
8080              can be used with the other conditional commands.
8081
8082              The HasHandles condition excludes all windows that do not have
8083              resize handles.
8084
8085              The HasPointer condition excludes all windows that do not
8086              contain the pointer.
8087
8088              The Iconic condition matches only iconic windows.
8089
8090              The Iconifiable condition matches only windows that are allowed
8091              to be iconified.
8092
8093              The Layer [n] condition matches only windows on the specified
8094              layer.  The optional argument of the Layer condition defaults to
8095              the layer of the focused window.  The negation !Layer switches
8096              off the Layer condition.
8097
8098              The Maximizable condition matches only windows that are allowed
8099              to be maximized.
8100
8101              The Maximized condition matches only maximized windows.
8102
8103              The Overlapped condition matches only windows that are
8104              overlapped by other windows on the same layer (or unmanaged
8105              windows if the option RaiseOverUnmanaged of the BugOpts command
8106              is used).  Note that this condition can be slow if you have many
8107              windows or if RaiseOverUnmanaged is used and the connection to
8108              the X server is slow.
8109
8110              The PlacedByButton n condition is fulfilled if the last
8111              interactive motion of the window (with the Move command or as
8112              ManualPlacement) was ended by pressing mouse button n.  Example:
8113
8114                  Mouse   1 T     A       Function MoveWindow
8115
8116                  DestroyFunc MoveWindow
8117                  AddToFunc MoveWindow
8118                  + C Move
8119                  + C ThisWindow (PlacedByButton 5) WindowShade off
8120                  + C TestRc (Match) Maximize on 0 100
8121                  + C ThisWindow (PlacedByButton 4) WindowShade on
8122
8123              The PlacedByButton3 condition has the same meaning as
8124              PlacedByButton 3.  It remains only for backward compatibility.
8125
8126              The PlacedByFvwm condition excludes all windows that have been
8127              placed manually or by using the user or program position hint.
8128
8129              The Raised conditions matches only windows that are fully
8130              visible on the current viewport and not overlapped by any other
8131              window.
8132
8133              The Shaded conditions matches only shaded windows (see
8134              WindowShade command).
8135
8136              The State n or !State n conditions match only windows with the
8137              specified integer state set (or unset).  See the State command
8138              for details.  The argument may range from 0 to 31.
8139
8140              The Sticky, StickyAcrossDesks and StickyAcrossPages match only
8141              windows that are currently sticky, sticky across all desks or
8142              sticky across all pages.  Please refer to the Style options with
8143              the same name and the commands Stick, StickAcrossDesks and
8144              StickAcrossPages for details.
8145
8146              The StickyIcon, StickyAcrossDesksIcon and StickyAcrossPagesIcon
8147              match only windows that become sticky, sticky across all desks
8148              or sticky across all pages when they are in iconified state.
8149
8150              The Transient condition matches only windows that have the
8151              "transient" property set by the application.  This it usually
8152              the case for application popup menus and dialogs.  The FvwmIdent
8153              module can be used to find out whether a specific window is
8154              transient.
8155
8156              The Visible condition matches only windows that are at least
8157              partially visible on the current viewport and not completely
8158              overlapped by other windows.
8159
8160   Module Commands
8161       Fvwm maintains a database of module configuration lines in a form
8162
8163           *<ModuleName>: <Config-Resource>
8164
8165       where <ModuleName> is either a real module name or an alias.
8166
8167       This database is initially filled from config file (or from output of
8168       -cmd config command), and can be later modified either by user (via
8169       FvwmCommand) or by modules.
8170
8171       When modules are run, they read appropriate portion of database.  (The
8172       concept of this database is similar to one used in X resource
8173       database).
8174
8175       Commands for manipulating module configuration database are described
8176       below.
8177
8178       * module_config_line
8179              Defines a module configuration.  module_config_line consists of
8180              a module name (or a module alias) and a module resource line.
8181              The new syntax allows a delimiter, a colon and optional spaces,
8182              between the module name and the rest of the line, this is
8183              recommended to avoid conflicts.
8184
8185                  *FvwmIconBox: MaxIconSize 48x48
8186                  *FvwmPager: WindowBorderWidth 1
8187                  *FvwmButtons-TopRight: Geometry 100x100-0+0
8188                  *FvwmButtons-Bottom: Geometry +0-0
8189
8190       DestroyModuleConfig module_config
8191              Deletes module configuration entries, so that new configuration
8192              lines may be entered instead.  This also sometimes the only way
8193              to turn back some module settings, previously defined.  This
8194              changes the way a module runs during a fvwm session without
8195              restarting.  Wildcards can be used for portions of the name as
8196              well.
8197
8198              The new non-conflicting syntax allows a delimiter, a colon and
8199              optional spaces between the module name and the rest of the
8200              line.  In this case a module name (or alias) can't have
8201              wildcards.
8202
8203                  DestroyModuleConfig FvwmButtons*
8204                  DestroyModuleConfig FvwmForm: Fore
8205                  DestroyModuleConfig FvwmIconBox: Max*
8206
8207       KillModule modulename [modulealias]
8208              Causes the module which was invoked with name modulename to be
8209              killed.  The name may include wildcards.  If modulealias is
8210              given, only modules started with the given alias are killed.
8211
8212                  # kill all pagers
8213                  KillModule FvwmPager
8214
8215                  Module FvwmEvent SoundEvent
8216                  KillModule FvwmEvent SoundEvent
8217
8218       Module modulename [moduleparams]
8219              Specifies a module with its optional parameters which should be
8220              spawned.  Currently several modules, including FvwmButtons,
8221              FvwmEvent, FvwmForm, FvwmGtk, FvwmPager, FvwmScript support
8222              aliases.  Aliases are useful if more than one instance of the
8223              module should be spawned.  Aliases may be configured separately
8224              using * syntax.  To start a module FvwmForm using an alias
8225              MyForm, the following syntax may be used:
8226
8227                  Module FvwmForm MyForm
8228
8229              At the current time the available modules (included with fvwm)
8230              are FvwmAnimate (produces animation effects when a window is
8231              iconified or de-iconified), FvwmAuto (an auto raise module),
8232              FvwmBacker (to change the background when you change desktops),
8233              FvwmBanner (to display a spiffy XBM, XPM, PNG or SVG),
8234              FvwmButtons (brings up a customizable tool bar), FvwmCommandS (a
8235              command server to use with shell's FvwmCommand client),
8236              FvwmConsole (to execute fvwm commands directly), FvwmCpp (to
8237              preprocess your config with cpp), FvwmDebug (to help debug
8238              fvwm), FvwmDragWell (the place to drag&drop to), FvwmEvent
8239              (trigger various actions by events), FvwmForm (to bring up
8240              dialogs), FvwmGtk (to bring up GTK menus and dialogs),
8241              FvwmIconBox (like the mwm IconBox), FvwmIconMan (a flexible icon
8242              manager), FvwmIdent (to get window info), FvwmM4 (to preprocess
8243              your config with m4), FvwmPager (a mini version of the desktop),
8244              FvwmPerl (a Perl manipulator and preprocessor), FvwmProxy (to
8245              locate and control obscured windows by using small proxy
8246              windows), FvwmRearrange (to rearrange windows), FvwmSave (saves
8247              the desktop state in .xinitrc style), FvwmSaveDesk (saves the
8248              desktop state in fvwm commands), FvwmScript (another powerful
8249              dialog toolkit), FvwmScroll (puts scrollbars on any window),
8250              FvwmTabs (a generic tabbing module), FvwmTaskBar (a Windows like
8251              task bar), FvwmTheme (managed colorsets, obsolete), FvwmWharf
8252              (an AfterStep like button bar), FvwmWindowMenu (a configurable
8253              fvwm menu listing current windows), FvwmWinList (a window list).
8254              These modules have their own man pages.  There may be other
8255              modules out on there as well.
8256
8257              Modules can be short lived transient programs or, like
8258              FvwmButtons , can remain for the duration of the X session.
8259              Modules are terminated by the window manager prior to restarts
8260              and quits, if possible.  See the introductory section on
8261              modules.  The keyword Module may be omitted if modulename is
8262              distinct from all fvwm commands.
8263
8264       ModuleListenOnly modulename [moduleparams]
8265              This command works like the Module command, but fvwm never sends
8266              any messages to the module.  This may be handy to write a module
8267              as a shell script that is triggered by external events without
8268              the burden to answer packets sent by fvwm.  For example, a
8269              module written as a shell script may change labels of the
8270              FvwmButtons module to implement a simple clock.
8271
8272       ModulePath path
8273              Specifies a colon separated list of directories in which to
8274              search for modules.  To find a module, fvwm searches each
8275              directory in turn and uses the first file found.  Directory
8276              names on the list do not need trailing slashes.
8277
8278              The ModulePath may contain environment variables such as $HOME
8279              (or ${HOME}).  Further, a '+' in the path is expanded to the
8280              previous value of the path, allowing easy appending or
8281              prepending to the path.
8282
8283              For example:
8284
8285                  ModulePath ${HOME}/lib/fvwm/modules:+
8286
8287              The directory containing the standard modules is available via
8288              the environment variable $FVWM_MODULEDIR.
8289
8290       ModuleSynchronous [Expect string] [Timeout secs] modulename
8291              The ModuleSynchronous command is very similar to Module.  Fvwm
8292              stops processing any commands and user input until the module
8293              sends a string beginning with "NOP FINISHED STARTUP" back to
8294              fvwm.  If the optional Timeout is given fvwm gives up if the
8295              module sent no input back to fvwm for secs seconds.  If the
8296              Expect option is given, fvwm waits for the given string instead.
8297              ModuleSynchronous should only be used during fvwm startup to
8298              enforce the order in which modules are started.  This command is
8299              intended for use with the (currently hypothetical) module that
8300              should be in place before other modules are started.
8301
8302              Warning: It is quite easy to hang fvwm with this command, even
8303              if a timeout is given.  Be extra careful choosing the string to
8304              wait for.  Although all modules in the fvwm distribution send
8305              back the "NOP FINISHED STARTUP" string once they have properly
8306              started up, this may not be the case for third party modules.
8307              Moreover, you can try to escape from a locked ModuleSynchronous
8308              command by using the key sequence Ctrl-Alt-Escape (see the
8309              EscapeFunc).
8310
8311       ModuleTimeout timeout
8312              Specifies how many seconds fvwm waits for a module to respond.
8313              If the module does not respond within the time limit then fvwm
8314              kills it.  timeout must be greater than zero, or it is reset to
8315              the default value of 30 seconds.
8316
8317       SendToModule modulename string
8318              Sends an arbitrary string (no quotes required) to all modules,
8319              whose alias or name matching modulename, which may contain
8320              wildcards.  This only makes sense if the module is set up to
8321              understand and deal with these strings though.  Can be used for
8322              module to module communication, or implementation of more
8323              complex commands in modules.
8324
8325   Session Management Commands
8326       Quit
8327              Exits fvwm, generally causing X to exit too.
8328
8329       QuitScreen
8330              Causes fvwm to stop managing the screen on which the command was
8331              issued.
8332
8333       Restart [window_manager [params]]
8334              Causes fvwm to restart itself if window_manager is left blank,
8335              or to switch to an alternate window manager (or other fvwm
8336              version) if window_manager is specified.  If the window manager
8337              is not in your default search path, then you should use the full
8338              path name for window_manager.
8339
8340              This command should not have a trailing ampersand.  The command
8341              can have optional parameters with simple shell-like syntax.  You
8342              can use ~ (is expanded to the user's home directory) and
8343              environmental variables $VAR or ${VAR}.  Here are several
8344              examples:
8345
8346                  Key F1 R N Restart
8347                  Key F1 R N Restart fvwm -s
8348                  Key F1 R N Restart ~/bin/fvwm -f $HOME/.fvwm/main
8349                  Key F1 R N Restart fvwm1 -s -f .fvwmrc
8350                  Key F1 R N Restart xterm -n '"X console"' \
8351                    -T \"X\ console\" -e fvwm1 -s
8352
8353              If you need a native restart, we suggest only to use Restart
8354              command without parameters unless there is a reason not to.  If
8355              you still use an old command 'Restart fvwm2' that was correct in
8356              2.2.x, all current command line arguments are lost.  On a
8357              restart without parameters or with --pass-args, they are
8358              preserved.  Here are some cases when 'Restart fvwm2' or 'Restart
8359              fvwm' cause troubles:
8360
8361                  * running fvwm under a session manager
8362                  * running fvwm with multi headed displays
8363                  * having command line arguments, like
8364                    -f themes-rc or -cmd
8365                  * if the first fvwm2 in the $PATH is a
8366                    different one
8367
8368              This is why we are issuing a warning on an old usage.  If you
8369              really want to restart to fvwm with no additional arguments, you
8370              may get rid of this warning by using "Restart fvwm -s" or
8371              "Restart /full/path/fvwm".
8372
8373              Note, currently with multi headed displays, restart of fvwms on
8374              different screens works independently.
8375
8376       Restart --pass-args window_manager
8377              The same as Restart without parameters but the name for the
8378              current window manager is replaced with the specified
8379              window_manager and original arguments are preserved.
8380
8381              This command is useful if you use initial arguments like
8382
8383                  -cmd FvwmCpp
8384
8385              and want to switch to another fvwm version without losing the
8386              initial arguments.
8387
8388       Restart --dont-preserve-state [other-params]
8389              The same as
8390
8391                  Restart [other-params]
8392
8393              but it does not save any window states over the restart.
8394
8395              Without this option, Restart preserves most per-window state by
8396              writing it to a file named .fs-restart-$HOSTDISPLAY in the
8397              user's home directory.
8398
8399       SaveSession
8400              Causes a session manager (if any) to save the session.  This
8401              command does not work for xsm, it seems that xsm does not
8402              implement this functionality.  Use Unix signals to manage xsm
8403              remotely.
8404
8405       SaveQuitSession
8406              Causes a session manager (if any) to save and then shutdown the
8407              session.  This command does not work for xsm, it seems that xsm
8408              does not implement this functionality.  Use Unix signals to
8409              manage xsm remotely.
8410
8411   Colorsets
8412       Colorsets are a powerful method to control colors.  Colorsets create
8413       appearance resources that are shared by fvwm and its modules.  When a
8414       colorset is modified all parts of fvwm react to that change.  A
8415       colorset includes a foreground color, background color, shadow and
8416       highlight color (often based on the background color), background face
8417       (this includes images and all kinds of gradients).  There is a way to
8418       render background face and specify other color operations.
8419
8420       In the 2.4.x versions a special module FvwmTheme was introduced to
8421       manage colorsets.  Starting with the 2.5.x beta version, the FvwmTheme
8422       functionality was moved to the core fvwm, so this module became
8423       obsolete.
8424
8425       The old syntax:
8426
8427           DestroyModuleConfig FvwmTheme: *
8428           *FvwmTheme: Colorset 0 fg black, bg rgb:b4/aa/94
8429           *FvwmTheme: Colorset 1 fg black, bg rgb:a1/b2/c8
8430
8431       corresponds to the new syntax:
8432
8433           CleanupColorsets
8434           Colorset 0 fg black, bg rgb:b4/aa/94
8435           Colorset 1 fg black, bg rgb:a1/b2/c8
8436
8437
8438       Colorset num [options]
8439              Creates or modifies colorset num.  Colorsets are identified by
8440              this number.  The number can start at zero and can be a very
8441              large number.
8442
8443              Warning: The highest colorset number used determines memory
8444              consumption.  Thus, if you define 'Colorset 100000', the memory
8445              for 100001 colorsets is used.  Keep your colorset numbers as
8446              small as possible.
8447
8448              By convention, colorsets are numbered like this:
8449
8450                  # 0 = Default colors
8451                  # 1 = Inactive windows
8452                  # 2 = Active windows
8453                  # 3 = Inactive menu entry and menu background
8454                  # 4 = Active menu entry
8455                  # 5 = greyed out menu entry (only bg used)
8456                  # 6 = module foreground and background
8457                  # 7 = hilight colors
8458
8459              If you need to have more colors and do not want to reinvent the
8460              wheel, you may use the convention used in fvwm-themes, it
8461              defines the meaning of the first 40 colorsets for nearly all
8462              purposes:
8463
8464              http://fvwm-themes.sourceforge.net/doc/colorsets
8465
8466              Each colorset has four colors, an optional pixmap and an
8467              optional shape mask.  The four colors are used by modules as the
8468              foreground, background, highlight and shadow colors.  When a
8469              colorset is created it defaults to a foreground of black and
8470              background of gray.  The background and foreground are marked as
8471              "average" and "contrast" (see later) so that just specifying a
8472              pixmap or gradient gives sensible results.
8473
8474              options is a comma separated list containing some of the
8475              keywords: fg, Fore, Foreground, bg, Back, Background, hi,
8476              Hilite, Hilight, sh, Shade, Shadow, fgsh, Pixmap, TiledPixmap,
8477              AspectPixmap, Transparent, RootTransparent, Shape, TiledShape,
8478              AspectShape, NoShape, ?Gradient, Tint, fgTint, bgTint, Alpha,
8479              fgAlpha, Dither, NoDither, IconTint, IconAlpha, Plain.
8480
8481              fg, Fore and Foreground take a color name as an argument and set
8482              the foreground color.  The special name Contrast may be used to
8483              select a color that contrasts well with the background color.
8484              To reset the foreground color to the default value you can
8485              simply omit the color name.
8486
8487              bg, Back and Background take a color name as an argument and set
8488              the background color.  It also sets the highlight and shadow
8489              colors to values that give a 3d effect unless these have been
8490              explicitly set with the options below.  The special name Average
8491              may be used to select a color that is the average color of the
8492              pixmap.  If the pixmap is tinted with the Tint option, the tint
8493              is not taken in account in the computation of the average color.
8494              You should use the bgTint option to get the "real" average
8495              color.  The background color is reset to the default value if
8496              the color name is omitted.
8497
8498              hi, Hilite and Hilight take a color name as an argument and set
8499              the highlight color.  If the highlight color is not explicitly
8500              set, the default is to calculate it from the background color.
8501              To switch back to the default behavior the color name can be
8502              omitted.
8503
8504              sh, Shade and Shadow take a color name as an argument and set
8505              the shadow color.  If the shadow color is not explicitly set,
8506              the default is to calculate it from the background color.  To
8507              switch back to the default behavior the color name can be
8508              omitted.
8509
8510              fgsh takes a color name as an argument and sets the color used
8511              by the shadowing font effect.  See the Font Shadow Effects
8512              section of the fvwm man page.  By default this color is computed
8513              from the foreground and background colors.  To switch back to
8514              the default the color name can be omitted.
8515
8516              Pixmap, TiledPixmap and AspectPixmap take a file name as an
8517              argument, search the ImagePath and use it as the background
8518              pixmap.  Any transparent parts are filled with the background
8519              color.  Not specifying a file name removes any existing image
8520              from the colorset.  TiledPixmap produces repeated copies of the
8521              image with no scaling, Pixmap causes the image to be stretched
8522              to fit whatever object the colorset is applied to and
8523              AspectPixmap stretches to fit but retains the image aspect
8524              ratio.
8525
8526              Transparent creates a transparent background pixmap.  The pixmap
8527              is used as a window background to achieve root transparency.
8528              For this you should use the ParentalRelativity option to the
8529              Style command.  A subsequent root background change may be
8530              detected or not, this depends on the program used to set the
8531              background.  If you use fvwm-root, xsetbg (xli), FvwmBacker with
8532              solid or colorset colors or a recent version of Esetroot (>=
8533              9.2) a background change is detected.  If background changes are
8534              not detected (e.g., if you use xv or xsetroot) you can force
8535              detection by using the -d option of fvwm-root:
8536
8537                  xv -root -quit mybg.png; fvwm-root -d
8538
8539              Due to the way X implements transparency no guarantees can be
8540              made that the desired effect can be achieved.  The application
8541              may even crash.  If you experience any problems with this
8542              option, do not use it.
8543
8544              Using outline move and resize (see the OpaqueMoveSize command
8545              and the ResizeOpaque Style option) as well as setting the
8546              WindowShadeShrinks style may help.  The transparency achieved
8547              with Transparent depends on whether the colorset is applied to
8548              the foreground or the background of a window.  In the second
8549              case the transparency is relative to the parent window of the
8550              window on which the colorset is defined.  For example:
8551
8552                  Colorset 12 VGradient 200 grey30 grey60
8553                  Colorset 17 Transparent
8554                  *FvwmIconMan: Colorset 12
8555                  *FvwmIconMan: PlainColorset 17
8556
8557              gives an IconMan with a vertical grey gradient background and
8558              the buttons use the background (by transparency).  To obtain a
8559              (root) transparent IconMan:
8560
8561                  Colorset 12 Transparent
8562                  Colorset 17 Transparent
8563                  Colorset 18 Transparent
8564                  Colorset 19 Transparent
8565
8566                  *FvwmIconMan: Colorset 12
8567                  *FvwmIconMan: PlainColorset 17
8568                  *FvwmIconMan: FocusColorset 18
8569                  *FvwmIconMan: IconColorset  19
8570
8571              The Colorset IconMan option defines the IconMan window
8572              background, but the PlainColorset and the FocusColorset are
8573              drawn on the foreground.  So, the transparency of the IconMan
8574              buttons is achieved by drawing nothing.  Now if this IconMan is
8575              swallowed in an FvwmButtons as:
8576
8577                  FvwmButtons:(Colorset 10, Swallow "FvwmIconMan" 'FvwmIconMan')
8578
8579              then, FvwmIconMan becomes a child of FvwmButtons and it is
8580              transparent relative to FvwmButtons.  So, in this case
8581              FvwmIconMan uses Colorset 10 as background.  If you want root
8582              transparency use the RootTransparent option.  FvwmButtons,
8583              FvwmIconMan, FvwmIdent, FvwmScroll and FvwmTaskBar are
8584              relatively simple.  There is one main colorset option which
8585              defines the background of the window and the other colorsets (if
8586              any) are drawn on the foreground.  The case of FvwmWinList and
8587              FvwmProxy are simpler.  With FvwmWinList all the colorsets are
8588              drawn on the foreground and with FvwmProxy the two colorsets
8589              refer to the window backgrounds.  FvwmPager is more complicated
8590              as almost everything in the pager are windows with some parental
8591              relations (the mini windows are the child and the desktops are
8592              the parents and all this is complicated by the hilighted page).
8593              So, the colorsets apply to the background of these windows.  You
8594              should experiment.  For FvwmForm and FvwmScript the situation is
8595              similar.  There is a main window (a child of the root window)
8596              which corresponds to the main colorset and most of the widgets
8597              are windows which are children of the main window.  Tint may
8598              work or not with the Transparent option.  When the colorset is
8599              drawn on the foreground Tint should work.  In some cases,
8600              tinting may be very slow.  Tinting may work with fvwm menu
8601              (without animation).  Tinting may work better if your X server
8602              has backing store enabled (try xdpyinfo to see if this the
8603              case).  There is a chance that the backing store support of your
8604              X server does not work well with the terrible hack used to Tint
8605              the ParentRelative Pixmap.  So, to get tinted root transparency
8606              it is more safe to use the RootTransparent option.
8607
8608              RootTransparent [ buffer ] creates a root transparent
8609              background.  To make this option work, you must use an Esetroot
8610              compatible program, fvwm-root with the --retain-pixmap option or
8611              FvwmBacker with the RetainPixmap option (and colorset or solid
8612              backgrounds).  The buffer keyword is useful only when the Tint
8613              option is used too.  This speeds up creation of windows which
8614              use the colorset (useful for fvwm menus) at the cost of memory
8615              usage.  It also speeds up opaque move and resize which can be
8616              unacceptably slow without buffer.  However, this option may add
8617              a lot of memory to your X server (depending on the size of the
8618              image used to set the background).  In summary, using outline
8619              move and resize for modules which use such a colorset may be a
8620              good idea.
8621
8622              Shape, TiledShape and AspectShape take a file name as an
8623              argument, search the ImagePath and use it as the shape bitmap.
8624              TiledShape produces repeated copies of the bitmap with no
8625              scaling, Shape causes the bitmap to be stretched to fit whatever
8626              object the colorset is applied to and AspectShape stretches to
8627              fit but retains the bitmap aspect ratio.  If the file is a
8628              pixmap in xpm format the shape mask (all opaque pixels) of the
8629              pixmap is used.  For png and svg images, the shape mask is
8630              equivalent to all not completely transparent pixels (alpha > 0).
8631
8632              Warning
8633              Due to the way X11 implements shapes you cannot take back making
8634              windows shaped. You may have to restart fvwm or the shaped
8635              application.
8636
8637              ?Gradient ...  creates a pixmap and stretches it to fit the
8638              window.  ?Gradient may be one of HGradient, VGradient,
8639              DGradient, BGradient, SGradient, CGradient, RGradient or
8640              YGradient.  The gradient types are as follows: H is horizontal;
8641              V is vertical; D is diagonal from top left to bottom right; B is
8642              a backwards diagonal from bottom left to top right; S is
8643              concentric squares; C is concentric circles; R is a radar like
8644              pattern and Y is a Yin Yang style (but without the dots).
8645              Please refer to the Color Gradients section for the syntax of
8646              gradients.
8647
8648              Tint takes 2 arguments, a color and a percentage between 0 and
8649              100.  It causes the image defined using ?Pixmap or ?Gradient to
8650              be tinted with the specified color using the percentage.  If the
8651              image is transparent Tint tints only the image part.
8652              Unfortunately, a colorset background specified using the
8653              Transparent option can give strange results.  See the
8654              Transparent option for details.  With no arguments this option
8655              removes the tint.
8656
8657              fgTint takes 2 arguments, a color and a percentage between 0 and
8658              100.  It causes the color defined using fg to be tinted with the
8659              specified color using the percentage.  With no arguments this
8660              option removes the tint.
8661
8662              bgTint takes 2 arguments, a color and a percentage between 0 and
8663              100.  It causes the color defined using bg to be tinted with the
8664              specified color using the percentage.  If the sh and hi colors
8665              are not specified, they are recomputed from the tinted bg color.
8666              With no arguments this option removes the tint.
8667
8668              Alpha takes a percentage between 0 and 100 as an argument.  It
8669              causes fvwm to merge the image defined using ?Pixmap or
8670              ?Gradient with the bg color using the percentage.  If the
8671              percentage is 0 the image is hidden and if it is 100 the image
8672              is displayed as usual (no merge).  The default is 100 and it is
8673              restored if no argument is given.
8674
8675              fgAlpha takes a percentage between 0 and 100 as an argument.  It
8676              causes fvwm to merge the text and the colorset background using
8677              the percentage.  If the percentage is 0 the text is hidden and
8678              if it is 100 the text is displayed as usual (no merge).  This
8679              option has an effect only with fonts loaded by Xft, see the Font
8680              Names and Font Loading section.  The default is 100 and it is
8681              restored if no argument is given.
8682
8683              Dither causes fvwm to dither the image defined using ?Pixmap or
8684              ?Gradient.  This is useful only with displays with depth less
8685              than or equal to 16 (i.e., on displays which can only display
8686              less than 65537 colors at once).  The dithering effect lets you
8687              simulate having more colors available that you actually have.
8688              NoDither causes fvwm to do not dither the images.  Dither is the
8689              default if the depth is less than or equal to 8 (a screen with
8690              256 colors or less).  In depth 15 (32768 colors) and 16 (65536
8691              colors), the default is NoDither, however this effect can be
8692              useful with images which contain a lot of close colors.  For
8693              example a fine gradient looks more smooth.
8694
8695              IconTint takes 2 arguments, a color and a percentage between 0
8696              and 100.  It causes fvwm or a module to tint the "icons" which
8697              are rendered into the colorset background with the specified
8698              color using a percentage.  Here "icons" means, fvwm Icons, fvwm
8699              menu icons, MiniIcons which represent applications in various
8700              modules, images loaded by modules (e.g., images specified by the
8701              Icon FvwmButtons button option) ...etc.  With no arguments this
8702              option removes the icon tint.
8703
8704              IconAlpha takes a percentage between 0 and 100 as an argument.
8705              It causes fvwm to merge the "icons" which are rendered into the
8706              colorset background using this percentage.  The default is 100
8707              and it is restored if no argument is given.
8708
8709              Note: It is equivalent to use "Tint a_color rate" and "Alpha a"
8710              if a = 100 and the bg color is a_color.  This equivalence does
8711              not hold for IconAlpha and IconTint as the background can be an
8712              image or a gradient (and not a uniform color background).
8713              However, in some cases you can achieve (almost) the same effect
8714              by using IconTint in the place of IconAlpha.  This is preferable
8715              as, in general, IconAlpha generates more redrawing than
8716              IconTint.
8717
8718              NoShape removes the shape mask from the colorset while Plain
8719              removes the background pixmap or gradient.
8720
8721              Examples
8722
8723                  Colorset 3 fg tan, bg navy
8724
8725              If necessary this creates colorsets 0, 1, 2 and 3 and then
8726              changes colorset 3 to have a foreground of tan, a background of
8727              navy.
8728
8729                  Colorset 3 bg "navy blue"
8730
8731              changes the background color of colorset 3 to navy blue.  The
8732              foreground and pixmap are unchanged.
8733
8734                  Colorset 3 AspectPixmap large_murky_dungeon.xpm
8735
8736              causes depression.
8737
8738                  Colorset 3 bg Average
8739
8740              Sets the background color and the relief colors to match the
8741              background pixmap.  This is the default setting but it must be
8742              used if a background color was specified and is now not
8743              required.
8744
8745                  Colorset 3 YGradient 200 3 blue 1000 navy 1 blue 1000 navy
8746
8747              Adds a Yin Yang gradient background pixmap to colorset 3.  If
8748              the background is set to average it is recomputed along with the
8749              foreground if that is set to contrast.
8750
8751                  #!/bin/sh
8752                  FvwmCommand "Colorset 7 fg navy, bg gray"
8753                  while true
8754                  do
8755                    FvwmCommand "Colorset 7 fg gray"
8756                    sleep 1
8757                    FvwmCommand "Colorset 7 fg navy"
8758                    sleep 1
8759                  done
8760
8761              Makes colorset 7 blink.
8762
8763              The color names used in colorsets are saved as fvwm variables
8764              which can be substituted in any fvwm command.  For example:
8765
8766                  AddToFunc InitFunction
8767                  + I Exec exec xterm -fg $[fg.cs0] -bg $[bg.cs0]
8768
8769              Where $[fg.cs0] is the foreground color of colorset zero.
8770              Please refer to the Command Expansion section for more
8771              information.
8772
8773       CleanupColorsets
8774              Resets a definition of all colorsets.
8775
8776       Color Gradients
8777              A color gradient is a background that changes its color
8778              gradually from one hue to a different one.  Color gradients can
8779              be used by various commands and modules of fvwm.  There are
8780              eight types of gradients: HGradient is a horizontal gradient,
8781              VGradient is vertical, DGradient is diagonal from top left to
8782              bottom right, BGradient is backwards diagonal from bottom left
8783              to top right, SGradient is concentric squares, CGradient is
8784              concentric circles, RGradient is a radar like pattern and
8785              YGradient is a Yin Yang style (but without the dots).
8786
8787              The color gradient syntax has two forms:
8788
8789              ?Gradient colors start-color end-color
8790
8791              This form specifies a linear gradient.  The arguments denote the
8792              total number of colors to allocate (between 2 and 1000), the
8793              initial color and the final color.
8794
8795              Example:
8796
8797                  TitleStyle VGradient 20 rgb:b8/ce/bc rgb:5b/85/d0
8798
8799              ?Gradient colors segments color length color [length color] ...
8800
8801              The second form specifies a nonlinear gradient.  The arguments
8802              are: the total number of colors to allocate (between 2 and
8803              1000), then the number of segments.  For each segment, specify
8804              the starting color, a relative length, then the ending color.
8805              Each subsequent segment begins with the second color of the last
8806              segment.  The lengths may be any non-negative integers.  The
8807              length of one segment divided by the sum of all segments lengths
8808              is the fraction of the colors that are used for the segment.
8809
8810              Examples:
8811
8812                  MenuStyle * \
8813                       MenuFace DGradient 128 2 lightgrey 50 blue 50 white
8814
8815                  # 20% gradient from red to blue,
8816                  # 30% from blue to black,
8817                  # 50% from black to grey
8818                  MenuStyle * \
8819                       MenuFace DGradient 100 3 Red 20 Blue 30 Black 50 Grey
8820
8821                  # 50% from blue to green, then
8822                  # 50% from yellow to red
8823                  Colorset 0 HGradient 128 3 Blue 1000 Green 1 Yellow 1000 Red
8824

ENVIRONMENT

8826       The environment variables that have an effect on how fvwm operates are
8827       the following:
8828
8829       DISPLAY
8830           Fvwm starts on this display unless the -display option is given.
8831
8832       FVWM_MODULEDIR
8833           Set by fvwm to the directory containing the standard fvwm modules.
8834
8835       FVWM_USERDIR
8836           Used to determine the user's data directory for reading and
8837           sometimes writing personal files.  If this variable is not already
8838           set, it is set by fvwm to $HOME/.fvwm, which is the default user's
8839           data directory.
8840
8841       SESSION_MANAGER
8842           Fvwm tries to contact this session manager.
8843
8844       SESSION_MANAGER_NAME
8845           This is used mainly to determine xsm running to work around its
8846           bug.  If this variable is set to "xsm", DiscardCommand is set as
8847           xsm expects it and not as XSMP requires.  If you run fvwm under
8848           xsm, you should set this variable to "xsm", otherwise old state
8849           files are not removed.
8850
8851       SM_SAVE_DIR
8852           If this is set, fvwm saves its session data in this directory.
8853           Otherwise it uses $HOME.  Note, the state files are named
8854           .fs-??????  and normally are removed automatically when not used
8855           anymore.
8856

AUTHORS

8858       Robert Nation with help from many people, based on twm code, which was
8859       written by Tom LaStrange.  After Robert Nation came Charles Hines,
8860       followed by Brady Montz.  Currently fvwm is developed by a number of
8861       people on the fvwm-workers mailing list.
8862
8864       Fvwm and all the modules, scripts and other files coming with the
8865       distribution are subject to the GNU General Public License (GPL).
8866       Please refer to the COPYING file that came with fvwm for details.
8867

BUGS

8869       Known bugs can be found in the fvwm bug tracking system (accessible
8870       from the fvwm home page).
8871
8872       Bug reports can be sent to the fvwm-workers mailing list at
8873       <fvwm-workers@fvwm.org> (see the FAQ) or reported through the bug
8874       tracking system.
8875
8876       The official fvwm homepage is http://fvwm.org/.
8877
8878
8879
8880                                  24-Nov-2007                          FVWM(1)
Impressum