1FVWM(1)                     Fvwm 2.5.30 (from cvs)                     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.visiblename]
1406       $[w.iconfile] $[w.miniiconfile] $[w.iconfile.svgopts]
1407       $[w.miniiconfile.svgopts]
1408           The window's name, icon name, resource class and resource name,
1409           visible name, file name of its icon or mini icon defined with the
1410           Icon or MiniIcon style (including the full path if the file was
1411           found on disk), and (if fvwm is compiled with SVG support) the icon
1412           or mini icon svg rendering options (including the leading colon),
1413           or unexpanded "$[w.<attribute>]" string if no window is associated
1414           with the command.
1415
1416           Note, the first 5 variables may include any kind of characters, so
1417           these variables are quoted.  It means that the value is surrounded
1418           by single quote characters and any contained single quote is
1419           prefixed with a backslash.  This guarantees that commands like:
1420
1421               Style $[w.resource] Icon norm/network.png
1422
1423           work correctly, regardless of any special symbols the value may
1424           contain, like spaces and different kinds of quotes.
1425
1426           In the case of the window's visible name, this is the value
1427           returned from the literal title of the window shown in the
1428           titlebar.  Typically this will be the same as $[w.name] once
1429           expanded, although in the case of using IndexedWindowName then this
1430           is more useful a distinction, and allows for referencing the
1431           specific window by its visible name for inclusion in things like
1432           Style commands.
1433
1434       $[w.x] $[w.y] $[w.width] $[w.height]
1435           Either coordinate or the width or height of the current window if
1436           it is not iconified.  If no window is associated with the command
1437           or the window is iconified, the string is left as is.
1438
1439       $[w.desk]
1440           The number of the desk on which the window is shown.  If the window
1441           is sticky the current desk number is used.
1442
1443       $[w.layer]
1444           The layer of the window.
1445
1446       $[cw.x] $[cw.y] $[cw.width] $[cw.height]
1447           These work like $[w....] but return the geometry of the client part
1448           of the window.  In other words: the border and title of the window
1449           is not taken into account.
1450
1451       $[i.x], $[it.x], $[ip.x] $[i.y], $[it.y], $[ip.y] $[i.width],
1452       $[it.width], $[ip.width] $[i.height], $[it.height], $[ip.height]
1453           These work like $[w....] but return the geometry of the icon
1454           ($[i....]), the icon title ($[it....]) or the icon picture
1455           ($[ip....]).
1456
1457       $[pointer.x] $[pointer.y]
1458           These return the position of the pointer on the screen.  If the
1459           pointer is not on the screen, these variables are not expanded.
1460
1461       $[pointer.wx] $[pointer.wy]
1462           These return the position of the pointer in the selected window.
1463           If the pointer is not on the screen, the window is iconified or no
1464           window is selected, these variables are not expanded.
1465
1466       $[pointer.cx] $[pointer.cy]
1467           These return the position of the pointer in the client portion of
1468           the selected window.  If the pointer is not on the screen, the
1469           window is shaded or iconified or no window is selected, these
1470           variables are not expanded.
1471
1472       $[screen]
1473           The screen number fvwm is running on.  Useful for setups with
1474           multiple screens.
1475
1476       $[fg.cs<n>] $[bg.cs<n>] $[hilight.cs<n>] $[shadow.cs<n>]
1477           These parameters are replaced with the name of the foreground (fg),
1478           background (bg), hilight (hilight) or shadow (shadow) color that is
1479           defined in colorset <n> (replace <n> with zero or a positive
1480           integer).  For example "$[fg.cs3]" is expanded to the name of the
1481           foreground color of colorset 3 (in rgb:rrrr/gggg/bbbb form).
1482           Please refer to the Colorsets section for details about colorsets.
1483
1484       $[schedule.last]
1485           This is replaced by the id of the last command that was scheduled
1486           with the Schedule command, even if this command was already
1487           executed.
1488
1489       $[schedule.next]
1490           This is replaced by the id the next command used with Schedule will
1491           get (unless a different id is specified explicitly).
1492
1493       $[cond.rc]
1494           The return code of the last conditional command.  This variable is
1495           only valid inside a function and can not be used in a conditional
1496           command.  Please refer to the section Conditional Commands in the
1497           command list.
1498
1499       $[func.context]
1500           The context character of the running command as used in the Mouse,
1501           Key or PointerKey command.  This is useful for example with:
1502
1503               Mouse 3 FS N WindowShade $$[func.context]
1504
1505
1506       $[gt.str]
1507           return the translation of str by looking in the current locale
1508           catalogs.  If no translation is found str is returned as is.  See
1509           the LocalePath command.
1510
1511       $[...]
1512           If the string within the braces is neither of the above, fvwm tries
1513           to find an environment variable with this name and replaces its
1514           value if one is found (e.g. "$[PAGER]" could be replaced by
1515           "more").  Otherwise the string is left as is.
1516
1517       Some examples can be found in the description of the AddToFunc command.
1518

SCRIPTING & COMPLEX FUNCTIONS

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

LIST OF FVWM COMMANDS

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

ENVIRONMENT

8888       The environment variables that have an effect on how fvwm operates are
8889       the following:
8890
8891       DISPLAY
8892           Fvwm starts on this display unless the -display option is given.
8893
8894       FVWM_MODULEDIR
8895           Set by fvwm to the directory containing the standard fvwm modules.
8896
8897       FVWM_USERDIR
8898           Used to determine the user's data directory for reading and
8899           sometimes writing personal files.  If this variable is not already
8900           set, it is set by fvwm to $HOME/.fvwm, which is the default user's
8901           data directory.
8902
8903       SESSION_MANAGER
8904           Fvwm tries to contact this session manager.
8905
8906       SESSION_MANAGER_NAME
8907           This is used mainly to determine xsm running to work around its
8908           bug.  If this variable is set to "xsm", DiscardCommand is set as
8909           xsm expects it and not as XSMP requires.  If you run fvwm under
8910           xsm, you should set this variable to "xsm", otherwise old state
8911           files are not removed.
8912
8913       SM_SAVE_DIR
8914           If this is set, fvwm saves its session data in this directory.
8915           Otherwise it uses $HOME.  Note, the state files are named
8916           .fs-??????  and normally are removed automatically when not used
8917           anymore.
8918

AUTHORS

8920       Robert Nation with help from many people, based on twm code, which was
8921       written by Tom LaStrange.  After Robert Nation came Charles Hines,
8922       followed by Brady Montz.  Currently fvwm is developed by a number of
8923       people on the fvwm-workers mailing list.
8924
8926       Fvwm and all the modules, scripts and other files coming with the
8927       distribution are subject to the GNU General Public License (GPL).
8928       Please refer to the COPYING file that came with fvwm for details.
8929

BUGS

8931       Known bugs can be found in the fvwm bug tracking system (accessible
8932       from the fvwm home page).
8933
8934       Bug reports can be sent to the fvwm-workers mailing list at
8935       <fvwm-workers@fvwm.org> (see the FAQ) or reported through the bug
8936       tracking system.
8937
8938       The official fvwm homepage is http://fvwm.org/.
8939
8940
8941
8942                              (not released yet)                       FVWM(1)
Impressum