* single quoting for shell not to expand unexpanded variable in example
[fvwm.git] / fvwm / fvwm.1.in
blobe1e7bd35ffe2e0442591a92ba6c581119b49e57c
1 .\"                                                                 -*-nroff-*-
2 .\"
3 .\"
4 .\"
5 .\"
6 @MANPAGE_PREAMBLE@
7 .\"
8 .\"
9 .\"
10 .\"
11 .\"
12 .\" Formatting instructions for the fvwm man page:
13 .\"
14 .\"  - Do not use \f... formatting instructions
15 .\"    unless you have to, see below.
16 .\"  - Avoid single and double quotes wherever possible.
17 .\"
18 .\" For further details, please refer to the Linux Man-Page how-to.
19 .\"
20 .\"  context                            typeface        example
21 .\"  ---------------------------------- --------------  -----------------
22 .\"  filenames:                         italics (.I)    .I .fvwm/config
23 .\"  command line options of fvwm cmd:  bold (.B)       .B \-cmd
24 .\"  arguments of command line options: italics (.I)    .BI "\-cmd " command
25 .\"  fvwm commands:                     bold (.B)       .B Move
26 .\"  references to commands:            bold (.B)       .RB "See " Move
27 .\"  references to man page sections:   bold (.B)       .RB "See " SYNOPSIS
28 .\"  references to style options:       italics (.I)    .RI "See " Lenience
29 .\"  command options:                   italics (.I)    .BI "Move " "0 0"
30 .\"  command syntax:                    bold/ita. (.BI) .BI "Move [" "x y" "]"
31 .\"  environment variables:             italics (.I)    .I $DISPLAY
32 .\"  key names:                         small (.SM)     .SM Tab
33 .\"  style names and strings:           double quotes   "stylename", "x"
34 .\"  single characters:                 single quotes   '@'
35 .\"  module names:                      bold (.B)       .B FvwmPager
36 .\"  links to web pages:                bold (.B)       .B @FVWMHOMEPAGE@
37 .\"  acronyms:                          small (.SM)     .SM ICCCM
38 .\"
39 .\"
40 .\" The name fvwm is written in lower case throughout this man
41 .\" page.  Fvwm is written without a version number, i.e. fvwm,
42 .\" not fvwm2.  The latter is currently used only in the .fvwm2rc
43 .\" file name; if there is a need to specify this old name, place
44 .\" it as an accompaniment to the preferred ~/.fvwm/config name.
45 .\"
46 .\" Note that the word "will" is rarely correct in a man page or
47 .\" any document. Describe what fvwm does, not what it will do,
48 .\" even if you haven't written the feature yet. dje 2/3/01
49 .\" (3/Feb/2001).
50 .\"
51 .\" A note to everyone who needs to write dates.  Do Not use 2/3/01
52 .\" notation, a non-american person simply can't parse such
53 .\" sequence of digits.  Please use 3-Feb-2001 or 2001-02-03 forms.
54 .\" migo 16/May/2001.
55 .\"
56 .\" A note about the rule against \f... formatting.  On Solaris,
57 .\" AIX, and HPUX the ".BI" type commands are limited to 6
58 .\" arguments. use \f... formatting in that case.  See the lines
59 .\" formatted with ".IP".
60 .\"  dje 15/June/2001.
61 .\" Note:  .IP does not work very well as it sometimes indents
62 .\" from the right too.  Instead, begin these paragraphs with
63 .\"   .TP
64 .\"   .B text
65 .\" This even saves the \fB...\fP pairs.
66 .\"  dv 19-Jun-2003.
67 .\"
68 .\" @(#)@PACKAGE@-@VERSION@ @RELDATELONG@
69 .de EX          \"Begin example
70 .ne 5
71 .if n .sp 1
72 .if t .sp .5
73 .nf
74 .in +.5i
76 .de EE
77 .fi
78 .in -.5i
79 .if n .sp 1
80 .if t .sp .5
82 .ta .3i .6i .9i 1.2i 1.5i 1.8i
83 .TH FVWM 1 "@RELDATELONG@" FVWM "FVWM @VERSION@@VERSIONINFO@"
84 .UC
85 .SH NAME
87 fvwm \- @FVWMNAMELONG@ for X11
88 .SH SYNOPSIS
90 .B fvwm
91 .RB [ \-c
92 .IR       config-command ]
93 .RB [ \-d
94 .IR       displayname ]
95 .RB [ \-f
96 .IR       config-file ]
97 .RB [ \-r ]
98 .RB [ \-s
99 .IR       [screen_num] ]
100 .RB [ \-V ]
101 .RB [ \-C
102 .IR       visual-class
103 .RB "| " \-I
104 .IR       visual-id ]
105 .RB [ \-l
106 .IR       colors
107 .RB [ \-L ]
108 .RB [ \-A ]
109 .RB [ \-S ]
110 .RB [ \-P ]]
111 .RB [ \-D ]
112 .RB [ \-h ]
113 .RB [ \-i
114 .IR       client-id ]
115 .RB [ \-F
116 .IR       state-file ]
117 .RB [ \-\-debug-stack-ring ]
118 .RB [ \-blackout ]
119 .SH DESCRIPTION
121 Fvwm is a window manager for X11.  It is designed to minimize
122 memory consumption, provide a 3D look to window frames, and a
123 virtual desktop.
125 Note that there are several window managers around that have
126 "fvwm" in their name.  In the past, version 2.x of fvwm was
127 commonly called fvwm2 to distinguish it from the former version
128 1.x (fvwm or even fvwm1).  Since version 1.x has been replaced by
129 version 2.x a long time ago we simply call version 2.x and all
130 versions to come, fvwm, throughout this document, and the
131 executable program is named fvwm.  There is an fvwm offspring
132 called fvwm95, it is mostly a patched version of fvwm-2.0.43.  The
133 main goal of fvwm95 was to supply a Windows 95 like look and
134 feel. Since then, fvwm has been greatly enhanced and practically
135 all fvwm95 features can be achieved by fvwm.
137 Fvwm provides both, a large
138 .I virtual desktop
140 .I multiple disjoint desktops
141 which can be used separately or together.  The virtual desktop
142 allows you to pretend that your video screen is really quite
143 large, and you can scroll around within the desktop.  The multiple
144 disjoint desktops allow you to pretend that you really have
145 several screens to work at, but each screen is completely
146 unrelated to the others.
148 Fvwm provides
149 .I keyboard accelerators
150 which allow you to perform most window manager functions,
151 including moving and resizing windows, and operating the menus,
152 using keyboard shortcuts.
154 Fvwm has also overcome the distinction between configuration
155 commands and action commands that most window managers
156 make. Configuration commands typically set fonts, colors, menu
157 contents, key and mouse function bindings, while action commands
158 do things like raise and lower windows.  Fvwm makes no such
159 distinction, and allows anything to be changed at any time.
161 Other noteworthy differences between fvwm and other X11 window
162 managers are the introduction of the
163 .IR SloppyFocus " and " NeverFocus
164 focus methods.  Focus policy can be separately specified for
165 different window groups.  Windows using
166 .I SloppyFocus
167 acquire focus when the pointer moves into them and retain focus
168 until some other window acquires it.  Such windows do not lose
169 focus when the pointer moves into the root window.  The
170 .I NeverFocus
171 policy is provided for use with windows into which one never types
172 (e.g. xclock, oclock, xbiff, xeyes, tuxeyes) - for example, if a
173 SloppyFocus terminal window has focus, moving the pointer over a
174 .I NeverFocus
175 decoration window does not deprive the terminal of focus.
177 .SH OPTIONS
179 These are the command line options that are recognized by fvwm:
181 .BR "-i" " | " "--clientid"
182 .I id
183 This option is used when fvwm is started by a session
184 manager. Should not be used by a user.
186 .BR "-c" " | " "--cmd "
187 .I config-command
188 Causes fvwm to use
189 .I config-command
190 instead of
191 .RB "'" "Read"
192 .IR "config" "'"
193 .RB "(or '" "Read"
194 .IR ".fvwm2rc" "')"
195 as its initialization command.  (Note that up to 10
196 .BR \-f " and " \-c
197 parameters can be given, and they are executed in the order
198 specified.)
200 Any module started by command line arguments is assumed to be a
201 module that sends back config commands.  All command line modules
202 have to quit before fvwm proceeds on to the StartFunction and
203 setting border decorations and styles.  There is a potential
204 deadlock if you start a module other than FvwmCpp/FvwmM4/FvwmPerl
205 but there is a timeout so fvwm eventually gets going.
207 As an example, starting the pager this way hangs fvwm until
208 the timeout, but the following should work well:
210 fvwm -c "AddToFunc StartFunction I Module FvwmPager"
213 .BR "-d" " | " "--display "
214 .I displayname
215 Manage the display called
216 .I displayname
217 instead of the name obtained from the environment variable
218 .IR "$DISPLAY" .
220 .BR "-D" " | " "--debug"
221 Puts X transactions in synchronous mode, which dramatically slows
222 things down, but guarantees that fvwm's internal error messages
223 are correct. Also causes fvwm to output debug messages while
224 running.
226 .BI "-f " config-file
227 Causes fvwm to read
228 .I config-file
229 instead of
230 .I ~/.fvwm/config
231 as its initialization file.  This is equivalent to
232 .RB "-c 'Read"
233 .IR "config-file'."
235 .BR "-h" " | " "--help"
236 A short usage description is printed.
238 .BR "-r" " | " "--replace"
239 Try to take over from a previously running wm.  This does not work
240 unless the other wm is
241 .SM ICCCM2
242 2.0 compliant.
244 .BR "-F" " | " "--restore "
245 .I state-file
246 This option is used when fvwm is started by a session manager.
247 Should not be used by a user.
249 .BR "-s" " | " "--single-screen"
250 .RI "[" screen_num "]"
251 On a multi-screen display, run fvwm only on the screen named in
253 .I $DISPLAY
254 environment variable or provided through the
255 .B -d
256 option. The optional argument
257 .I screen_num
258 should be positive or null and override the screen number.
259 Normally, fvwm attempts to start up on all screens of a
260 multi-screen display.
262 .BR "-V" " | " "--version"
263 Prints the version of fvwm to
264 .IR stderr .
265 Also prints an information about the compiled in support for
266 readline, rplay, stroke, xpm, png, svg,
267 .SM GNOME
268 hints,
269 .SM EWMH
270 hints, session management, bidirectional text, multibyte
271 characters, xinerama and Xft aa font rendering.
273 .BR "-C" " | " "--visual "
274 .I visual-class
275 Causes fvwm to use
276 .I visual-class
277 for the window borders and menus.
278 .I visual-class
279 can be "StaticGray", "GrayScale", "StaticColor", "PseudoColor",
280 "TrueColor" or "DirectColor".
282 .BR "-I" " | " "--visualid "
283 .I id
284 Causes fvwm to use
285 .I id
286 as the visual id for the window borders and menus.
287 .I id
288 can be specified as N for decimal or 0xN for hexadecimal. See man
289 page of xdpyinfo for a list of supported visuals.
291 .BR "-l" " | " "--color-limit "
292 .I limit
293 Specifies a
294 .I limit
295 on the colors used in image, gradient and possibly simple colors
296 used by fvwm. In fact, fvwm (and all the modules) uses a palette
297 with at most
298 .I limit
299 colors. This option is only useful with screens that display 256
300 colors (or less) with a dynamic visual (PseudoColor, GrayScale or
301 DirectColor). The default depends on your X server and how you run
302 fvwm. In most case this default is reasonable. The
303 .B "-l"
304 option should be used only if you encounter problems with colors.
305 By default, fvwm tries to detect "large" pre-allocated
306 palettes. If such a palette is detected fvwm uses it and a priori
308 .B "-l"
309 must not be used. Moreover, in this case the
310 .BR "-A" " and " "-S"
311 options are forced. Note that XFree-4.2 pre-allocate 244 colors
312 (if you use a driver with Render support) leaving only a few free
313 colors. This may lead to some color problems (and nothing can be
314 done). XFree-4.3 or better pre-allocate only 85 colors.  If no
315 pre-allocated palette is auto detected the defaults are as follow:
317             | depth 8 (256 colors)| depth 4 (16 colors)
318 ------------|---------------------|--------------------
319 PseudoColor | 68 (4 cc + 4 grey)  | 10 (2 cc + 2 grey)
320 ------------|---------------------|--------------------
321 GrayScale   | 64 regular grey     |  8 regular grey
322 ----------- |---------------------|--------------------
323 DirectColor | 32 (3 cc + 5 grey)  | 10 (2 cc + 2 grey)
324 ------------|------------------------------------------
325 where "I cc" means a "IxIxI color cube"
327 These defaults may change before version 2.6. Note that if you use a
328 private color map (i.e., fvwm is started with the
329 .BR "-C" " or the " "-I"
330 options), then others defaults are used.
332 Now what to do if you encounter problems with colors? The first
333 thing to do is to check if you really cannot run your X server
334 with depth 15, 16 or better.  Check your X server
335 documentation. Note that some hardware can support two different
336 depths on the same screen (typically depth 8 and depth 24). If
337 depth 8 is the default, you can force fvwm to use the best depth
338 by using the
339 .B -C
340 option with
341 .I TrueColor
342 as argument.  So now we assume that you are forced to run in depth
343 8 with a dynamic visual because your hardware/driver cannot do
344 better or because you need to use an application which needs to
345 run under this mode (e.g., because this application needs
346 read-write colors). What it should be understand is that you have
347 only 256 colors and that all the applications which use the
348 default color map must share these colors. The main problem is
349 that there are applications which use a lot or even all the
350 colors.  If you use such application you may have no more free
351 colors and some applications (which used only a few colors) may
352 fail to start or are unusable. There are three things that can be
353 done (and fvwm does not really play a particular role, all
354 applications are concerned). The first is to run the applications
355 which waste your (default) color map with a private color map. For
356 example, run netscape with the -install option, run
357 .SM KDE
359 .SM QT
360 applications with the --cmap option, use the
361 .B "-C"
362 option for fvwm. The disadvantage of this method is that it is
363 visually disturbing (see the
364 .B ColormapFocus
365 command for a better control of the color maps switching). The
366 second method is to limit the number of colors that the
367 applications use. Again, some applications have options to
368 specify a given color limit. With fvwm you may try various values,
369 61 (a special "visual" palette), 56 (a 4x4x3 color cube plus 6
370 grey), 29 (a 3x3x3 color cube plus 2 grey), 10 or 9. Also, you may
371 use the
372 .B "-L"
373 option.  However, limiting the number of colors is not the
374 definitive solution. The definitive solution is to try cause
375 applications which use a lot of colors use the same colors. This
376 is a difficult task as there are no formal standards for this
377 goal. However, some toolkits as
378 .SM QT
380 .SM GTK
381 use color cubes as palettes. So, the idea is to configure your
382 applications/toolkits to all use the same color cube. Moreover,
383 you can use the colors in this color cube in your X resources
384 configuration files and/or as arguments to colors options.  Fvwm
385 can use any color cube of the form RxGxB with 2 <= R <= 6, R = G,
386 R-1 =< B <= R and B >= 2. To get an RxGxB color cube give an
387 argument to
388 .B "-l"
389 an integer c >= R*G*B and < (R+1)*(G+1)*B if B=R and < R*G*(B+1)
390 if B < R (and different from 61). If c > R*G*B, then some grey may
391 be added to the color cube. You can use the
392 .BI "PrintInfo " Colors " " [1]
393 command to get information on your fvwm colors setting. In
394 particular, this command prints the palette used by fvwm in rgb
395 format (the last integer gives the number of times fvwm has
396 allocated the colors).
398 .BR "-L" " | " "--strict-color-limit"
399 If the screen displays 256 colors (or less) and has a dynamic visual,
400 causes fvwm to use its palette for all the colors. By default, the
401 palette is used only for images and gradients.
403 .BR "-P" " | " "--visual-palette"
404 If the screen displays 256 colors (or less) and has a dynamic
405 visual, this option causes fvwm to use a palette designed for
406 limiting the "visual" color distance between the points of the
407 palette. Moreover, for better color sharing, if possible colors
408 with a name in the X rgb data base are used for defining the
409 colors (with the hope that applications and images prefer to use
410 named colors). If the
411 .B "-l"
412 option is not used this palette has 61 colors. This palette is
413 also automatically selected if  61 or 9 is used as argument to the
414 .B "-l"
415 option.
417 .BR "-A" " | " "--allocate-palette"
418 If the screen displays 256 colors (or less) and has a dynamic
419 visual this option causes fvwm to allocate all the colors of its
420 palette at start up for reserving these colors for future
421 use. This option forces the
422 .B -static-palette
423 option. By default, fvwm allocates (reserves) a color in its palette
424 only if it needs this color.
426 .BR "-S" " | " "--static-palette"
427 If the screen displays 256 colors (or less) and has a dynamic
428 visual this option causes fvwm to never free the colors in its
429 palette. By default, when fvwm does not need a color any more it
430 frees this color so that a new color can be used. This option may
431 speed up image loading and save a few bits of memory.
433 .BI "-blackout"
434 This option is provided for backward compatibility only.  Blacking
435 out the screen during startup is not necessary (and doesn't work)
436 anymore. This option will be removed in the future.
438 .BI "--debug-stack-ring"
439 Enables stack ring debugging.  This option is only intended for
440 internal debugging and should only be used by developers.
442 .SH ANATOMY OF A WINDOW
444 Fvwm puts a decorative border around most windows.  This border
445 consists of a bar on each side and a small L-shaped section on
446 each corner.  There is an additional top bar called the title-bar
447 which is used to display the name of the window.  In addition,
448 there are up to 10 title-bar buttons.  The top, side, and bottom
449 bars are collectively known as the side-bars.  The corner pieces
450 are called the frame.
452 With the built-in minimal configuration, dragging mouse button 1
453 in the frame or side-bars begins a resize operation on the window.
454 Dragging mouse button 2 in the frame or side-bars begins a move
455 operation.  There are raise/lower operations bound to a single
456 clicking on borders.  Similarly for the window title.
458 Up to ten title-bar buttons may exist.  Their use is completely
459 user definable.  One popular configuration uses one button on the
460 left that is used to bring up a list of window options and two
461 buttons on the right used to iconify and maximize the window.
462 Another popular configuration adds a close button to the right.
463 The number of title-bar buttons used depends on which ones have
464 mouse actions bound to them.  See the section on the
465 .B Mouse
466 command below.
468 .SH THE VIRTUAL DESKTOP
470 Fvwm provides multiple virtual desktops for users who wish to use
471 them.  The screen is a viewport onto a
472 .I desktop
473 which may be larger than the screen.  Several distinct desktops
474 can be accessed (concept: one desktop for each project, or one
475 desktop for each application, when view applications are
476 distinct).  Since each desktop can be larger than the physical
477 screen, divided into m by n
478 .I pages
479 which are each the size of the physical screen, windows which are
480 larger than the screen or large groups of related windows can
481 easily be viewed.
483 The (m by n) size (i.e. number of pages) of the virtual desktops
484 can be changed any time, by using the
485 .B DeskTopSize
486 command.  All virtual desktops must be (are) the same
487 size.  The total number of distinct desktops does not need to be
488 specified, but is limited to approximately 4 billion total. All
489 windows on a range of desktops can be viewed in the
490 .BR FvwmPager ,
491 a miniature view of the desktops.  The pager is an accessory
492 program, called a module, which is not essential for the window
493 manager to operate.  Windows may also be listed, along with their
494 geometries, in a window list, accessible as a pop-up menu, or as a
495 separate window, called the
496 .B FvwmWinList
497 (another module).
499 Fvwm keeps the windows on the desktop in a layered stacking order;
500 a window in a lower layer never obscures a window in a higher
501 layer. The layer of a window can be changed by using the
502 .B Layer
503 command.  The concept of layers is a generalization of the
504 .I StaysOnTop
505 flag of older fvwm versions. The
506 .IR StaysOnTop " and " StaysPut
507 .B Style
508 options are now implemented by putting the windows in suitable
509 layers and the previously missing
510 .IB "StaysOnBottom " Style
511 option has been added.
513 .B Sticky
514 windows are windows which transcend the virtual desktop by
515 "Sticking to the screen's glass".  They always stay put on the
516 screen. This is convenient for things like clocks and xbiffs, so
517 you only need to run one such gadget and it always stays with you.
518 Icons can also be made to stick to the glass, if desired.
520 Window geometries are specified relative to the current viewport.
521 That is:
523 xterm -geometry +0+0
525 creates a window in the upper left hand corner of the visible
526 portion of the screen.  It is permissible to specify geometries
527 which place windows on the virtual desktop, but off the screen.
528 For example, if the visible screen is 1000 by 1000 pixels, and the
529 desktop size is 3x3, and the current viewport is at the upper left
530 hand corner of the desktop, invoking:
532 xterm -geometry +1000+1000
534 places a window just off of the lower right hand corner of the
535 screen.  It can be found by moving the mouse to the lower right
536 hand corner of the screen and waiting for it to scroll into view.
537 A geometry specified as something like:
539 xterm -geometry -5-5
541 places the window's lower right hand corner 5 pixels from the
542 lower right corner of the visible portion of the screen.  Not all
543 applications support window geometries with negative offsets.
544 Some applications place the window's upper right hand corner 5
545 pixels above and to the left of the upper left hand corner of the
546 screen; others may do just plain bizarre things.
548 There are several ways to cause a window to map onto a desktop or
549 page other than the currently active one. The geometry technique
550 mentioned above (specifying x,y coordinates larger than the
551 physical screen size), however, suffers from the limitation of
552 being interpreted relative to the current viewport: the window may
553 not consistently appear on a specific page, unless you always
554 invoke the application from the same page.
556 A better way to place windows on a different page, screen or desk
557 from the currently mapped viewport is to use the
558 .IR StartsOnPage " or " StartsOnScreen
559 style specification (the successors to the older
560 .I StartsOnDesk
561 style) in your
562 .I config
563 file.  The placement is consistent: it does
564 not depend on your current location on the virtual desktop.
566 Some applications that understand standard Xt command line
567 arguments and X resources, like xterm and xfontsel, allow the user
568 to specify the start-up desk or page on the command line:
570 xterm -xrm "*Desk:1"
572 starts an xterm on desk number 1;
574 xterm -xrm "*Page:3 2 1"
576 starts an xterm two pages to the right and one down from the upper
577 left hand page of desk number 3.  Not all applications understand
578 the use of these options, however.  You could achieve the same
579 results with the following lines in your
580 .I .Xdefaults
581 file:
583 XTerm*Desk: 1
587 XTerm*Page: 3 2 1
591 .SH USE ON MULTI-SCREEN DISPLAYS
593 If the
594 .B -s
595 command line argument is not given, fvwm automatically starts up
596 on every screen on the specified display.  After fvwm starts each
597 screen is treated independently.  Restarts of fvwm need to be
598 performed separately on each screen.  The use of
600  EdgeScroll 0 0
602 is strongly recommended for multi-screen displays.  You may need
603 to quit on each screen to quit from the X session completely.
604 This is not to be confused with Xinerama support.
606 .SH XINERAMA SUPPORT
608 Fvwm supports the Xinerama extension of newer X servers which
609 is similar to multi head support (multiple screens) but allows to
610 move windows between screens.  If Xinerama support has been
611 compiled into fvwm, it is used whenever fvwm runs on an X server
612 that supports and uses multiple screens via Xinerama.  Without
613 this option, the whole desktop is treated as one big screen.  For
614 example, menus might pop up right between two screens.  The
615 .BI EdgeResistance
616 command allows for specifying an explicit resistance value for moving
617 windows over the screen edge between two Xinerama screens.
618 Xinerama support can be enabled or disabled on the fly or from the
619 configuration file with the
620 .B Xinerama
621 command.  Many modules and commands work nicely with Xinerama
622 displays.
624 Everywhere where a geometry in the usual X format can be supplied,
625 fvwm's Xinerama extension allows for specifying a screen in addition
626 to the geometry (or even the screen alone).  To do this, a '@' is
627 added to the end of the geometry string followed by either the
628 screen number or a letter.  A number is taken as the number of the
629 Xinerama screen to be used (as configured in the X server).  The
630 letter can be one of 'g' for the global screen (the rectangle that
631 encloses all Xinerama screens), 'p' for the primary screen (see
632 below), 'c' for the current screen (the one that currently
633 contains the pointer).  If the X server does not support Xinerama
634 or only one screen is used, the screen bit is ignored.
637 Style * IconBox 64x300-0-0@p
640 Xinerama support can be configured to use a primary screen.  Fvwm
641 can be configured to place new windows and icons on this screen.
642 The primary screen is screen 0 by default but can be changed with
644 .B XineramaPrimaryScreen
645 command.
647 Xinerama support was designed to work out of the box with the same
648 configuration file that would work on a single screen.  It may
649 not perform very well if the involved screens use different screen
650 resolutions.  In this situation, windows may get stuck in the
651 portion of the whole desktop that belongs to neither screen.  When
652 this happens, the windows or icons can be retrieved with the
653 command
656 All MoveToScreen
659 that can be entered in an FvwmConsole window or with FvwmCommand.
661 For multi-screen implementations other than Xinerama, such as
662 Single Logical Screen, it is possible to simulate a Xinerama
663 configuration if the total screen seen by fvwm is made up of
664 equal sized monitors in a rectangular grid.  The commands
665 .BR XineramaSls ", " XineramaSlsSize " and " XineramaSlsScreens
666 are used to configure this feature.
668 .SH INITIALIZATION
670 During initialization, fvwm searches for a configuration file
671 which describes key and button bindings, and many other
672 things. The format of these files is described later.  Fvwm first
673 searches for configuration files using the command
675 .BI "Read " config
677 This looks for file
678 .IR config " in " "$FVWM_USERDIR" " and " "$FVWM_DATADIR"
679 directories, as described in
680 .B Read
681 below.  If this fails more files are queried for backward
682 compatibility.  Here is the complete list of all file locations
683 queried in the default installation (only the first found file
684 is used):
686 $HOME/.fvwm/config
687 /usr/local/share/fvwm/config
689 $HOME/.fvwm/.fvwm2rc
690 $HOME/.fvwm2rc
691 /usr/local/share/fvwm/.fvwm2rc
692 /usr/local/share/fvwm/system.fvwm2rc
693 /etc/system.fvwm2rc
695 Please note, the last 5 locations are not guaranteed to be
696 supported in the future.
698 If a configuration file is not found, the left mouse button, or
699 .SM Help
701 .SM F1
702 keys on the root window bring up menus and forms that can create
703 a starting configuration file.
705 Fvwm sets two environment variables which are inherited by its
706 children.  These are
707 .I $DISPLAY
708 which describes the display on which fvwm is running.
709 .I $DISPLAY
710 may be
711 .I unix:0.0
713 .IR ":0.0" ,
714 which doesn't work too well when passed through ssh to another
715 machine, so
716 .I $HOSTDISPLAY
717 is set to a network-ready description of the display.
718 .I $HOSTDISPLAY
719 always uses the TCP/IP transport protocol (even for a local
720 connection) so
721 .I $DISPLAY
722 should be used for local connections, as it may use Unix-domain
723 sockets, which are faster.
725 If you want to start some applications or modules with fvwm, you
726 can simply put
728 Exec app
732 Module FvwmXxx
734 into your
735 .IR config ,
736 but it is not recommended; do this only if you know what you are
737 doing. It is usually critical to start applications or modules
738 after the entire config is read, because it contains styles or
739 module configurations which can affect window appearance and
740 functionality.
742 The standard way to start applications or modules on fvwm's start
743 up is to add them to an initialization function (usually
744 .BR StartFunction " or " InitFunction ).
745 This way they are only started after fvwm finishes to read and
746 execute
747 .I config
748 file.
750 Fvwm has three special functions for initialization:
751 .BR StartFunction ,
752 which is executed on startups and restarts;
753 .BR InitFunction " and " RestartFunction ,
754 which are executed during initialization and restarts
755 (respectively) just after StartFunction.  These functions may be
756 customized in a user's
757 .I config
758 file using the
759 .B AddToFunc
760 command (described later) to start up modules, xterms, or whatever
761 you'd like to have started by fvwm.
763 Fvwm has also a special exit function:
764 . BR ExitFunction ,
765 executed when exiting or restarting before actually quitting.
766 It could be used to explicitly kill modules, etc.
768 If fvwm is run under a session manager, functions
769 .BR SessionInitFunction " and " SessionRestartFunction
770 are executed instead of InitFunction and RestartFunction.
771 This helps to define the user's
772 .I config
773 file to be good for both running under a session manager and
774 without it.  Generally it is a bad idea to start xterms or other
775 applications in "Session*" functions.  Also someone can decide to
776 start different modules while running under a session manager or
777 not.  For the similar purposes
778 .B SessionExitFunction
779 is used instead of ExitFunction.
781 DestroyFunc StartFunction
782 AddToFunc StartFunction
783  + I Module FvwmPager * *
784  + I Module FvwmButtons
786 DestroyFunc InitFunction
787 AddToFunc InitFunction
788  + I Module FvwmBanner
789  + I Module FvwmTaskBar
790  + I xsetroot -solid cyan
791  + I Exec xterm
792  + I Exec netscape
794 DestroyFunc RestartFunction
795 AddToFunc RestartFunction
796  + I Module FvwmTaskBar
798 DestroyFunc SessionInitFunction
799 AddToFunc SessionInitFunction
800  + I Module FvwmBanner
802 DestroyFunc SessionRestartFunction
803 AddToFunc SessionRestartFunction
804  + I Nop
806 You do not need to define all special functions if some are empty.
807 Also note, all these special functions may be emulated now using
808 .BR StartFunction " and " ExitFunction,
809 like this:
811 DestroyFunc StartFunction
812 AddToFunc StartFunction
813 + I Test (Init) Module FvwmBanner
814 + I Module FvwmPager * *
815 + I Test (Restart) Beep
817 DestroyFunc ExitFunction
818 AddToFunc ExitFunction
819 + I Test (Quit) Echo Bye-bye
820 + I KillModule MyBuggyModule
821 + I Test (ToRestart) Beep
824 .SH COMPILATION OPTIONS
826 Fvwm has a number of compile-time options.  If you have trouble
827 using a certain command or feature, check to see if support for it
828 was included at compile time.  Optional features are described in
830 .I config.h
831 file that is generated during compilation.
833 .SH ICONS AND IMAGES
835 Fvwm can load
836 .B .xbm,
837 .B .xpm,
838 .B .png,
840 .B .svg
841 images.
842 .B XBM
843 images are monochrome.  Fvwm can always display
844 .B XBM
845 files.
846 .B XPM
848 .B PNG
849 formats are color images.
850 .B SVG
851 is a vector graphics image format.
852 Compile-time
853 options determine whether fvwm can display
854 .B XPM,
855 .B PNG
857 .B SVG
858 icons and images.
859 See the
860 .I INSTALL.fvwm
861 file for more information.
863 The related
864 .BR SHAPE
865 compile-time option can make fvwm display spiffy
866 shaped icons.
868 .SS SVG rendering options
869 By default SVG images are rendered as the image creator intended
870 them to. But since SVG is a vector graphics format, the images can
871 be rendered at any choosen size and rotation, e.g. making it possible
872 to use the same icon file rendered at diffrent sizes for the
873 .IR Icon " and " MiniIcon
874 styles.
876 The rendering options are specified as a string appended to the SVG
877 filename as follows:
879 .B "\fIimage.svg\fP:\
880 [[-]\fIwidth\fPx[-]\fIheight\fP]\
881 [[+|-]\fIxpos\fP[+|-]\fIypos\fP]\
882 [@\fIangle\fP]\
883 [[*|/]\fIscale\fP]"
885 The option string always starts with a colon (':') to separate it
886 from the filename. An empty option string can skip this colon, but
887 it might still be a good idea to include it to prevent ambiguousness
888 if the filename contains any colon.
890 filename_without_colon.svg
891 filename:with:colon.svg:
893 .I width
895 .I height
896 specifies the dimensions of the rendering area in pixels, i.e. the
897 dimensions of the resulting image.
899 image.svg:22x22
901 Use a
902 .I width
904 .I height
905 value of 0 to keep the aspect ratio.
907 image.svg:0x64
908 image.svg:32x0
910 A '-' before
911 .I width
912 mirrors the original image horizontally.
914 image.svg:-0x0
916 A '-' before
917 .I height
918 mirrors the original image vertically.
920 image.svg:0x-0
922 .I xpos
924 .I ypos
925 specifies a translation of the image in pixels. A positive
926 .I xpos
927 value moves the image to the right. A positive
928 .I ypos
929 value moves it down. Moving it partially outside of the rendering
930 area results in a cropped image.
932 image.svg:-10+0
933 image.svg:+0+10
934 image.svg:-7-7
936 .I angle
937 specifies a rotation around the original image center in degrees.
938 A positive value rotates the image clockwise. Floating point values
939 are recognized.
941 image.svg:@90
942 image.svg:@-90
943 image.svg:@180
944 image.svg:@57.3
946 .I scale
947 specifes a scaling of the whole image. Scaling it up results in
948 a cropped image. Floting point values are recognized. Division by
949 zero is ignored.
951 image.svg:*0.5
952 image.svg:/2
954 Scaling down a translated or rotated image can prevent cropping.
956 image.svg:@45*0.7
958 Repeated usage of translation, rotation, and scaling is allowed.
959 Translation and rotation are additive. Scaling is multiplicative.
961 image.svg:*2/3
963 All of this can be combined. The following renders a horizontally
964 mirrored 30 pixels wide and 40 pixels high image rotated 60 degrees
965 counterclockwise in the lower left corner of a 75 pixels wide and
966 100 pixels high rendering area.
968 image.svg:-75x100-10+20@-60*2/5
971 .SH MODULES
973 A module is a separate program which runs as a separate Unix
974 process but transmits commands to fvwm to execute.  Users can
975 write their own modules to do any weird or bizarre manipulations
976 without bloating or affecting the integrity of fvwm itself.
978 Modules must be spawned by fvwm so that it can set up two pipes
979 for fvwm and the module to communicate with.  The pipes are
980 already open for the module when it starts and the file
981 descriptors for the pipes are provided as command line arguments.
983 Modules can be spawned by fvwm at any time during the X session by
984 use of the
985 .B Module
986 command.  Modules can exist for the duration of the X
987 session, or can perform a single task and exit.  If the module is
988 still active when fvwm is told to quit, then fvwm closes the
989 communication pipes and waits to receive a SIGCHLD from the
990 module, indicating that it has detected the pipe closure and has
991 exited.  If modules fail to detect the pipe closure fvwm exits
992 after approximately 30 seconds anyway.  The number of
993 simultaneously executing modules is limited by the operating
994 system's maximum number of simultaneously open files, usually
995 between 60 and 256.
997 Modules simply transmit commands to the fvwm command
998 engine.  Commands are formatted just as in the case of a
999 mouse binding in the
1000 .I config
1001 setup file.  Certain auxiliary information is also transmitted, as
1002 in the sample module
1003 .BR FvwmButtons .
1005 .B FvwmButtons
1006 module is documented in its own man page.
1008 Please refer to the
1009 .B "MODULE COMMANDS"
1010 section for details.
1012 .SH ICCCM COMPLIANCE
1014 Fvwm attempts to be
1015 .SM ICCCM
1016 2.0 compliant.  Check
1017 .BR http://tronche.com/gui/x/icccm/
1018 for more info. In addition,
1019 .SM ICCCM
1020 states that it should be possible for applications to receive any
1021 keystroke, which is not consistent with the keyboard shortcut
1022 approach used in fvwm and most other window managers.  In
1023 particular you cannot have the same keyboard shortcuts working
1024 with your fvwm and another fvwm running within Xnest (a nested X
1025 server running in a window).  The same problem exists with mouse
1026 bindings.
1029 .SM ICCCM
1030 states that windows possessing the property
1032 WM_HINTS(WM_HINTS):
1033     Client accepts input or input focus: False
1035 should not be given the keyboard input focus by the window
1036 manager. These windows can take the input focus by themselves,
1037 however.  A number of applications set this property, and yet
1038 expect the window manager to give them the keyboard focus anyway,
1039 so fvwm provides a window style,
1040 .IR Lenience ", "
1041 which allows fvwm to overlook this
1042 .SM ICCCM
1043 rule.  Even with this window style it is not guaranteed that the
1044 application accepts focus.
1046 The differences between
1047 .SM ICCCM
1048 1.1 and 2.0 include the ability to take over from a running
1049 .SM ICCCM
1050 2.0 compliant window manager; thus
1052 fvwm; vi ~/.fvwm/config; fvwm -replace
1054 resembles the
1055 .B Restart
1056 command.  It is not exactly the same, since killing the previously
1057 running wm may terminate your X session, if the wm was started as
1058 the last client in your
1059 .IR .Xclients " or " .Xsession
1060 file.
1062 Further additions are support for client-side colormap
1063 installation (see the
1064 .SM ICCCM
1065 for details) and the urgency hint. Clients can set this hint in
1066 the WM_HINTS property of their window and expect the window manager
1067 to attract the user's attention to the window.  Fvwm has two re-definable
1068 functions for this purpose, "UrgencyFunc" and "UrgencyDoneFunc", which
1069 are executed when the flag is set/cleared.  Their default definitions are:
1071 AddToFunc UrgencyFunc
1072  + I Iconify off
1073  + I FlipFocus
1074  + I Raise
1075  + I WarpToWindow 5p 5p
1076 AddToFunc UrgencyDoneFunc
1077  + I Nop
1080 .SH GNOME COMPLIANCE
1082 Fvwm attempts to be
1083 .SM GNOME
1084 (version 1) compliant.  Check
1085 .B http://www.gnome.org
1086 for what that may mean. To disable
1087 .SM GNOME
1088 hints for some or all windows, the
1089 .I GNOMEIgnoreHints
1090 style can be used.
1092 .SH EXTENDED WINDOW MANAGER HINTS
1094 Fvwm attempts to respect the extended window manager hints (ewmh
1096 .SM EWMH
1097 for short) specification:
1098 .BR http://www.freedesktop.org/wiki/Standards_2fwm_2dspec
1099 and some extensions of this specification.  This allows fvwm to
1100 work with
1101 .SM KDE
1102 version >= 2,
1103 .SM GNOME
1104 version 2 and other applications which respect this specification
1105 (any application based on
1106 .SM GTK+
1107 version 2). Applications which respect this specification are
1108 called ewmh compliant applications.
1110 This support is configurable with styles and commands.
1111 These styles and commands have
1112 .SM EWMH
1113 as the prefix (so you can find them easily in this man page).
1115 There is a new Context 'D' for the
1116 .BR Key ", " PointerKey ", " Mouse " and " Stroke
1117 commands. This context is for desktop applications (such as
1118 kdesktop and Nautilus desktop).
1120 When a compliant taskbar asks fvwm to activate a window (typically
1121 when you click on a button which represents a window in such a
1122 taskbar), then fvwm calls the complex function
1123 .B EWMHActivateWindowFunc
1124 which by default is Iconify Off, Focus and Raise. You can redefine
1125 this function.  For example:
1127 DestroyFunc EWMHActivateWindowFunc
1128 AddToFunc EWMHActivateWindowFunc I Iconify Off
1129 + I Focus
1130 + I Raise
1131 + I WarpToWindow 50 50
1133 additionally warps the pointer to the center of the window.
1136 .SM EWMH
1137 specification introduces the notion of Working Area.  Without ewmh
1138 support the Working Area is the full visible screen (or all your
1139 screens if you have a multi head setup and you use Xinerama).
1140 However, compliant applications (such as a panel) can ask to
1141 reserve space at the edge of the screen.  If this is the case, the
1142 Working Area is your full visible screen minus these reserved
1143 spaces. If a panel can be hidden by clicking on a button the
1144 Working Area does not change (as you can unhide the panel at any
1145 time), but the Dynamic Working Area is updated: the space reserved
1146 by the panel is removed (and added again if you pop up the
1147 panel). The Dynamic Working Area may be used when fvwm places or
1148 maximizes a window.  To know if an application reserves space you
1149 can type "xprop | grep _NET_WM_STRUT" in a terminal and select the
1150 application.  If four numbers appear then these numbers define the
1151 reserved space as explained in the
1152 .B EwmhBaseStruts
1153 command.
1155 .SH MWM COMPATIBILITY
1157 Fvwm provides options to emulate Motif Window Manager (Mwm) as
1158 well as possible.  Please refer to the
1159 .B Emulate
1160 command as well as to the Mwm specific options of the
1161 .BR Style " and " MenuStyle
1162 commands for details.
1164 .SH OPEN LOOK and XVIEW COMPATIBILITY
1165 Fvwm supports all the Open Look decoration hints (except
1166 pushpins).  Should you use any such application, please add the
1167 following line to your config:
1169 Style * OLDecor
1171 Most (perhaps all) Open Look applications have a strange notion of
1172 keyboard focus handling.  Although a lot of work went into fvwm to
1173 work well with these, you may still encounter problems.  It is
1174 recommended to use the NeverFocus focus policy and the NoLenience
1175 style for all such applications (the windows still get the focus):
1177 Style <application name> NeverFocus, NoLenience
1179 But in case you can not live with that focus policy, you can try
1180 using one of the other focus policies in combination with the
1181 Lenience style:
1183 Style <application name> MouseFocus, Lenience
1184 Style <application name> SloppyFocus, Lenience
1185 Style <application name> ClickToFocus, Lenience
1188 .SH M4 PREPROCESSING
1191 M4 pre-processing is handled by a module in fvwm.  To get more
1192 details, try man
1193 .BR FvwmM4 .
1194 In short, if you want fvwm to parse your files with m4, then
1195 replace the command
1196 .B Read
1197 with
1198 .B FvwmM4
1199 in your
1200 .I ~/.fvwm/config
1201 file (if it appears at all), and start fvwm with the command
1203 fvwm -cmd "FvwmM4 config"
1206 .SH CPP PREPROCESSING
1209 Cpp is the C-language pre-processor.  fvwm offers cpp processing
1210 which mirrors the m4 pre-processing.  To find out about it,
1211 re-read the M4 section above, but replace "m4" with "cpp".
1213 .SH AUTO-RAISE
1216 Windows can be automatically raised when it receives focus, or
1217 some number of milliseconds after it receives focus, by using the
1218 auto-raise module,
1219 .BR FvwmAuto .
1221 .SH CONFIGURATION FILES
1223 The configuration file is used to describe mouse and button
1224 bindings, colors, the virtual display size, and related items.
1225 The initialization configuration file is typically called
1226 .IR config " (or " .fvwm2rc ")."
1227 By using the
1228 .B Read
1229 command, it is easy to read in new configuration files as you go.
1231 Lines beginning with '#' are ignored by fvwm.  Lines starting with
1232 \'*' are expected to contain module configuration commands (rather
1233 than configuration commands for fvwm itself). Like in shell
1234 scripts embedded newlines in a configuration file line can be
1235 quoted by preceding them with a backslash.  All lines linked in
1236 this fashion are treated as a single line.  The newline itself is
1237 ignored.
1239 Fvwm makes no distinction between configuration commands and
1240 action commands, so anything mentioned in the fvwm commands
1241 section can be placed on a line by itself for fvwm to execute as
1242 it reads the configuration file, or it can be placed as an
1243 executable command in a menu or bound to a mouse button or a
1244 keyboard key.  It is left as an exercise for the user to decide
1245 which function make sense for initialization and which ones make
1246 sense for run-time.
1248 .SH SUPPLIED CONFIGURATION
1250 A sample configuration file,
1251 .IR system.fvwm2rc ,
1252 is supplied with the fvwm distribution.  It is well commented and
1253 can be used as a source of examples for fvwm configuration.
1254 It may be copied to /usr/local/share/fvwm/config file.
1256 Alternatively, the built-in menu (accessible when no
1257 configuration file is found) has options to create an initial
1258 config file for the user.
1260 If you are new to
1261 .IR fvwm ", try " fvwm-themes
1262 package demonstrating the powerful fvwm functionality.
1264 .\" .SH INTERNATIONALIZATION
1265 .\" Internationalized fvwm enables to display not only LATIN-1
1266 .\" characters but also multi byte characters such as Japanese,
1267 .\" Korean, etc. You should set up your environment variable
1268 .\" .IR LC_TYPE " or " LANG ,
1269 .\" to enable this feature.  Also, you should specify proper
1270 .\" .I FONTSET
1271 .\" instead of
1272 .\" .IR FONT .
1273 .\" Note that no catalog-file or input-methods are implemented.
1275 .SH FONT NAMES AND FONT LOADING
1277 The fonts used for the text of a window title, icon titles, menus
1278 and geometry window can be specified by using the Font and
1279 IconFont Style, the Font MenuStyle and the DefaultFont
1280 commands. Also, all the Modules which use text have configuration
1281 command(s) to specify font(s). All these styles and commands take
1282 a font name as an argument. This section explains what is a font
1283 name for fvwm and which fonts fvwm loads.
1285 First, you can use what we can call a usual font name, for
1286 example,
1288 -adobe-courier-bold-r-normal--10-100-75-75-m-60-ISO8859-1
1289 -adobe-courier-bold-r-normal--10-*
1290 -*-fixed-medium-o-normal--14-*-ISO8859-15
1292 That is, you can use an X Logical Font Description (XLFD for
1293 short).  Then the "first" font which matches the description is
1294 loaded and used. This "first" font depends of your font path and
1295 also of your locale. Fonts which match the locale charset are
1296 loaded in priority order. For example with
1298 -adobe-courier-bold-r-normal--10-*
1300 if the locale is using an
1301 .SM ISO8859-1
1302 charset, fvwm tries to load a font which matches
1304 -adobe-courier-bold-r-normal--10-*-ISO8859-1
1306 with the locale charset
1307 .SM ISO8859-15
1308 fvwm tries to load
1310 -adobe-courier-bold-r-normal--10-*-ISO8859-15.
1313 A font name can be given as an extended XLFD. This
1314 is a comma separated list of (simple) XLFD font names, for example:
1316 -adobe-courier-bold-r-normal--14-*,-*-courier-medium-r-normal--14-*
1318 Each simple font name is tried until a matching font with the
1319 locale charset is found and if this fails each simple font name is
1320 tried without constraint on the charset.
1322 More details on the XLFD can be found in the X manual page, the X
1323 Logical Font Description Conventions document (called xlfd) and
1324 the XLoadFont and XCreateFontSet manual pages. Some useful font
1325 utilities are: xlsfonts, xfontsel, xfd and xset.
1327 If you have Xft support you can specify an Xft font name
1328 (description) of a true type (or Type1) font prefixed by "xft:",
1329 for example:
1331 "xft:Luxi Mono"
1332 "xft:Luxi Mono:Medium:Roman:size=14:encoding=iso8859-1"
1334 The "first" font which matches the description is loaded.  This
1335 first font depends on the XftConfig configuration file with Xft1
1336 and on the /etc/fonts/fonts.conf file with Xft2.
1337 One may read the Xft manual page and the fontconfig man page with
1338 Xft2. The first string which follows "xft:" is always considered
1339 as the family. With the second example Luxi Mono is the Family
1340 (Other XFree TTF families: "Luxi Serif", "Luxi Sans"), Medium is
1341 the Weight (other possible weights: Light, DemiBold, Bold, Black),
1342 Roman is the slant or the style (other possibilities: Regular,
1343 Oblique, Italic) size specifies the point size (for a pixel size
1344 use pixelsize=), encoding allows for enforce a charset (
1345 .SM iso8859-1
1347 .SM iso10646-1
1348 only; if no encoding is given the locale charset is assumed).
1349 An important parameter is "minspace=bool" where bool is True or
1350 False. If bool is False (the default?) Xft gives a greater font
1351 height to fvwm than if bool is True. This may modify text
1352 placement, icon and window title height, line spacing in menus and
1353 FvwmIdent, button height in some fvwm modules ...etc.  With a LCD
1354 monitor you may try to add "rgba=mode" where mode is either rgb,
1355 bgr, vrgb or vbgr to enable subpixel rendering. The best mode
1356 depends on the way your LCD cells are arranged. You can pass other
1357 specifications in between ":", as
1358 "foundry=foundry_name", "spacing=type" where type can be
1359 monospace, proportional or charcell,
1360 "charwidth=integer", "charheight=integer" or "antialias=bool"
1361 where bool is True or False. It seems that these parameters are
1362 not always taken in account.
1364 To determine which Xft fonts are really loaded you can export
1365 XFT_DEBUG=1 before starting fvwm and take a look to the error
1366 log. With Xft2 you may use fc-list to list the available
1367 fonts. Anyway, Xft support is experimental (from the X and the
1368 fvwm point of view) and the quality of the rendering depends on
1369 number of parameters (the XFree and the freetype versions and your
1370 video card(s)).
1372 After an Xft font name you can add after a ";" an XLFD
1373 font name (simple or extended) as:
1375 xft:Verdana:pixelsize=14;-adobe-courier-bold-r-normal--14-*
1377 then, if either loading the Xft font fails or fvwm has no Xft
1378 support, fvwm loads the font
1379 "-adobe-courier-bold-r-normal--14-*". This allows for writing
1380 portable configuration files.
1382 .SH FONT AND STRING ENCODING
1384 Once a font is loaded, fvwm finds its encoding (or charset) using
1385 its name (the last two fields of the name). fvwm assumes that the
1386 strings which are displayed with this font use this encoding (an
1387 exception is that if an
1388 .SM iso10646-1
1389 font is loaded, then
1390 .SM UTF-8
1391  is assumed for string encoding).  In a normal situation,
1392 (i) a font is loaded by giving a font name without specifying the
1393 encoding,
1394 (ii) the encoding of the loaded font is the locale encoding, and
1395 then
1396 (iii) the strings in the fvwm configuration files should use the
1397 locale encoding as well as the window and icon name. With Xft the
1398 situation is bit different as Xft supports only
1399 .SM iso10646-1
1401 .SM iso8859-1 charsets. If you do not specify one of these
1402 encodings in the Xft font name, then fvwm does strings conversion
1403 using (iii). Note that with multibyte fonts (and in particular
1404 with
1405 .SM CJK
1406 fonts) for good text rendering, the locale encoding should be the
1407 charset of the font.
1409 To override the previous rules, it is possible to specify the
1410 string encoding in the beginning of a font description as follow:
1412 StringEncoding=enc:_full_font_name_
1414 where
1415 .B enc
1416 is an encoding supported by fvwm (usually font name charset plus some
1417 unicode encodings:
1418 .SM UTF-8
1420 .SM USC-2
1422 .SM USC-4
1424 .SM UTF-16
1427 For example, you may use an
1428 .SM iso8859-1
1429 locale charset and have an FvwmForm in Russian using
1430 .SM koi8-r
1431 encoding. In this case, you just have to ask FvwmForm to load a
1432 .SM koi8-r
1433 font by specifying the encoding in the font name. With a multibyte
1434 language, (as multibyte font works well only if the locale
1435 encoding is the charset of the font), you should use an
1436 .SM iso10646-1
1437 font:
1439 StringEncoding=jisx0208.1983-0:-*-fixed-medium-r-*-ja-*-iso10646-1
1443 "StringEncoding=jisx0208.1983-0:xft:Bitstream Cyberbit"
1445 if your
1446 .B FvwmForm
1447 configuration uses
1448 .SM jisx0208.1983-0
1449 encoding. Another possibility is to use
1450 .SM UTF-8
1451 encoding for your FvwmForm configuration and use an
1452 .SM iso10646-1
1453 font:
1455 -*-fixed-medium-r-*-ja-*-iso10646-1
1459 "StringEncoding=UTF-8:xft:Bitstream Cyberbit"
1461 or equivalently
1463 "xft:Bitstream Cyberbit:encoding=iso10646-1"
1465 In general
1466 .SM iso10646-1
1467 fonts together with
1468 .SM UTF-8
1469 string encoding allows the display of any characters in a given
1470 menu, FvwmForm etc.
1472 More and more, unicode is used and text files use
1473 .SM UTF-8
1474 encoding. However, in practice the characters used range over your
1475 locale charset (this is the case when you generate a menu with
1476 fvwm-menu-desktop with recent versions of the
1477 .SM KDE
1479 .SM  GNOME
1480 desktop environments). For saving memory (an
1481 .SM iso10646-1
1482 font may have a very large number of characters) or because you
1483 have a pretty font without an
1484 .SM iso10646-1
1485 charset, you can specify the string encoding to be
1486 .SM UTF-8
1487 and use a font in the locale charset:
1489 StringEncoding=UTF-8:-*-pretty_font-*-12-*
1492 In most cases, fvwm correctly determines the encoding of the
1493 font. However, some fonts do not end with valid encoding
1494 names. When the font name isn't normal, for example:
1496 -misc-fixed-*--20-*-my_utf8-36
1498 you need to add the encoding after the font name using a slash as
1499 a delimiter. For example:
1501 MenuStyle * Font -misc-fixed-*--20-*-my_utf8-36/iso10646-1
1503 If fvwm finds an encoding, fvwm uses the iconv system functions to
1504 do conversion between encodings.  Unfortunately, there are no
1505 standards.  For conversion between
1506 .SM iso8859-1
1508 .SM UTF-8
1509 : a
1510 .SM GNU
1511 system uses
1512 .SM ISO-8859-1
1513 and other systems use
1514 .SM iso881
1515 to define the converters (these two names are supported by
1516 fvwm). Moreover, in some cases it may be necessary to use machine
1517 specific converters. So, if you experience problems you can try to
1518 get information on your iconv implementation ("man iconv" may
1519 help) and put the name which defines the converter between the
1520 font encoding and
1521 .SM UTF-8
1522 at the end of the font name after the encoding hint and a /
1523 (another possible solution is to use
1524 .SM GNU
1525 libiconv). For example use:
1527 Style * Font -misc-fixed-*--14-*-iso8859-1/*/latin1
1529 to use latin1 for defining the converter for the
1530 .SM iso8859-1
1531 encoding.  The "*" in between the "/" says to fvwm to determine
1532 the encoding from the end of the font name.  Use:
1534 Style * Font -misc-fixed-*--14-*-local8859-6/iso8859-6/local_iso8859_6_iconv
1536 to force fvwm to use the font with
1537 .SM iso8859-6
1538 as the encoding (this is useful for bi-directionality) and to use
1539 .SM local_iso8859_6_iconv
1540 for defining the converters.
1542 .SH FONT SHADOW EFFECTS
1544 Fonts can be given 3d effects. At the beginning of the font name
1545 (or just after a possible StringEncoding specification) add
1547 Shadow=size [offset] [directions]:
1549 .I size
1550 is a positive integer which specifies the number of pixels of shadow.
1551 .I offset
1552 is an optional positive integer which defines the number of pixels
1553 to offset the shadow from the edge of the character.  The default
1554 offset is zero.
1555 .I directions
1556 is an optional set of directions the shadow emanates from the
1557 character.  The
1558 .I directions
1559 are a space separated list of fvwm directions:
1561 .IR N ", "  North ", "     Top ", "         t ", "  Up ", "        u ", " "-"
1563 .IR E ", "  East ", "      Right ", "       r ", "  Right ", "     r ", " "]"
1565 .IR S ", "  South ", "     Bottom ", "      b ", "  Down ", "      d ", " "_"
1567 .IR W ", "  West ", "      Left ", "        l ", "  Left ", "      l ", " "["
1569 .IR NE ", " NorthEast ", " TopRight ", "    tr ", " UpRight ", "   ur ", " "^"
1571 .IR SE ", " SouthEast ", " BottomRight ", " br ", " DownRight ", " dr ", " ">"
1573 .IR SW ", " SouthWest ", " BottomLeft ", "  bl ", " DownLeft ", "  dl ", " "v"
1575 .IR NW ", " NorthWest ", " TopLeft ", "     tl ", " UpLeft ", "    ul ", " "<"
1577 .IR C ", " Center ", "     Centre ", " .
1579 A shadow is displayed in each given direction.
1580 .I All
1581 is equivalent to all the directions.  The default
1582 .I direction
1584 .IR BottomRight .
1585 With the
1586 .I Center
1587 direction, the shadow surrounds the whole string.  Since this is a
1588 super set of all other directions, it is a waste of time to
1589 specify this along with any other directions.
1591 The shadow effect only works with colorsets.  The color of the
1592 shadow is defined by using the
1593 .I fgsh
1594 option of the
1595 .I Colorset
1596 command.  Please refer to the
1597 .B COLORSETS
1598 section for details about colorsets.
1600 Note: It can be difficult to find the font,
1601 .IR fg ", " fgsh " and " bg
1602 colors to make this effect look good, but it can look quite good.
1604 .SH BI-DIRECTIONAL TEXT
1606 Arabic and Hebrew text require bi-directional text support to be
1607 displayed correctly, this means that logical strings should be
1608 converted before their visual presentation, so left-to-right and
1609 right-to-left sub-strings are determined and reshuffled.
1610 In fvwm this is done automatically in window titles, menus,
1611 module labels and other places if the fonts used for displaying the
1612 text are of one of the charsets that require
1613 .I bidi
1614 (bi-directional) support.  For example, this includes
1615 .SM iso8859-6,
1616 .SM iso8859-8
1618 .SM iso10646-1
1619 (unicode), but not other
1620 .SM iso8859-*
1621 fonts.
1623 This bi-directional text support is done using the
1624 .I fribidi
1625 library compile time option, see
1626 .IR INSTALL.fvwm .
1628 .SH KEYBOARD SHORTCUTS
1630 Almost all window manager operations can be performed from the
1631 keyboard so mouse-less operation should be possible.  In addition
1632 to scrolling around the virtual desktop by binding the
1633 .B Scroll
1634 command to appropriate keys,
1635 .BR Popup ", " Move ", " Resize ", "
1636 and any other command can be bound to keys.  Once a command
1637 is started the pointer is moved by using the up, down,
1638 left, and right arrows, and the action is terminated by pressing
1639 return.  Holding down the
1640 .SM Shift
1641 key causes the pointer movement to go in larger steps and holding
1642 down the
1643 .SM control
1644 key causes the pointer movement to go in smaller steps. Standard
1645 emacs and vi cursor movement controls (
1646 .SM n,
1647 .SM p,
1648 .SM f,
1649 .SM b,
1651 .SM j,
1652 .SM k,
1653 .SM h,
1654 .SM l
1655 ) can be used instead of the arrow keys.
1657 .SH SESSION MANAGEMENT
1659 Fvwm supports session management according to the X Session
1660 Management Protocol.  It saves and restores window position, size,
1661 stacking order, desk, stickiness, shadiness, maximizedness,
1662 iconifiedness for all windows. Furthermore, some global state is
1663 saved.
1665 Fvwm doesn't save any information regarding styles, decors,
1666 functions or menus.  If you change any of these resources during a
1667 session (e.g. by issuing
1668 .B Style
1669 commands or by using various modules), these changes are lost
1670 after saving and restarting the session.  To become permanent,
1671 such changes have to be added to the configuration file.
1673 Note further that the current implementation has the following
1674 anomaly when used on a multi-screen display: Starting fvwm for the
1675 first time, fvwm manages all screens by forking a copy of itself
1676 for each screen.  Every copy knows its parent and issuing a
1677 .B Quit
1678 command to any instance of fvwm kills the master and thus all
1679 copies of fvwm.  When you save and restart the session, the
1680 session manager brings up a copy of fvwm on each screen, but this
1681 time they are started as individual instances managing one screen
1682 only.  Thus a
1683 .B Quit
1684 kills only the copy it was sent to.  This is probably not a very
1685 serious problem, since with session management, you are supposed
1686 to quit a session through the session manager anyway. If it is
1687 really needed,
1689 Exec exec killall fvwm
1691 still kills all copies of fvwm.  Your system must have the
1692 .B killall
1693 command though.
1695 .SH BOOLEAN ARGUMENTS
1697 A number of commands take one or several boolean arguments.  These
1698 take a few equivalent inputs: "yes", "on", "true", "t" and "y" all
1699 evaluate to true while "no", "off", "false", "f" and "n" evaluate
1700 to false.  Some commands allow "toggle" too which means that the
1701 feature is disabled if it is currently enabled and vice versa.
1703 .SH CONDITIONAL COMMANDS AND RETURN CODES
1705 Fvwm recognizes a number of commands that are executed only if
1706 certain conditions are met.  For a complete description, please
1707 refer to the section
1708 .B CONDITIONAL COMMANDS
1709 below.
1711 .SH BUILT-IN KEY AND MOUSE BINDINGS
1713 The following commands are built-in to fvwm:
1715 Key Help R A Popup MenuFvwmRoot
1716 Key F1 R A Popup MenuFvwmRoot
1717 Key Tab A M WindowList Root c c NoDeskSort
1718 Key Escape A MC EscapeFunc
1719 Mouse 1 R A Menu MenuFvwmRoot
1720 Mouse 1 T   A FuncFvwmRaiseLowerX Move
1721 Mouse 1 FS  A FuncFvwmRaiseLowerX Resize
1722 Mouse 2 FST A FuncFvwmRaiseLowerX Move
1723 AddToFunc FuncFvwmRaiseLowerX
1724 + I Raise
1725 + M $0
1726 + D Lower
1729 .SM Help
1731 .SM F1
1732 keys invoke a built-in menu that fvwm creates.  This is primarily
1733 for new users that have not created their own configuration
1734 file. Either key on the root (background) window pops up an menu
1735 to help you get started.
1738 .SM Tab
1739 key pressed anywhere with the
1740 .SM Meta
1741 key (same as the
1742 .SM Alt
1743 key on PC keyboards) held down pop-ups a window list.
1745 Mouse button 1 on the title-bar or side frame can move, raise or
1746 lower a window.
1748 Mouse button 1 on the window corners can resize, raise or lower a
1749 window.
1751 You can override or remove these bindings. To remove the window
1752 list binding, use this:
1754 Key Tab A M -
1757 .SH MODULE AND FUNCTION COMMANDS
1759 If fvwm encounters a command that it doesn't recognize,
1760 it checks to see if the
1761 specified command should have been
1763 Function (rest of command)
1767 Module (rest of command)
1769 This allows complex functions or modules to be invoked in a manner
1770 which is fairly transparent to the configuration file.
1772 Example: the
1773 .I config
1774 file contains the line
1776 HelpMe
1778 Fvwm looks for an fvwm command called "HelpMe", and fails.
1779 Next it looks for a user-defined complex function called "HelpMe".
1780 If no such function exists, fvwm tries to execute a
1781 module called "HelpMe".
1783 .SH DELAYED EXECUTION OF COMMANDS
1785 Note: There are many commands that affect look and feel of
1786 specific, some or all windows, like
1787 .BR Style ", " Mouse ", " Colorset ", " TitleStyle
1788 and many others.  For performance reasons such changes are
1789 not applied immediately but only when fvwm is idle, i.e. no user
1790 interaction or module input is pending.  Specifically, new
1791 .B Style
1792 options that are set in a function are not applied until after the
1793 function has completed.  This can sometimes lead to unwanted
1794 effects.
1796 To force that all pending changes are applied immediately, use the
1797 .BR UpdateStyles ", " Refresh " or " RefreshWindow
1798 commands.
1800 .SH QUOTING
1802 Quotes are required only when needed to make fvwm consider two or
1803 more words to be a single argument.  Unnecessary quoting is
1804 allowed.  If you want a quote character in your text, you must
1805 escape it by using the backslash character.  For example, if you
1806 have a pop-up menu called "Window-Ops", then you do not need
1807 quotes:
1809 Popup Window-Ops
1811 but if you replace the dash with a space, then you need
1812 quotes:
1814 Popup "Window Ops"
1816 The supported quoting characters are double quotes, single quotes
1817 and reverse single quotes.  All three kinds of quotes are treated
1818 in the same way.  Single characters can be quoted with a preceding
1819 backslash.  Quoting single characters works even inside other
1820 kinds of quotes.
1822 .SH COMMAND EXPANSION
1824 Whenever an fvwm command line is executed, fvwm performs parameter
1825 expansion.  A parameter is a '$' followed by a word enclosed in
1826 brackets ($[...]) or a single special character.  If fvwm
1827 encounters an unquoted parameter on the command line it expands it
1828 to a string indicated by the parameter name.  Unknown parameters
1829 are left untouched.  Parameter expansion is performed before
1830 quoting.  To get a literal '$' use "$$".
1832 If a command is prefixed with a '-' parameter expansion isn't
1833 performed.  This applies to the command immediately following the '-',
1834 in which the expansion normally would have taken place. When uesed
1835 together with other prefix commands it must be added before the other
1836 prefix.
1838 Example:
1840 Pick -Exec exec xmessage '$[w.name]'
1842 opens an xmessage dialog with "$[w.name]" unexpanded.
1844 The longer variables may contain additional variables inside the
1845 name, which are expanded before the outer variable.
1847 In earlier versions of fvwm, some single letter variables were
1848 supported.  It is deprecated now, since they cause a number of
1849 problems.  You should use the longer substitutes instead.
1851 Example:
1854 # Print the current desk number, horizontal page number
1855 # and the window's class (unexpanded here, no window).
1856 Echo $[desk.n] $[page.nx] $[w.class]
1859 Note: If the command is called outside a window context, it
1860 prints "$[w.class]" instead of the class name.  It is usually not
1861 enough to have the pointer over a window to have a context window.
1862 To force using the window with the focus, the
1863 .B Current
1864 command can be used:
1866 Current Echo $[desk.n] $[page.nx] $[w.class]
1869 The parameters known by fvwm are:
1871 .in +.5i
1873 .in +.3i
1874 A literal '$'.
1875 .in -.3i
1876 .in -.5i
1878 .in +.5i
1880 .in +.3i
1881 The absolute directory of the currently Read file.  Intended for
1882 creating relative and relocatable configuration trees.  If used
1883 outside of any read file, the returned value is '.'.
1884 .in -.3i
1885 .in -.5i
1887 .in +.5i
1888 $0 to $9
1889 .in +.3i
1890 The positional parameters given to a complex function (a function
1891 that has been defined with the
1892 .B AddToFunc
1893 command).  "$0" is replaced with the first parameter, "$1" with
1894 the second parameter and so on.  If the corresponding parameter is
1895 undefined, the "$..." is deleted from the command line.
1896 .in -.3i
1897 .in -.5i
1899 .in +.5i
1901 .in +.3i
1902 All positional parameters given to a complex function.  This
1903 includes parameters that follow after "$9".
1904 .in -.3i
1905 .in -.5i
1907 .in +.5i
1908 .RI $[ n ]
1909 .in +.3i
1911 .IR n :th
1912 positional parameter given to a complex function, counting from 0.
1913 If the corresponding parameter is undefined, the "$[n]" is deleted
1914 from the command line. The parameter is expanded unquoted.
1915 .in -.3i
1916 .in -.5i
1918 .in +.5i
1919 .RI $[ n - m ]
1920 .in +.3i
1921 The positional parameters given to a complex function, starting
1922 with parameter
1923 .I n
1924 and ending with parameter
1925 .IR m .
1926 If all the corresponding parameters are undefined, the "$[...]" is
1927 deleted from the command line. If only some of the parameters are
1928 defined, all defined parameters are expanded, and the remaining
1929 silently ignored. All parameters is expanded unquoted.
1930 .in -.3i
1931 .in -.5i
1933 .in +.5i
1934 .RI $[ n -]
1935 .in +.3i
1936 All the positional parameters given to a complex function,
1937 starting with parameter
1938 .IR n .
1939 If all the corresponding parameters are undefined, the "$[...]" is
1940 deleted from the command line. All parameters is expanded
1941 unquoted.
1942 .in -.3i
1943 .in -.5i
1945 .in +.5i
1946 $[*]
1947 .in +.3i
1948 All the positional parameters given to a complex function. This is
1949 equivalent of $[0-].
1950 .in -.3i
1951 .in -.5i
1953 .in +.5i
1954 $[version.num]
1955 .in +.3i
1956 The version number, like "2.6.0".
1957 .in -.3i
1958 .in -.5i
1960 .in +.5i
1961 $[version.info]
1962 .in +.3i
1963 The version info, like " (from cvs)", empty for the official
1964 releases.
1965 .in -.3i
1966 .in -.5i
1968 .in +.5i
1969 $[version.line]
1970 .in +.3i
1971 The first line printed by the --version command line option.
1972 .in -.3i
1973 .in -.5i
1975 .in +.5i
1976 $[vp.x]
1977 $[vp.y]
1978 $[vp.width]
1979 $[vp.height]
1980 .in +.3i
1981 Either coordinate or the width or height of the current viewport.
1982 .in -.3i
1983 .in -.5i
1985 .in +.5i
1986 $[desk.n]
1987 .in +.3i
1988 The current desk number.
1989 .in -.3i
1990 .in -.5i
1992 .in +.5i
1993 $[desk.name<n>]
1994 .in +.3i
1995 These parameters are replaced with the name of the desktop
1996 number <n> that is defined with the
1997 .B DesktopName
1998 command. If no name is defined, then the default name is returned.
1999 .in -.3i
2000 .in -.5i
2002 .in +.5i
2003 $[desk.width]
2004 $[desk.height]
2005 .in +.3i
2006 The width or height of the whole desktop, i.e. the width or height
2007 multiplied by the number of pages in x or y direction.
2008 .in -.3i
2009 .in -.5i
2011 .in +.5i
2012 $[desk.pagesx]
2013 $[desk.pagesy]
2014 .in +.3i
2015 The number of total pages in a desk in x or y direction.
2016 This is the same as the values set by
2017 .BR DesktopSize .
2018 .in -.3i
2019 .in -.5i
2021 .in +.5i
2022 $[page.nx]
2023 $[page.ny]
2024 .in +.3i
2025 The current page numbers, by X and Y axes, starting from 0.
2026 .I page
2027 is equivalent to
2028 .I area
2029 in the
2030 .SM GNOME
2031 terminology.
2032 .in -.3i
2033 .in -.5i
2035 .in +.5i
2036 $[w.id]
2037 .in +.3i
2038 The window-id (expressed in hex, e.g. 0x10023c) of the window the
2039 command was called for or "$[w.id]" if no window is associated
2040 with the command.
2041 .in -.3i
2042 .in -.5i
2044 .in +.5i
2045 $[w.name]
2046 $[w.iconname]
2047 $[w.class]
2048 $[w.resource]
2049 $[w.iconfile]
2050 $[w.miniiconfile]
2051 $[w.iconfile.svgopts]
2052 $[w.miniiconfile.svgopts]
2053 .in +.3i
2054 The window's name, icon name, resource class and resource name,
2055 file name of its icon or mini icon defined with the
2056 .IR Icon " or " MiniIcon
2057 style (including the full path if the file was found on disk),
2058 and (if fvwm is compiled with SVG support) the icon or mini icon
2059 svg rendering options (including the leading colon), or unexpanded
2060 "$[w.<attribute>]" string if no window is associated with the command.
2062 Note, the first 4 variables may include any kind of characters, so
2063 these variables are quoted.  It means that the value is surrounded
2064 by single quote characters and any contained single quote is
2065 prefixed with a backslash.  This guarantees that commands like:
2067   Style $[w.resource] Icon norm/network.png
2069 work correctly, regardless of any special symbols the value may
2070 contain, like spaces and different kinds of quotes.
2071 .in -.3i
2072 .in -.5i
2074 .in +.5i
2075 $[w.x]
2076 $[w.y]
2077 $[w.width]
2078 $[w.height]
2079 .in +.3i
2080 Either coordinate or the width or height of the current window if
2081 it is not iconified.  If no window is associated with the command
2082 or the window is iconified, the string is left as is.
2083 .in -.3i
2084 .in -.5i
2086 .in +.5i
2087 $[w.desk]
2088 .in +.3i
2089 The number of the desk on which the window is shown.  If the
2090 window is sticky the current desk number is used.
2091 .in -.3i
2092 .in -.5i
2094 .in +.5i
2095 $[w.layer]
2096 .in +.3i
2097 The layer of the window.
2098 .in -.3i
2099 .in -.5i
2101 .in +.5i
2102 $[cw.x]
2103 $[cw.y]
2104 $[cw.width]
2105 $[cw.height]
2106 .in +.3i
2107 These work like $[w....] but return the geometry of the client
2108 part of the window.  In other words: the border and title of the
2109 window is not taken into account.
2110 .in -.3i
2111 .in -.5i
2113 .in +.5i
2114 $[i.x], $[it.x], $[ip.x]
2115 $[i.y], $[it.y], $[ip.y]
2116 $[i.width], $[it.width], $[ip.width]
2117 $[i.height], $[it.height], $[ip.height]
2118 .in +.3i
2119 These work like $[w....] but return the geometry of the icon
2120 ($[i....]), the icon title ($[it....]) or the icon picture
2121 ($[ip....]).
2122 .in -.3i
2123 .in -.5i
2125 .in +.5i
2126 $[pointer.x]
2127 $[pointer.y]
2128 .in +.3i
2129 These return the position of the pointer on the screen.  If the
2130 pointer is not on the screen, these variables are not expanded.
2131 .in -.3i
2132 .in -.5i
2134 .in +.5i
2135 $[pointer.wx]
2136 $[pointer.wy]
2137 .in +.3i
2138 These return the position of the pointer in the selected window.
2139 If the pointer is not on the screen, the window is iconified  or
2140 no window is selected, these variables are not expanded.
2141 .in -.3i
2142 .in -.5i
2144 .in +.5i
2145 $[pointer.cx]
2146 $[pointer.cy]
2147 .in +.3i
2148 These return the position of the pointer in the client portion of
2149 the selected window.  If the pointer is not on the screen, the
2150 window is shaded or iconified or no window is selected, these
2151 variables are not expanded.
2153 .in -.3i
2154 .in -.5i
2156 .in +.5i
2157 $[screen]
2158 .in +.3i
2159 The screen number fvwm is running on.  Useful for setups with
2160 multiple screens.
2161 .in -.3i
2162 .in -.5i
2164 .in +.5i
2165 $[fg.cs<n>]
2166 .in -.5i
2167 .in +.5i
2168 $[bg.cs<n>]
2169 .in -.5i
2170 .in +.5i
2171 $[hilight.cs<n>]
2172 .in -.5i
2173 .in +.5i
2174 $[shadow.cs<n>]
2175 .in +.3i
2176 These parameters are replaced with the name of the foreground
2177 (fg), background (bg), hilight (hilight) or shadow (shadow) color
2178 that is defined in colorset <n> (replace <n> with zero or a
2179 positive integer).  For example "$[fg.cs3]" is expanded to the
2180 name of the foreground color of colorset 3 (in rgb:rrrr/gggg/bbbb
2181 form).  Please refer to the
2182 .B COLORSETS
2183 section for details about colorsets.
2184 .in -.3i
2185 .in -.5i
2187 .in +.5i
2188 $[schedule.last]
2189 .in +.3i
2190 This is replaced by the id of the last command that was scheduled
2191 with the
2192 .B Schedule
2193 command, even if this command was already executed.
2194 .in -.3i
2195 .in -.5i
2197 .in +.5i
2198 $[schedule.next]
2199 .in +.3i
2200 This is replaced by the id the next command used with
2201 .B Schedule
2202 will get (unless a different id is specified explicitly).
2203 .in -.3i
2204 .in -.5i
2206 .in +.5i
2207 $[cond.rc]
2208 .in +.3i
2209 The return code of the last conditional command.  This variable is
2210 only valid inside a function and can not be used in a conditional
2211 command.  Please refer to the section
2212 .B CONDITIONAL COMMANDS
2213 in the command list.
2214 .in -.3i
2215 .in -.5i
2217 .in +.5i
2218 $[func.context]
2219 .in +.3i
2220 The context character of the running command as used in the
2221 .BS Mouse ", " Key " or " PointerKey
2222 command.  This is useful for example with:
2224 Mouse 3 FS N WindowShade $$[func.context]
2226 .in -.3i
2227 .in -.5i
2229 .in +.5i
2230 $[gt.str]
2231 .in +.3i
2232 return the translation of
2233 .I str
2234 by looking in the current locale catalogs. If no translation is
2235 found
2236 .I str
2237 is returned as is.  See the
2238 .B LocalePath
2239 command.
2240 .in -.3i
2241 .in -.5i
2243 .in +.5i
2244 $[...]
2245 .in +.3i
2246 If the string within the braces is neither of the above, fvwm
2247 tries to find an environment variable with this name and replaces
2248 its value if one is found (e.g. "$[PAGER]" could be replaced by
2249 "more").  Otherwise the string is left as is.
2250 .in -.3i
2251 .in -.5i
2253 Some examples can be found in the description of the
2254 .B AddToFunc
2255 command.
2257 .SH SCRIPTING AND COMPLEX FUNCTIONS
2259 To achieve the more complex effects, fvwm has a number of
2260 commands that improve its scripting abilities.  Scripts can be
2261 read from a file with
2262 .BR Read ,
2263 from the output of a command with
2264 .B PipeRead
2265 or written as a complex function with the
2266 .B AddToFunc
2267 command.  For the curious, section 7 of the fvwm FAQ shows some
2268 real life applications of scripting.  Please refer to the sections
2269 .B COMMANDS FOR USER FUNCTIONS AND SHELL COMMANDS
2271 .B CONDITIONAL COMMANDS
2272 for details.  A word of warning:  during execution of complex
2273 functions, fvwm needs to take all input from the mouse pointer
2274 (the pointer is "grabbed" in the slang of X).  No other programs
2275 can receive any input from the pointer while a function is run.
2276 This can confuse some programs.  For example, the xwd program
2277 refuses to make screen shots when run from a complex function.  To
2278 achieve the same functionality you can use the
2279 .BR Read " or " PipeRead
2280 command instead.
2282 .SH THE LIST OF FVWM COMMANDS
2284 The command descriptions below are grouped together in the
2285 following sections.  The sections are hopefully sorted in order of
2286 usefulness to the newcomer.
2288 - Menu commands
2289 - Miscellaneous commands
2290 - Commands affecting window movement and placement
2291 - Commands for focus and mouse movement
2292 - Commands controlling window state
2293 - Commands for mouse, key and stroke bindings
2294 - The Style command (controlling window styles)
2295 - Other commands controlling window styles
2296 - Commands controlling the virtual desktop
2297 - Commands for user functions and shell commands
2298 - Conditional commands
2299 - Module commands
2300 - Quit, restart and session management commands
2301 - Colorsets
2302 - Color gradients
2305 .SS MENUS
2307 Before a menu can be opened, it has to be populated with menu
2308 items using the
2309 .B AddToMenu
2310 command and bound to a key or mouse button with the
2311 .BR Key ", " PointerKey " or " Mouse
2312 command (there are many other ways to invoke a menu too).  This is
2313 usually done in the configuration file.
2315 Fvwm menus are extremely configurable in look and feel.  Even the
2316 slightest nuances can be changed to the user's liking, including
2317 the menu item fonts, the background, delays before popping up sub
2318 menus, generating menus dynamically and many other features.
2319 Please refer to the
2320 .B MenuStyle
2321 command to learn more.
2324 .B Types of Menus
2326 In fvwm there are four slightly different types of menus:
2328 .I Popup menus
2329 can appear everywhere on the screen on their own or attached to a
2330 part of a window.  The
2331 .B Popup
2332 command opens popup menus.  If the popup menu was invoked with a
2333 mouse button held down, it is closed when the button is released.
2334 The item under the pointer is then activated and the associated
2335 action is executed.
2337 .B Menu
2338 is a very similar command, but the menus it opens are slightly less
2339 transient.  When invoked by clicking a mouse button, it stays open
2340 and can be navigated with no button held.  But if it is invoked by
2341 a button press followed by mouse motion, it behaves exactly like a
2342 popup menu.
2344 .IR "Tear off menus" " or " "Pin up menus"
2345 are menus from either of the above two commands that have been
2346 "torn off" their original context and pinned on the desktop like a
2347 normal window.  They are created from other menus by certain key
2348 presses or mouse sequences or with the
2349 .B TearMenuOff
2350 command from inside a menu.
2352 .I Sub menus
2353 are menus inside menus.  When a menu item that has the
2354 .B Popup
2355 command as its action is selected, the named menu is opened as an
2356 inferior menu to the parent.  Any type of menu can have sub menus.
2359 .B Menu Anatomy
2361 Menus consist of any number of titles which are inactive menu
2362 items that usually appear at the top of the menu, normal items
2363 triggering various actions when selected, separator lines between
2364 the items, tear off bars (a horizontal broken line) that tear off
2365 the menu when selected, and sub menu items indicated with a
2366 triangle pointing left or right, depending on the direction in
2367 which the sub menu appears.  All the above menu items are
2368 optional.
2370 Additionally, if the menu is too long to fit on the screen, the
2371 excess menu items are put in a continuation menu and a sub menu
2372 with the string "More..." is placed at the bottom of the menu.
2373 Finally, there may be a picture running up either side of the menu
2374 (a "side bar").
2377 .B Menu Navigation
2379 Menus can be navigated either with the keyboard or with the
2380 mouse.  Many people prefer to use the mouse, but it can be rather
2381 tedious.  Once you get the hang of it, keyboard navigation can be
2382 much faster.  While fvwm displays a menu, it can do nothing else.
2383 For example, new windows do not appear before the menu is closed.
2384 However, this is not exactly true for tear off menus.  See the
2385 .B Tear Off Menus
2386 section for details.
2389 .B Mouse Navigation
2391 Moving the pointer over a menu selects the item below it.
2392 Normally this is indicated by a 3d border around the item, but not
2393 all parts of a menu can be selected.  Pressing any mouse button
2394 while a menu is open by default activates the item below it.  Items
2395 of a popup menu are also activated by releasing a held mouse button.
2396 In case of an item that hides a sub menu, the sub menu is
2397 displayed if the pointer hovers over the item long enough or moves
2398 close to the triangle indicating the sub menu.  This behaviour can
2399 be tuned with menu styles.
2401 Scrolling a mouse wheel over a menu either wraps the pointer along the
2402 menu (default), scrolls the menu under the pointer or act as if the
2403 menu was clicked depending on the
2404 .I MouseWheel
2405 menu style.
2407 Clicking on a selected item activates it - what happens exactly
2408 depends on the type of the item.
2410 Clicking on a title, a separator, the side bar, or outside the
2411 menu closes the menu (exception:  tear off menus can not be closed
2412 this way).  Pressing mouse button 2 over a menu title or
2413 activating a tear off bar creates a tear off menu from the current
2414 menu.  Clicking on a normal menu item invokes the command that is
2415 bound to it, and clicking on a sub menu item either closes all
2416 open menus and replaces them with the sub menu or posts the menu
2417 (default).
2419 Posting menus is meant to ease mouse navigation.  Once a sub menu
2420 is posted, only items from that sub menu can be selected.  This
2421 can be very useful to navigate the menu if the pointer tends to
2422 stray off the menu.  To unpost the menu and revert back to normal
2423 operation, either click on the same sub menu item or press any
2424 key.
2427 .B Keyboard Navigation
2429 Just like with mouse navigation, the item below the pointer is
2430 selected.  This is achieved by warping the pointer to the menu
2431 items when necessary.  While a menu is open, all key presses are
2432 intercepted by the menu.  No other application can get keyboard
2433 input (although this is not the case for tear off menus).
2435 Items can be selected directly by pressing a hotkey that can be
2436 configured individually for each menu item.  The hotkey is
2437 indicated by underlining it in the menu item label.  With the
2438 .I AutomaticHotkeys
2439 menu style fvwm automatically assigns hotkeys to all menu items.
2441 The most basic keys to navigate through menus are the cursor keys
2442 (move up or down one item, enter or leave a sub menu),
2443 .SM Space
2444 (activate item) and
2445 .SM Escape
2446 (close menu).  Numerous other keys can be used to navigate through
2447 menus by default:
2449 .SM \fIEnter\fP,
2450 .SM \fIReturn\fP,
2451 .SM \fISpace\fP
2452 activate the current item.
2454 .SM \fIEscape\fP,
2455 .SM \fIDelete\fP,
2456 .SM \fICtrl-G\fP
2457 exit the current sequence of menus or destroy a tear off menu.
2459 .SM \fIJ\fP,
2460 .SM \fIN\fP,
2461 .SM \fICursor-Down\fP,
2462 .SM \fITab\fP,
2463 .SM \fIMeta-Tab\fP,
2464 .SM \fICtrl-F\fP,
2465 move to the next item.
2467 .SM \fIK\fP,
2468 .SM \fIP\fP,
2469 .SM \fICursor-Up\fP,
2470 .SM \fIShift-Tab\fP,
2471 .SM \fIShift-Meta-Tab\fP,
2472 .SM \fICtrl-B\fP,
2473 move to the prior item.
2475 .SM \fIL\fP,
2476 .SM \fICursor-Right\fP,
2477 .SM \fIF\fP
2478 enter a sub menu.
2480 .SM \fIH\fP,
2481 .SM \fICursor-Left\fP,
2482 .SM \fIB\fP
2483 return to the prior menu.
2485 .SM \fICtrl-Cursor-Up\fP,
2486 .SM \fICtrl-K\fP
2487 .SM \fICtrl-P\fP,
2488 .SM \fIShift-Ctrl-Meta-Tab\fP,
2489 .SM \fIPage-Up\fP
2490 move up five items.
2492 .SM \fICtrl-Cursor-Down\fP,
2493 .SM \fICtrl-J\fP
2494 .SM \fICtrl-N\fP,
2495 .SM \fICtrl-Meta-Tab\fP,
2496 .SM \fIPage-Down\fP
2497 move down five items.
2499 .SM \fIShift-P\fP,
2500 .SM \fIHome\fP,
2501 .SM \fIShift-Cursor-Up\fP,
2502 .SM \fICtrl-A\fP
2503 move to the first item.
2505 .SM \fIShift-N\fP,
2506 .SM \fIEnd\fP,
2507 .SM \fIShift-Cursor-Down\fP,
2508 .SM \fICtrl-E\fP
2509 move to the last item.
2511 .SM \fIMeta-P\fP,
2512 .SM \fIMeta-Cursor-Up\fP,
2513 .SM \fICtrl-Cursor-Left\fP,
2514 .SM \fIShift-Ctrl-Tab\fP
2515 move up just below the next separator.
2517 .SM \fIMeta-N\fP,
2518 .SM \fIMeta-Cursor-Down\fP,
2519 .SM \fICtrl-Cursor-Right\fP,
2520 .SM \fICtrl-Tab\fP
2521 move down just below the next separator.
2523 .SM \fIInsert\fP
2524 opens the "More..." sub menu if any.
2526 .SM \fIBackspace\fP
2527 tears off the menu.
2530 .B Menu Bindings
2531 The keys and mouse buttons used to navigate the menu can be configured
2532 using the
2533 .BR Key " and " Mouse
2534 commands with the special context 'M', possible combined with 'T' for
2535 the menu title, 'I' for other menu items, 'S' for any border or
2536 sidepic, '[' for left border including a left sidepic, ']' for right
2537 border including a right sidepic, '-' for top border, '_' for bottom
2538 border.  The menu context uses its own set of actions that can be bound
2539 to keys and mouse buttons.  These are
2540 .IR MenuClose ", " MenuEnterContinuation ", " MenuEnterSubmenu ", "
2541 .IR MenuLeaveSubmenu ", " MenuMoveCursor ", " MenuCursorLeft ", "
2542 .IR MenuCursorRight ", " MenuSelectItem ", " MenuScroll " and "
2543 .IR MenuTearOff .
2545 It is not possible to override the key Escape with no modifiers for
2546 closing the menu. Neither is it possible to undefine mouse button 1,
2547 the arrow keys or the enter key for minimal navigation.
2549 .B MenuClose
2550 exits from the current sequence of menus or destroys a tear off menu.
2552 .B MenuEnterContinuation
2553 opens the "More..." sub menu if any.
2555 .B MenuEnterSubmenu
2556 enters a sub menu.
2558 .B MenuLeaveSubmenu
2559 returns to the prior menu.
2561 .B MenuMoveCursor
2562 .IB n " [" m ]
2563 moves the selection to another item.  If the first argument is zero
2564 the second argument specifies an absolute item in the menu to move
2565 the pointer to. Negative items are counted from the end of the menu.
2566 If the first argument is non-zero, the second argument must be omitted,
2567 and the first argument specifies a relative change in the selected item.
2568 The positions may be suffixed with a 's' to indicate that the items should
2569 refer only to the first items after separators.
2571 .B MenuCursorLeft
2572 enters a sub menu with the
2573 .I SubmenusLeft
2574 menu style, and returns to the prior menu with the
2575 .IR SubmenusRight " menu style."
2577 .B MenuCursorRight
2578 enters a sub menu with the
2579 .I SubmenusRight
2580 menu style, and returns to the prior menu with the
2581 .IR SubmenusLeft " menu style."
2583 .B MenuSelectItem
2584 triggers the action for the menu item.
2586 .BI "MenuScroll " n
2587 performs menu scrolling according to the
2588 .IR MouseWheel " menu style with " n " items.  The distance can be"
2589 suffixed with an 's' to indicate the items should refer only to the
2590 first items after separators.
2592 .B MenuTearOff
2593 turns a normal menu into a "torn off" menu. See
2594 .B Tear Off Menus
2595 for details.
2598 .B Tear Off Menus
2600 A tear off menu is any menu that has been "torn off" the window it
2601 was attached to and pinned to the root window.  There are three
2602 ways to tear off a menu:  click on the menu title with mouse
2603 button 2, press
2604 .SM Backspace
2605 in the menu or activate its tear off bar (a horizontal bar with a
2606 broken line).  Tear off bars must be added to the menu as any
2607 other item by assigning them the command
2608 .BR TearMenuOff .
2610 The builtin tear off actions can be overridden by undefining the
2611 builtin menu actions bound to tear off. To remove the builtin mouse
2612 button 2 binding, use:
2615 Mouse 2 MT A -
2618 and to remove the builtin backspace binding, use:
2621 Key Backspace M A -
2624 See the section
2625 .B Menu Bindings
2626 for details on how to assign other bindings for tear off.
2628 Note that prior to fvwm 2.5.20 the tear off mouse bindings were
2629 redefined in different way, which no longer work.
2631 The window containing the menu is placed as any other window would
2632 be.  If you find it confusing to have your tear off menus appear
2633 at random positions on the screen, put this line in your
2634 configuration file:
2636 Style fvwm_menu UsePPosition
2639 To remove borders and buttons from a tear-off menu but keep the
2640 menu title, you can use
2643 Style fvwm_menu !Button 0, !Button 1
2644 Style fvwm_menu !Button 2, !Button 3
2645 Style fvwm_menu !Button 4, !Button 5
2646 Style fvwm_menu !Button 6, !Button 7
2647 Style fvwm_menu !Button 8, !Button 9
2648 Style fvwm_menu Title, HandleWidth 0
2651 A tear off menu is a cross breeding between a window and a menu.
2652 The menu is swallowed by a window and its title is stripped off
2653 and displayed in the window title.  The main advantage is that the
2654 menu becomes permanent - activating an item does not close the
2655 menu.  Therefore, it can be used multiple times without reopening
2656 it.  To destroy such a menu, close its window or press the
2657 .SM Escape
2658 key.
2660 Tear off menus behave somewhat differently than normal menus and
2661 windows.  They do not take the keyboard focus, but while the
2662 pointer is over one of them, all key presses are sent to the
2663 menu.  Other fvwm key bindings are disabled as long as the pointer
2664 is inside the tear off menu or one of its sub menus.  When the
2665 pointer leaves this area, all sub menus are closed immediately.
2666 Note that the window containing a tear off menu is never hilighted
2667 as if it had the focus.
2669 A tear off menu is an independent copy of the menu it originated
2670 from.  As such, it is not affected by adding items to that menu or
2671 changing its menu style.
2673 To create a tear off menu without opening the normal menu first,
2674 the option
2675 .I TearOffImmediately
2676 can be added to the
2677 .BR Menu " or " Popup
2678 command.
2681 .BI "AddToMenu " menu-name " [" menu-label " " action "]"
2683 Begins or adds to a menu definition.  Typically a menu definition
2684 looks like this:
2686 AddToMenu Utilities Utilities Title
2687  + Xterm           Exec  exec xterm -e tcsh
2688  + Rxvt            Exec  exec rxvt
2689  + "Remote Logins" Popup Remote-Logins
2690  + Top             Exec  exec rxvt -T Top -n \\
2691                    Top -e top
2692  + Calculator      Exec  exec xcalc
2693  + Xman            Exec  exec xman
2694  + Xmag            Exec  exec xmag
2695  + emacs           Exec  exec xemacs
2696  + Mail            MailFunction \\
2697                    xmh "-font fixed"
2698  + ""              Nop
2699  + Modules         Popup Module-Popup
2700  + ""              Nop
2701  + Exit Fvwm       Popup Quit-Verify
2703 The menu could be invoked via
2705 Mouse 1 R A Menu Utilities Nop
2709 Mouse 1 R A Popup Utilities
2711 There is no end-of-menu symbol.  Menus do not have to be defined
2712 in a contiguous region of the
2713 .I config
2714 file.  The quoted (or first word)
2715 portion in the above examples is the menu label,
2716 which appears in the menu when the user pops it up.  The remaining
2717 portion is an fvwm command which is executed if the user
2718 selects that menu item.  An empty menu-label ("") and the
2719 .B Nop
2720 function are used to insert a separator into the menu.
2722 The keywords
2723 .IR DynamicPopUpAction " and " DynamicPopDownAction
2724 have a special meaning when used as the name of a menu item.  The
2725 action following the keyword is executed whenever the menu is
2726 popped up or down.  This way you can implement dynamic menus.  It
2727 is even possible to destroy itself with
2728 .B DestroyMenu
2729 and the rebuild from scratch.  When the menu has been destroyed
2730 (unless you used the
2731 .I recreate
2732 option when destroying the menu), do not forget to add the dynamic
2733 action again.
2735 Note: Do not trigger actions that require user interaction. They
2736 would probably fail and may screw up your menus.  See the
2737 .B Silent
2738 command.
2740 Warning: Do not issue
2741 .B MenuStyle
2742 commands as dynamic menu actions.  Chances are good that this
2743 crashes fvwm.
2745 There are several configurable scripts installed together with fvwm
2746 for automatic menu generation.  They have their own man pages.
2747 Some of them, specifically
2748 .BR fvwm-menu-directory " and " fvwm-menu-desktop ,
2749 may be used with
2750 .I DynamicPopupAction
2751 to create a directory listing or
2752 .SM GNOME
2754 .SM KDE
2755 application listing.
2757 Example (File browser):
2759 # You can find the shell script fvwm_make_browse_menu.sh
2760 # in the utils/ directory of the distribution.
2761 AddToMenu BrowseMenu
2762 + DynamicPopupAction Piperead \\
2763   'fvwm_make_browse_menu.sh BrowseMenu'
2765 Example (Picture menu):
2767 # Build a menu of all .jpg files in
2768 # $HOME/Pictures
2769 AddToMenu JpgMenu foo title
2770 + DynamicPopupAction Function MakeJpgMenu
2772 AddToFunc MakeJpgMenu
2773 + I DestroyMenu recreate JpgMenu
2774 + I AddToMenu JpgMenu Pictures Title
2775 + I PipeRead 'for i in $HOME/Pictures/*.jpg; \\
2776   do echo AddToMenu JpgMenu "`basename $i`" Exec xv $i; done'
2778 The keyword
2779 .I MissingSubmenuFunction
2780 has a similar meaning.  It is executed whenever you try to pop up
2781 a sub menu that does not exist.  With this function you can define
2782 and destroy menus on the fly.  You can use any command after the
2783 keyword, but if the name of an item (that is a submenu) defined with
2784 .B AddToFunc
2785 follows it, fvwm executes this command:
2787 Function <function-name> <submenu-name>
2789 I.e. the name is passed to the function as its first argument and
2790 can be referred to with "$0".
2793 .B fvwm-menu-directory
2794 script mentioned above may be used with
2795 .I MissingSubmenuFunction
2796 to create an up to date recursive directory listing.
2798 Example:
2800 # There is another shell script fvwm_make_directory_menu.sh
2801 # in the utils/ directory of the distribution. To use it,
2802 # define this function in your configuration file:
2804 DestroyFunc MakeMissingDirectoryMenu
2805 AddToFunc MakeMissingDirectoryMenu
2806 + I PipeRead fvwm_make_directory_menu.sh $0
2808 DestroyMenu SomeMenu
2809 AddToMenu SomeMenu
2810 + MissingSubmenuFunction MakeMissingDirectoryMenu
2811 + "Root directory" Popup /
2813 This is another implementation of the file browser that uses
2814 sub menus for subdirectories.
2816 Titles can be used within the menu. If you add the option
2817 .I top
2818 behind the keyword
2819 .BR Title ,
2820 the title is added to the top of the menu.  If there was a title
2821 already, it is overwritten.
2823 AddToMenu Utilities Tools Title top
2825 All text up to the first
2826 .SM Tab
2827 in the menu label is aligned to the left side of the menu, all
2828 text right of the first
2829 .SM Tab
2830 is aligned to the left in a second column and all text thereafter
2831 is placed right aligned in the third column.  All other
2832 .SM Tabs
2833 are replaced by spaces.  Note that you can change this format with
2835 .I ItemFormat
2836 option of the
2837 .B MenuStyle
2838 command.
2840 If the menu-label contains an ampersand ('&'), the next character
2841 is taken as a hot-key for the menu item.  Hot-keys are underlined
2842 in the label.  To get a literal '&', insert "&&".  Pressing the
2843 hot-key moves through the list of menu items with this hot-key or
2844 selects an item that is the only one with this hot-key.
2846 If the menu-label contains a sub-string which is set off by stars,
2847 then the text between the stars is expected to be the name of an
2848 image file to insert in the menu.  To get a literal
2849 \'*', insert "**".  For example
2851  + Calculator*xcalc.xpm* Exec exec xcalc
2853 inserts a menu item labeled "Calculator" with a picture of a
2854 calculator above it.  The following:
2856  + *xcalc.xpm*           Exec exec xcalc
2858 Omits the "Calculator" label, but leaves the picture.
2860 If the menu-label contains a sub-string which is set off by
2861 percent signs, then the text between the percent signs is expected
2862 to be the name of image file (a so called mini icon to insert to
2863 the left of the menu label.  A second mini icon that is drawn at
2864 the right side of the menu can be given in the same way.  To get a
2865 literal '%', insert "%%". For example
2868  + Calculator%xcalc.xpm% Exec exec xcalc
2870 inserts a menu item labeled "Calculator" with a picture of a
2871 calculator to the left.  The following:
2873  + %xcalc.xpm%           Exec exec xcalc
2875 Omits the "Calculator" label, but leaves the picture.  The
2876 pictures used with this feature should be small (perhaps 16x16).
2878 If the menu-name (not the label) contains a sub-string which is
2879 set off by at signs ('@'), then the text between them is expected
2880 to be the name of an xpm or bitmap file to draw along the left
2881 side of the menu (a side pixmap).  You may want to use the
2882 .I SidePic
2883 option of the
2884 .B MenuStyle
2885 command instead.  To get a literal '@', insert "@@".  For example
2887 AddToMenu StartMenu@linux-menu.xpm@
2889 creates a menu with a picture in its bottom left corner.
2891 If the menu-name also contains a sub-string surrounded by '^'s, then
2892 the text between '^'s is expected to be the name of an X11 color
2893 and the column containing the side picture is colored with that
2894 color.  You can set this color for a menu style using the
2895 .I SideColor
2896 option of the
2897 .B MenuStyle
2898 command.  To get a literal '^', insert "^^".  Example:
2900 AddToMenu StartMenu@linux-menu.xpm@^blue^
2902 creates a menu with a picture in its bottom left corner and
2903 colors with blue the region of the menu containing the picture.
2905 In all the above cases, the name of the resulting menu is name
2906 specified, stripped of the substrings between the various
2907 delimiters.
2910 .BI "ChangeMenuStyle " "menustyle menu ..."
2911 Changes the menu style of
2912 .IR menu " to " menustyle .
2913 You may specify more than one menu in each call of
2914 .BR ChangeMenuStyle .
2916 ChangeMenuStyle pixmap1 \\
2917   ScreenSaverMenu ScreenLockMenu
2921 .BI "CopyMenuStyle " "orig-menustyle dest-menustyle"
2922 Copy
2923 .IR orig-menustyle " to " dest-menustyle ,
2924 where
2925 .IR orig-menustyle
2926 is an existing menu style.  If the menu style
2927 .IR dest_menustyle
2928 does not exist, then it is created.
2931 .BI "DestroyMenu [" recreate "] " menu
2932 Deletes a menu, so that subsequent references to it are no longer
2933 valid.  You can use this to change the contents of a menu during
2934 an fvwm session.  The menu can be rebuilt using
2935 .BR AddToMenu .
2936 The optional parameter
2937 .I recreate
2938 tells fvwm not to throw away the menu completely but to throw away
2939 all the menu items (including the title).
2941 DestroyMenu Utilities
2945 .BI "DestroyMenuStyle " menustyle
2946 Deletes the menu style named
2947 .I menustyle
2948 and changes all menus using this style to the default style, you
2949 cannot destroy the default menu style.
2951 DestroyMenuStyle pixmap1
2955 .B "Menu \fImenu-name\fP \
2956 [\fIposition\fP\
2957 ] [\fIdouble-click-action\fP\
2959 Causes a previously defined menu to be popped up in a sticky
2960 manner.  That is, if the user invokes the menu with a click action
2961 instead of a drag action, the menu stays up.  The command
2962 .I double-click-action
2963 is invoked if the user double-clicks a button (or hits the key
2964 rapidly twice if the menu is bound to a key) when bringing up the
2965 menu.  If the double click action is not specified, double
2966 clicking on the menu does nothing.  However, if the menu begins
2967 with a menu item (i.e. not with a title or a separator) and the
2968 double click action is not given, double clicking invokes the
2969 first item of the menu (but only if the pointer really was over
2970 the item).
2972 The pointer is warped to where it was when the menu was invoked if
2973 it was both invoked and closed with a keystroke.
2976 .I position
2977 arguments allow placement of the menu somewhere on the screen, for
2978 example centered on the visible screen or above a title bar.
2979 Basically it works like this: you specify a
2980 .I context-rectangle
2981 and an offset to this rectangle by which the upper left corner of
2982 the menu is moved from the upper left corner of the rectangle.
2984 .I position
2985 arguments consist of several parts:
2987 .BI "[" context-rectangle "] " "x y" " [" special-options "]"
2990 .I context-rectangle
2991 can be one of:
2993 .in +.5i
2994 .BR Root
2995 .in +.3i
2996 the root window of the current screen.
2997 .in -.3i
2998 .BR XineramaRoot
2999 .in +.3i
3000 the root window of the whole Xinerama screen.  Equivalent to
3001 "root" when Xinerama is not used.
3002 .in -.3i
3003 .BR Mouse
3004 .in +.3i
3005 a 1x1 rectangle at the mouse position.
3006 .in -.3i
3007 .BR Window
3008 .in +.3i
3009 the frame of the context window.
3010 .in -.3i
3011 .BR Interior
3012 .in +.3i
3013 the inside of the context window.
3014 .in -.3i
3015 .BR Title
3016 .in +.3i
3017 the title of the context window or icon.
3018 .in -.3i
3019 .BR Button<n>
3020 .in +.3i
3021 button #n of the context window.
3022 .in -.3i
3023 .BR Icon
3024 .in +.3i
3025 the icon of the context window.
3026 .in -.3i
3027 .BR Menu
3028 .in +.3i
3029 the current menu.
3030 .in -.3i
3031 .BR Item
3032 .in +.3i
3033 the current menu item.
3034 .in -.3i
3035 .BR Context
3036 .in +.3i
3037 the current window, menu or icon.
3038 .in -.3i
3039 .BR This
3040 .in +.3i
3041 whatever widget the pointer is on (e.g. a corner of a window or
3042 the root window).
3043 .in -.3i
3044 .BI "Rectangle <" geometry ">"
3045 .in +.3i
3046 the rectangle defined by
3047 .RI < geometry >
3048 in X geometry format.  Width and height default to 1 if omitted.
3049 .in -.3i
3050 .in -.5i
3052 If the context-rectangle is omitted or illegal (e.g. "item" on a
3053 window), "Mouse" is the default.  Note that not all of these make
3054 sense under all circumstances (e.g. "Icon" if the pointer is on a
3055 menu).
3057 The offset values
3058 .I x
3060 .I y
3061 specify how far the menu is moved from it's default position.  By
3062 default, the numeric value given is interpreted as a percentage of
3063 the context rectangle's width (height), but with a trailing
3064 .RI ' m '
3065 the menu's width (height) is used instead.  Furthermore a trailing
3066 .RI ' p '
3067 changes the interpretation to mean pixels.
3069 Instead of a single value you can use a list of values.  All
3070 additional numbers after the first one are separated from their
3071 predecessor by their sign.  Do not use any other separators.
3074 .IR x " or " y
3075 are prefixed with "o<number>" where <number> is an integer, the
3076 menu and the rectangle are moved to overlap at the specified
3077 position before any other offsets are applied.  The menu and the
3078 rectangle are placed so that the pixel at <number> percent of the
3079 rectangle's width/height is right over the pixel at <number>
3080 percent of the menu's width/height. So "o0" means that the
3081 top/left borders of the menu and the rectangle overlap,
3082 with "o100" it's the bottom/right borders and if you use "o50"
3083 they are centered upon each other (try it and you will see it is
3084 much simpler than this description).  The default is "o0".  The
3085 prefix "o<number>" is an abbreviation for "+<number>-<number>m".
3088 A prefix of
3089 .RI ' c '
3090 is equivalent to "o50".  Examples:
3092 # window list in the middle of the screen
3093 WindowList Root c c
3095 # menu to the left of a window
3096 Menu name window -100m c+0
3098 # popup menu 8 pixels above the mouse pointer
3099 Popup name mouse c -100m-8p
3101 # somewhere on the screen
3102 Menu name rectangle 512x384+1+1 +0 +0
3104 # centered vertically around a menu item
3105 AddToMenu foobar-menu
3106  + "first item" Nop
3107  + "special item" Popup "another menu" item \\
3108                   +100 c
3109  + "last item" Nop
3111 # above the first menu item
3112 AddToMenu foobar-menu
3113  + "first item" Popup "another menu" item \\
3114                 +0 -100m
3116 Note that you can put a sub menu far off the current menu so you
3117 could not reach it with the mouse without leaving the menu.  If
3118 the pointer leaves the current menu in the general direction of
3119 the sub menu the menu stays up.
3122 .IR special-options :
3124 .in +.5i
3125 To create a tear off menu without opening the normal menu, add the
3126 option
3127 .IR TearOffImmediately .
3128 Normally the menu opens in normal state for a split second before
3129 being torn off.  As tearing off places the menu like any other
3130 window, a position should be specified explicitly:
3132 # Forbid fvwm to place the menu window
3133 Style <name of menu> UsePPosition
3134 # Menu at top left corner of screen
3135 Menu Root 0p 0p TearOffImmediately
3139 .IR animated " and " Mwm " or " Win
3140 menu styles may move a menu somewhere else on the screen.  If you
3141 do not want this you can add
3142 .I Fixed
3143 as an option.  This might happen for example if you want the menu
3144 always in the top right corner of the screen.
3146 Where do you want a menu to appear when you click on it's menu
3147 item? The default is to place the title under the cursor, but if
3148 you want it where the position arguments say, use the
3149 .I SelectInPlace
3150 option.  If you want the pointer on the title of the menu, use
3151 .I SelectWarp
3152 too.  Note that these options apply only if the
3153 .IB "PopupAsRootMenu " MenuStyle
3154 option is used.
3156 The pointer is warped to the title of a sub menu whenever the
3157 pointer would be on an item when the sub menu is popped up
3158 .RI ( fvwm
3159 menu style) or never warped to the title at all
3160 .RI ( Mwm " or " Win
3161 menu styles).  You can force (forbid) warping whenever the
3162 sub menu is opened with the
3163 .IR WarpTitle " (" NoWarp ") option."
3165 Note that the
3166 .I special-options
3167 do work with a normal menu that has no other position arguments.
3168 .in -.5i
3171 .BI "MenuStyle " "stylename options"
3172 Sets a new menu style or changes a previously defined style.  The
3173 .I stylename
3174 is the style name; if it contains spaces or tabs it has to be
3175 quoted.  The name "*" is reserved for the default menu style. The
3176 default menu style is used for every menu-like object (e.g. the
3177 window created by the
3178 .B WindowList
3179 command) that had not be assigned a style using the
3180 .BR ChangeMenuStyle .
3181 See also
3182 .BR DestroyMenuStyle .
3183 When using monochrome color options are ignored.
3185 .I options
3186 is a comma separated list containing some of the keywords
3187 Fvwm / Mwm / Win,
3188 BorderWidth,
3189 Foreground,
3190 Background,
3191 Greyed,
3192 HilightBack / !HilightBack,
3193 HilightTitleBack,
3194 ActiveFore / !ActiveFore,
3195 MenuColorset,
3196 ActiveColorset,
3197 GreyedColorset,
3198 TitleColorset,
3199 Hilight3DThick / Hilight3DThin / Hilight3DOff,
3200 Hilight3DThickness,
3201 Animation / !Animation,
3202 Font,
3203 TitleFont,
3204 MenuFace,
3205 PopupDelay,
3206 PopupOffset,
3207 TitleWarp / !TitleWarp,
3208 TitleUnderlines0 / TitleUnderlines1 / TitleUnderlines2,
3209 SeparatorsLong / SeparatorsShort,
3210 TrianglesSolid / TrianglesRelief,
3211 PopupImmediately / PopupDelayed,
3212 PopdownImmediately / PopdownDelayed,
3213 PopupActiveArea,
3214 DoubleClickTime,
3215 SidePic,
3216 SideColor,
3217 PopupAsRootMenu / PopupAsSubmenu / PopupIgnore / PopupClose,
3218 RemoveSubmenus / HoldSubmenus,
3219 SubmenusRight / SubmenusLeft,
3220 SelectOnRelease,
3221 ItemFormat,
3222 VerticalItemSpacing,
3223 VerticalTitleSpacing,
3224 AutomaticHotkeys / !AutomaticHotkeys,
3225 MouseWheel,
3226 ScrollOffPage / !ScrollOffPage,
3227 TrianglesUseFore / !TrianglesUseFore.
3229 In the above list some options are listed as option pairs or
3230 triples with a '/' in between.  These options exclude each other.
3231 All paired options can be negated to have the effect of the
3232 counterpart option by prefixing ! to the option.
3234 Some options are now negated by prefixing ! to the option. This
3235 is the preferred form for all such options. The other negative
3236 forms are now deprecated and will be removed in the future.
3238 This is a list of MenuStyle deprecated negative options:
3239 ActiveForeOff, AnimationOff, AutomaticHotkeysOff, HilightBackOff,
3240 TitleWarpOff
3242 .IR Fvwm ", " Mwm ", " Win
3243 reset all options to the style with the same name in former
3244 versions of fvwm.  The default for new menu styles is
3245 .I Fvwm
3246 style.  These options override all others except
3247 .IR Foreground ", " Background ", " Greyed ", " HilightBack ", "
3248 .IR ActiveFore " and " PopupDelay ,
3249 so they should be used only as the first option specified for a
3250 menu style or to reset the style to defined behavior.  The same
3251 effect can be created by setting all the other options one by one.
3253 .IR Mwm " and " Win
3254 style menus popup sub menus automatically.
3255 .I Win
3256 menus indicate the current menu item by changing the background to
3257 dark.
3258 .I Fvwm
3259 sub menus overlap the parent menu,
3260 .IR Mwm " and " Win
3261 style menus never overlap the parent menu.
3263 .I Fvwm
3264 style is equivalent to !HilightBack, Hilight3DThin,
3265 !ActiveFore,
3266 !Animation, Font, MenuFace, PopupOffset 0 67,
3267 TitleWarp, TitleUnderlines1, SeparatorsShort, TrianglesRelief,
3268 PopupDelayed, PopdownDelayed, PopupDelay 150, PopdownDelay 150,
3269 PopupAsSubmenu, HoldSubmenus,
3270 SubmenusRight, BorderWidth 2, !AutomaticHotkeys,
3271 PopupActiveArea 75.
3273 .I Mwm
3274 style is equivalent to !HilightBack, Hilight3DThick,
3275 !ActiveFore,
3276 !Animation, Font, MenuFace, PopupOffset -3 100,
3277 !TitleWarp, TitleUnderlines2, SeparatorsLong, TrianglesRelief,
3278 PopupImmediately, PopdownDelayed, PopdownDelay 150,
3279 PopupAsSubmenu, HoldSubmenus, SubmenusRight, BorderWidth 2,
3280 !AutomaticHotkeys, PopupActiveArea 75.
3282 .I Win
3283 style is equivalent to HilightBack, Hilight3DOff, ActiveFore,
3284 !Animation, Font, MenuFace, PopupOffset -5 100, !TitleWarp,
3285 TitleUnderlines1, SeparatorsShort, TrianglesSolid,
3286 PopupImmediately, PopdownDelayed, PopdownDelay 150,
3287 PopupAsSubmenu, RemoveSubmenus, SubmenusRight, BorderWidth 2,
3288 !AutomaticHotkeys, PopupActiveArea 75.
3290 .I BorderWidth
3291 takes the thickness of the border around the menus in pixels. It
3292 may be zero to 50 pixels.  The default is 2.  Using an illegal
3293 value reverts the border width to the default.
3295 .IR Foreground " and " Background
3296 may have a color name as an argument.  This color is used for menu
3297 text or the menu's background.  You can omit the color name to
3298 reset these colors to the built-in default.
3300 .I Greyed
3301 may have a color name as an argument.  This color is the one used
3302 to draw a menu-selection which is prohibited (or not recommended)
3303 by the Mwm hints which an application has specified. If the color
3304 is omitted the color of greyed menu entries is based on the
3305 background color of the menu.
3307 .IR HilightBack " and " !HilightBack
3308 switch hilighting the background of the selected menu item on and
3309 off.  A specific background color may be used by providing the
3310 color name as an argument to
3311 .IR HilightBack .
3312 If you use this option without an argument the color is based on
3313 the menu's background color.  The
3314 .I ActiveColorset
3315 option overrides the specified color.  If the colorset has a
3316 non solid background it is used for the hilighting.
3318 .I HilightTitleBack
3319 switches hilighting the background of menu titles on.  If a
3320 .I TitleColorset
3321 was used, the background colour is taken from there.  Otherwise
3322 the color is based on the menu's background color.  If the colorset
3323 has a non solid background it is used for the hilighting.
3325 .I ActiveFore " and " !ActiveFore
3326 switch hilighting the foreground of the selected menu item on and
3327 off.  A specific foreground color may be used by providing the
3328 color name as an argument to
3329 .IR ActiveFore .
3330 Omitting the color turns hilighting on when an
3331 .I ActiveColorset
3332 is used.
3333 .I ActiveFore
3334 turns off hilighting the foreground completely.  The
3335 .I ActiveColorset
3336 option overrides the specified color.
3338 .I MenuColorset
3339 controls if a colorset is used instead of the
3340 .IR Foreground ", " Background " and " MenuFace
3341 menu styles.  If the
3342 .I MenuColorset
3343 keyword is followed by a number equal to zero or greater, this
3344 number is taken as the number of the colorset to use.  If the
3345 number is omitted, the colorset is switched off and the regular
3346 menu styles are used again.  The foreground and background colors
3347 of the menu items are replaced by the colors from the colorset. If
3348 the colorset has a pixmap defined, this pixmap is used as the
3349 background of the menu.  Note that the
3350 .I MenuFace
3351 menu style has been optimized for memory consumption and may use
3352 less memory than the background from a colorset.  The shape mask
3353 from the colorset is used to shape the menu.  Please refer to the
3354 .B COLORSETS
3355 section for details about colorsets.
3357 .I ActiveColorset
3358 works exactly like
3359 .IR MenuColorset ,
3360 but the foreground from the colorset replaces the color given with
3362 .I ActiveFore
3363 menu style and the colorset's background color replaces the color
3364 given with the
3365 .I HilightBack
3366 command (to turn on background hilighting you have to use the
3367 .I HilightBack
3368 menu style too).  If specified, the hilight and shadow colors
3369 from the colorset are used too.  The pixmap and shape mask from
3370 the colorset are not used.  Hilighting the background or
3371 foreground can be turned off individually with the
3372 .IR !ActiveFore " or " !HilightBack
3373 menu styles.
3375 .I GreyedColorset
3376 works exactly like
3377 .IR MenuColorset ,
3378 but the foreground from the colorset replaces the color given with
3380 .I Greyed
3381 menu style.  No other parts of the colorset are used.
3383 .I TitleColorset
3384 works exactly like
3385 .IR MenuColorset ,
3386 but is used only for menu titles.
3388 .IR Hilight3DThick ", " Hilight3DThin " and " Hilight3DOff
3389 determine if the selected menu item is hilighted with a 3D
3390 relief. Thick reliefs are two pixels wide, thin reliefs are one
3391 pixel wide.
3393 .I Hilight3DThickness
3394 takes one numeric argument that may be between -50 and +50
3395 pixels. With negative values the menu item gets a pressed in look.
3396 The above three commands are equivalent to a thickness of 2, 1 and
3399 .IR Animation " and " !Animation
3400 turn menu animation on or off.  When animation is on, sub menus
3401 that do not fit on the screen cause the parent menu to be shifted
3402 to the left so the sub menu can be seen.
3404 .IR Font " and " TitleFont
3405 take a font name as an argument.  If a font by this name exists
3406 it is used for the text of all menu items.  If it does not exist
3407 or if the name is left blank the built-in default is used.  If a
3408 .I TitleFont
3409 is given, it is used for all menu titles instead of the normal font.
3411 .I MenuFace
3412 enforces a fancy background upon the menus.  You can use the same
3413 options for
3414 .I MenuFace
3415 as for the
3416 .BR ButtonStyle .
3417 See description of
3418 .B ButtonStyle
3419 command and the
3420 .B COLOR GRADIENTS
3421 sections for more information.  If you use
3422 .I MenuFace
3423 without arguments the style is reverted back to normal.
3425 Some examples of MenuFaces are:
3427 MenuFace DGradient 128 2 lightgrey 50 blue 50 \\
3428   white
3429 MenuFace TiledPixmap texture10.xpm
3430 MenuFace HGradient 128 2 Red 40 Maroon 60 \\
3431   White
3432 MenuFace Solid Maroon
3434 Note: The gradient styles H, V, B and D are optimized for high
3435 speed and low memory consumption in menus.  This is not the case
3436 for all the other gradient styles.  They may be slow and consume
3437 huge amounts of memory, so if you encounter performance problems
3438 with them you may be better off by not using them.  To improve
3439 performance you can try one or all of the following:
3441 Turn hilighting of the active menu item other than foreground
3442 color off:
3444 MenuStyle <style> Hilight3DOff, !HilightBack
3445 MenuStyle <style> ActiveFore <preferred color>
3447 Make sure sub menus do not overlap the parent menu. This can
3448 prevent menus being redrawn every time a sub menu pops up or down.
3450 MenuStyle <style> PopupOffset 1 100
3452 Run your X server with backing storage.  If your X Server is
3453 started with the -bs option, turn it off.  If not try the -wm
3454 and +bs options:
3456 startx -- -wm +bs
3458 You may have to adapt this example to your system (e.g. if you use
3459 xinit to start X).
3461 .I PopupDelay
3462 requires one numeric argument.  This value is the delay in
3463 milliseconds before a sub menu is popped up when the pointer moves
3464 over a menu item that has a sub menu.  If the value is zero no
3465 automatic pop up is done.  If the argument is omitted the built-in
3466 default is used. Note that the popup delay has no effect if the
3467 .I PopupImmediately
3468 option is used since sub menus pop up immediately then.
3470 .I PopupImmediately
3471 makes menu items with sub menus pop up it up as soon as the
3472 pointer enters the item.  The
3473 .I PopupDelay option
3474 is ignored then.  If
3475 .I PopupDelayed
3476 is used fvwm looks at the
3477 .I PopupDelay
3478 option if or when this automatic popup happens.
3480 .I PopdownDelay
3481 works exactly like
3482 .I PopupDelay
3483 but determines the timeout of the
3484 .I PopupDelayed
3485 style.
3487 .I PopdownImmediately
3488 makes sub menus vanish as soon as the pointer leaves the sub menu
3489 and the correspondent item in the parent menu.  With the opposite
3490 option
3491 .I PopdownDelayed
3492 the sub menu only pops down after the time specified with the
3493 .I PopdownDelay
3494 option.  This comes handy when the pointer often strays off the
3495 menu item when trying to move into the sub menu.  Whenever there
3496 is a conflict between the
3497 .IR PopupImmediately ", " PopupDelayed ", " PopupDelay
3498 styles and the
3499 .IR PopdownImmediately ", " PopdownDelayed ", " PopdownDelay
3500 styles, the
3501 .I Popup...
3502 styles win when using mouse navigation and the
3503 .I Popdown...
3504 styles win when navigating with the keyboard.
3506 .I PopupOffset
3507 requires two integer arguments.  Both values affect where sub
3508 menus are placed relative to the parent menu.  If both values are
3509 zero, the left edge of the sub menu overlaps the left edge of the
3510 parent menu.  If the first value is non-zero the sub menu is
3511 shifted that many pixels to the right (or left if negative).  If
3512 the second value is non-zero the menu is moved by that many
3513 percent of the parent menu's width to the right or left.
3515 .I PopupActiveArea
3516 requires an integer value between 51 and 100.  Normally, when the
3517 pointer is over a menu item with a sub menu and the pointer enters
3518 the area that starts at 75% of the menu width, the sub menu is
3519 shown immediately.  This percentage can be changed with
3520 .IR PopupActiveArea .
3521 Setting this value to 100 disables this kind of automatic popups
3522 altogether.  The default value is restored if no or an illegal
3523 value is given.
3525 .IR TitleWarp " and " !TitleWarp
3526 affect if the pointer warps to the menu title when a sub menu is
3527 opened or not. Note that regardless of this setting the pointer is
3528 not warped if the menu does not pop up under the pointer.
3530 .IR TitleUnderlines0 ", " TitleUnderlines1 " and " TitleUnderlines2
3531 specify how many lines are drawn below a menu title.
3533 .IR SeparatorsLong " and " SeparatorsShort
3534 set the length of menu separators.  Long separators run from the
3535 left edge all the way to the right edge.  Short separators leave a
3536 few pixels to the edges of the menu.
3538 .IR TrianglesSolid " and " TrianglesRelief
3539 affect how the small triangles for sub menus is drawn.  Solid
3540 triangles are filled with a color while relief triangles are
3541 hollow.
3543 .I DoubleClickTime
3544 requires one numeric argument.  This value is the time in
3545 milliseconds between two mouse clicks in a menu to be considered
3546 as a double click.  The default is 450 milliseconds.  If the
3547 argument is omitted the double click time is reset to this
3548 default.
3550 .I SidePic
3551 takes the name of an image file as an argument. The
3552 picture is drawn along the left side of the menu.  The
3553 .I SidePic
3554 option can be overridden by a menu specific side pixmap (see
3555 .BR AddToMenu ).
3556 If the file name is omitted an existing side pixmap is removed from
3557 the menu style.
3559 .I SideColor
3560 takes the name of an X11 color as an argument. This color is used
3561 to color the column containing the side picture (see
3562 above). The SideColor option can be overridden by a menu specific
3563 side color (see
3564 .BR AddToMenu ).
3565 If the color name is omitted the side color option is switched off.
3567 .IR PopupAsRootMenu ", " PopupAsSubmenu ", " PopupIgnore " and " PopupClose
3568 change the behavior when you click on a menu item that opens a
3569 sub menu. With
3570 .I PopupAsRootMenu
3571 the original menu is closed before the sub menu appears, with
3572 .I PopupAsSubmenu
3573 it is not, so you can navigate back into the
3574 parent menu.  Furthermore, with
3575 .I PopupAsSubmenu
3576 the sub menu is held open (posted) regardless of where you move
3577 the mouse.  Depending on your menu style this may simplify
3578 navigating through the menu.  Any keystroke while a menu is posted
3579 reverts the menu back to the normal behavior.  With
3580 .I PopupClose
3581 the menu is closed when a sub menu item is activated, and the menu
3582 stays open if
3583 .I PopupIgnore
3584 is used (even if the menu was invoked with the
3585 .B Popup
3586 command).
3587 .I PopupAsSubmenu
3588 is the default.
3590 .I RemoveSubmenus
3591 instructs fvwm to remove sub menu when you move back into the
3592 parent menu.  With
3593 .I HoldSubmenus
3594 the sub menu remains visible.  You probably want to use
3595 .I HoldSubmenus
3596 if you are using the
3597 .I PopupDelayed
3598 style.
3599 .I RemoveSubmenus
3600 affects menu navigation with the keyboard.
3602 .I SelectOnRelease
3603 takes an optional key name as an argument.  If the given key is
3604 released in a menu using this style, the current menu item is
3605 selected.  This is intended for
3606 .SM Alt-Tab
3607 .B WindowList
3608 navigation.
3609 The key name is a standard X11 key name as defined in
3610 .IR /usr/include/X11/keysymdef.h ,
3611 (without the
3612 .I XK_
3613 prefix), or the keysym database
3614 .IR /usr/X11R6/lib/X11/XKeysymDB .
3615 To disable this behavior, omit
3616 the key name.
3618 Note: Some X servers do not support KeyRelease events.
3619 .I SelectOnRelease
3620 does not work on such a machine.
3622 .I ItemFormat
3623 takes a special string as its argument that determines the layout
3624 of the menu items.  Think of the format string as if it were a
3625 menu item.  All you have to do is tell fvwm where to place the
3626 different parts of the menu item (i.e. the labels, the triangle
3627 denoting a sub menu, the mini icons and the side pic) in the blank
3628 area.  The string consists of spaces,
3629 .SM Tab
3630 characters and formatting directives beginning with '%'. Any
3631 illegal characters and formatting directives are silently ignored:
3633 .in +.5i
3634 .BR %l ", " %c " and " %r
3635 .in +.3i
3636 Insert the next item label.  Up to three labels can be used. The
3637 item column is left-aligned
3638 .RB ( %l ),
3639 centered
3640 .RB ( %c )
3641 or right-aligned
3642 .RB ( %r ).
3643 .in -.3i
3644 .B %i
3645 .in +.3i
3646 Inserts the mini icon.
3647 .in -.3i
3648 .BR %> " and " %<
3649 .in +.3i
3650 Insert the sub menu triangle pointing either to the right
3651 .RB ( %> )
3652 or to the left
3653 .RB ( %< )
3654 .in -.3i
3655 .B %|
3656 .in +.3i
3657 The first
3658 .B %|
3659 denotes the beginning of the area that is highlighted either with
3660 a background color or a relief (or both).  The second
3661 .B %|
3662 marks the end of this area.
3663 .B %|
3664 can be used up to twice in the string.  If you do not add one or
3665 both of them, fvwm sets the margins to the margins of the whole
3666 item (not counting the side picture).
3667 .in -.3i
3668 .B %s
3669 .in +.3i
3670 Places the side picture either at the beginning or the end of the
3671 menu. This directive may be used only once and only as the first
3672 or last in the format string. If the
3673 .B %s
3674 is not at the beginning of the string, menus are not drawn properly.
3675 .in -.3i
3676 .BR Space ", " Tab ", " %Space " and " %Tab
3677 .in +.3i
3678 Add gap of one space, or a tab, using the width of the menu font.
3679 When using a tab, the size of the gap can be one to 8 spaces
3680 since the tab position is a multiple of 8 from the edge of the menu.
3681 The whole string must be quoted if spaces or tabs are used.
3682 .in -.3i
3683 .B %p
3684 .in +.3i
3685 Like
3686 .SM Space
3688 .SM Tab
3689 .B %p
3690 inserts an empty area into the item, but with better control of
3691 its size (see below).
3692 .in -.3i
3693 .in -.5i
3695 You can define an additional space before and after each of the
3696 objects like this:
3698 .BI % left . right p
3700 This means: if the object is defined in the menu (e.g. if it is
3701 .B %s
3702 and you use a side picture, or it is
3703 .B %l
3704 for the third column and there are items defined that actually
3705 have a third column), then add
3706 .I left
3707 pixels before the object and
3708 .I right
3709 pixels after it.  You may leave out the
3710 .I left
3711 or the
3712 .I .right
3713 parts if you do not need them.  All values up to the screen width
3714 are allowed.  Even negative values can be used with care.  The
3715 .B p
3716 may be replaced with any other formatting directives described
3717 above.
3719 Note: Only items defined in the format string are visible in the
3720 menus. So if you do not put a
3721 .B %s
3722 in there you do not see a side picture, even if one is specified.
3724 Note: The
3725 .I SubmenusLeft
3726 style changes the default
3727 .I ItemFormat
3728 string, but if it was set manually it is not modified.
3730 Note: If any unformatted title of the menu is wider than the
3731 widest menu item, the spaces between the different parts of the
3732 menu items are enlarged to match the width of the title.  Leading
3733 left aligned objects in the format string
3734 .RB ( %l ", " %i ", "%< ", first " %| )
3735 stick to the left edge of the menu and trailing right aligned
3736 objects
3737 .RB ( %r ", " %i ", "%> ", second " %| )
3738 stick to the right edge.  The gaps between the remaining items are
3739 enlarged equally.
3741 Examples:
3743 MenuStyle * ItemFormat \\
3744   "%.4s%.1|%.5i%.5l%.5l%.5r%.5i%2.3>%1|"
3746 Is the default string used by fvwm: (side picture + 4 pixels gap)
3747 (beginning of the hilighted area + 1 pixel gap) (mini icon + 5p)
3748 (first column left aligned + 5p) (second column left aligned + 5p)
3749 (third column right aligned + 5p) (second mini icon + 5p) (2p +
3750 sub menu triangle + 3p) (1p + end of hilighted area).
3752 MenuStyle * ItemFormat \\
3753   "%.1|%3.2<%5i%5l%5l%5r%5i%1|%4s"
3755 Is used by fvwm with the
3756 .I SubmenusLeft
3757 option below.
3759 .IR VerticalItemSpacing " and " VerticalTitleSpacing
3760 control the vertical spacing of menu items and titles like
3761 .I ItemFormat
3762 controls the horizontal spacing.  Both take two numeric arguments
3763 that may range from -100 to +100.  The first is the gap in pixels
3764 above a normal menu item (or a menu title), the second is the gap
3765 in pixels below it.  Negative numbers do not make much sense and
3766 may screw up the menu completely.  If no arguments are given or
3767 the given arguments are invalid, the built-in defaults are used:
3768 one pixel above the item or title and two below.
3770 .I SubmenusLeft
3771 mirrors the menu layout and behavior.  Sub menus pop up to the
3772 left, the sub menu triangle is drawn left and the mini icon and
3773 side picture are drawn at the right side of the menu.  The default
3775 .IR SubmenusRight .
3776 The position hints of a menu are also affected by this setting,
3777 i.e. position hints using
3778 .IR item " or " menu
3779 as context rectangle and position hints using
3780 .I m
3781 offsets.
3783 .IR AutomaticHotkeys " and " !AutomaticHotkeys
3784 control the menu's ability to automatically provide hot-keys on
3785 the first character of each menu item's label.  This behavior is
3786 always overridden if an explicit hot-key is assigned in the
3787 .B AddToMenu
3788 command.
3790 .IR MouseWheel
3791 controls the ability to scroll the menu using a mouse wheel. It takes
3792 one argument, that can be one of
3793 ScrollsPointer, ScrollsMenu, ScrollsMenuBackwards or ActivatesItem.
3794 ScrollsPointer makes the mouse wheel scroll the pointer over a menu.
3795 This is the default. ScrollsMenu and ScrollsMenuBackwards scroll the menu
3796 beneath the pointer. ActivatesItem disables scrolling by mouse wheel and
3797 makes the use of a mouse wheel act as if the menu was clicked.
3798 If no argument is supplied the default setting is restored.
3800 .IR ScrollOffPage
3801 allows a menu to be scrolled out of the visible area if
3802 .I MouseWheel
3803 is set to ScrollsMenu or ScrollsMenuBackwards. This is the default.
3804 The opposite,
3805 .I !ScrollOffPage
3806 disables this behaviour.
3808 .I TrianglesUseFore
3809 draws sub menu triangles with the foreground color of the menu colorset
3810 (normally drawn with the hilight color).
3811 .I !TrianglesUseFore
3812 disables this behaviour.
3814 Examples:
3816 MenuStyle * Mwm
3817 MenuStyle * Foreground Black, Background gray40
3818 MenuStyle * Greyed gray70, ActiveFore White
3819 MenuStyle * !HilightBack, Hilight3DOff
3820 MenuStyle * Font lucidasanstypewriter-14
3821 MenuStyle * MenuFace DGradient 64 darkgray \\
3822   MidnightBlue
3824 MenuStyle red Mwm
3825 MenuStyle red Foreground Yellow
3826 MenuStyle red Background Maroon
3827 MenuStyle red Greyed Red, ActiveFore Red
3828 MenuStyle red !HilightBack, Hilight3DOff
3829 MenuStyle red Font lucidasanstypewriter-12
3830 MenuStyle red MenuFace DGradient 64 Red Black
3832 Note that all style options could be placed on a single line for
3833 each style name.
3836 .BI "MenuStyle " "forecolor backcolor shadecolor font style" " [" anim "]"
3837 This is the old syntax of the
3838 .B MenuStyle
3839 command.  It is obsolete and may be removed in the future.  Please
3840 use the new syntax as described above.
3842 Sets the menu style.  When using monochrome the colors are
3843 ignored.  The
3844 .I shadecolor
3845 is the one used to draw a menu-selection which is prohibited (or
3846 not recommended) by the Mwm hints which an application has
3847 specified.  The style option is either
3848 .IR Fvwm ", " Mwm " or " Win ,
3849 which changes the appearance and operation of the menus.
3851 .IR Mwm " and " Win
3852 style menus popup sub menus automatically.
3853 .I Win
3854 menus indicate the current menu item by changing the background to
3855 black.
3856 .I Fvwm
3857 sub menus overlap the parent menu,
3858 .IR Mwm " and " Win
3859 style menus never overlap the parent menu.
3861 When the
3862 .I anim
3863 option is given, sub menus that do not fit on the screen cause the
3864 parent menu to be shifted to the left so the sub menu can be
3865 seen. See also
3866 .B SetAnimation
3867 command.
3870 .BI "Popup " PopupName " [" position "] [" default-action "]"
3871 This command has two purposes: to bind a menu to a key or mouse
3872 button, and to bind a sub menu into a menu.  The formats for the
3873 two purposes differ slightly.  The
3874 .I position
3875 arguments are the same as for
3876 .BR Menu .
3877 The command
3878 .I default-action
3879 is invoked if the user clicks a button to invoke the menu and
3880 releases it immediately again (or hits the key rapidly twice if
3881 the menu is bound to a key).  If the default action is not
3882 specified, double clicking on the menu does nothing.  However, if
3883 the menu begins with a menu item (i.e. not with a title or a
3884 separator) and the default action is not given, double clicking
3885 invokes the first item of the menu (but only if the pointer really
3886 was over the item).
3888 To bind a previously defined pop-up menu to a key or mouse button:
3890 .in +.25i
3891 The following example binds mouse buttons 2 and 3 to a pop-up
3892 called "Window Ops".  The menu pops up if the buttons 2 or 3 are
3893 pressed in the window frame, side-bar, or title-bar, with no
3894 modifiers (none of shift, control, or meta).
3896 Mouse 2 FST N Popup "Window Ops"
3897 Mouse 3 FST N Popup "Window Ops"
3899 Pop-ups can be bound to keys through the use of the
3900 .B Key
3901 command.  Pop-ups can be operated without using the mouse by
3902 binding to keys and operating via the up arrow, down arrow, and
3903 enter keys.
3904 .in -.25i
3906 To bind a previously defined pop-up menu to another menu, for use
3907 as a sub menu:
3909 .in +.25i
3910 The following example defines a sub menu "Quit-Verify" and binds
3911 it into a main menu, called "RootMenu":
3913 AddToMenu Quit-Verify
3914  + "Really Quit Fvwm?" Title
3915  + "Yes, Really Quit"  Quit
3916  + "Restart Fvwm"      Restart
3917  + "Restart Fvwm 1.xx" Restart fvwm1 -s
3918  + ""                  Nop
3919  + "No, Don't Quit"    Nop
3921 AddToMenu RootMenu "Root Menu" Title
3922  + "Open XTerm Window" Popup NewWindowMenu
3923  + "Login as Root"     Exec exec xterm \\
3924                          -fg green -T Root \\
3925                          -n Root -e su -
3926  + "Login as Anyone"   Popup AnyoneMenu
3927  + "Remote Hosts"      Popup HostMenu
3928  + ""                  Nop
3929  + "X utilities"       Popup Xutils
3930  + ""                  Nop
3931  + "Fvwm Modules"      Popup Module-Popup
3932  + "Fvwm Window Ops"   Popup Window-Ops
3933  + ""                  Nop
3934  + "Previous Focus"    Prev (AcceptsFocus) Focus
3935  + "Next Focus"        Next (AcceptsFocus) Focus
3936  + ""                  Nop
3937  + "Refresh screen"    Refresh
3938  + ""                  Nop
3939  + "Reset X defaults"  Exec xrdb -load \\
3940                        $HOME/.Xdefaults
3941  + ""                  Nop
3942  + ""                  Nop
3943  + Quit                Popup Quit-Verify
3945 .in -.25i
3947 .B Popup
3948 differs from
3949 .B Menu
3950 in that pop-ups do not stay up if the user simply clicks.  These
3951 are popup-menus, which are a little hard on the wrist.
3952 .B Menu
3953 menus stay up on a click action.  See the
3954 .B Menu
3955 command for an explanation of the interactive behavior of menus. A
3956 menu can be open up to ten times at once, so a menu may even use
3957 itself or any of its predecessors as a sub menu.
3960 .BI "TearMenuOff"
3961 When assigned to a menu item, it inserts a tear off bar into the
3962 menu (a horizontal broken line).  Activating that item tears off
3963 the menu.  If the menu item has a label, it is shown instead of
3964 the broken line.  If used outside menus, this command does
3965 nothing.  Examples:
3967 AddToMenu WindowMenu
3968 + I "" TearMenuOff
3970 AddToMenu RootMenu
3971 + I "click here to tear me off" TearMenuOff
3975 .BI "Title"
3976 Does nothing.  This is used to insert a title line in a popup or
3977 menu.
3979 .SS MISCELLANEOUS COMMANDS
3982 .BI "BugOpts [" option " [" bool "]], " ...
3983 This command controls several workarounds for bugs in third party
3984 programs.  The individual options are separated by commas.  The
3985 optional argument
3986 .I bool
3987 is a boolean argument and controls if the bug workaround is
3988 enabled or not.  It can either be "True" or "False" to turn the
3989 option on or off, or "toggle" to switch is back and forth.  If
3990 .I bool
3991 is omitted, the default setting is restored.
3993 .I FlickeringMoveWorkaround
3994 disables ConfigureNotify events that are usually sent to an
3995 application while it is moved.  If some windows flicker annoyingly
3996 while being moved, this option may help you.  Note that if this
3997 problem occurs it is not an fvwm bug, it is a problem of the
3998 application.
4000 .I MixedVisualWorkaround
4001 makes fvwm install the root colormap before it does some
4002 operations using the root window visuals.  This is only useful
4003 when the
4004 .B -visual
4005 option is used to start fvwm and then only with some
4006 configurations of some servers (e.g. Exceed 6.0 with an 8 bit
4007 PseudoColor root and fvwm using a 24 bit TrueColor visual).
4010 .I ModalityIsEvil
4011 option controls whether Motif applications have the ability to
4012 have modal dialogs (dialogs that force you to close them first
4013 before you can do anything else).  The default is to not allow
4014 applications to have modal dialogs.  Use this option with
4015 care. Once this option is turned on, you have to restart fvwm to
4016 turn it off.
4018 .I RaiseOverNativeWindows
4019 makes fvwm try to raise the windows it manages over native windows
4020 of the X server's host system.  This is needed for some X servers
4021 running under Windows or Windows NT.  Fvwm tries to detect if it
4022 is running under such an X server and initializes the flag
4023 accordingly.
4025 .I RaiseOverUnmanaged
4026 makes fvwm try to raise the windows it manages over
4027 override_redirect windows.  This is used to cope with ill-mannered
4028 applications that use long-lived windows of this sort, contrary to
4029 .SM ICCCM
4030 conventions.  It is useful with the
4031 .I Unmanaged
4032 style option too.
4034 .I FlickeringQtDialogsWorkaround
4035 suppresses flickering of the focused window in some modules when
4036 using
4037 .SM KDE
4039 .SM QT
4040 applications with application modal dialog windows.  By default
4041 this option is turned on.  This option may be visually disturbing
4042 for other applications using windows not managed by fvwm.  Since
4043 these applications are rare it is most likely safe to leave this
4044 option at its default.
4046 .I EWMHIconicStateWorkaround
4047 is needed by
4048 .SM EWMH
4049 compliant pagers or taskbars which represent windows which are on
4050 a different desktops as iconified. These pagers and taskbars use a
4051 version of the
4052 .SM EWMH
4053 specification before version 1.2 (the current
4054 .SM KDE
4055 2 & 3 versions).  These pagers and taskbars use the IconicState
4056 .SM WM_STATE
4057 state to determine if an application is iconified.  This state,
4058 according to the
4059 .SM ICCCM ,
4060 does not imply that a window is iconified (in the usual sense).
4061 Turning on this option forces fvwm to establish an equivalence
4062 between the IconicState
4063 .SM WM_STATE
4064 state and the iconified window.  This violates
4065 .SM ICCCM
4066 compliance but should not cause big problems. By default this
4067 option is off.
4069 With the
4070 .I DisplayNewWindowNames
4071 enabled, fvwm prints the name, icon name (if available), resource
4072 and class of new windows to the console.  This can help in finding
4073 the correct strings to use in the
4074 .B Style
4075 command.
4077 When the
4078 .I ExplainWindowPlacement
4079 option is enabled, fvwm prints a message to the console whenever a
4080 new window is placed or one of the commands
4081 .BR PlaceAgain ", " Recapture " or " RecaptureWindow
4082 is used.  The message explains on which desk, page, Xinerama
4083 screen and position it was placed and why.  This option can be
4084 used to figure out why a specific window does not appear where you
4085 think it should.
4088 .I DebugCRMotionMethod
4089 option enables some debugging code in the ConfigureRequest
4090 handling routines of fvwm.  It is not helpful for the user, but if
4091 you report a bug to the fvwm team we may ask you to enable this
4092 option.
4095 .BI "BusyCursor [" "Option bool" "], " ...
4096 This command controls the cursor during the execution of certain
4097 commands.
4098 .I Option
4099 can be
4100 .IR DynamicMenu ", " ModuleSynchronous ", " Read ", " Wait ", " * .
4101 An option must be followed by a boolean argument
4102 .IR bool .
4103 You can use commas to separate individual options.  If you set an
4104 option to "True", then when the corresponding command is run, fvwm
4105 displays the cursor of the
4106 .I WAIT
4107 context of the
4108 .B CursorStyle
4109 command.  "False" forces to not display the cursor.  The default is:
4111 BusyCursor DynamicMenu False, \\
4112   ModuleSynchronous False, Read False, \\
4113   Recapture True, Wait False
4115 The option
4116 .I *
4117 refers to all available options.
4120 .I Read
4121 option also controls the
4122 .B PipeRead
4123 command.
4126 .I DynamicMenu
4127 option affects the
4128 .I DynamicPopupAction
4130 .I MissingSubmenuFunction
4131 options of the
4132 .B AddToMenu
4133 command.  If this option is set to "False", then the busy cursor
4134 is not displayed during a dynamic menu command even if this
4135 command is a
4136 .BR Read " or " PipeRead
4137 command and the
4138 .I Read
4139 option is set to "True".
4142 .I Wait
4143 option affects only the root cursor.  During a wait pause the root
4144 cursor is replaced by the busy cursor and fvwm is still fully
4145 functional (you can escape from the pause, see the
4146 .B EscapeFunc
4147 command).  If you want to use this option and if you do not use
4148 the default root cursor, you must set your root cursor with the
4149 .B CursorStyle
4150 command.
4153 .BI "ClickTime [" delay "]"
4154 Specifies the maximum delay in milliseconds between a button press
4155 and a button release for the
4156 .B Function
4157 command to consider the action a mouse click.  The default delay
4158 is 150 milliseconds.  Omitting the delay value resets the
4159 .B ClickTime
4160 to the default.
4163 .BI "ColorLimit " limit
4164 This command is obsolete. See the
4165 .I --color-limit
4166 option to fvwm.
4167 .\"Specifies a
4168 .\".I limit
4169 .\"on the colors used in pixmaps used by fvwm. Zero (the default)
4170 .\"sets no limit.  Fvwm uses pixmaps for icons, mini-icons, and
4171 .\"pixmap borders, menu backgrounds and titles. This command limits
4172 .\"pixmap colors to a set of colors that starts out with common
4173 .\"colors.  The current list contains about 60 colors and starts with
4174 .\"white, black, grey, green, blue, red, cyan, yellow, and magenta.
4175 .\"The command
4176 .\".EX
4177 .\"ColorLimit 9
4178 .\".EE
4179 .\"would limit pixmaps to these 9 colors.
4181 .\"It makes the most sense to put this command at the front of the
4182 .\".I config
4183 .\"file.  This command should occur before any menu definitions that
4184 .\"contain mini-icons.
4186 .\"Solid frame and title colors (including shadows and gradients) are
4187 .\"not controlled by this command.
4189 .\"This command only makes sense on screens that display a limited
4190 .\"number of colors at once.  If your  display can display more than
4191 .\"2 million colors at once, this command is ignored.  Screens that
4192 .\"only display 256 colors at once are known as 8 bit displays. The 2
4193 .\"million color cutoff point corresponds to 21 bit color, the most
4194 .\"common screen that exceeds this limit would be 24 bit.
4196 .\"On 8 bit displays, the default color limit is set to the size of
4197 .\"the built-in table (about 60).  We recommend that you start with
4198 .\"the default value, and not include this command in your
4199 .\".IR config " file."
4202 .BI "ColormapFocus " FollowsMouse | FollowsFocus
4203 By default, fvwm installs the colormap of the window that the
4204 cursor is in.  If you use
4206 ColormapFocus FollowsFocus
4208 then the installed colormap is the one for the window that
4209 currently has the keyboard focus.
4212 .B "CursorStyle \fIcontext\fP [\fInumber\fP\
4213 | \fIname\fP \
4214 | \fIxpm\fP \
4215 | \fINone\fP \
4216 | \fITiny\fP \
4217 [\fIfore back\fP\
4219 Defines a new cursor for the specified context.  Note that this
4220 command can not control the shapes an applications uses, for
4221 example, to indicate that it is busy.  The various contexts are:
4223 .in +.5i
4224 .BR "POSITION " (top_left_corner)
4225 .in +.3i
4226 used when initially placing windows
4227 .in -.3i
4229 .BR "TITLE " (top_left_arrow)
4230 .in +.3i
4231 used in a window title-bar
4232 .in -.3i
4234 .BR "DEFAULT " (top_left_arrow)
4235 .in +.3i
4236 used in windows that do not set their cursor
4237 .in -.3i
4239 .BR "SYS " (hand2)
4240 .in +.3i
4241 used in one of the title-bar buttons
4242 .in -.3i
4244 .BR "MOVE " (fleur)
4245 .in +.3i
4246 used when moving or resizing windows
4247 .in -.3i
4249 .BR "RESIZE " (sizing)
4250 .in +.3i
4251 used when moving or resizing windows
4252 .in -.3i
4254 .BR "WAIT " (watch)
4255 .in +.3i
4256 used during certain fvwm commands (see
4257 .B BusyCursor
4258 for details).
4259 .in -.3i
4261 .BR "MENU " (top_left_arrow)
4262 .in +.3i
4263 used in menus
4264 .in -.3i
4266 .BR "SELECT " (crosshair)
4267 .in +.3i
4268 used when the user is required to select a window
4269 .in -.3i
4271 .BR "DESTROY " (pirate)
4272 .in +.3i
4273 used for DESTROY, CLOSE, and DELETE commands
4274 .in -.3i
4276 .BR "TOP " (top_side)
4277 .in +.3i
4278 used in the top side-bar of a window
4279 .in -.3i
4281 .BR "RIGHT " (right_side)
4282 .in +.3i
4283 used in the right side-bar of a window
4284 .in -.3i
4286 .BR "BOTTOM " (bottom_side)
4287 .in +.3i
4288 used in the bottom side-bar of a window
4289 .in -.3i
4291 .BR "LEFT " (left_side)
4292 .in +.3i
4293 used in the left side-bar of a window
4294 .in -.3i
4296 .BR "TOP_LEFT " (top_left_corner)
4297 .in +.3i
4298 used in the top left corner of a window
4299 .in -.3i
4301 .BR "TOP_RIGHT " (top_right_corner)
4302 .in +.3i
4303 used in the top right corner of a window
4304 .in -.3i
4306 .BR "BOTTOM_LEFT " (bottom_left_corner)
4307 .in +.3i
4308 used in the bottom left corner of a window
4309 .in -.3i
4311 .BR "BOTTOM_RIGHT " (bottom_right_corner)
4312 .in +.3i
4313 used in the bottom right corner of a window
4314 .in -.3i
4316 .BR "TOP_EDGE " (top_side)
4317 .in +.3i
4318 used at the top edge of the screen.
4319 .in -.3i
4321 .BR "RIGHT_EDGE " (right_side)
4322 .in +.3i
4323 used at the right edge of the screen.
4324 .in -.3i
4326 .BR "BOTTOM_EDGE " (bottom_side)
4327 .in +.3i
4328 used at the bottom edge of the screen.
4329 .in -.3i
4331 .BR "LEFT_EDGE " (left_side)
4332 .in +.3i
4333 used at the left edge of the screen.
4334 .in -.3i
4336 .BR "ROOT " (left_ptr)
4337 .in +.3i
4338 used as the root cursor.
4339 .in -.3i
4341 .BR "STROKE " (plus)
4342 .in +.3i
4343 used during a
4344 .B StrokeFunc
4345 command.
4346 .in -.3i
4347 .in -.5i
4349 The defaults are shown in parentheses above.  If you ever want to
4350 restore the default cursor for a specific context you can omit the
4351 second argument.
4353 The second is either the numeric value of the cursor as defined in
4354 the include file
4355 .I X11/cursorfont.h
4356 or its name (without the XC_ prefix). Alternatively, the xpm file
4357 name may be specified.  This xpm file should contain a pixmap
4358 using 3 colors (None, black, white) and an optional hot-spot.  If
4359 no hot-spot is defined, the hot-spot is placed in the center of
4360 the image.  Furthermore the name can be
4361 .I None
4362 (no cursor) or
4363 .I Tiny
4364 (a single pixel as the cursor).  For example:
4366 # make the kill cursor be XC_gumby (both forms work):
4367 CursorStyle DESTROY 56
4368 CursorStyle DESTROY gumby
4370 CursorStyle TOP_LEFT topl.xpm
4371 CursorStyle ROOT nice_arrow.xpm yellow black
4373 The optional
4374 .IR fg " and " bg
4375 arguments specify the foreground and background colors for the
4376 cursor, defaulting to black and white.
4378 Here is an example pixmap file
4379 .IR nice_arrow.xpm :
4381 /* XPM */
4382 static char *nice_arrow_xpm[] = {
4383 /* width height num_colors chars_per_pixel hot-spot */
4384 "    14    14        3            1          1 1",
4385 /* colors */
4386 "  c None",
4387 ". c black",
4388 "# c white",
4389 /* pixels */
4390 "...           ",
4391 ".##..         ",
4392 ".####..       ",
4393 " .#####..     ",
4394 " .#######..   ",
4395 "  .########.. ",
4396 "  .##########.",
4397 "   .#######.. ",
4398 "   .######.   ",
4399 "    .######.  ",
4400 "    .###.###. ",
4401 "     .#. .###.",
4402 "     .#.  .#. ",
4403 "      .    .  ",
4406 The hot-spot coordinates are relative to zero, in the above
4407 example, the hot-spot is in the second row, and second column.
4410 .BI "DefaultColors [" "foreground background" "]"
4411 .B DefaultColors
4412 sets the default foreground and background colors used in
4413 miscellaneous windows created by fvwm, for example in the geometry
4414 feedback windows during a move or resize operation. If you do not
4415 want to change one color or the other, use - as its color name. To
4416 revert to the built-in default colors omit both color names. Note
4417 that the default colors are not used in menus, window titles or
4418 icon titles.
4421 .BI "DefaultColorset [" num "]"
4422 .B DefaultColorset
4423 sets the colorset used by the windows controlled by the
4424 .B DefaultColors
4425 command.  To revert back to the
4426 .B DefaultColors
4427 colors use
4429 DefaultColorset -1
4431 or any variant of the
4432 .B DefaultColors
4433 command.
4436 .BI "DefaultFont [" fontname "]"
4437 .B DefaultFont
4438 sets the default font to font
4439 .IR fontname .
4440 The default font is used by fvwm whenever no other font has been
4441 specified.  To reset the default font to the built-in default,
4442 omit the argument.  The default font is used for menus, window
4443 titles, icon titles as well as the geometry feedback windows
4444 during a move or resize operation.  To override the default font
4445 in a specific context, use the
4446 .BR "Style * Font" ", " "Style * IconFont" ", or " MenuStyle
4447 commands.
4450 .BI "DefaultIcon " filename
4451 sets the default icon which is used if a window has neither an
4452 client-supplied icon nor an icon supplied via the
4453 .I Icon
4454 option of the
4455 .B Style
4456 command.
4459 .BI "DefaultLayers " "bottom put top"
4460 changes the layers that are used for the
4461 .IR StaysOnBottom ", " StaysPut ", " StaysOnTop
4462 .B Style
4463 options.  Initially, the layers 2, 4 and 6 are used.
4466 .BI "Deschedule " "[command_id]"
4467 Removes all commands that were scheduled with the id
4468 .I command_id
4469 with the
4470 .B Schedule
4471 command from the list of commands to be executed unless they were
4472 already executed.  If the
4473 .I command_id
4474 is omitted, the value of the variable $[schedule.last] is used as
4475 the id.
4478 .BI "Emulate " Fvwm | Mwm | Win
4479 This command is a catch all for how miscellaneous things are done
4480 by fvwm. Right now this command affects where the move/resize
4481 feedback window appears and how window placement is aborted. To
4482 have more Mwm- or Win-like behavior you can call
4483 .BI Emulate
4484 with
4485 .IR Mwm " or " Win
4486 as its argument.  With
4487 .I Mwm
4488 resize and move feedback windows are in the center of the screen,
4489 instead of the upper left corner.
4490 This also affects how manual placement is aborted.
4491 See the ManualPlacement description.
4494 .BI "EscapeFunc"
4495 By default the key sequence
4496 .SM Ctrl-Alt-Escape
4497 allows for escaping from a
4498 .B Wait
4499 pause and from a locked
4500 .B ModuleSynchronous
4501 command.  The
4502 .B EscapeFunc
4503 command used with the
4504 .B Key
4505 command allows for configuring this key sequence.  An example:
4507 Key Escape A MC -
4508 Key Escape A  S EscapeFunc
4510 replaces the
4511 .SM Ctrl-Alt-Escape
4512 key sequence with
4513 .SM Shift-Escape
4514 for aborting a
4515 .B Wait
4516 pause and
4517 .B ModuleSynchronous
4518 command.
4519 .B EscapeFunc
4520 used outside the
4521 .B Key
4522 command does nothing.
4525 .BI "FakeClick [" "command value" "] ..."
4526 This command is mainly intended for debugging fvwm and no
4527 guarantees are made that it works for you.
4528 .B FakeClick
4529 can simulate mouse button press and release events and pass them
4530 to fvwm or the applications.  The parameters are a list of
4531 commands which consist of pairs of
4532 .I command
4533 tokens and integer
4534 .IR values ,
4536 .IR press " and " release
4537 commands are followed by the appropriate mouse button number and
4538 generate a button press or release event on the window below the
4539 pointer.  The
4540 .I wait
4541 commands pauses fvwm for the given number of milliseconds.  The
4542 .I modifiers
4543 command simulates pressing or releasing modifier keys.  The values
4544 1 to 5 are mapped to
4545 .SM Mod1
4547 .SM Mod5
4548 while 6, 7 and 8 are mapped to
4549 .SM Shift,
4550 .SM Lock
4552 .SM Control.
4553 The modifier is set for any further button events.  To release a
4554 modifier key, use the corresponding negative number.  The
4555 .I depth
4556 command determines to which window the button events are
4557 sent. With a depth of 1, all events go to the root window,
4558 regardless of the pointer's position.  With 2, the event is passed
4559 to the top level window under the pointer which is usually the
4560 frame window. With 3, events go to the client window. Higher
4561 numbers go to successive sub windows.  Zero (0) goes to the
4562 smallest window that contains the pointer.  Note that events
4563 propagate upward.
4565  FakeClick depth 2 press 1 wait 250 release 1
4567 This simulates a click with button 1 in the parent window (depth
4568 2) with a delay of 250 milliseconds between the press and the
4569 release.
4570 Note: all command names can be abbreviated with their first letter.
4574 .BI "FakeKeypress [" "command value" "] ..."
4575 This command is mainly intended for debugging fvwm and no
4576 guarantees are made that it works for you.
4577 .B FakeKeypress
4578 can simulate key press and release events and pass them
4579 to fvwm or applications.  The parameters are a list of
4580 commands which consist of pairs of command tokens and values.
4582 .IR press " and " release
4583 commands are followed by a key name.
4584 The key name is a standard X11 key name as defined in
4585 .IR /usr/include/X11/keysymdef.h ,
4586 (without the
4587 .I XK_
4588 prefix), or the keysym database
4589 .IR /usr/X11R6/lib/X11/XKeysymDB .
4591 .IR wait ", " modifiers " and " depth
4592 commands are the same as those used by
4593 .BR FakeClick .
4595 Save all GVim sessions with: "Esc:w\\n"
4597 All (gvim) FakeKeypress press Escape \\
4598                         press colon \\
4599                         press w \\
4600                         press Return
4602 Save & exit all GVim sessions with: "Esc:wq\\n"
4604 All (gvim) FakeKeypress press Escape \\
4605                         press colon \\
4606                         press w \\
4607                         press q \\
4608                         press Return
4610 Send A to a specific window:
4612 WindowId 0x3800002 FakeKeypress press A
4614 Note: all command names can be abbreviated with their first letter.
4618 .BI "GlobalOpts [" options "]"
4619 As announced in the past, this command has been removed.  Please
4620 replace the global options in your configuration file according to
4621 the following table:
4623 GlobalOpts WindowShadeShrinks
4624   -->
4625 Style * WindowShadeShrinks
4627 GlobalOpts WindowShadeScrolls
4628   -->
4629 Style * WindowShadeScrolls
4631 GlobalOpts SmartPlacementIsReallySmart
4632   -->
4633 Style * MinOverlapPlacement
4635 GlobalOpts SmartPlacementIsNormal
4636   -->
4637 Style * TileCascadePlacement
4639 GlobalOpts ClickToFocusDoesntPassClick
4640   -->
4641 Style * ClickToFocusPassesClickOff
4643 GlobalOpts ClickToFocusPassesClick
4644   -->
4645 Style * ClickToFocusPassesClick
4647 GlobalOpts ClickToFocusDoesntRaise
4648   -->
4649 Style * ClickToFocusRaisesOff
4651 GlobalOpts ClickToFocusRaises
4652   -->
4653 Style * ClickToFocusRaises
4655 GlobalOpts MouseFocusClickDoesntRaise
4656   -->
4657 Style * MouseFocusClickRaisesOff
4659 GlobalOpts MouseFocusClickRaises
4660   -->
4661 Style * MouseFocusClickRaises
4663 GlobalOpts NoStipledTitles
4664   -->
4665 Style * !StippledTitle
4667 GlobalOpts StipledTitles
4668   -->
4669 Style * StippledTitle
4671 GlobalOpts CaptureHonorsStartsOnPage
4672   -->
4673 Style * CaptureHonorsStartsOnPage
4675 GlobalOpts CaptureIgnoresStartsOnPage
4676   -->
4677 Style * CaptureIgnoresStartsOnPage
4679 GlobalOpts RecaptureHonorsStartsOnPage
4680   -->
4681 Style * RecaptureHonorsStartsOnPage
4683 GlobalOpts RecaptureIgnoresStartsOnPage
4684   -->
4685 Style * RecaptureIgnoresStartsOnPage
4687 GlobalOpts ActivePlacementHonorsStartsOnPage
4688   -->
4689 Style * ManualPlacementHonorsStartsOnPage
4691 GlobalOpts ActivePlacementIgnoresStartsOnPage
4692   -->
4693 Style * ManualPlacementIgnoresStartsOnPage
4695 GlobalOpts RaiseOverNativeWindows
4696   -->
4697 BugOpts RaiseOverNativeWindows on
4699 GlobalOpts IgnoreNativeWindows
4700   -->
4701 BugOpts RaiseOverNativeWindows off
4706 .BI "HilightColor " "textcolor backgroundcolor"
4707 This command is obsoleted by the
4708 .B Style
4709 options
4710 .IR HilightFore " and " HilightBack .
4711 Please use
4713 Style * HilightFore textcolor, \\
4714         HilightBack backgroundcolor
4716 instead.
4719 .BI "HilightColorset [" num "]"
4720 This command is obsoleted by the
4721 .B Style
4722 option
4723 .IR HilightColorset .
4724 Please use
4726 Style * HilightColorset num
4728 instead.
4731 .BI "IconFont [" fontname "]"
4732 This command is obsoleted by the
4733 .B Style
4734 option
4735 .IR IconFont .
4736 Please use
4738 Style * IconFont fontname
4740 instead.
4743 .BI "IconPath " path
4744 This command is obsolete.  Please use
4745 .B ImagePath
4746 instead.
4749 .BI "ImagePath " path
4750 Specifies a colon separated list of directories in which to search
4751 for images (both monochrome and pixmap).  To find an image given
4752 by a relative pathname, fvwm looks into each directory listed in
4753 turn, and uses the first file found.
4755 If a directory is given in the form "/some/dir;.ext", this means
4756 all images in this directory have the extension ".ext" that should
4757 be forced.  The original image name (that may contain another
4758 extension or no extension at all) is not probed, instead ".ext" is
4759 added or replaces the original extension.  This is useful, for
4760 example, if a user has some image directories with ".xpm" images
4761 and other image directories with the same names, but ".png"
4762 images.
4765 .I path
4766 may contain environment variables such as
4767 .IR $HOME " (or " ${HOME} ).
4768 Further, a '+' in the
4769 .I path
4770 is expanded to the previous value of the path, allowing appending
4771 or prepending to the path easily.
4773 For example:
4775 ImagePath $HOME/icons:+:/usr/include/X11/bitmaps
4777 Note: if the
4778 .B FvwmM4
4779 module is used to parse your
4780 .I config
4781 files, then m4 may want to mangle the word "include" which
4782 frequently shows up in the
4783 .B ImagePath
4784 command.  To fix this one may add
4786 undefine(`include')
4788 prior to the
4789 .B ImagePath
4790 command, or better: use the
4791 .I -m4-prefix
4792 option to force all
4793 .B m4
4794 directives to have a prefix of "m4_" (see the
4795 .B FvwmM4
4796 man page).
4799 .BI "LocalePath " path
4800 Specifies a colon separated list of "locale path" in which to
4801 search for string translations. A locale path is constituted by a
4802 directory path and a text domain separated by a semicolon
4803 (';'). As an example the default locale path is:
4805 /install_prefix/share/locale;fvwm
4807 where install_prefix is the fvwm installation directory. With such
4808 a locale path translations are searched for in
4810 /install_prefix/share/locale/lang/LC_MESSAGES/fvwm.mo
4812 where
4813 .I lang
4814 depends on the locale. If no directory is given the default
4815 directory path is assumed. If no text domain is given,
4816 .I fvwm
4817 is assumed. Without argument the default locale path is restored.
4819 As for the
4820 .B ImagePath
4821 command,
4822 .I path
4823 may contain environment variables and a '+' to append or prepend
4824 the locale path easily.
4826 For example, the fvwm-themes package uses
4828 LocalePath ";fvwm-themes:+"
4830 to add locale catalogs.
4832 The default fvwm catalog contains a few strings used by the fvwm
4833 executable itself (Desk and Geometry) and strings used in some
4834 default configuration files and
4835 .B FvwmForm
4836 configuration. You can take a look at the po/ subdirectory of the
4837 fvwm source to get the list of the strings with a possible
4838 translation in various languages. At present, very few languages
4839 are supported.
4841 The main use of locale catalogs is via the "$[gt.string]"
4842 parameter:
4844 DestroyMenu MenuFvwmWindowOps
4845 AddToMenu   MenuFvwmWindowOps "$[gt.Window Ops]" Title
4846 + "$[gt.&Move]"              Move
4847 + "$[gt.&Resize]"            Resize
4848 + "$[gt.R&aise]"             Raise
4849 + "$[gt.&Lower]"             Lower
4850 + "$[gt.(De)&Iconify]"       Iconify
4851 + "$[gt.(Un)&Stick]"         Stick
4852 + "$[gt.(Un)Ma&ximize]"      Maximize
4853 + "" Nop
4854 + "$[gt.&Close]"             Close
4855 + "$[gt.&Destroy]"           Destroy
4857 gives a menu in the locale languages if translations are
4858 available.
4860 Note that the
4861 .B FvwmTaskBar
4862 module has its own catalog and that the
4863 .B FvwmScript
4864 module has a set of special instructions for string
4865 translation. It is out of the scope of this discussion to explain
4866 how to build locale catalogs. Please refer to the
4867 .SM GNU
4868 gettext documentation.
4871 .BI "PixmapPath " path
4872 This command is obsolete. Please use
4873 .B ImagePath
4874 instead.
4877 .BI "PrintInfo " "subject [verbose]"
4878 Print information on
4879 .I subject
4880 on stderr.  An optional integer argument
4881 .I verbose
4882 defines the level of information which is given.
4883 The current valid subjects are:
4885 .IR Colors
4886 which prints information about the colors used by fvwm. This useful
4887 on screens which can only display 256 (or less) colors at once.
4889 .I verbose
4890 is one or greater the palette used by fvwm is printed.
4891 If you have a limited color palette, and you run out of colors,
4892 this command might be helpful.
4894 .IR Locale
4895 which prints information on your locale and the fonts that fvwm
4896 used.
4897 .I verbose
4898 can be 1 or 2.
4900 .IR nls
4901 which prints information on the locale catalogs that fvwm used
4903 .IR style
4904 which prints information on fvwm styles.
4905 .I verbose
4906 can be 1.
4909 .BI "Repeat"
4910 When the
4911 .B Repeat
4912 command is invoked, the last command that was executed by fvwm is
4913 executed again.  This happens regardless of whether it was
4914 triggered by user interaction, a module or by an X event.
4915 Commands that are executed from a function defined with the
4916 .B Function
4917 command, from the
4918 .BR Read " or " PipeRead
4919 commands or by a menu are not repeated.  Instead, the function,
4920 menu  or the
4921 .B Read " or " PipeRead
4922 command is executed again.
4925 .BI "Schedule " "[Periodic] delay_ms [command_id] command"
4927 .I command
4928 is executed after about
4929 .I delay_ms
4930 milliseconds.  This may be useful in some tricky setups.  The
4931 .I command
4932 is executed in the same context window as the
4933 .B Schedule
4934 command.  An optional integer argument
4935 .I command_id
4936 may be given in decimal, hexadecimal or octal format.  This id can
4937 be used with the
4938 .B Deschedule
4939 command to remove the scheduled command before it is executed.  If
4940 no id is given, fvwm uses negative id numbers, starting with -1
4941 and decreasing by one with each use of the
4942 .B Schedule
4943 command.
4944 Note that the
4945 .B Schedule
4946 command and its arguments undergo the usual command line
4947 expansion, and, when
4948 .I command
4949 is finally executed, it is expanded again.  It may therefore be
4950 necessary to quote the parts of the command that must not be
4951 expanded twice.
4953 Note:  A window's id as it is returned with $[w.id] can be used as
4955 .IR command_id .
4956 Example:
4958 Current Schedule 1000 $[w.id] WindowShade
4962 .B Schedule
4963 command also supports the optional keyword
4964 .I Periodic
4965 which indicates that the
4966 .I command
4967 should be executed every
4968 .IR delay_ms .
4969 Example:
4971 Schedule Periodic 10000 PipeRead '[ -N "$MAIL" ] && echo \\
4972         Echo You have mail'
4974 Use the
4975 .B Deschedule
4976 command to stop periodic commands.
4982 .BI "State " state " [" bool "]"
4983 Sets, clears or toggles one of the 32 user defined states which
4984 are associated with each window.  The
4985 .I state
4986 is a number ranging from 0 to 31.  The states have no meaning in
4987 fvwm, but they can be checked in conditional commands like
4988 .B Next
4989 with the
4990 .I State
4991 condition.  The optional argument
4992 .I bool
4993 is a boolean argument.  "True" sets the given state, while "False"
4994 clears it.  Using "toggle" switches to the opposite state.  If the
4995 .I bool
4996 argument is not given, the state is toggled.
4999 .BI "WindowFont [" fontname "]"
5000 This command is obsoleted by the
5001 .B Style
5002 option
5003 .IR Font .
5004 Please use
5006 Style * Font fontname
5008 instead.
5011 .B "WindowList [(\fIconditions\fP\
5012 )] [\fIposition\fP\
5013 ] [\fIoptions\fP\
5014 ] [\fIdouble-click-action\fP\
5016 Generates a pop-up menu (and pops it up) in which the title and
5017 geometry of each of the windows currently on the desktop are
5018 shown.
5020 The format of the geometry part is:
5021 . IR desk "(" layer "): " "x-geometry sticky" ,
5022 where
5023 .IR desk " and " layer
5024 are the corresponding numbers and
5025 .I sticky
5026 is empty or a capital S.  The geometry of iconified windows is
5027 shown in parentheses.  Selecting an item from the window list
5028 pop-up menu causes the interpreted function "WindowListFunc" to be
5029 run with the window id of that window passed in as $0. The default
5030 "WindowListFunc" looks like this:
5032 AddToFunc WindowListFunc
5033 + I Iconify off
5034 + I FlipFocus
5035 + I Raise
5036 + I WarpToWindow 5p 5p
5038 You can destroy the built-in "WindowListFunc" and create your own
5039 if these defaults do not suit you.
5041 The window list menu uses the "WindowList" menu style if it is
5042 defined (see
5043 .B MenuStyle
5044 command).  Otherwise the default menu style is used.  To switch
5045 back to the default menu style, issue the command
5047 DestroyMenuStyle WindowList
5049 Example:
5051 MenuStyle WindowList SelectOnRelease Meta_L
5054 .I conditions
5055 can be used to exclude certain windows from the window
5056 list. Please refer to the
5057 .B Current
5058 command for details.  Only windows that match the given conditions
5059 are displayed in the window list.  The
5060 .I options
5061 below work vice versa: windows that would otherwise not be
5062 included in the window list can be selected with them.  The
5063 .I conditions
5064 always override the
5065 .IR options .
5069 .I position
5070 arguments are the same as for
5071 .BR Menu .
5072 The command
5073 .I double-click-action
5074 is invoked if the user double-clicks (or hits the key rapidly
5075 twice if the menu is bound to a key) when bringing the window
5076 list.  The
5077 .I double-click-action
5078 must be quoted if it consists of more than one word.
5081 .I double-click-action
5082 is useful to define a default window if you have bound the window
5083 list to a key (or button) like this:
5085 # Here we call an existing function, but
5086 # it may be different.  See the default
5087 # WindowListFunc definition earlier in this
5088 # man page.
5089 AddToFunc SwitchToWindow
5090 + I WindowListFunc
5092 Key Tab A M WindowList "Prev SwitchToWindow"
5094 Hitting
5095 .SM Alt-Tab
5096 once it brings up the window list, if you hit it twice the focus
5097 is flipped between the current and the last focused window.  With
5098 the proper
5099 .I SelectOnRelease
5100 menu style (see example above) a window is selected as soon as you
5101 release the
5102 .SM Alt
5103 key.
5106 .I options
5107 passed to WindowList are separated by commas and can be
5108 .IR Geometry " / " NoGeometry " / " NoGeometryWithInfo ,
5109 .IR NoDeskNum,
5110 .IR NoLayer,
5111 .IR NoNumInDeskTitle ,
5112 .IR NoCurrentDeskTitle ,
5113 .IR "MaxLabelWidth width",
5114 .IR TitleForAllDesks ,
5115 .IR "Function funcname" ,
5116 .IR "Desk desknum" ,
5117 .IR CurrentDesk ,
5118 .IR NoIcons " / " Icons " / " OnlyIcons ,
5119 .IR NoNormal " / " Normal " / " OnlyNormal ,
5120 .IR NoSticky " / " Sticky " / " OnlySticky ,
5121 .IR NoStickyAcrossPages " / " StickyAcrossPages " / " OnlyStickyAcrossPages ,
5122 .IR NoStickyAcrossDesks " / " StickyAcrossDesks " / " OnlyStickyAcrossDesks ,
5123 .IR NoOnTop " / " OnTop " / " OnlyOnTop ,
5124 .IR NoOnBottom " / " OnBottom " / " OnlyOnBottom ,
5125 .IR "Layer m [n]" ,
5126 .IR UseListSkip " / " OnlyListSkip ,
5127 .IR NoDeskSort ,
5128 .IR ReverseOrder ,
5129 .IR CurrentAtEnd ,
5130 .IR IconifiedAtEnd ,
5131 .IR UseIconName ,
5132 .IR Alphabetic " / " NotAlphabetic ,
5133 .IR SortByResource ,
5134 .IR SortByClass ,
5135 .IR NoHotkeys ,
5136 .IR SelectOnRelease .
5138 (Note - normal means not iconic, sticky, or on top)
5140 With the
5141 .I SortByResource
5142 option windows are alphabetically sorted first by resource class,
5143 then by resource name and then by window name (or icon name if
5144 .I UseIconName
5145 is specified).
5146 .I ReverseOrder
5147 also works in the expected manner.
5149 With the
5150 .I SortByClass
5151 option windows are sorted just like with
5152 .IR SortByResource ,
5153 but the resource name is not taken into account, only the resource
5154 class.
5157 .I SelectOnRelease
5158 option works exactly like the
5159 .B MenuStyle
5160 option with the same name, but overrides the option given in a
5161 menu style.  By default, this option is set to the left
5162 .SM Alt
5163 key.  To switch it off, use
5164 .I SelectOnRelease
5165 without a key name.
5167 If you pass in a function via
5168 .IR "Function funcname" ,
5169 it is called within a window context of the selected window:
5171 AddToFunc IFunc I Iconify toggle
5172 WindowList Function IFunc, NoSticky, \\
5173   CurrentDesk, NoIcons
5175 If you use the
5176 .IB "Layer m " [ "n" ]
5177 option, only windows in layers between m and n are displayed. n
5178 defaults to m.  With the
5179 .I ReverseOrder
5180 option the order of the windows in the list is reversed.
5182 With the
5183 .I CurrentAtEnd
5184 option the currently focused window (if any) is shown at the
5185 bottom of the list.  This is mostly intended for simulating the
5186 Alt-Tab behavior in another GUI.
5188 .I IconifiedAtEnd
5189 makes iconified windows be moved to the end of the list.  This is
5190 also from another GUI.
5193 .I NoGeometry
5194 option causes fvwm to not display the geometries as well as
5195 the separators which indicate the different desktops.
5196 .I NoGeometryWithInfo
5197 removes the geometries, but keep the desktop information
5198 and indicates iconic windows.
5199 .I NoDeskNum
5200 causes fvwm to not display the desktop number in the geometry
5201 or before the window title with the
5202 .I NoGeometryWithInfo
5203 option.
5204 .I NoNumInDeskTitle
5205 is only useful if a desktop name is defined with the
5206 .B DesktopName
5207 command. It causes fvwm to not display the desktop number before
5208 the desktop name.  By default, the WindowList menu have a title
5209 which indicates the current desk or the selected desktop if the
5210 .I Desk
5211 condition is used. The
5212 .I NoCurrentDeskTitle
5213 option removes this title.
5214 .I TitleForAllDesks
5215 causes fvwm to add a menu title with the desk name and/or number
5216 before each group of windows on the same desk.
5217 With
5218 .IR NoLayer ,
5219 the layer of the window is not diplayed.  The options
5220 .IR ShowPage ", " ShowPageX " and " ShowPageY
5221 enable displaying the page of the window rounded multiples of the
5222 display size.
5223 With
5224 .IR ShowScreen ,
5225 the window's Xinerama screen number is displayed.
5228 .I MaxLabelWidth
5229 option takes the number of characters to print as its argument.
5230 No more than that many characters of the window name are visible.
5232 If you wanted to use the
5233 .B WindowList
5234 as an icon manager, you could invoke the following:
5236 WindowList OnlyIcons, Sticky, OnTop, Geometry
5238 (Note - the
5239 .I Only
5240 options essentially wipe out all other ones... but the
5241 .I OnlyListSkip
5242 option which just causes
5243 .B WindowList
5244 to only consider the windows with
5245 .I WindowListSkip
5246 style.)
5249 .BI "XSync "
5250 When
5251 .B XSync
5252 is called, the X function with the same name is used to send all
5253 pending X requests to the server.  This command is intended for
5254 debugging only.
5257 .BI "XSynchronize [" bool "]"
5259 .B XSynchronize
5260 command controls whether X requests are sent to the X server
5261 immediately or not.  Normally, requests are sent in larger batches
5262 to save unnecessary communication.  To send requests immediately,
5263 use "True" as the argument, to disable this use "False" or to
5264 toggle between both methods use "Toggle" or omit the
5265 .B bool
5266 argument.  Fvwm defaults to synchronized requests when started
5267 with the
5268 .B \--debug
5269 option.  This command is intended for debugging only.
5272 .BI "+"
5273 Used to continue adding to the last specified decor, function or
5274 menu. See the discussion for
5275 .BR AddToDecor ", " AddToFunc ", and " AddToMenu .
5278 .SS COMMANDS AFFECTING WINDOW MOVEMENT AND PLACEMENT
5281 .BI "AnimatedMove " "x y" " [" Warp "]"
5282 Move a window in an animated fashion.  Similar to
5283 .B Move
5284 command below. The options are the same, except they are required,
5285 since it doesn't make sense to have a user move the window
5286 interactively and animatedly.  If the optional argument
5287 .I Warp
5288 is specified the pointer is warped with the window.
5291 .BI "HideGeometryWindow [" Never " | " Move " | " Resize "]"
5292 Hides the position or size window that is usually shown when a
5293 window is moved or resized interactively.  To switch it off only
5294 for move or resize operations the optional parameters
5295 .IR Move " and " Resize
5296 can be used respectively.  To switch both on again use the
5297 .I Never
5298 option.
5301 .BI "Layer [" "arg1 arg2" "] | [" default "]"
5302 Puts the current window in a new layer.  If
5303 .I arg1
5304 is non zero then the next layer is the current layer number plus
5305 .IR arg1 .
5307 .I arg1
5308 is zero then the new layer is
5309 .IR arg2 .
5311 As a special case,
5312 .I default
5313 puts the window in its default layer, i.e. the layer it was
5314 initially in.  The same happens if no or invalid arguments are
5315 specified.
5318 .BI "Lower"
5319 Allows the user to lower a window.  Note that this lowers a window
5320 only in its layer.  To bring a window to the absolute bottom, use
5322 AddToFunc lower-to-bottom
5323  + I Layer 0 0
5324  + I Lower
5328 .B "Move [[screen \fIscreen\fP]\
5329  [\fIw\fP|\fIm\fP\
5330 ]\fIx\fP\
5331 [\fIp\fP\
5332 ] [\fIw\fP|\fIm\fP\
5333 ]\fIy\fP\
5334 [\fIp\fP\
5335 ] [\fIWarp\fP\
5336 ]] | [\fIpointer\fP\
5338 Allows the user to move a window.  If called from somewhere in a
5339 window or its border, then that window is moved.  If called from
5340 the root window then the user is allowed to select the target
5341 window.
5343 If the literal option Screen followed by a
5344 .I screen
5345 argument is specified, the coordinates are interpreted as relative
5346 to the given screen.  The width and height of the screen are used
5347 for the calculations instead of the display dimensions.  The
5348 .I screen
5349 as interpreted as in the
5350 .B MoveToScreen
5351 command.
5352 If the optional argument
5353 .I Warp
5354 is specified the pointer is warped with the window.  If the single
5355 argument
5356 .I pointer
5357 is given, the top left corner of the window is moved to the
5358 pointer position before starting the operation; this is mainly
5359 intended for internal use by modules like
5360 .BR FvwmPager .
5362 The operation can be aborted with Escape or any mouse button not set
5363 to place the window. By default mouse button 2 is set to cancel the move
5364 operation. To change this you may use the
5365 .B Mouse
5366 command with special context 'P' for Placement (see
5367 .B Mouse
5368 command for details).
5370 The window condition
5371 .I PlacedByButton
5372 can be used to check if a specific button was pressed to place the
5373 window (see
5374 .B Current
5375 command).
5377 If the optional arguments
5378 .IR x " and " y
5379 are provided, then the window is moved immediately without user
5380 interaction.  Each argument can specify an absolute or relative
5381 position from either the left/top or right/bottom of the screen.
5382 By default, the numeric value given is interpreted as a percentage
5383 of the screen width/height, but a trailing
5384 .RI ' p '
5385 changes the interpretation to mean pixels.  To move the window
5386 relative to its current position, add the
5387 .RI ' w '
5388 (for "window") prefix before the
5389 . IR x " and/or " y
5390 value.  To move the window to a position relative to the current
5391 location of the pointer, add the
5392 .RI ' m '
5393 (for "mouse") prefix.  To leave either coordinate unchanged,
5394 "keep" can be specified in place of
5395 .IR x " or " y .
5397 Simple Examples:
5399 # Interactive move
5400 Mouse 1 T A Move
5401 # Move window to top left is at (10%,10%)
5402 Mouse 2 T A Move 10 10
5403 # Move top left to (10pixels,10pixels)
5404 Mouse 3 T A Move 10p 10p
5406 More complex examples (these can be bound as actions to
5407 keystrokes, etc.; only the command is shown, though):
5409 # Move window so bottom right is at bottom
5410 # right of screen
5411 Move -0 -0
5413 # Move window so top left corner is 10 pixels
5414 # off the top left screen edge
5415 Move +-10 +-10
5417 # Move window 5% to the right, and to the
5418 # middle vertically
5419 Move w+5 50
5421 # Move window up 10 pixels, and so left edge
5422 # is at x=40 pixels
5423 Move 40p w-10p
5425 # Move window to the mouse pointer location
5426 Move m+0 m+0
5428 See also the
5429 .B AnimatedMove
5430 command above.
5433 .BI "MoveToDesk [" prev " | " arg1 " [" arg2 "] [" "min max" "]]"
5434 Moves the selected window to another desktop.  The arguments are
5435 the same as for the
5436 .B GotoDesk
5437 command.  Without any arguments, the window is moved to the
5438 current desk.
5439 .B MoveToDesk
5440 is a replacement for the old
5441 .B WindowsDesk
5442 command, which can no longer be used.
5445 .BI "MoveThreshold [" pixels "]"
5446 When the user presses a mouse button upon an object fvwm waits to
5447 see if the action is a click or a drag.  If the mouse moves by
5448 more than
5449 .I pixels
5450 pixels it is assumed to be a drag.
5452 Previous versions of fvwm hardwired
5453 .I pixels
5454 to 3, which is now the default value.  If
5455 .I pixels
5456 is negative or omitted the default value (which might be increased
5457 when 16000x9000 pixel displays become affordable) is restored.
5460 .B "MoveToPage [\fIoptions\fP\
5461 ] [\fIx\fP\
5462 [\fIp\fP|\fIw\fP\
5463 ] \fIy\fP\
5464 [\fIp\fP|\fIw\fP\
5465 ]] | [\fIprev\fP\
5467 Moves the selected window to another page (x,y).  The upper left
5468 page is (0,0), the upper right is (M,0), where M is one less than
5469 the current number of horizontal pages specified in the
5470 .B DeskTopSize
5471 command.  Similarly the lower left page is (0,N), and the lower
5472 right page is (M,N).  Negative page numbers refer to pages from
5473 the rightmost/lowest page.  If
5474 .IR x " and " y
5475 are not given, the window is moved to the current page (a window
5476 that has the focus but is off-screen can be retrieved with this).
5477 Moving windows to a page relative to the current page can be
5478 achieved by adding a trailing
5479 .RI ' p '
5480 after any or both numerical arguments.  To move the window
5481 relative to its current location, add a trailing
5482 .RI ' w '.
5483 To move a window to the previous page use
5484 .I prev
5485 as the single argument.
5487 Windows are usually not moved beyond desk boundaries.
5489 Possible
5490 .I options
5492 .IR wrapx " and " wrapy
5493 to wrap around the x or y coordinate when the window is moved
5494 beyond the border of the desktop. For example, with
5495 .IR wrapx ,
5496 when the window moves past the right edge of the desktop, it
5497 reappears on the left edge.  The options
5498 .IR nodesklimitx " and " nodesklimity
5499 allow moving windows beyond the desk boundaries in x and y
5500 direction (disabling the
5501 .IR wrapx " and " wrapy
5502 options).
5504 Examples:
5506 # Move window to page (2,3)
5507 MoveToPage 2 3
5509 # Move window to lowest and rightmost page
5510 MoveToPage -1 -1
5512 # Move window to last page visited
5513 MoveToPage prev
5515 # Move window two pages to the right and one
5516 # page up, wrap at desk boundaries
5517 MoveToPage wrapx wrapy +2p -1p
5521 .BI "MoveToScreen [" screen "]"
5522 Moves the selected window to another Xinerama screen.  The
5523 .I screen
5524 argument can be 'p' for the primary screen, 'c' for the current
5525 screen (containing the mouse pointer), 'g' for the global screen
5526 or the screen number itself (counting from zero).
5529 .BI "OpaqueMoveSize [" percentage "]"
5530 Tells fvwm the maximum size window with which opaque window
5531 movement should be used.  The percentage is percent of the total
5532 screen area (may be greater than 100).  With
5534 OpaqueMoveSize 0
5536 all windows are moved using the traditional rubber-band
5537 outline. With
5539 OpaqueMoveSize unlimited
5541 or if a negative percentage is given
5542 all windows are moved as solid windows.  The default is
5544 OpaqueMoveSize 5
5546 which allows small windows to be moved in an opaque manner but
5547 large windows are moved as rubber-bands.  If
5548 .I percentage
5549 is omitted or invalid the default value is set.  To resize windows
5550 in an opaque manner you can use the
5551 .I ResizeOpaque
5552 style.  See
5553 .B Style
5554 command.
5557 .BI "PlaceAgain [" Anim "] [" "Icon" "]"
5558 Causes the current window's position to be re-computed using the
5559 initial window placement logic.  The window is moved to where it
5560 would have been if it were a new window that had just appeared.
5561 Most useful with
5562 .IR Smart " or " Clever " (" ReallySmart ")"
5563 placement.  With the optional argument
5564 .I Anim
5565 an animated move is used to place the window in its new position.
5566 With the additional option
5567 .IR Icon ,
5568 the icon is placed again instead.
5571 .BI "Raise"
5572 Allows the user to raise a window. Note that this raises a window
5573 only in its layer. To bring a window to the absolute top, use
5575 AddToFunc raise-to-top
5576  + I Layer 0 ontop
5577  + I Raise
5579 where ontop is the highest layer used in your setup.
5582 .BI "RaiseLower"
5583 Alternately raises and lowers a window.  The window is raised if
5584 it is obscured by any window (except for its own transients when
5585 .I RaiseTransient
5586 style is used; see
5587 .B Style
5588 command) otherwise it is lowered.
5591 .B "Resize [[\fIframe\fP] [direction \fIdir\fP [\fIwarptoborder\fP]] \
5592 [\fIfixeddirection\fP] \
5593 [\fIw\fP]\fIwidth\fP[\fIp\fP|\fIc\fP] \
5594 [\fIw\fP]\fIheight\fP[\fIp\fP|\fIc\fP]] \
5595 | [bottomright \
5596 | br \fIx y\fP\
5598 Allows for resizing a window.  If called from somewhere in a window
5599 or its border, then that window is resized.  If called from the
5600 root window then the user is allowed to select the target window.
5602 The operation can be aborted with Escape or by pressing any mouse
5603 button (except button 1 which confirms it).
5605 If the optional arguments
5606 .IR width " and " height
5607 are provided, then the window is resized so that its dimensions
5609 .IR width " by " height .
5610 The units of
5611 .IR width " and " height
5612 are percent-of-screen, unless a letter
5613 .RI ' p '
5614 is appended to one or both coordinates, in which case the location
5615 is specified in pixels.  With a
5616 .RI ' c '
5617 suffix the unit defined by the client application (hence the c) is
5618 used.  So you can say
5620 Resize 80c 24c
5622 to make a terminal window just big enough for 80x24
5623 characters.
5625 If the
5626 .IR width " or " height
5627 is prefixed with the letter
5628 .RI ' w '
5629 the size is not taken as an absolute value but added to the
5630 current size of the window.  Example:
5632 # Enlarge window by one line
5633 Resize keep w+1c
5635 Both,
5636 .IR width " and " height
5637 can be negative.  In this case the new size is the screen size
5638 minus the given value.  If either value is "keep", the
5639 corresponding dimension of the window is left untouched.  The new
5640 size is the size of the client window, thus
5642 Resize 100 100
5644 may make the window bigger than the screen.  To base the new size
5645 on the size of the whole fvwm window, add the
5646 .I frame
5647 option after the command.  The options
5648 .IR fixeddirection ", " direction " and " warptoborder
5649 are only used in interactive move operations.  With
5650 .I fixeddirection
5651 the same border is moved even if the pointer moves past the
5652 opposite border.  The
5653 .I direction
5654 option must be followed by a direction name such as "NorthWest",
5655 "South" or "East" (you get the idea).  Resizing is started
5656 immediately, even if the pointer is not on a border.  The
5657 .I warptoborder
5658 option changes the behaviour of the
5659 .I direction
5660 option so that the pointer is automatically warped to the border
5661 in the given direction before starting to resize.  Also, if
5662 resizing is started by clicking on the window border, the pointer
5663 is warped to the outer edge of the border.
5665 AddToFunc ResizeSE I Resize Direction SE
5666 Mouse 3 A M ResizeSE
5669 An alternate syntax is used if the keyword
5670 .IR bottomright " or in short " br
5671 follows the command name.  In this case, the arguments
5672 .IR x " and " y
5673 specify the desired position of the bottom right corner of the
5674 window.  They are interpreted exactly like the
5675 .IR x " and " y
5676 arguments of the
5677 .B Move
5678 command.  Actually, any of the options accepted by the
5679 .B Move
5680 command can be used.
5683 .BI "ResizeMaximize [" resize-arguments "]"
5684 Combines the effects of
5685 .BR Resize " and " Maximize
5686 in a single command.  When used on a maximized window, the window
5687 is resized and is still in the maximized state afterwards.  When
5688 used on an unmaximized window, the window is resized and put into
5689 the maximized state afterwards.  This is useful if the user wants
5690 to resize the window temporarily and then return to the original
5691 geometry.  The
5692 .I resize-arguments
5693 are the same as for the
5694 .B Resize
5695 command.
5698 .BI "ResizeMove " "resize-arguments move-arguments"
5699 This command does the same as the
5700 .BR Resize " and " Move
5701 commands, but in a single call which is less visually
5702 disturbing. The
5703 .I resize-arguments
5704 are exactly the same arguments as for the
5705 .B Resize
5706 command and the
5707 .I move-arguments
5708 are exactly the same arguments as for the
5709 .B Move
5710 command except the
5711 .I pointer
5712 option which is not supported by the
5713 .B ResizeMove
5714 command.
5716 Examples:
5718 # Move window to top left corner and cover
5719 # most of the screen
5720 ResizeMove -10p -20p 0 0
5722 # Grow the focused window towards the top of screen
5723 Current Resize keep w+$[w.y]p keep 0
5726 Note:  Fvwm may not be able to parse the command properly if the
5727 option
5728 .I bottomright
5729 of the
5730 .B Resize
5731 command is used.
5734 .BI "ResizeMoveMaximize " "resize-arguments move-arguments"
5735 Combines the effects of
5736 .BR ResizeMove " and " Maximize
5737 in a single command.  When used on a maximized window, the window
5738 is resized and moved and is still in the maximized state
5739 afterwards.  When used on an unmaximized window, the window is
5740 resized and put into the maximized state afterwards.  This is
5741 useful if the user wants to resize the window temporarily and then
5742 return to the original geometry.  The
5743 .IR resize-arguments " and " move-arguments
5744 are the same as for the
5745 .B ResizeMove
5746 command.
5749 .BI "RestackTransients"
5750 This command regroups the transients of a window close to it in
5751 the stacking order as if the window had just been lowered and then
5752 raised.  The position of the window itself is not altered.  Only
5753 windows that use either the
5754 .I RaiseTransient " or " LowerTransient
5755 style are affected at all.  When
5756 .B RestackTransients
5757 is used on a transient window with the
5758 .I StackTransientParent
5759 style set, it is redirected to the parent window.
5762 .BI "SetAnimation " milliseconds-delay " [" fractions-to-move-list "]"
5763 Sets the time between frames and the list of fractional offsets to
5764 customize the animated moves of the
5765 .B AnimatedMove
5766 command and the animation of menus (if the menu style is set to
5767 animated; see
5768 .B MenuStyle
5769 command).  If the
5770 .I fractions-to-move-list
5771 is omitted, only the time between frames is altered.  The
5772 .I fractions-to-move-list
5773 specifies how far the window should be offset at each successive
5774 frame as a fraction of the difference between the starting
5775 location and the ending location.  e.g.:
5777 SetAnimation 10 -.01 0 .01 .03 .08 .18 .3 \\
5778   .45 .6 .75 .85 .90 .94 .97 .99 1.0
5780 Sets the delay between frames to 10 milliseconds, and sets the
5781 positions of the 16 frames of the animation motion.  Negative
5782 values are allowed, and in particular can be used to make the
5783 motion appear more cartoonish, by briefly moving slightly in the
5784 opposite direction of the main motion.  The above settings are the
5785 default.
5788 .B "SnapAttraction [\fIproximity\fP \
5789 [\fIbehavior\fP\
5790 ] [\fIScreen\fP\
5792 If during an interactive move the window or icon comes within
5793 .I proximity
5794 pixels of another the window or icon, it is moved to make the
5795 borders adjoin.  The default of 0 means that no snapping happens.
5796 Calling this command without arguments turns off snap attraction
5797 and restores the default behavior.  Please refer also to the
5798 .B SnapGrid
5799 command.
5802 .I behavior
5803 argument is optional and may be set to one of the four following
5804 values:  With
5805 .I All
5806 both icons and windows snap to other windows and other icons.
5807 .I SameType
5808 lets snap windows only to other windows and icons only to other
5809 icons. With
5810 .I Windows
5811 windows snap only to other windows.  Icons do not snap. Similarly
5812 with
5813 .I Icons
5814 icons snap to only other icons and windows do not snap.
5816 If the
5817 .I behavior
5818 option is not given, the snapping behavior is not changed.  The
5819 default behavior is
5820 .IR All .
5822 If the
5823 .I Screen
5824 option is present windows and or icons are snapped to the screen
5825 edges too.
5828 .BI "SnapGrid [" "x-grid-size y-grid-size" "]"
5829 During an interactive move a window or icon is positioned such
5830 that its location (top left corner) is coincident with the nearest
5831 grid point. The default
5832 .IR x-grid-size " and " y-grid-size
5833 setting are both 1, which is effectively no grid all.  An
5834 interactive move with both
5835 .BR SnapGrid " and " SnapAttraction
5836 results in the window being moved to be adjacent to the nearest
5837 window border (if within snap proximity) or grid position.  In
5838 other words, the window moves the shortest distance possible to
5839 satisfy both
5840 .BR SnapGrid " and " SnapAttraction .
5841 Note that the x and y coordinates are not coupled.  For example, a
5842 window may snap to another window on the x axis while snapping to
5843 a grid point on the y axis.  Calling this command without
5844 arguments reinstates the default settings.
5847 .BI "WindowsDesk " arg1 " [" arg2 "]"
5848 Moves the selected window to another desktop.
5850 This command has been removed and must be replaced by
5851 .BR MoveToDesk ,
5852 the arguments for which are the same as for the
5853 .B GotoDesk
5854 command.
5855 .B Important note:
5856 You cannot simply change the name of the command: the syntax has
5857 changed.  If you used
5859 WindowsDesk n
5861 to move a window to desk n, you have to change it to
5863 MoveToDesk 0 n
5867 .BI "XorPixmap [" pixmap "]"
5868 Selects the pixmap with which bits are xor'ed when doing
5869 rubber-band window moving or resizing.  This has a better chance
5870 of making the rubber-band visible if
5871 .B XorValue
5872 does not give good results.  An example pixmap
5873 .I resize.rainbow.xpm
5874 is provided with the icon distribution.  To turn the
5875 .B XorPixmap
5876 off again use the
5877 .B XorValue
5878 command or omit the
5879 .I pixmap
5880 argument.
5883 .BI "XorValue [" number "]"
5884 Changes the value with which bits are xor'ed when doing
5885 rubber-band window moving or resizing.
5886 Valid values range from zero to the maximum value of an
5887 unsigned long integer on your system.
5888 Setting this value is a trial-and-error process.
5889 The default value 0 tries to find a
5890 value that gives a good contrast to black and white.
5891 The default value is used if the given
5892 .I number
5893 is omitted or invalid.
5896 .SS COMMANDS FOR FOCUS AND MOUSE MOVEMENT
5899 .BI "CursorMove " horizontal "[" p "] " vertical "[" p "]"
5900 Moves the mouse pointer by
5901 .I horizontal
5902 pages in the X direction and
5903 .I vertical
5904 pages in the Y direction.  Either or both entries may be
5905 negative. Both horizontal and vertical values are expressed in
5906 percent of pages, so
5908 CursorMove 100 100
5910 means to move down and right by one full page.
5912 CursorMove 50 25
5914 means to move right half a page and down a quarter of a
5915 page. Alternatively, the distance can be specified in pixels by
5916 appending a
5917 .RI ' p '
5918 to the horizontal and/or vertical specification.  For example
5920 CursorMove -10p -10p
5922 means move ten pixels up and ten pixels left.  The CursorMove
5923 function should not be called from pop-up menus.
5926 .BI "FlipFocus  [" NoWarp "]"
5927 Executes a
5928 .B Focus
5929 command as if the user had used the pointer to select the
5930 window. This command alters the order of the WindowList in the
5931 same way as clicking in a window to focus, i.e. the target window
5932 is removed from the
5933 .B WindowList
5934 and placed at the start. This command is recommended for use with
5936 .B Direction
5937 command and in the function invoked from
5938 .BR WindowList .
5941 .BI "Focus  [" NoWarp "]"
5942 Sets the keyboard focus to the selected window.  If the
5943 .I NoWarp
5944 argument is given, this is all it does.  Otherwise it also moves
5945 the viewport or window as needed to make the selected window
5946 visible. This command does not automatically raise the
5947 window. Does not warp the pointer into the selected window (see
5948 .B WarpToWindow
5949 function).  Does not de-iconify.  This command does not alter the
5950 order of the
5951 .BR WindowList ,
5952 it rotates the
5953 .B WindowList
5954 around so that the target window is at the start.
5956 When the
5957 .I NoWarp
5958 argument is given, Focus cannot transfer the keyboard focus to
5959 windows on other desks.
5961 To raise and/or warp a pointer to a window together with
5962 .BR Focus " or " FlipFocus ,
5963 use a function, like:
5965 AddToFunc SelectWindow
5966 + I Focus
5967 + I Iconify false
5968 + I Raise
5969 + I WarpToWindow 50 8p
5973 .BI "WarpToWindow " x "[" p "] " y "[" p "]"
5974 Warps the cursor to the associated window.  The parameters
5975 .IR x " and " y
5976 default to percentage of window down and in from the upper left
5977 hand corner (or number of pixels down and in if
5978 .RI ' p '
5979 is appended to the numbers).  If a number is negative the opposite
5980 edge is used and the direction reversed.  This command works also
5981 with windows that are not managed by fvwm.  In this case fvwm does
5982 not bring the window onto the screen if it is not visible.  For
5983 example it is possible to warp the pointer to the center of the
5984 root window on screen 1:
5986 WindowId root 1 WarpToWindow 50 50
5990 .SS COMMANDS CONTROLLING WINDOW STATE
5993 .BI "Close"
5994 If the window accepts the delete window protocol a message is sent
5995 to the window asking it to gracefully remove itself.  If the
5996 window does not understand the delete window protocol then the
5997 window is destroyed as with the
5998 .B Destroy
5999 command.  Note: if the window accepts the delete window protocol
6000 but does not close itself in response, the window is not deleted.
6003 .BI "Delete"
6004 Sends a message to a window asking that it remove itself,
6005 frequently causing the application to exit.
6008 .BI "Destroy"
6009 Destroys an application window, which usually causes the
6010 application to crash and burn.
6013 .BI "Iconify [" bool "]"
6014 Iconifies a window if it is not already iconified or de-iconifies
6015 it if it is already iconified.  The optional argument
6016 .I bool
6017 is a boolean argument.  "True" means only iconification is
6018 allowed, while "False" forces de-iconification.  Using "toggle"
6019 switches between iconified and de-iconified states.
6021 There are a number of
6022 .B Style
6023 options which influence the appearance and behavior of icons (e.g.
6024 .IR StickyIcon ", " NoIcon ).
6026 For backward compatibility, the optional argument may also be a
6027 positive number instead of "True", or a negative number instead
6028 of "False".  Note that this syntax is obsolete, and will be removed
6029 in the future.
6032 .B "Maximize [\fIflags\fP\
6033 ] [\fIbool\fP\
6034 ] [\fIhorizontal\fP\
6035 [\fIp\fP\
6036 ]] [\fIvertical\fP \
6037 [\fIp\fP\
6039 Without its optional arguments (or if the
6040 .I bool
6041 bit has the value "toggle")
6042 .B Maximize
6043 causes the window to alternately switch from a full-screen size to
6044 its normal size.  To force a window into maximized (normal) state
6045 you can use a "True" or "False" value for the
6046 .I bool
6047 argument.
6049 With the optional arguments
6050 .IR horizontal " and " vertical ,
6051 which are expressed as percentage of a full screen, the user can
6052 control the new size of the window.  An optional suffix
6053 .RI ' p '
6054 can be used to indicate pixels instead of percents of the screen
6055 size.  If horizontal is greater than 0 then the horizontal
6056 dimension of the window is set to
6057 .IR horizontal *screen_width/100.
6058 If the value is smaller than 0 the size is subtracted from the
6059 screen width, i.e. -25 is the same as 75.  If
6060 .I horizontal
6061 is "grow", it is maximized to current available space until
6062 finding any obstacle.  The vertical resizing is similar.  If both
6063 horizontal and vertical values are "grow", it expands vertically
6064 first, then horizontally to find space.  Instead of the horizontal
6065 "grow" argument, "growleft" or "growright" can be used
6066 respectively "growup" and "growdown".
6067 The optional
6068 .I flags
6069 argument is a space separated list containing the following
6070 key words:
6071 .IR ewmhiwa ", " growonwindowlayer ", " growonlayers " and " screen .
6072 .I ewmhiwa
6073 causes fvwm to ignore the
6074 .SM EWMH
6075 working area.
6076 .I Growonwindowlayer
6077 causes the various grow methods to ignore windows with a layer
6078 other than the current layer of the window which is maximized.
6080 .I growonlayers
6081 option must have two integer arguments.  The first one is the
6082 minimum layer and the second one the maximum layer to use.
6083 Windows that are outside of this range of layers are ignored by
6084 the grow methods.  A negative value as the first or second
6085 argument means to assume no minimum or maximum layer.
6086 .I Screen
6087 must have an argument which specifies the Xinerama screen on which
6088 to operate.
6089 It can be 'p' for the primary screen, 'c' for the current
6090 screen (containing the mouse pointer), 'g' for the global screen
6091 or the screen number itself (counting from zero).  This option is
6092 only useful with multiple Xinerama screens.
6094 Here are some examples.  The following adds a title-bar button to
6095 switch a window to the full vertical size of the screen:
6097 Mouse 0 4 A Maximize 0 100
6099 The following causes windows to be stretched to the full width:
6101 Mouse 0 4 A Maximize 100 0
6103 This makes a window that is half the screen size in each
6104 direction:
6106 Mouse 0 4 A Maximize 50 50
6108 To expand a window horizontally until any other window is found:
6110 Mouse 0 4 A Maximize 0 grow
6112 To expand a window until any other window on the same or a higher
6113 layer is hit.
6115 Mouse 0 4 A Maximize growonlayers $[w.layer] -1 grow grow
6117 To expand a window but leave the lower 60 pixels of the screen
6118 unoccupied:
6120 Mouse 0 4 A Maximize 100 -60p
6122 Values larger than 100 can be used with caution.
6125 .BI "Recapture"
6126 This command is obsolete and should not be used anymore.  Should
6127 you want to do something specific that you cannot do without it,
6128 please report this to the fvwm-workers mailing list
6129 (@FVWMWORKERSLIST@).  This command may be removed at some point
6130 in the future.  Please read the note at the end of the section
6131 .B "DELAYED EXECUTION OF COMMANDS"
6132 to learn about how to avoid the
6133 .B Recapture
6134 command.
6136 Causes fvwm to recapture all of its windows.  This ensures that
6137 the latest style parameters are used.  The recapture operation is
6138 visually disturbing.
6140 Since fvwm version 2.4 only a very few
6141 .B Style
6142 options need a
6143 .B Recapture
6144 to take effect (e.g.
6145 .IR UseStyle ).
6148 .BI "RecaptureWindow"
6149 This command is obsolete and should not be used anymore.  See
6150 .B Recapture
6151 For details.
6153 Causes fvwm to recapture the chosen window.
6156 .BI "Refresh"
6157 Causes all windows on the screen to redraw themselves. All pending
6158 updates of all windows' styles and looks are applied immediately.
6159 E.g. if
6160 .BR Style " or " TitleStyle
6161 commands were issued inside a fvwm function.
6164 .BI "RefreshWindow"
6165 Causes the chosen window to redraw itself. All pending updates of
6166 the window's style and look are applied immediately.  E.g. if
6167 .BR Style " or " TitleStyle
6168 commands were issued inside a fvwm function.
6171 .BI "Stick [" bool "]"
6172 If the
6173 .I bool
6174 argument is empty or "toggle", the
6175 .B Stick
6176 command makes a window sticky if it is not already sticky, or
6177 non-sticky if it is already sticky.  To make a window sticky
6178 regardless of its current state the
6179 .I bool
6180 argument must be "True".  To make it non-sticky use "False".
6183 .BI "StickAcrossPages [" bool "]"
6184 Works like
6185 .B Stick
6186 but only sticks a window across pages, not across desks.
6189 .BI "StickAcrossDesks [" bool "]"
6190 Works like
6191 .B Stick
6192 but only sticks a window across desks, not across pages.
6195 .BI "WindowShade [" bool "] | [[" ShadeAgain "] " direction "]"
6196 Toggles the window shade feature for titled windows.  Windows in
6197 the shaded state only display a title-bar.  If
6198 .I bool
6199 is not given or "toggle", the window shade state is toggled.  If
6200 .I bool
6201 is "True", the window is forced to the shaded state.  If
6202 .I bool
6203 is "False", then the window is forced to the non-shaded
6204 state.  To force shading in a certain direction, the
6205 .I direction
6206 argument can be used.  Any of the strings "North", "South",
6207 "West", "East", "NorthWest", "NorthEast", "SouthWest",
6208 "SouthEast" or "Last" can be given. The direction can be abbreviated with
6209 the usual one or two letters "N", "NW", etc.  Using a direction on
6210 a window that was already shaded unshades the window.  To shade it
6211 in a different direction, use the
6212 .I ShadeAgain
6213 option. The direction
6214 .I Last
6215 shades the window in the direction it last was shaded. If the
6216 window has never been shaded before it is shaded as if no
6217 direction had been given. Windows without titles can be shaded
6218 too.  Please refer also to the options
6219 .IR WindowShadeSteps ", " WindowShadeShrinks ,
6220 .IR WindowShadeScrolls ", " WindowShadeLazy ,
6221 .IR WindowShadeAlwaysLazy " and " WindowShadeBusy .
6222 option of the
6223 .B Style
6224 command.  Examples:
6226 Style * WindowShadeShrinks, \\
6227 WindowShadeSteps 20, WindowShadeLazy
6228 Mouse 1 - S WindowShade North
6229 Mouse 1 [ S WindowShade West
6230 Mouse 1 ] S WindowShade E
6231 Mouse 1 _ S WindowShade S
6234 Note: When a window that has been shaded with a
6235 .I direction
6236 argument changes the direction of the window title (see
6237 .I TitleAtTop
6238 .B Style
6239 option), the shading direction does not change.  This may look
6240 very strange.  Windows that were shaded without a
6241 .I direction
6242 argument stay shaded in the direction of the title bar.
6244 For backward compatibility, the optional argument may also be 1 to
6245 signify "on", and 2 to signify "off". Note that this syntax is
6246 obsolete, and will be removed in the future.
6249 .BI "WindowShadeAnimate  [" steps "[" p "]]"
6250 This command is obsolete.  Please use the
6251 .I WindowShadeSteps
6252 option of the
6253 .B Style
6254 command instead.
6257 .SS COMMANDS FOR MOUSE, KEY AND STROKE BINDINGS
6260 .BI "IgnoreModifiers [" Modifiers "]"
6261 Tells fvwm which modifiers to ignore when matching Mouse or Key
6262 bindings.
6263 .B IgnoreModifiers
6264 affects the
6265 .I ClickToFocus
6266 style too.  This command belongs into your
6267 .IR config .
6268 If you issue it when your fvwm session is already up and running
6269 the results are unpredictable.  The should appear before any
6270 applications or modules are started in your
6271 .I config
6272 file (e.g. with the
6273 .B Exec
6274 command).
6276 .I Modifiers
6277 has the same syntax as in the
6278 .BR Mouse " or " Key
6279 bindings, with the addition of 'L' meaning the
6280 .SM caps lock
6281 key.  The default is "L".
6282 .I Modifiers
6283 can be omitted, meaning no modifiers are ignored.  This command
6284 comes in handy if the
6285 .SM num-lock
6287 .SM scroll-lock
6288 keys interfere with your shortcuts.  With XFree86 '2' usually is
6290 .SM num-lock
6291 modifier and '5' refers to the
6292 .SM scroll-lock
6293 key. To turn all these pesky modifiers off you can use this
6294 command:
6296 IgnoreModifiers L25
6298 If the
6299 .I Modifiers
6300 argument is the string "default", fvwm reverts back to the
6301 default value "L".
6303 .I Important Note:
6304 This command creates a lot of extra network traffic, depending on
6305 your CPU, network connection, the number of
6306 .BR Key " or " Mouse
6307 commands in your configuration file and the number of modifiers
6308 you want to ignore.  If you do not have a lightning fast machine
6309 or very few bindings you should not ignore more than two
6310 modifiers. I.e. do not ignore
6311 .SM scroll-lock
6312 if you have no problem with it.  In the
6313 .I FAQ
6314 you can find a better solution of this problem.
6317 .BI "EdgeCommand [" direction " [" Function "]]"
6318 Binds a specified fvwm command
6319 .I Function
6320 to an edge of the screen. Direction may be one of
6321 "North", "Top", "West", "Left", "South", "Bottom", "Right"
6322 and "East". If
6323 .I Function
6324 is omitted the binding for this edge is removed. If EdgeCommand is
6325 called without any arguments all edge bindings are removed.
6327 .I Function
6328 is executed when the mouse pointer
6329 enters the invisible pan frames that surround the visible screen.
6330 The binding works only if
6331 .I EdgeThickness
6332 is set to a value greater than 0.
6333 If a function is bound to an edge, scrolling specified by
6334 .I EdgeScroll
6335 is disabled for this edge.
6336 It is possible to bind a function only to some edges
6337 and use the other edges for scrolling.
6338 This command is intended to raise or lower certain windows
6339 when the mouse pointer enters an edge.
6340 .I FvwmAuto
6341 can be used get a delay when raising or lowering windows.
6342 The following example raises
6343 .I FvwmButtons
6344 if the mouse pointer enters the top edge of the screen.
6346 # Disable EdgeScrolling but make it possible
6347 # to move windows over the screen edge
6348 EdgeResistance 10000 20
6350 # Set thickness of the edge of the screen to 1
6351 EdgeThickness 1
6353 # Give focus to FvwmButtons if the mouse
6354 # hits top edge
6355 EdgeCommand Top Next (FvwmButtons) Focus
6356 # Make sure the Next command matches the window
6357 Style FvwmButtons CirculateHit
6359 Module FvwmButtons
6360 Module FvwmAuto 100 \\
6361         "Silent AutoRaiseFunction" \\
6362         "Silent AutoLowerFunction"
6364 # If any window except FvwmButtons has
6365 # focus when calling this function
6366 # FvwmButtons are lowered
6367 DestroyFunc AutoLowerFunction
6368 AddToFunc AutoLowerFunction
6369 + I Current (!FvwmButtons) \\
6370         All (FvwmButtons) Lower
6372 # If FvwmButtons has focus when calling \\
6373 # this function raise it
6374 DestroyFunc AutoRaiseFunction
6375 AddToFunc AutoRaiseFunction
6376 + I Current (FvwmButtons) Raise
6378 Normally, the invisible pan frames are only on the screen edges
6379 that border virtual pages.  If a screen edge has a command bound
6380 to it, the pan frame is always created on that edge.
6383 .BI "EdgeLeaveCommand [" direction " [" Function "]]"
6384 Binds a specified fvwm command
6385 .I Function
6386 to an edge of the screen. Direction may be one of
6387 "North", "Top", "West", "Left", "South", "Bottom", "Right"
6388 and "East". If
6389 .I Function
6390 is omitted the binding for this edge is removed. If
6391 EdgeLeaveCommand is called without any arguments all edge bindings
6392 are removed.
6394 .I Function
6395 is executed when the mouse pointer
6396 leaves the invisible pan frames that surround the visible screen.
6397 The binding works only if
6398 .I EdgeThickness
6399 is set to a value greater than 0.
6400 If a function is bound to an edge, scrolling specified by
6401 .I EdgeScroll
6402 is disabled for this edge.
6403 It is possible to bind a function only to some edges
6404 and use the other edges for scrolling.
6405 This command is intended to raise or lower certain windows
6406 when the mouse pointer leaves an edge.
6407 .I FvwmAuto
6408 can be used get a delay when raising or lowering windows.
6409 See example for
6410 .I EdgeCommand
6412 Normally, the invisible pan frames are only on the screen edges
6413 that border virtual pages.  If a screen edge has a command bound
6414 to it, the pan frame is always created on that edge.
6417 .BI "GnomeButton"
6418 Used in conjunction with
6419 .B Mouse
6420 to pass mouse button presses on the root window to a
6421 .SM GNOME
6422 program (such as GMC).  The following example passes presses of
6423 mouse buttons 1 and 3 to such a program.
6425 Mouse 1 R A GnomeButton
6426 Mouse 3 R A GnomeButton
6430 .BI "Key [(" window ")] " "Keyname Context Modifiers Function"
6431 Binds a keyboard key to a specified fvwm command, or
6432 removes the binding if
6433 .I Function
6434 is '-'.  The syntax is the same as for a
6435 .B Mouse
6436 binding except that the mouse button number is replaced with a
6437 .IR Keyname .
6438 Normally, the key binding is activated when the key is pressed.
6439 .I Keyname
6440 is a standard X11 key name as defined in
6441 .IR /usr/include/X11/keysymdef.h ,
6442 (without the
6443 .I XK_
6444 prefix), or the keysym database
6445 .IR /usr/X11R6/lib/X11/XKeysymDB .
6446 Only key names that are
6447 generated with no modifier keys or with just the
6448 .SM Shift
6449 key held are guaranteed to work.  The
6450 .IR Context " and " Modifiers
6451 fields are defined as in the
6452 .B Mouse
6453 binding.  However, when you press a key the context window is the
6454 window that has the keyboard focus.  That is not necessarily the
6455 same as the window the pointer is over (with
6456 .IR SloppyFocus " or " ClickToFocus ).
6457 Note that key bindings with the 'R' (root window) context do not
6458 work properly with
6459 .IR SloppyFocus " and " ClickToFocus .
6460 If you encounter problems, use the
6461 .B PointerKey
6462 command instead.  If you want to bind keys to a window with
6463 .IR SloppyFocus " or " ClickToFocus
6464 that are supposed to work when the pointer is not over the window,
6465 fvwm assumes the pointer is over the client window (i.e. you have
6466 to use the 'W' context).
6468 The special context 'M' for menus can be used to (re)define the menu
6469 controls. It can only be used alone or together with 'T' for the menu
6470 title bar.  See the section "Menu Bindings" for details.
6472 The following example binds the built-in window list to pop up
6473 when
6474 .SM Alt-Ctrl-Shift-F11
6475 is hit, no matter where the mouse pointer is:
6477 Key F11 A SCM WindowList
6479 Binding a key to a title-bar button causes that button to appear.
6480 Please refer to the
6481 .B Mouse
6482 command for details.
6485 .BI "Mouse [(" window ")] " "Button Context Modifiers Function"
6486 Defines a mouse binding, or removes the binding if
6487 .I Function
6488 is '-'.
6489 .I Button
6490 is the mouse button number.  If
6491 .I Button
6492 is zero then any button performs the specified function.  Note
6493 that only mouse buttons 1 to 5 are fully supported by X11.  Any
6494 number above this works only partially.  Complex functions can not
6495 be used with these buttons and neither any operation that requires
6496 dragging the pointer with the button held.  This is due to
6497 limitations of X11.  By default, the highest allowed button number
6498 is 9.
6500 .I Context
6501 describes where the binding applies.  Valid contexts are 'R' for
6502 the root window, 'W' for an application window, 'D' for a desktop
6503 application (as kdesktop or Nautilus desktop), 'T' for a window
6504 title-bar, 'S' for a window side, top, or bottom bar, '[', ']',
6505 \'-' and '_' for the left, right, top or bottom side only, 'F' for
6506 a window frame (the corners), '<', '^', '>' and 'v' for the top
6507 left, top right, bottom right or bottom left corner, 'I' for an
6508 icon window, or '0' through '9' for title-bar buttons, or any
6509 combination of these letters.  'A' is for any context.  For
6510 instance, a context of "FST" applies when the mouse is anywhere in
6511 a window's border except the title-bar buttons.  Only 'S' and 'W'
6512 are valid for an undecorated window.
6514 The special context 'M' for menus can be used to (re)define the menu
6515 controls. It can only be used alone or together with 'T' for the menu
6516 title bar.  See the section "Menu Bindings" for details.
6518 The special context 'P' controls what buttons that can be used to
6519 place a window. When using this context no modifiers are allowed
6520 .RI ( Modifiers
6521 must be N), no
6522 .I window
6523 is allowed, and the
6524 .I Function
6525 must be one of
6526 .IR PlaceWindow ", " PlaceWindowDrag ", " PlaceWindowInteractive
6527 .RI ", " CancelPlacement ", " CancelPlacementDrag
6528 .RI ", " CancelPlacementInteractive " or " - .
6530 .I PlaceWindow
6531 makes
6532 .I Button
6533 usable for window placement, both for interactive and drag move.
6534 .I CancelPlacement
6535 does the inverse. That is makes
6536 .I Button
6537 to cancel move for both interactive and drag move. It may however
6538 not override how new windows are resized after being placed. This
6539 is controlled by the
6540 .B Emulate
6541 command. Also a window being dragged can always be placed
6542 by releasing the button hold while dragging, regardless of if it is
6543 set to
6544 .I PlaceWindow
6545 or not.
6547 .IR PlaceWindowDrag " and " PlaceWindowInteractive / CancelPlacementDrag
6548 .RI " and " CancelPlacementInteractive
6549 work as
6550 .IR PlaceWindow / CancelPlacement
6551 with the exception that they only affect either windows dragged /
6552 placed interactively.
6554 .I -
6555 is equivalent to
6556 .IR CancelPlacement .
6558 The following example makes all buttons but button 3 usable for
6559 interactive placement and makes drag moves started by other buttons
6560 than one cancel if button 1 is pressed before finishing the move:
6562 Mouse 0 P N PlaceWindow
6563 Mouse 3 P N CancelPlacement
6564 Mouse 1 P N CancelPlacementDrag
6567 By default, the binding applies to all windows. You can specify
6568 that a binding only applies to specific windows by specifying the
6569 window name in brackets. The window name is a wildcard pattern
6570 specifying the class, resource or name of the window you want the
6571 binding to apply to.
6573 The following example shows how the same key-binding can be used to
6574 perform different functions depending on the window that is focused:
6576 Key (rxvt)  V A C Echo ctrl-V-in-RXVT
6577 Key (*term) V A C Echo ctrl-V-in-Term
6578 Key (*vim)  V A C --
6579 Key         V A C Echo ctrl-V-elsewhere
6582 A '--' action indicates that the event should be propagated to the
6583 specified window to handle. This is only a valid action for
6584 window-specific bindings.
6586 This example shows how to display the WindowList when Button 3 is
6587 pressed on an rxvt window:
6589 Mouse (rxvt) 3 A A WindowList
6592 Note that Fvwm actually intercepts all events for a window-specific
6593 binding and (if the focused window doesn't match any of the
6594 bindings) sends a synthetic copy of the event to the window. This
6595 should be transparent to most applications, however (for security
6596 reasons) some programs ignore these synthetic events by default -
6597 xterm is one of them. To enable handling of these events, add the
6598 following line to your ~/.Xdefaults file:
6601 XTerm*allowSendEvents:  true
6604 .I Modifiers
6605 is any combination of 'N' for no modifiers, 'C' for control, 'S'
6606 for shift, 'M' for Meta, 'L' for Caps-Lock or 'A' for any
6607 modifier. For example, a modifier of "SM" applies when both the
6608 .SM Meta
6610 .SM Shift
6611 keys are down.  X11 modifiers mod1 through mod5 are represented as
6612 the digits '1' through '5'.  The modifier 'L' is ignored by
6613 default.  To turn it on, use the
6614 .B IgnoreModifiers
6615 command.
6617 .I Function
6618 is one of fvwm's commands.
6620 The title-bar buttons are numbered with odd numbered buttons on
6621 the left side of the title-bar and even numbers on the
6622 right. Smaller-numbered buttons are displayed toward the outside
6623 of the window while larger-numbered buttons appear toward the
6624 middle of the window (0 is short for 10).  In summary, the buttons
6625 are numbered:
6627 1 3 5 7 9    0 8 6 4 2
6629 The highest odd numbered button which has an action bound to it
6630 determines the number of buttons drawn on the left side of the
6631 title bar.  The highest even number determines the number of right
6632 side buttons which are drawn.  Actions can be bound to either
6633 mouse buttons or keyboard keys.
6636 .BI "PointerKey [(" window ")] " "Keyname Context Modifiers Function"
6637 This command works exactly like the
6638 .B Key
6639 command.  The only difference is that the binding operates on the
6640 window under the pointer.  Normal key bindings operate on the
6641 focused window instead.  The
6642 .B PointerKey
6643 command can for example be used to bind keys to the root window if
6644 you are using
6645 .IR SloppyFocus " or " ClickToFocus .
6646 However, some applications (xterm is one example) are unable to
6647 handle this key anymore, even if the pointer is over the xterm
6648 window.  It is recommended to use the
6649 .B PointerKey
6650 command only for key combinations that are not needed in any
6651 application window.
6653 Example:
6655 Style * SloppyFocus
6656 PointerKey f1 a m Menu MainMenu
6660 .BI "Stroke [(" window ")] " "Sequence Button Context Modifiers Function"
6661 Binds a mouse stroke sequence to a specified fvwm command,
6662 or removes the binding if
6663 .I Function
6664 is '-'.  The syntax is the same as for a
6665 .B Mouse
6666 binding except that
6667 .I Sequence
6668 is inserted in front of the button number and a value of 0 for
6669 .I Button
6670 concerns the
6671 .B StrokeFunc
6672 command.  The
6673 .IR Context " and " Modifiers
6674 fields are defined as in the
6675 .B Mouse
6676 binding.  However, only the 'R' Context really works (if you want
6677 to use other contexts you need to use the
6678 .B StrokeFunc
6679 below).
6681 Strokes sequences are defined in a telephone grid like this:
6683  1  2  3
6685  4  5  6
6687  7  8  9
6689 or in a numeric pad grid like this:
6691  7  8  9
6693  4  5  6
6695  1  2  3
6697 The telephone grid is used by default, to use the numeric pad grid
6698 you should begin the sequence with a 'N'.  Note that a complex
6699 motion may produce several different sequences (see the "netscape"
6700 example below to handle such motion).  Moreover, sequences are
6701 limited to 20 elements (with the present version of
6702 .BR libstroke ),
6703 however, in practice it is preferable to use sequence with less
6704 than 12 elements.
6706 Because of the default button menu in fvwm, you may need to remove
6707 a mouse button binding (using an empty action) before using the
6708 stroke
6710 Mouse 3 R N
6712 Also, you can still use the stroke "sequence 0" to simulate a
6713 click:
6715 Stroke 0 3 R N Menu WindowList Nop
6717 The following example starts xterm when the mouse drags an 'I' on
6718 the root window with button 3 pressed down:
6720 Stroke 258  3  R  N  Exec exec xterm
6722 An example for Netscape:
6724 Stroke 7415963    3  R  N  Exec exec netscape
6725 Stroke 74148963   3  R  N  Exec exec netscape
6726 Stroke 74158963   3  R  N  Exec exec netscape
6727 Stroke 7418963    3  R  N  Exec exec netscape
6728 Stroke 415963     3  R  N  Exec exec netscape
6730 You may prefer to use the numeric pad grid since you have such a
6731 grid on your machine. Here an example:
6733 Stroke N78963214   3  R  N  FvwmForm FvwmForm-QuitVerify
6734 Stroke N789632147  3  R  N  FvwmForm FvwmForm-QuitVerify
6736 This example starts the "QuitVerify" form if you draw a box that
6737 begins in the top left corner.
6739 Note: You need
6740 .B libstroke
6741 installed and fvwm compiled with stroke support.
6742 .B libstroke
6743 can be obtained at
6745 .B http://www.etla.net/~willey/projects/libstroke/
6749 .BI "StrokeFunc [" Options "]"
6750 Causes fvwm to record a mouse stroke sequence and to execute the
6751 corresponding action as defined in a
6752 .B Stroke
6753 command.  The cursor is modified to the
6754 .I STROKE
6755 context of the
6756 .B CursorStyle
6757 command during recording.  When the stroke is finished
6758 .B StrokeFunc
6759 looks for a stroke binding of the form
6761 Stroke sequence 0 Context Modifiers action
6763 and executes the corresponding action (Note the 0).  Normal use of
6764 this function is via a
6765 .BR Mouse " or " Key
6766 command.  Examples:
6768 Mouse 3 A M StrokeFunc
6769 Key x R N StrokeFunc
6771 If you press mouse button 3 and
6772 .SM Alt
6773 anywhere (respectively, press the key x when the cursor is on the
6774 root window), then fvwm records the mouse motions until the mouse
6775 button 3 (respectively, the x key) is released and then check if
6776 the recorded
6777 .I sequence
6778 corresponds to a stroke binding of the form
6780 .RI """Stroke " sequence " 0 A M " action """ \""
6781 .RI """Stroke " sequence " 0 R N " action """ \""
6783 Note that the
6784 .IR Context " and " Modifiers
6785 are taken at the beginning of the execution of the
6786 .B StrokeFunc
6787 command (so you can release the modifiers before the end of the
6788 stroke recording in the case of a mouse binding and if you used,
6789 say, a title-bar context the mouse motion can go through an
6790 application window).  The keys
6791 .SM Escape
6793 .SM Delete
6794 allow you to abort the command.
6797 .B StrokeFunc
6798 command has five options:
6799 .IR NotStayPressed ", " EchoSequence ", " DrawMotion ", "
6800 .IR FeedBack " and " StrokeWidth .
6801 These options are disabled by default.
6802 .I EchoSequence
6803 causes fvwm to Echo the recorded stroke sequence.
6804 .I DrawMotion
6805 causes fvwm to draw the mouse motion on the screen.
6806 .I FeedBack
6807 causes fvwm to display during a fraction of second the cursor of
6809 .I WAIT
6810 context of the
6811 .B CursorStyle
6812 command if the recorded stroke sequence corresponds to a stroke
6813 binding.
6814 .I StrokeWidth
6815 takes an integer argument, which must be >= 0 and <= 100 and which
6816 defines the width of the line for the
6817 .I DrawMotion
6818 option.
6820 .I NotStayPressed
6821 works only if
6822 .B StrokeFunc
6823 is used via a
6824 .BR Mouse
6825 or a
6826 .B Key
6827 command.  This option removes the need to have a button or the key
6828 pressed during the stroke, but you have to do a mouse click or
6829 press the
6830 .SM Return
6832 .SM Space
6833 key to finish the mouse motion recording (these keys also work
6834 without the
6835 .I NotStayPressed
6836 option).
6838 You can use the
6839 .B StrokeFunc
6840 "alone".  In this case it works as above with the
6841 .I NotStayPressed
6842 option enabled.  However,
6843 .I Modifiers,
6844 in general, may not work as expected (i.e., in this case use 'A'
6845 or 'N' as
6846 .I Modifiers
6847 in the stroke bindings).
6849 Note that some computers do not support key release events. If
6850 that is the case the
6851 .B StrokeFunc
6852 used via a
6853 .B Key
6854 command works as if the
6855 .I NotStayPressed
6856 option is enabled.
6859 .SS THE STYLE COMMAND (CONTROLLING WINDOW STYLES)
6861 For readability, the commands in this section are not sorted
6862 alphabetically.  The description of the
6863 .B Style
6864 command can be found at the end of this section.
6867 .BI "FocusStyle " "stylename options"
6868 works exactly like the
6869 .B Style
6870 command, but accepts only the focus policy related styles
6871 beginning with "FP".  The prefix can be removed, but at the cost
6872 of a little bit of time.
6873 .B FocusStyle
6874 is meant to make the configuration file more readable.  Example:
6876 FocusStyle * EnterToFocus, !LeaveToUnfocus
6878 is equivalent to
6880 Style * FPEnterToFocus, !FPLeaveToUnfocus
6884 .BI "DestroyStyle " style
6885 deletes the style named
6886 .IR style .
6887 The changes take effect immediately.  Note that
6888 .I style
6889 is not a wild-carded search string, but rather a case-sensitive
6890 string that should exactly match the original
6891 .B Style
6892 command.
6894 Destroying style "*" can be done, but isn't really to be
6895 recommended. For example:
6897 DestroyStyle Application*
6899 This removes all settings for the style named "Application*", NOT
6900 all styles starting with "Application".
6903 .B "DestroyWindowStyle"
6904 deletes the styles set by the
6905 .B WindowStyle
6906 command on the selected window. The changes take effect immediately.
6909 .BI "UpdateStyles"
6910 All pending updates of all windows' styles and looks are applied
6911 immediately.  E.g. if
6912 .BR Style ", " WindowStyle " or " TitleStyle
6913 commands were issued inside a fvwm function.
6916 .BI "Style " "stylename options ..."
6918 .B Style
6919 command is used to set attributes of a window to values other than
6920 the default or to set the window manager default styles.
6922 .I stylename
6923 can be a window's name, class, or resource string.  It may contain
6924 the wildcards '*' and '?', which are matched in the usual Unix
6925 filename manner.  Multiple style options in a single
6926 .B Style
6927 command are read from left to right as if they were issued one
6928 after each other in separate commands.  A given style always
6929 overrides all conflicting styles that have been issued earlier (or
6930 further left on the same style line).
6932 Note: windows that have no name (WM_NAME) are given a name of
6933 "Untitled", and windows that do not have a class (WM_CLASS,
6934 res_class) are given class "NoClass" and those that do not have a
6935 resource (WM_CLASS, res_name) are given resource "NoResource".
6937 If a window has the resource "fvwmstyle" set, the value of that
6938 resource is used in addition to any window names when selecting
6939 the style.
6941 .I options
6942 is a comma separated list containing one or more of the
6943 following keywords.  Each group of style names is separated by
6944 slashes ('/').  The last style in these groups is the default.
6945 .IR BorderWidth ", " HandleWidth ,
6946 .IR !Icon " / " Icon ", " MiniIcon ,
6947 .IR IconBox ", " IconGrid ", " IconFill ", " IconSize ,
6948 .IR !Title " / " Title ,
6949 .IR TitleAtBottom " / " TitleAtLeft " / " TitleAtRight " / " TitleAtTop ,
6950 .IR LeftTitleRotatedCW " / " LeftTitleRotatedCCW ,
6951 .IR RightTitleRotatedCCW " / " RightTitleRotatedCW ,
6952 .IR TopTitleRotated " / " TopTitleNotRotated ,
6953 .IR BottomTitleRotated " / " BottomTitleNotRotated ,
6954 .IR !UseTitleDecorRotation " / " UseTitleDecorRotation ,
6955 .IR StippledTitle " / " !StippledTitle ,
6956 .IR StippledIconTitle " / " !StippledIconTitle ,
6957 .IR IndexedWindowName " / " ExactWindowName ,
6958 .IR IndexedIconName " / " ExactIconName ,
6959 .IR !Borders " / " Borders ,
6960 .IR !Handles " / " Handles ,
6961 .IR WindowListSkip " / " WindowListHit ,
6962 .IR CirculateSkip " / " CirculateHit ,
6963 .IR CirculateSkipShaded " / " CirculateHitShaded ,
6964 .IR CirculateSkipIcon " / " CirculateHitIcon ,
6965 .IR Layer ,
6966 .IR StaysOnTop " / " StaysOnBottom " / " StaysPut ,
6967 .IR Sticky " / " Slippery ,
6968 .IR StickyAcrossPages " / " !StickyAcrossPages ,
6969 .IR StickyAcrossDesks " / " !StickyAcrossDesks ,
6970 .IR !StickyStippledTitle " / " StickyStippledTitle ,
6971 .IR !StickyStippledIconTitle " / " StickyStippledIconTitle ,
6972 .IR StartIconic " / " StartNormal ,
6973 .IR Color ", " ForeColor ", " BackColor ", " Colorset ,
6974 .IR HilightFore ", " HilightBack ", " HilightColorset ,
6975 .IR BorderColorset ", " HilightBorderColorset ,
6976 .IR IconTitleColorset ", " HilightIconTitleColorset ,
6977 .IR IconBackgroundColorset ,
6978 .IR IconTitleRelief ", " IconBackgroundRelief ", " IconBackgroundPadding ,
6979 .IR Font ,
6980 .IR IconFont ,
6981 .IR StartsOnDesk " / " StartsOnPage " / " StartsAnyWhere ,
6982 .IR StartsOnScreen ,
6983 .IR ManualPlacementHonorsStartsOnPage " / " ManualPlacementIgnoresStartsOnPage ,
6984 .IR UnderMousePlacementHonorsStartsOnPage " / " UnderMousePlacementIgnoresStartsOnPage ,
6985 .IR CaptureHonorsStartsOnPage " / " CaptureIgnoresStartsOnPage ,
6986 .IR RecaptureHonorsStartsOnPage " / " RecaptureIgnoresStartsOnPage ,
6987 .IR StartsOnPageIncludesTransients " / " StartsOnPageIgnoresTransients ,
6988 .IR IconTitle " / " !IconTitle ,
6989 .IR MwmButtons " / " FvwmButtons ,
6990 .IR MwmBorder " / " FvwmBorder ,
6991 .IR MwmDecor " / " !DecorHint ,
6992 .IR MwmFunctions " / " !FuncHint ,
6993 .IR HintOverride " / " !Override ,
6994 .IR !Button " / " Button ,
6995 .IR ResizeHintOverride " / " !ResizeHintOverride ,
6996 .IR OLDecor " / " !OLDecor ,
6997 .IR GNOMEUseHints " / " GNOMEIgnoreHints ,
6998 .IR StickyIcon " / " SlipperyIcon ,
6999 .IR StickyAcrossPagesIcon " / " !StickyAcrossPagesIcon ,
7000 .IR StickyAcrossDesksIcon " / " !StickyAcrossDesksIcon ,
7001 .IR ManualPlacement " / " CascadePlacement " / " MinOverlapPlacement " / "
7002 .IR MinOverlapPercentPlacement " / " TileManualPlacement " / "
7003 .IR TileCascadePlacement " / " CenterPlacement " / " UnderMousePlacement ,
7004 .IR MinOverlapPlacementPenalties ,
7005 .IR MinOverlapPercentPlacementPenalties ,
7006 .IR DecorateTransient " / " NakedTransient ,
7007 .IR DontRaiseTransient " / " RaiseTransient ,
7008 .IR DontLowerTransient " / " LowerTransient ,
7009 .IR DontStackTransientParent " / " StackTransientParent ,
7010 .IR SkipMapping " / " ShowMapping ,
7011 .IR ScatterWindowGroups " / " KeepWindowGroupsOnDesk ,
7012 .IR UseDecor ,
7013 .IR UseStyle ,
7014 .IR !UsePPosition " / " NoPPosition " / " UsePPosition ,
7015 .IR !UseUSPosition " / " NoUSPosition " / " UseUSPosition ,
7016 .IR !UseTransientPPosition " / " NoTransientPPosition " / "
7017 .IR UseTransientPPosition ,
7018 .IR !UseTransientUSPosition " / " NoTransientUSPosition " / "
7019 .IR UseTransientUSPosition ,
7020 .IR !UseIconPosition " / " NoIconPosition " / " UseIconPosition ,
7021 .IR Lenience " / " !Lenience ,
7022 .IR ClickToFocus " / " SloppyFocus " /"
7023 .IR MouseFocus | FocusFollowsMouse " / " NeverFocus ,
7024 .IR ClickToFocusPassesClickOff " / " ClickToFocusPassesClick ,
7025 .IR ClickToFocusRaisesOff " / " ClickToFocusRaises ,
7026 .IR MouseFocusClickRaises " / " MouseFocusClickRaisesOff ,
7027 .IR GrabFocus " / " GrabFocusOff ,
7028 .IR GrabFocusTransientOff " / " GrabFocusTransient ,
7029 .IR FPFocusClickButtons ,
7030 .IR FPFocusClickModifiers ,
7031 .IR !FPSortWindowlistByFocus " / " FPSortWindowlistByFocus ,
7032 .IR FPClickRaisesFocused " / " !FPClickRaisesFocused ,
7033 .IR FPClickDecorRaisesFocused " / " !FPClickDecorRaisesFocused ,
7034 .IR FPClickIconRaisesFocused " / " !FPClickIconRaisesFocused ,
7035 .IR !FPClickRaisesUnfocused " / " FPClickRaisesUnfocused ,
7036 .IR FPClickDecorRaisesUnfocused " / " !FPClickDecorRaisesUnfocused ,
7037 .IR FPClickIconRaisesUnfocused " / " !FPClickIconRaisesUnfocused ,
7038 .IR FPClickToFocus " / " !FPClickToFocus ,
7039 .IR FPClickDecorToFocus " / " !FPClickDecorToFocus ,
7040 .IR FPClickIconToFocus " / " !FPClickIconToFocus ,
7041 .IR !FPEnterToFocus " / " FPEnterToFocus ,
7042 .IR !FPLeaveToUnfocus " / " FPLeaveToUnfocus ,
7043 .IR !FPFocusByProgram " / " FPFocusByProgram ,
7044 .IR !FPFocusByFunction " / " FPFocusByFunction ,
7045 .IR FPFocusByFunctionWarpPointer " / " !FPFocusByFunctionWarpPointer ,
7046 .IR FPLenient " / " !FPLenient ,
7047 .IR !FPPassFocusClick " / " FPPassFocusClick ,
7048 .IR !FPPassRaiseClick " / " FPPassRaiseClick ,
7049 .IR FPIgnoreFocusClickMotion " / " !FPIgnoreFocusClickMotion ,
7050 .IR FPIgnoreRaiseClickMotion " / " !FPIgnoreRaiseClickMotion ,
7051 .IR !FPAllowFocusClickFunction " / " FPAllowFocusClickFunction ,
7052 .IR !FPAllowRaiseClickFunction " / " FPAllowRaiseClickFunction ,
7053 .IR FPGrabFocus " / " !FPGrabFocus ,
7054 .IR !FPGrabFocusTransient " / " FPGrabFocusTransient ,
7055 .IR FPOverrideGrabFocus " / " !FPOverrideGrabFocus ,
7056 .IR FPReleaseFocus " / " !FPReleaseFocus ,
7057 .IR !FPReleaseFocusTransient " / " FPReleaseFocusTransient ,
7058 .IR FPOverrideReleaseFocus " / " !FPOverrideReleaseFocus ,
7059 .IR StartsLowered " / " StartsRaised ,
7060 .IR IgnoreRestack " / " AllowRestack ,
7061 .IR FixedPosition " / " VariablePosition ,
7062 .IR FixedUSPosition " / " VariableUSPosition ,
7063 .IR FixedPPosition " / " VariablePPosition ,
7064 .IR FixedSize " / " VariableSize ,
7065 .IR FixedUSSize " / " VariableUSSize ,
7066 .IR FixedPSize " / " VariablePSize ,
7067 .IR !Closable " / " Closable ,
7068 .IR !Iconifiable " / " Iconifiable ,
7069 .IR !Maximizable " / " Maximizable ,
7070 .IR !AllowMaximizeFixedSize " / " AllowMaximizeFixedSize ,
7071 .IR IconOverride " / " NoIconOverride " / " NoActiveIconOverride ,
7072 .IR DepressableBorder " / " FirmBorder ,
7073 .IR MaxWindowSize ,
7074 .IR IconifyWindowGroups " / " IconifyWindowGroupsOff ,
7075 .IR ResizeOpaque " / " ResizeOutline ,
7076 .IR BackingStore " / " BackingStoreOff " / " BackingStoreWindowDefault ,
7077 .IR Opacity " / " ParentalRelativity ,
7078 .IR SaveUnder " / " SaveUnderOff ,
7079 .IR WindowShadeShrinks " / " WindowShadeScrolls ,
7080 .IR WindowShadeSteps ,
7081 .IR WindowShadeAlwaysLazy " / " WindowShadeBusy " / " WindowShadeLazy,
7082 .IR EWMHDonateIcon " / " EWMHDontDonateIcon ,
7083 .IR EWMHDonateMiniIcon " / " EWMHDontDonateMiniIcon ,
7084 .IR EWMHMiniIconOverride " / " EWMHNoMiniIconOverride ,
7085 .IR EWMHUseStackingOrderHints " / " EWMHIgnoreStackingOrderHints ,
7086 .IR EWMHIgnoreStateHints " / " EWMHUseStateHints ,
7087 .IR EWMHIgnoreStrutHints " / " EWMHUseStrutHints ,
7088 .IR EWMHIgnoreWindowType " / " !EWMHIgnoreWindowType ,
7089 .IR EWMHMaximizeIgnoreWorkingArea " / " EWMHMaximizeUseWorkingArea " / "
7090 .IR EWMHMaximizeUseDynamicWorkingArea ,
7091 .IR EWMHPlacementIgnoreWorkingArea " / " EWMHPlacementUseWorkingArea " / "
7092 .IR EWMHPlacementUseDynamicWorkingArea ,
7093 .IR MoveByProgramMethod ,
7094 .IR Unmanaged ,
7095 .IR State .
7097 .\" +++++++++++++++ general notes
7098 In the above list some options are listed as
7099 style-option/opposite-style-option.  The opposite-style-option for
7100 entries that have them describes the fvwm default behavior and can
7101 be used if you want to change the fvwm default behavior.
7103 .\" +++++++++++++++ focus policy
7105 .B Focus policy
7106 .I ClickToFocus
7107 instructs fvwm to give the focus to a window when it is clicked
7108 in.  The default
7109 .I MouseFocus
7110 (or its alias
7111 .IR FocusFollowsMouse )
7112 tells fvwm to give a window the focus as soon as the pointer
7113 enters the window, and take it away when the pointer leaves the
7114 window.
7115 .I SloppyFocus
7116 is similar, but doesn't give up the focus if the pointer leaves
7117 the window to pass over the root window or a ClickToFocus window
7118 (unless you click on it, that is), which makes it possible to move
7119 the mouse out of the way without losing focus.  A window with the
7120 style
7121 .I NeverFocus
7122 never receives the focus.  This is useful for modules like
7123 .BR FvwmButtons ,
7124 for example.
7125 Note:  Once any of the "FP..." styles has been used, the defaults
7126 that come with the basic focus policies are not restored when the
7127 latter are used again.  For example, once !FPGrabFocus has been
7128 used, using ClickToFocus does not restore FPGrabFocus.
7130 The focus model can be augmented with several additional options.
7131 In fvwm-2.5.3 and later, there are a large number of advanced
7132 options beginning with "FP" or "!FP".  These options shall replace
7133 the older options one day and are described first.  Using any of
7134 these new options may limit compatibility with older releases.  In
7135 general, options beginning with "FP" turn a feature on, while
7136 those beginning with "!FP" turn it off.
7138 .B Focusing the window
7140 With
7141 .IR FPEnterToFocus ,
7142 when the pointer enters a window it receives focus.
7144 With
7145 .IR FPLeaveToUnfocus
7146 a window loses focus when the pointer leaves it.
7148 With
7149 .IR FPClickToFocus ", " FPClickDecorToFocus " or "
7150 .IR FPClickIconToFocus ,
7151 a window receives focus when the inside of the window or the
7152 decorations or its icon is clicked.
7155 .IR FPFocusByProgram
7156 style allows windows to take the focus themselves.
7159 .IR !FPFocusByFunction
7160 style forbids that a window receives the focus via the
7161 .BR Focus " and " FlipFocus
7162 commands.
7165 .IR FPFocusByFunctionWarpPointer
7166 style controls if the pointer is warped to a selected window
7167 when the
7168 .B Focus
7169 command is used.
7171 .I FPLenient
7172 allows focus on windows that do not want it, like
7173 .BR FvwmPager
7174 or xclock.
7177 .IR FPFocusClickButtons
7178 style takes a list of mouse buttons that can be clicked to focus
7179 or raise a window when the appropriate style is used.  The default
7180 is to use the first three buttons ("123").
7183 .IR FPFocusClickModifiers
7184 style takes a list of modifier keys just like the
7185 .B Key
7186 command.  The exact combination of modifier keys must be pressed
7187 for the click to focus or raise a window to work.  The default is
7188 to use no modifiers ("N").
7190 With the
7191 .IR FPPassFocusClick
7192 style, the click that was used to focus a window is passed to
7193 the application.
7195 With the
7196 .IR FPAllowFocusClickFunction
7197 style, the click that was used to focus a window can also
7198 trigger a normal action that was bound to the window with the
7199 .B Mouse
7200 command).
7202 If the
7203 .IR FPIgnoreFocusClickMotion
7204 style is used, clicking in a window and then dragging the pointer
7205 with the button held down does not count as the click to focus the
7206 window.  Instead, the application processes these events
7207 normally.  This is useful to select text in a terminal window with
7208 the mouse without raising the window.  However, mouse bindings on
7209 the client window are not guaranteed to work anymore (see
7210 .B Mouse
7211 command).  This style forces the initial click to be
7212 passed to the application.  The distance that the pointer must be
7213 moved to trigger this is controlled by the
7214 .B MoveThreshold
7215 command.
7218 .IR FPSortWindowlistByFocus " and " !FPSortWindowlistByFocus
7219 styles control whether the internal window list is sorted in the
7220 order the windows were focused or in the order they were created.
7221 The latter is the default for
7222 .IR ClickToFocus " and " SloppyFocus .
7225 .B Clicking the window to raise
7227 The styles
7228 .IR FPClickRaisesFocused ", " FPClickDecorRaisesFocused " and "
7229 .IR FPClickIconRaisesFocused
7230 allow to raise the window when the interior or the decorations or
7231 the icon of the window is clicked while the window is already
7232 focused.
7234 The styles
7235 .IR FPClickRaisesUnfocused ", " FPClickDecorRaisesUnfocused " and "
7236 .IR FPClickIconRaisesUnfocused
7237 allow to raise the window when the interior or the decorations or
7238 the icon of the window is clicked while the window is not yet
7239 focused.
7241 With the
7242 .IR FPPassRaiseClick
7243 style, the click that was used to raise the window is passed to
7244 the application.
7246 With the
7247 .IR FPAllowRaiseClickFunction
7248 style, the click that was used to raise the window can also
7249 trigger a normal action that was bound to the window with the
7250 .B Mouse
7251 command.
7253 If the
7254 .IR FPIgnoreRaiseClickMotion
7255 style is used, clicking in a window and then dragging the pointer
7256 with the button held down does not count as the click to raise the
7257 window.  Instead, the application processes these events
7258 normally.  This is useful to select text in a terminal window with
7259 the mouse without raising the window.  However, mouse bindings on
7260 the client window are not guaranteed to work anymore (see
7261 .B Mouse
7262 command.  Note that this style forces that the initial click is
7263 passed to the application.  The distance that the pointer must be
7264 moved to trigger this is controlled by the
7265 .B MoveThreshold
7266 command.
7268 .B Grabbing the focus when a new window is created
7270 New normal or transient windows with the
7271 .IR FPGrabFocus " or " FPGrabFocusTransient
7272 style automatically receive the focus when they are created.
7273 .I FPGrabFocus
7274 is the default for windows with the
7275 .I ClickToFocus
7276 style.  Note that even if these styles are disabled, the
7277 application may take the focus itself.  Fvwm can not prevent this.
7280 .I OverrideGrabFocus
7281 style instructs fvwm to never take away the focus from such a
7282 window via the
7283 .IR GrabFocus " or " GrabFocusTransient
7284 styles.  This can be useful if you like to have transient windows
7285 receive the focus immediately, for example in a web browser, but
7286 not while you are working in a terminal window or a text
7287 processor.
7289 The above three styles are accompanied by
7290 .IR FPReleaseFocus ", " FPReleaseFocusTransient " and "
7291 .IR FPOverrideReleaseFocus .
7292 These control if the focus is returned to another window when the
7293 window is closed.  Otherwise no window or the window under the
7294 pointer receives the focus.
7296 .IR ClickToFocusPassesClickOff " and " ClickToFocusPassesClick
7297 controls whether a mouse click to focus a window is sent to the
7298 application or not.  Similarly,
7299 .I ClickToFocusRaisesOff/MouseFocusClickRaisesOff
7301 .I ClickToFocusRaises/MouseFocusClickRaises
7302 control if the window is raised (but depending on the focus
7303 model).
7305 Note: in fvwm versions prior to
7306 2.5.3, the "Click..." options applied only to windows with
7307 .I ClickToFocus
7308 while the "Mouse..." options applied to windows with a different
7309 focus policy.  This is no longer the case.
7311 The old
7312 .I GrabFocus
7313 style is equivalent to using
7314 .IR FPGrabFocus " + " FPReleaseFocus .
7316 The old
7317 .I GrabFocusTransient
7318 style is equivalent to using
7319 .IR FPGrabFocusTransient " + " FPReleaseFocusTransient .
7321 .I Lenience
7322 is equivalent to the new style
7323 .IR FPLenient .
7325 .\" +++++++++++++++ styles affecting the window title
7327 .B Window title
7329 .IR Title " and " !Title
7330 options determine if the window has a title-bar or not.  By
7331 default all windows have a title-bar.
7332 .I NoTitle
7333 is equivalent to
7334 .I !Title
7335 but is deprecated.
7337 Windows with the
7338 .IR TitleAtBottom ", " TitleAtLeft " or " TitleAtRight
7339 style have a title-bar below, to the left or to the right of the
7340 window instead of above as usual.  The
7341 .I TitleAtTop
7342 style restores the default placement.  Even if the window has the
7343 .I !Title
7344 style set, this affects the
7345 .I WindowShade
7346 command.  Please check the
7347 .B WindowShade
7348 command for interactions between that command and these styles.
7349 Titles on the left or right side of the windows are augmented by
7350 the following styles:
7352 Normally, the text in titles on the left side of a window is
7353 rotated counterclockwise by 90 degrees from the normal upright
7354 position and 90 degrees clockwise for titles on the right side.
7355 It can also be rotated in the opposite directions with
7356 .IR LeftTitleRotatedCW " if " TitleAtLeft
7357 is used, and with
7358 .IR RightTitleRotatedCCW " if " TitleAtRight
7359 is used.  The defaults can be restored with
7360 .IR LeftTitleRotatedCCW " and " RightTitleRotatedCW .
7361 A normal horizontal text may be rotated as well with
7362 .IR TopTitleRotated " if " TitleAtTop
7363 is used, and with
7364 .IR BottomTitleRotated " if " TitleAtBottom
7365 is used.  The defaults can be restored with
7366 .IR TopTitleNotRotated " and " BottomTitleNotRotated .
7368 By default the title bar decoration defined using the
7369 .B TitleStyle
7370 command is rotated following the title text rotation (see the
7371 previous paragraph). This can be disabled by using the
7372 .I !UseTitleDecorRotation
7373 style.
7374 .I UseTitleDecorRotation
7375 reverts back to the default.
7377 With the
7378 .I StippledTitle
7379 style, titles are drawn with the same effect that is usually
7380 reserved for windows with the
7381 .IR Sticky ", " StickyAcrossPages " or " StickyAcrossDesks
7382 style.
7383 .I !StippledTitle
7384 reverts back to normal titles.
7385 .I StippledTitleOff
7386 is equivalent to
7387 .I !StippledTitle
7388 but is deprecated.
7390 .I Color
7391 takes two arguments.  The first is the window-label text color and
7392 the second is the window decorations normal background color. The
7393 two colors are separated with a slash.  If the use of a slash
7394 causes problems then the separate
7395 .IR ForeColor " and " BackColor
7396 options can be used.
7398 .I Colorset
7399 takes the colorset number as its sole argument and overrides the
7400 colors set by
7401 .IR Color .
7402 Instead, the corresponding colors from the given colorset are
7403 used.  Note that all other features of a colorset are not used.
7404 Use the
7405 .I Colorset
7406 decoration style in the
7407 .BR TitleStyle " and " ButtonStyle
7408 command for that.
7409 To stop using the colorset, the colorset number is omitted.
7412 .IR HilightFore ", " HilightBack " and " HilightColorset
7413 style options work exactly like
7414 .IR ForeColor ", " BackColor " and " Colorset
7415 but are used only if the window has the focus.  These styles
7416 replace the old commands
7417 .BR HilightColor " and " HilightColorset .
7419 .IR BorderColorset
7420 takes the colorset number as its sole argument and overrides the
7421 colors set by
7422 .IR Color " or " Colorset .
7423 for the window border.  To stop using a colorset, the argument is
7424 omitted.
7427 .IR HilightBorderColorset
7428 style option works similarly to
7429 .IR BorderColorset
7430 but is used when the window has the focus.
7432 .I !IconTitle
7433 disables displaying icon labels while the opposite style
7434 .I IconTitle
7435 enables icon labels (default behaviour).
7436 .I NoIconTitle
7437 is equivalent to
7438 .I !IconTitle
7439 but is deprecated.
7441 .IR IconTitleColorset
7442 takes the colorset number as its sole argument and overrides the
7443 colors set by
7444 .IR Color " or " Colorset .
7445 To stop using this colorset, the argument is omitted.
7447 .IR HilightIconTitleColorset
7448 takes the colorset number as its sole argument and overrides the
7449 colors set by
7450 .IR HilightColor " or " HilightColorset .
7451 To stop using this colorset, the argument is omitted.
7453 .IR IconBackgroundColorset
7454 takes the colorset number as its sole argument and uses it to set
7455 a background for the icon picture. By default the icon picture is
7456 not drawn onto a background image. To restore the default, the
7457 argument is omitted.
7459 .IR IconTitleRelief
7460 takes one numeric argument that may be between -50 and +50 pixels
7461 and defines the thickness of the 3D relief drawn around the icon
7462 title. With negative values the icon title gets a pressed in
7463 look. The default is 2 and it is restored if the argument is
7464 omitted.
7466 .IR IconBackgroundRelief
7467 takes one numeric argument that may be between -50 and +50 pixels
7468 and defines the thickness of the 3D relief drawn around the icon
7469 picture background (if any). With negative values the icon
7470 background gets a pressed in look.  The default is 2 and it is
7471 restored if the argument is omitted.
7473 .IR IconBackgroundPadding
7474 takes one numeric argument that may be between 0 and 50 pixels and
7475 defines the amount of free space between the relief of the icon
7476 background picture (if any) and the icon picture. The default is 2
7477 and it is restored if the argument is omitted.
7480 .IR Font " and " IconFont
7481 options take the name of a font as their sole argument. This font
7482 is used in the window or icon title.  By default the font given in
7484 .B DefaultFont
7485 command is used.  To revert back to the default, use the style
7486 without the name argument.  These styles replace the older
7487 .BR WindowFont " and " IconFont
7488 commands.
7491 .I IndexedWindowName
7492 style causes fvwm to use window titles in the form
7494 .IR name " (" i ") "
7496 where
7497 .I name
7498 is the exact window name and
7499 .I i
7500 is an integer which represents the
7501 .I i "th"
7502 window with
7503 .I name
7504 as window name.
7505 .I ExactWindowName
7506 restores the default which is to use the exact window name.
7507 .I IndexedIconName
7509 .I ExactIconName
7510 work the same as
7511 .I IndexedWindowName
7513 .I ExactWindowName
7514 styles but for the icon titles.
7516 .\" +++++++++++++++ styles affecting title buttons
7518 .B Title buttons
7519 .IR Button " and " !Button
7520 take a numeric argument which is the number of the title-bar
7521 button which is to be shown or omitted.
7522 .IR NoButton
7523 is equivalent to
7524 .IR !Button
7525 but is deprecated.
7527 .I MwmButtons
7528 makes the
7529 .B Maximize
7530 button look pressed-in when the window is maximized.  See the
7531 .I MwmDecorMax
7532 flag in
7533 .B ButtonStyle
7534 for more information.  To switch this style off again, use the
7535 .I FvwmButtons
7536 style.
7538 .\" +++++++++++++++ styles affecting borders
7540 .B Borders
7542 .I !Borders
7543 suppresses the window border (but not the title) completely.  The
7544 .I Borders
7545 style enables them again.  Without borders, all other styles
7546 affecting window borders are meaningless.
7548 .I MwmBorder
7549 makes the 3D bevel more closely match Mwm's.
7550 .I FvwmBorder
7551 turns off the previous option.
7553 With the
7554 .I !Handles
7555 style, the window does not get the handles in the window corners
7556 that are commonly used to resize it.  With
7557 .IR !Handles ,
7558 the width from the
7559 .I BorderWidth
7560 style is used.  By default, or if
7561 .I Handles
7562 is specified, the width from the
7563 .I HandleWidth
7564 style is used.
7565 .I NoHandles
7566 is equivalent to
7567 .I !Handles
7568 but is deprecated.
7570 .I HandleWidth
7571 takes a numeric argument which is the width of the border to place
7572 the window if it does have resize-handles.
7574 .I BorderWidth
7575 takes a numeric argument which is the width of the border to place
7576 the window if it does not have resize-handles.  It is used only if
7578 .I !Handles
7579 style is specified too.
7581 .I DepressableBorder
7582 makes the border parts of the window decoration look sunken in
7583 when a button is pressed over them.  This can be disabled again
7584 with the
7585 .I FirmBorder
7586 style.
7588 .\" +++++++++++++++ icons, shading, maximizing, movement, resizing
7590 .B Icons, shading, maximizing, movement, resizing
7591 .I Icon
7592 takes an (optional) unquoted string argument which is the icon
7593 bitmap or pixmap to use. Icons specified this way override pixmap
7594 icons, but not icon windows or the ewmh icon, provided by the
7595 client in the application (with the WM_HINTS property or with the
7596 ewmh _NET_WM_ICON property).  The
7597 .I IconOverride
7598 style changes the behavior to override any client-provided icons;
7600 .I NoIconOverride
7601 style changes the behavior to not override any client-provided
7602 icons; the default overriding behavior can be activated with the
7603 .I NoActiveIconOverride
7604 style.  With this style, fvwm uses application provided icons if
7605 the icon is changed but uses the icon provided in the
7606 configuration file until then.
7608 There is one exception to these rules, namely
7610 Style * Icon unknown.xpm
7612 doesn't force the unknown.xpm icon on every window, it just sets
7613 the default icon like the DefaultIcon command. If you really want
7614 all windows to have the same icon, you can use
7616 Style ** Icon unknown.xpm
7618 If the
7619 .I NoIcon
7620 attribute is set then the specified window simply disappears when
7621 it is iconified.  The window can be recovered through the
7622 window-list.  If
7623 .I Icon
7624 is set without an argument then the
7625 .I NoIcon
7626 attribute is cleared but no icon is specified.  An example which
7627 allows only the
7628 .B FvwmPager
7629 module icon to exist:
7631 Style * NoIcon
7632 Style FvwmPager Icon
7635 .I IconBox
7636 takes no argument, four numeric arguments (plus optionally a
7637 screen specification), an X11 geometry string or the string
7638 "none":
7640 .RI IconBox " [" "screen scr-spec" "] " "l t r b"
7644 IconBox geometry
7646 Where
7647 .I l
7648 is the left coordinate,
7649 .I t
7650 is the top,
7651 .I r
7652 is right and
7653 .I b
7654 is bottom.  Negative coordinates indicate distance from the right
7655 or bottom of the screen.
7656 If the first argument is the word
7657 .IR screen ,
7659 .I scr-spec
7660 argument specifies the Xinerama screen on which the IconBox is
7661 defined.  It can be the usual screen Xinerama specification, 'p',
7662 \'c', 'g', a screen number or the additional 'w' for the screen
7663 where the window center is located.  This is only useful with
7664 multiple Xinerama screens.
7665 The "l t r b" specification is more flexible than an X11 geometry.
7666 For example:
7668 IconBox -80 240 -1 -1
7670 defines a box that is 80 pixels wide from the right edge,
7671 240 pixels down from the top, and continues to the bottom of
7672 the screen.
7674 Perhaps it is easier to use is an X11
7675 geometry string though:
7677 IconBox 1000x70-1-1
7679 places an 1000 by 70 pixel icon box on the bottom of the screen
7680 starting in the lower right  hand corner of the screen.
7681 One way to figure out a geometry like this is to use a window
7682 that resizes in pixel increments, for example, xv.
7683 Then resize and place the xv window where you want the iconbox.
7684 Then use FvwmIdent to read the windows geometry.
7685 The icon box is a region of the screen
7686 where fvwm attempts to put icons for any matching window, as long
7687 as they do not overlap other icons.
7688 Multiple icon boxes can be
7689 defined as overflow areas.  When the first icon box is full, the
7690 second one is filled.  All the icon boxes for one style must be
7691 defined in one
7692 .B Style
7693 command.  For example:
7695 Style * IconBox -80 240 -1 -1, \\
7696         IconBox 1000x70-1-1
7698 A Style command with the IconBox option replaces any icon box
7699 defined previously by another Style command for the same style.
7700 Thats why the backslash in the previous example is required.
7702 Note: The geometry for the icon box command takes the additional
7703 screen specifier "@w" in case a Xinerama setup is used.  This
7704 designates the screen where the window center is located.  The
7705 additional screen specifier is not allowed anywhere else.
7707 If you never define an icon box, or you fill all the icon boxes,
7708 fvwm has a default icon box that covers the screen, it fills top
7709 to bottom, then left to right, and has an 80x80 pixel grid.  To
7710 disable all but the default icon box you can use IconBox without
7711 arguments in a separate
7712 .B Style
7713 command.  To disable all icon boxes including the default icon
7714 box, the argument "none" can be specified.
7716 Hint: You can auto arrange your icons in the icon box with a
7717 simple fvwm function.  Put the "DeiconifyAndRearrange" function
7718 below in your configuration file:
7720 AddToFunc DeiconifyAndRearrange
7721  + C Iconify off
7722  + C All (CurrentPage, Iconic) PlaceAgain Icon
7724 And then replace all places where you call the
7725 .B Iconify
7726 command to de-iconify an icon with a call to the new
7727 function.  For example replace
7729 AddToFunc IconFunc
7730  + C Iconify off
7731  + M Raise
7732  + M Move
7733  + D Iconify off
7735 Mouse 1 I A Iconify off
7737 with
7739 AddToFunc IconFunc
7740  + C DeiconifyAndRearrange
7741  + M Raise
7742  + M Move
7743  + D DeiconifyAndRearrange
7745 Mouse 1 I A DeiconifyAndRearrange
7747 .I IconGrid
7748 takes 2 numeric arguments greater than zero.
7750 .I IconGrid x y
7752 Icons are placed in an icon box by stepping through the icon box
7753 using the
7754 .IR x " and " y
7755 values for the icon grid, looking for a free space. The default
7756 grid is 3 by 3 pixels which gives a tightly packed appearance. To
7757 get a more regular appearance use a grid larger than your largest
7758 icon. Use the
7759 .I IconSize
7760 definition to clip an icon to a maximum size. An
7761 .I IconGrid
7762 definition must follow the
7763 .B IconBox
7764 definition that it applies to:
7766 Style * IconBox -80x240-1-1, IconGrid 90 90
7768 .I IconFill
7769 takes 2 arguments.
7771 .RI "IconFill " "Bottom Right"
7773 Icons are placed in an icon box by stepping through the icon box
7774 using these arguments to control the direction the box is filled
7775 in. By default the direction is left to right, then top to bottom.
7776 This would be expressed as:
7778 IconFill left top
7780 To fill an icon box in columns instead of rows, specify the
7781 vertical direction (top or bottom) first. The directions can be
7782 abbreviated or spelled out as follows: "t", "top", "b", "bot",
7783 "bottom", "l", "lft", "left", "r", "rgt", "right". An
7784 .B IconFill
7785 definition must follow the
7786 .B IconBox
7787 definition that it applies to:
7789 Style * IconBox -80x240-1-1, IconFill b r
7791 .I IconSize
7792 sets limits on the size of an icon image.  Both user-provided
7793 and application-provided icon images are affected.
7795 .RI IconSize " [ " width " " height " [ " maxwidth " " maxheight " ] ]"
7797 All arguments are measured in pixels.  When all four arguments are
7798 passed to
7799 .I IconSize,
7800 .I width
7802 .I height
7803 represent the minimum size of an icon, and
7804 .I maxwidth
7806 .I maxheight
7807 represent the maximum size of an icon.  Icon images that are smaller
7808 than the minimum size are padded.  Icon images that are bigger than
7809 the maximum size are clipped.
7811 If only two arguments are passed to
7812 .I IconSize,
7813 .I width
7815 .I height
7816 represent the absolute size of an icon.  Icons covered by this style
7817 are padded or clipped to achieve the given size.
7819 If no arguments are specified, the default values are used for each
7820 dimension.  This effectively places no limits on the size of an icon.
7822 The value of "-1" can be used in place of any of the arguments to
7823 specify the default value for that dimension.
7825 Note that application-provided icon windows are not affected.
7827 .I MiniIcon
7828 specifies a pixmap to use as the miniature icon for the
7829 window. This miniature icon can be drawn in a title-bar button
7830 (see
7831 .BR ButtonStyle ),
7832 and can be used by various fvwm modules
7833 .RB ( FvwmWinList ", " FvwmIconMan " and " FvwmTaskBar ).
7834 It takes the name of a pixmap as an argument.
7836 .IR WindowShadeShrinks " and " WindowShadeScrolls
7837 control if the contents of a window that is being shaded with the
7838 .B WindowShade
7839 command are scrolled (default) or if they stay in place.  The
7840 shrinking mode is a bit faster
7843 .I WindowShadeSteps
7844 option selects the number of steps for animation when shading a
7845 window with
7846 .BR WindowShade .
7847 It takes one number as its argument.  If the number has a trailing
7848 .RI ' p '
7849 it sets the number of pixels to use as the step size instead of
7850 a fixed number of steps.  0 disables the animation.  This happens
7851 too if the argument is omitted or invalid.
7854 .B WindowShade
7855 command has two modes of operation: busy and lazy shading.  Busy
7856 shading can be 50% slower than lazy shading, but the latter can
7857 look strange under some conditions, for example, if the window
7858 borders, buttons or the title are filled with a tiled pixmap.
7859 Also, the window handles are not drawn in lazy mode and the border
7860 relief may only be drawn partially right before the window reaches
7861 the shaded state or tight after leaves the unshaded state. By
7862 default, fvwm uses lazy mode if there are no bad visual effects
7863 (not counting the window handles) and busy mode otherwise.  Use
7865 .I WindowShadeAlwaysLazy " or " WindowShadeBusy
7866 to force using the lazy or busy mode.  The default setting is
7867 restored with
7868 .IR WindowShadeLazy .
7870 .I ResizeOpaque
7871 instructs fvwm to resize the corresponding windows with their
7872 contents visible instead of using an outline.  Since this causes
7873 the application to redraw frequently it can be quite slow and make
7874 the window flicker excessively, depending on the amount of
7875 graphics the application redraws.  The
7876 .I ResizeOutline
7877 style (default) negates the
7878 .I ResizeOpaque
7879 style.  Many applications do not like their windows being resized
7880 opaque, e.g. XEmacs, Netscape or terminals with a pixmap
7881 background. If you do not like the result, do not use the
7882 .I ResizeOpaque
7883 style for these windows.  To exempt certain windows from opaque
7884 resizing you could use these lines in your configuration file:
7886 Style * ResizeOpaque
7887 Style rxvt ResizeOutline
7888 Style emacs ResizeOutline
7890 .I Sticky
7891 makes the window sticky, i.e. it is always visible on each page
7892 and each desk.  The opposite style,
7893 .I Slippery
7894 reverts back to the default.
7896 .I StickyIcon
7897 makes the window sticky when its iconified.  It de-iconifies on
7898 top the active desktop.
7899 .I SlipperyIcon
7900 reverts back to the default.
7902 .IR StickyAcrossPages " and " StickyAcrossPagesIcon
7903 work like
7904 .IR Sticky " and " StickyIcon ,
7905 but stick the window only across pages, not desks while
7906 .I StickyAcrossDesks " and " StickyAcrossDesksIcon
7907 works the other way round.
7909 Windows that have been marked as
7910 .I Sticky
7912 .I StickyAcrossDesks
7914 .I StickyAcrossPages
7915 have stipples drawn on the titlebar.  This can be negated with the
7916 .I !StickyStippledTitle
7917 style.  The style
7918 .I StickyStippledTitle
7919 puts back the stipples where that window has also been marked as
7920 .I Sticky .
7921 Note that this is the default style for
7922 .I Sticky
7923 windows.
7924 .I Sticky
7925 icons have stipples drawn on the title. This can be disabled in
7926 the same way with the
7927 .I !StickyStippledIconTitle
7928 style.
7930 Windows with the
7931 .I StartIconic
7932 style are shown as icons initially.  Note that some applications
7933 counteract that by deiconifying themselves.  The default is to not
7934 iconify windows and can be set with the
7935 .I StartNormal
7936 style.
7938 .I StippledIconTitle
7939 works like
7940 .I StippledTitle
7941 in that it draws stipples on the titles of icons but does not
7942 make the icon sticky.
7944 .I IgnoreRestack
7945 makes fvwm ignore attempts of clients to raise or lower their own
7946 windows.  By default, the opposite style,
7947 .I AllowRestack
7948 is active.
7950 .IR FixedPosition " and " FixedUSPosition
7951 make fvwm ignore attempts of the user to move the window.  It is
7952 still possible to move the window by resizing it.  To allow the
7953 user to move windows, use the
7954 .IR VariablePosition " or " VariableUSPosition
7955 style.
7957 .IR FixedSize " and " FixedUSSize
7958 make fvwm ignore attempts of the user to resize the window.  To
7959 allow the user to resize windows, use the
7960 .IR VariableSize " or " VariableUSSize
7961 style.
7963 .IR FixedPPosition " and " FixedPSize
7964 make fvwm ignore attempts of the program to move or resize its
7965 windows.  To allow this kind of actions, use the
7966 .IR VariablePPosition " or " VariablePSize
7967 style.  These styles may sometimes affect the initial placement
7968 and dimensions of new windows (depending on the application).  If
7969 windows are created at strange places, try either the
7970 .IR VariablePPosition " or " NoPPosition
7971 styles.  The
7972 .I FixedPSize
7973 style may screw up window dimensions for some applications.  Do Not
7974 use this style in this case.
7976 .IR MoveByProgramMethod
7977 affects how fvwm reacts to requests by the application to move its
7978 windows.  By default, fvwm tries to detect which method to use,
7979 but it sometimes detects the wrong method.  You may come across a
7980 window that travels across the screen by a few pixels when the
7981 application resizes it, moves to a screen border with the frame
7982 decorations off screen, that remembers its position for the next
7983 time it starts but appears in a slighly shifted position, or that
7984 attepmts to become full screen but has the.  Try out both options,
7985 .IR UseGravity " and " IgnoreGravity
7986 on the window (and that window only) and see if that helps.  By
7987 default, fvwm uses the
7988 .I AutoDetect
7989 method.  Once the method was detected, it is never changed again.
7990 As long as fvwm can not detect the proper method, it uses
7991 .IR IgnoreGravity .
7992 To force fvwm to retry the detection, use one of the other two
7993 options first and then use
7994 .I AutoDetect
7995 again.
7997 Note:  This option was introduced to alleviate a problem with the
7998 .SM ICCCM
7999 specification.  The
8000 .SM ICCCM
8001 clearly states that the
8002 .I UseGravity
8003 option should be used, but traditionally applications ignored this
8004 rule.
8006 .IR Closable
8007 enables the functions
8008 .IR Close ,
8009 .I Delete
8011 .I Destroy
8012 to be performed on the windows. This is on by default.
8013 The opposite,
8014 .IR !Closable ,
8015 inhibits the window to be closed.
8017 .IR Iconifiable
8018 enables the function
8019 .I Iconify
8020 to be performed on the windows.
8021 This is on by default.
8022 The opposite,
8023 .IR !Iconifiable ,
8024 inhibits the window from being iconified.
8026 .IR Maximizable
8027 enables the function
8028 .I Maximize
8029 to be performed on the windows.
8030 This is on by default.
8031 The opposite,
8032 .IR !Maximizable ,
8033 inhibits the window from being maximized.
8035 .IR AllowMaximizeFixedSize
8036 enables the function
8037 .I Maximize
8038 to be performed on windows that are not resizable, unless
8039 maximization has been disabled either using the style
8040 .I !Maximizable
8041 or through WM hints.  This is on by default.  The opposite,
8042 .IR !AllowMaximizeFixedSize ,
8043 inhibits all windows that are not resizable from being maximized.
8045 .I ResizeHintOverride
8046 instructs fvwm to ignore the program supplied minimum and maximum
8047 size as well as the resize step size (the character size in many
8048 applications).  This can be handy for broken applications that
8049 refuse to be resized.  Do not use it if you do not need it.  The
8050 default (opposite) style is
8051 .IR !ResizeHintOverride .
8052 Note:  With this style,
8053 .BR FvwmIdent
8054 reports the window's geometry in pixels instead of characters.
8056 .I MaxWindowSize " [ width [ p ]  height [ p ] ]"
8057 Tells fvwm the maximum width and height of a window.  The values
8058 are the percentage of the total screen area.  If the letter
8059 .RI ' p '
8060 is appended to either of the values, the numbers are interpreted
8061 as pixels. This command is useful to force large application
8062 windows to be fully visible.  Neither
8063 .IR height " nor " width
8064 may be less than 100 pixels.  If you omit the parameters or their
8065 values are invalid, both limits are set to 32767 pixels (which is
8066 the default).
8068 With
8069 .I IconifyWindowGroups
8070 all windows in the same window group are iconified and deiconified
8071 at once when any window in the group is (de)iconified.  The default is
8072 .IR IconifyWindowGroupsOff ,
8073 which disables this behavior.  Although a number of applications
8074 use the window group hint, it is rarely used in a proper way, so
8075 it is probably best to use
8076 .I IconifyWindowGroups
8077 only for selected applications.
8079 .\" +++++++++++++++ Window Manager placement
8081 .B Window Manager placement
8082 Applications can place windows at a particular spot on the screen
8083 either by window manager hints or a geometry specification.  When
8084 they do neither, then the window manager steps in to find a place
8085 for the window.  Fvwm knows several ways to deal with this
8086 situation. The default is
8087 .IR TileCascadePlacement .
8089 .I CenterPlacement
8090 automatically places new windows in the center of the display.
8092 .I CascadePlacement
8093 automatically place new windows in a cascading fashion.
8095 .I TileCascadePlacement
8096 automatically places new windows in a smart location - a location
8097 in which they do not overlap any other windows on the screen.  If
8098 no such position can be found
8099 .IR CascadePlacement
8100 is used as a fall-back method.
8102 .I TileManualPlacement
8103 This is the same as
8104 .IR TileCascadePlacement ,
8105 but uses
8106 .IR ManualPlacement
8107 as the fall-back method.
8109 .I UnderMousePlacement
8110 automatically places new windows centered at the current cursor position.
8112 .I MinOverlapPlacement
8113 automatically places new windows in a location in which the
8114 overlapping area in pixels of other windows is minimized.
8115 By default this placement policy tries to avoid
8116 overlapping icons and windows on higher layers.
8117 This can be configured with the
8118 .IR MinOverlapPlacementPenalties
8119 style.
8121 .I MinOverlapPercentPlacement
8122 is similar to
8123 .IR MinOverlapPlacement
8124 but tries to minimize the overlapped percentages of other windows
8125 instead of the overlapped area in pixels.  This placement policy
8126 tries to avoid covering other windows completely and tries even
8127 harder not to cover small windows.
8128 This can be configured with the
8129 .I MinOverlapPlacementPenalties
8131 .I MinOverlapPercentPlacementPenalties
8132 styles.
8134 .I MinOverlapPlacementPenalties
8135 takes at most 6 positive or null decimal arguments:
8137 .I normal ontop icon sticky below strut
8139 if trailing arguments are missing the default is used which is:
8141 1 5 10 1 0.05 50
8143 To reset this style to the default values, prefix it with a '!'.
8144 This style configures the
8145 .IR MinOverlapPlacement " and " MinOverlapPercentPlacement
8146 placement policy.
8148 .I normal
8149 factor affects normal windows, the
8150 .I ontop
8151 factor affects windows with a greater layer than the window being
8152 placed, the
8153 .I icon
8154 factor affects icons, the
8155 .I sticky
8156 factor affects sticky windows, the
8157 .I below
8158 factor affects windows with a smaller layer than the window being
8159 placed, the
8160 .I strut
8161 factor affects the complement of the
8162 .SM EWMH
8163 working area if the window being placed has the
8164 .I EWMHPlacementUseWorkingArea
8165 style and windows with an
8166 .SM EWMH
8167 strut hint (i.e., a "please do not cover me" hint) if the window
8168 being placed has the
8169 .I EWMHPlacementUseDynamicWorkingArea
8170 style.  These factors represent the amount of area that these
8171 types of windows (or area) are counted as, when a new window is
8172 placed.  For example, by default the area of ontop windows is
8173 counted 5 times as much as normal windows.  So
8174 .IR MinOverlapPlacement " and "  MinOverlapPercentPlacement
8175 covers five times as much area of another window before it will
8176 cover an ontop window.  To treat ontop windows the same as other
8177 windows, set this to 1.  To really, really avoid putting windows
8178 under ontop windows, set this to a high value, say 1000. This
8179 style affects the window already mapped and not the window which
8180 is currently placed. There is one exception to this rule: in the
8181 case of the window being placed has the
8182 .I EWMHPlacementUseWorkingArea
8183 style the
8184 .I strut
8185 factor affects the placed window.
8187 .I MinOverlapPercentPlacementPenalties
8188 takes at most 4 positive or null integer arguments:
8190 .I cover_100 cover_95 cover_85 cover_75
8192 if trailing arguments are missing the defaults are used
8193 which are:
8195 12 6 4 1
8197 To reset this style to the default values, prefix it with a '!'.
8198 This style affects the
8199 .I MinOverlapPercentPlacement
8200 placement policy and is similar to the
8201 .I MinOverlapPlacementPenalties
8202 style. The
8203 .I cover_xx
8204 factor is used when the window being placed covers at least
8205 .I xx
8206 percent of the window. This factor is added to the factor
8207 determined by the
8208 .IR MinOverlapPlacementPenalties
8209 style.
8211 .I ManualPlacement
8212 (aka active placement). The user is required to place every new
8213 window manually.  The window only shows as a rubber band until a
8214 place is selected manually. The window is placed when a mouse
8215 button or any key except
8216 .SM Escape
8217 is pressed.  Escape aborts manual placement which places the
8218 window in the top left corner of the screen. If mouse button 2 is
8219 pressed during the initial placement of a window (respectively
8220 .SM Shift
8221 and mouse button 1 in case Mwm emulation has been enabled with the
8222 .B Emulate
8223 command), the user is asked to resize the window too.
8225 It is possible to define buttons usable to place windows with the
8226 .B Move
8227 command and the special context 'P' for placement (see
8228 .B Move
8229 command). However, you can't redefine the way to also resize the
8230 window other than the way it is affected by the
8231 .B Emulate
8232 command. The button used for placing the window can be checked with
8234 .I PlacedByButton
8235 condition (see
8236 .B Current
8237 command).
8239 Example:
8241 Style * ManualPlacement
8243 *FvwmEvent: PassID
8244 *FvwmEvent: add_window GrowDownFunc
8245 AddToFunc StartFunction
8246 + I FvwmEvent
8248 AddToFunc GrowDownFunc
8249 + I windowid $0 (PlacedByButton 3) \\
8250   Resize bottomright keep -0p
8253 Now, whenever a window is created and the user presses button 3 to
8254 finish initial placement, the window is automatically enlarged
8255 until it hits the bottom screen border.
8257 .I Old placement styles
8258 DumbPlacement / SmartPlacement / SmartPlacementOff,
8259 CleverPlacement / CleverPlacementOff,
8260 ActivePlacement / RandomPlacement,
8261 ActivePlacementsHonorsStartsOnPage /
8262 ActivePlacementsHonorsStartsOnPageOff, GlobalOpts
8263 SmartPlacementIsReallySmart / GlobalOpts SmartPlacementIsNormal
8264 are still supported but will be removed in the future. The old and
8265 new styles can be translated according to the following table:
8267 GlobalOpts SmartPlacementIsReallySmart
8268 Style * SmartPlacement
8269   -->
8270 Style * SmartPlacement, CleverPlacement
8272 GlobalOpts SmartPlacementIsNormal
8273 Style * SmartPlacement
8274   -->
8275 Style * SmartPlacement, CleverPlacementOff
8277 Style * DumbPlacement, RandomPlacement
8278   -->
8279 Style * CascadePlacement
8281 Style * DumbPlacement, ActivePlacement
8282   -->
8283 Style * ManualPlacement
8285 Style * SmartPlacement, \\
8286 RandomPlacement, CleverPlacementOff
8287   -->
8288 Style * TileCascadePlacement
8290 Style * SmartPlacement, \\
8291 ActivePlacement, CleverPlacementOff
8292   -->
8293 Style * TileManualPlacement
8295 Style * SmartPlacement, CleverPlacement
8296   -->
8297 Style * MinOverlapPlacement
8299 Style * SmartPlacement, \\
8300 ActivePlacement, CleverPlacement
8301   -->
8302 Style * MinOverlapPercentPlacement
8304 Style * ActivePlacementsHonorsStartsOnPage
8305   -->
8306 Style * ManualPlacementsHonorsStartsOnPage
8308 Style * ActivePlacementsHonorsStartsOnPageOff
8309   -->
8310 Style * ManualPlacementsHonorsStartsOnPageOff
8313 .\" +++++++++++++++ placement options and stacking policy
8315 .B Placement policy options and window stacking
8316 .I !UsePPosition
8317 instructs fvwm to ignore the program specified position (PPosition
8318 hint) when adding new windows.  Using PPosition is required for
8319 some applications, but if you do not have one of those its a real
8320 headache.  Many programs set PPosition to something obnoxious like
8321 0,0 (upper left corner).
8322 Note:
8323 .I !UsePPosition
8324 is equivalent to the deprecated option
8325 .IR NoPPosition .
8327 .I !UseUSPosition
8328 works like
8329 .I !UsePPosition
8330 but applies suppresses using the user specified position indicated
8331 by the program (USPosition hint).  It is generally a bad thing to
8332 override the user's choice, but some applications misuse the
8333 USPosition hint to force their windows to a certain spot on the
8334 screen without the user's consent.
8335 Note:
8336 .I !UseUSPosition
8337 is equivalent to the deprecated option
8338 .IR NoUSPosition .
8340 .IR !UseTransientPPosition " and " UseTransientPPosition
8341 work like
8342 .IR !UsePPosition " and " UsePPosition
8343 but apply only to transient windows.
8344 Note:
8345 .I !UseTransientPPosition
8346 is equivalent to the deprecated option
8347 .IR NoTransientPPosition .
8349 .I !UseIconPosition
8350 instructs fvwm to ignore the program specified icon position
8351 (IconPosition hint) when iconifying the window.
8352 Note:
8353 .I !UseIconPosition
8354 is equivalent to the deprecated option
8355 .IR NoIconPosition .
8357 .I StartsOnDesk
8358 takes a numeric argument which is the desktop number on which the
8359 window should be initially placed.  Note that standard Xt programs
8360 can also specify this via a resource (e.g. "-xrm '*Desk: 1'").
8362 .I StartsOnPage
8363 takes 1, 2, or 3 numeric arguments.  If one or three arguments are
8364 given, the first (or only) argument is the desktop number. If
8365 three arguments are given, the 2nd and 3rd arguments identify the
8366 x,y page position on the virtual window.  If two arguments are
8367 given, they specify the page position, and indicate no desk
8368 preference.  If only one argument is given,
8369 .I StartsOnPage
8370 functions exactly like
8371 .IR StartsOnDesk .
8372 For those standard Xt programs which understand this usage, the
8373 starting desk/page can also be specified via a resource (e.g.,
8374 "-xrm '*page: 1 0 2'").
8375 .I StartsOnPage
8376 in conjunction with
8377 .I SkipMapping
8378 is a useful technique when you want to start an app on some other
8379 page and continue with what you were doing, rather than waiting
8380 for it to appear.
8382 .I StartsOnScreen
8383 takes one argument.  It can be 'p' for the primary screen, 'c' for
8384 the current screen (containing the mouse pointer), 'g' for the
8385 global screen or the screen number itself (counting from zero).  A
8386 new window is placed on the specified Xinerama screen.  The
8387 default is to place windows on the screen that contains the mouse
8388 pointer at the time the window is created.  However, those windows
8389 which are not placed by fvwm (i.e., those with a USPosition hint
8390 from a user specified geometry) are normally placed in a position
8391 relative to the global screen.  The
8392 .I StartsOnScreen
8393 style is also useful to cause these windows to be placed relative
8394 to a specific Xinerama screen.  For example:
8396 Style * StartsOnScreen c
8398 Would cause all windows, including those with their own geometry
8399 to be placed relative to the current Xinerama screen rather than
8400 the global screen.  For those standard Xt programs which
8401 understand this usage, the starting desk/page can also be
8402 specified via a resource (e.g., "-xrm '*fvwmscreen: c'").
8403 ('fvwmscreen' was chosen because some applications already use
8404 \'.screen' for other purposes.)
8406 .I StartsOnPageIncludesTransients
8407 causes the
8408 .I StartsOnPage
8409 style to be applied even for transient windows.  This is not
8410 usually useful, since transients are usually pop ups that you want
8411 to appear in your visible viewport; but occasionally an
8412 application uses a transient for something like a startup window
8413 that needs to be coerced into place.
8415 .I ManualPlacementIgnoresStartsOnPage
8416 suppresses
8417 .IR StartsOnPage " or " StartsOnDesk
8418 placement in the event that both
8419 .IR ManualPlacement " and " SkipMapping
8420 are in effect when a window is created.  This prevents you from
8421 interactively placing a window and then wondering where it
8422 disappeared to, because it got placed on a different desk or page.
8423 .I ManualPlacementHonorsStartsOnPage
8424 allows this to happen anyway.  The option has no effect if
8425 .I SkipMapping
8426 is not in effect, because fvwm switches to the proper desk/page to
8427 perform interactive placement.  The default is
8428 .IR ManualPlacementIgnoresStartsOnPage "; "
8429 .I ManualPlacementHonorsStartsOnPage
8430 matches the way the old
8431 .I StartsOnDesk
8432 style used to handle the situation.
8434 .I UnderMousePlacementIgnoresStartsOnPage
8436 .I UnderMousePlacementHonorsStartsOnPage
8437 work just like
8438 .I ManualPlacementIgnoresStartsOnPage
8440 .I ManualPlacementHonorsStartsOnPage
8441 but augment
8442 .I UnderMousePlacement
8443 instead.
8445 .I CaptureHonorsStartsOnPage
8446 causes the initial capture (of an already existing window) at
8447 startup to place the window according to the
8448 .IR StartsOnPage " and " StartsOnScreen
8449 desk, page and Xinerama screen specification.
8450 .I CaptureIgnoresStartsOnPage
8451 causes fvwm to ignore these settings (including
8452 .IR StartsOnDesk )
8453 on initial capture.  The default is
8454 .IR CaptureIgnoresStartsOnPage .
8456 .I RecaptureHonorsStartsOnPage
8457 causes a window to be placed according to, or revert to, the
8458 .IR StartsOnPage " and " StartsOnScreen
8459 desk, page and Xinerama screen specification on
8460 .BR Restart " or " Recapture .
8461 .I RecaptureIgnoresStartsOnPage
8462 causes fvwm to respect the current window position on
8463 .BR Restart " or " Recapture .
8464 The default is
8465 .IR RecaptureIgnoresStartsOnPage .
8467 .I Layer
8468 accepts one optional argument: a non-negative integer.  This is
8469 the layer the window is put in.  If no argument is given, any
8470 previously set value is deleted and the default layer is implied.
8472 .I StaysOnTop
8473 puts the window in the top layer.  This layer can be changed by
8474 the command
8475 .BR DefaultLayers ;
8476 the default is 6.
8478 .I StaysPut
8479 puts the window in the put layer.  This layer can be changed by
8480 the command
8481 .BR DefaultLayers ;
8482 the default is 4.
8484 .I StaysOnBottom
8485 puts the window in the bottom layer.  This layer can be changed by
8486 the command
8487 .BR DefaultLayers ;
8488 the default is 2.
8490 .I StartsLowered
8491 instructs fvwm to put the window initially at the bottom of its
8492 layer rather than the default
8493 .IR StartsRaised .
8495 .I SkipMapping
8496 tells fvwm not to switch to the desk the window is on when it gets
8497 mapped initially (useful with
8498 .IR StartsOnDesk " or " StartsOnPage ).
8500 .I KeepWindowGroupsOnDesk
8501 makes new windows that have the window group hint set appear on
8502 the same desk as the other windows of the same group.  Since this
8503 behavior may be confusing, the default setting is
8504 .IR ScatterWindowGroups .
8505 The window group hint is ignored when placing windows in this
8506 case.
8508 .\" +++++++++++++++ transient windows
8510 .B Transient windows
8511 .I DecorateTransient
8512 causes transient windows, which are normally left undecorated, to
8513 be given the usual fvwm decorations (title bar, buttons,
8514 etc.). Note that some pop-up windows, such as the xterm menus, are
8515 not managed by the window manager and still do not receive
8516 decorations.
8517 .I NakedTransient
8518 (the default) causes transient windows not to be given the
8519 standard decorations. You can only bind keys or mouse buttons to
8520 the sides and the client part of an undecorated window ('S' and
8521 \'W' contexts in bindings, see
8522 .BR Mouse " and " Key
8523 commands).
8525 A window with the
8526 .I RaiseTransient
8527 style that has transient windows raises all its transients when it
8528 is raised.  The
8529 .I DontRaiseTransient
8530 style disables this behavior.  All windows are then treated as if
8531 they had no transients.
8533 A window with the
8534 .I LowerTransient
8535 style that has transient windows lowers all its transients when it
8536 is lowered.  The
8537 .I DontLowerTransient
8538 style disables this behavior.  All windows are then treated as if
8539 they had no transients.
8542 .I StackTransientParent
8543 style augments
8544 .IR RaiseTransient " and " LowerTransient
8545 styles.  Raising a window with
8546 .I StackTransientParent
8547 style transfers the raise action to the main window if the window
8548 being raised is a transient and its main window has
8549 .I RaiseTransient
8550 style; this effect makes raise on a transient act just like raise
8551 on its main - the whole group is raised.  Similar behavior holds
8552 for lowering a whole group of transients when the main has
8553 .I LowerTransient
8554 style.
8555 .I DontStackTransientParent
8556 turns this behavior off.
8557 .I (Dont)StackTransientParent
8558 has no effect if
8559 .IR RaiseTransient " and " LowerTransient
8560 are not used.
8562 A reasonable emulation of Motif raise/lower on transients is
8563 possible like this
8565 Style * RaiseTransient
8566 Style * LowerTransient
8567 Style * StackTransientParent
8570 .\" +++++++++++++++ Extended WM Hints styles
8572 .B Extended Window Manager Hints styles
8573 To understand the used terminology in this sub section, please
8574 read the section
8575 .BR "EXTENDED WINDOW MANAGER HINTS" .
8577 .I EWMHDonateIcon
8578 instructs fvwm to set the application ewmh icon hint with the icon
8579 that is used by fvwm if the application does not provide such hint
8580 (and if the icon used by fvwm is not an icon window).
8581 .I EWMHDonateMiniIcon
8582 does the same thing for mini icons. This allows compliant pager,
8583 taskbar, iconbox ...etc to display the same (mini) icons as
8584 fvwm. Note that on some hardware (e.g., 8-bit displays) these
8585 styles can slow down window mapping and that in general only one
8586 of these styles is needed by a compliant application.
8587 .I EWMHDontDonateIcon
8589 .I EWMHDontDonateMiniIcon
8590 restore the defaults which are to not set any ewmh (mini) icons
8591 hints.
8593 By default, if an application provides an ewmh icon hint of small
8594 size (i.e., height and width less than or equal to 22), then fvwm
8595 uses this icon as its mini icon.
8596 .I EWMHMiniIconOverride
8597 instructs fvwm to ignore ewmh icons and to use the mini icon
8598 provided by the
8599 .I MiniIcon
8600 style.
8601 .I EWMHNoMiniIconOverride
8602 restores the default.
8604 .I EWMHUseStackingOrderHints
8605 causes fvwm to use
8606 .SM EWMH
8607 hints and respect
8608 .SM EWMH
8609 hints which change the window layer.
8610 .I EWMHIgnoreStackingOrderHints
8611 causes fvwm to ignore
8612 .SM EWMH
8613 layer hints.
8615 An application can ask for some reserved space on the desktop by a
8616 hint.  In the
8617 .SM EWMH
8618 terminology such a hint is called a strut and it is used to
8619 compute the working area and may be used for window placement and
8620 in the maximize command.
8621 .I EWMHIgnoreStrutHints
8622 causes fvwm to ignore such hints, as
8623 .IR EWMHUseStrutHints ,
8624 causes fvwm to use it which is the default.
8626 .I EWMHIgnoreStateHints
8627 causes fvwm to ignore initial
8628 .SM EWMH
8629 state hints when a new window is mapped. The default
8630 .I EWMHUseStateHints
8631 causes fvwm to accept such hints.
8633 .I EWMHIgnoreWindowType
8634 causes fvwm to ignore
8635 .SM EWMH
8636 window type specification. The default
8637 .I !EWMHIgnoreWindowType
8638 causes fvwm to style windows of specified types as such.
8640 .I EWMHMaximizeIgnoreWorkingArea
8641 causes fvwm to ignore the
8642 .SM EWMH
8643 working area when it executes a
8644 .I Maximize
8645 command. With
8646 .I EWMHMaximizeUseWorkingArea
8648 .SM EWMH
8649 working area is used as with
8650 .I EWMHMaximizeUseDynamicWorkingArea
8652 .SM EWMH
8653 dynamic working area is used (the default).
8655 .I EWMHPlacementIgnoreWorkingArea
8656 causes fvwm to ignore the
8657 .SM EWMH
8658 working area when it places (or places again) a window. With
8659 .I EWMHPlacementUseWorkingArea
8661 .SM EWMH
8662 working area is taken in account as with
8663 .I EWMHPlacementUseDynamicWorkingArea
8665 .SM EWMH
8666 dynamic working area is taken in account (the default). Note that
8667 with the
8668 .IR MinOverlapPlacement " and " MinOverlapPercentPlacement
8669 placement policy, the way the
8670 .SM EWMH
8671 (dynamic) working area is taken in account is configurable with
8673 .I MinOverlapPlacementPenalties
8674 style.
8676 .\" +++++++++++++++ miscellaneous
8678 .B Miscellaneous
8680 .IR BackingStore ", " BackingStoreOff " and " BackingStoreWindowDefault
8681 determine if the X server uses backing store for the window or
8682 not.
8683 .I BackingStore
8684 means that the X server tries to keep the obscured parts of a
8685 window in memory.  This is usually slower if the client runs on
8686 the same machine as the X server, but can be much faster if the
8687 connection is slow (see also
8688 .I SaveUnder
8689 below).
8690 .I BackingStoreOff
8691 disables backing store for the window.  By default, fvwm
8692 does not enable or disable backing store itself but leaves is as
8693 the window requested it.  To revert back to the application's
8694 choice, use the
8695 .I BackingStoreWindowDefault
8696 style.
8698 Note: This style is useless if the X server does not allow backing
8699 store.
8701 .I SaveUnder
8702 enables the corresponding window attribute in the X server.  For a
8703 window using this style, the X server tries to store the graphics
8704 below it in memory which is usually slower if the client runs on
8705 the same machine as the X server.
8706 .I SaveUnder
8707 may speed up fvwm if the connection to the X server is slow
8708 (e.g. over a modem link).  To disable save under, use the
8709 .I SaveUnderOff
8710 style.  This is the default. See also
8711 .I BackingStore
8712 above.
8714 Note: This style is useless if the X server does not allow save
8715 under.
8717 .I ParentalRelativity
8718 enables clients that use a background pixmap of type
8719 .IR ParentRelative
8720 to achieve transparency. Fvwm modules that support transparent
8721 colorsets require this setting.
8722 .I Opacity
8723 is the default and should be used for all non-transparent clients
8724 for better performance.
8726 .I MwmDecor
8727 makes fvwm attempt to recognize and respect the mwm decoration
8728 hints that applications occasionally use.  To switch this style
8729 off, use the
8730 .I NoDecorHint
8731 style.
8733 .I MwmFunctions
8734 makes fvwm attempt to recognize and respect the mwm prohibited
8735 operations hints that applications occasionally use.
8736 .I HintOverride
8737 makes fvwm shade out operations that mwm would prohibit, but it
8738 lets you perform the operation anyway.
8739 .I NoFuncHint
8740 allows turns off the mwm hints completely.
8742 .I OLDecor
8743 makes fvwm attempt to recognize and respect the olwm and olvwm
8744 hints that many older XView and OLIT applications use.  Switch
8745 this option off with
8746 .IR NoOLDecor .
8748 With
8749 .I GNOMEIgnoreHints
8750 fvwm ignores all
8751 .SM GNOME
8752 hints for the window, even if
8753 .SM GNOME
8754 compliance is compiled in.  This is useful for those pesky
8755 applications that try to be more clever than the user and use
8756 .SM GNOME
8757  hints to force the window manager to ignore the user's
8758  preferences.  The
8759 .I GNOMEUseHints
8760 style switches back to the default behavior.
8762 .I UseDecor
8763 This style is deprecated and will be removed in the future.  There
8764 are plans to replace it with a more flexible solution in fvwm-3.0.
8766 .I UseDecor
8767 accepts one argument: the name of a decor created with
8768 .BR AddToDecor .
8769 If no decor name is specified, the "Default" decor is
8770 used. Windows do not actually contain decors, but are always
8771 assigned to one.  If the decor is later modified with
8772 .BR AddToDecor ,
8773 the changes are visible for all windows which are assigned to it.
8774 The decor for a window can be reassigned with
8775 .BR ChangeDecor .
8777 .I UseStyle
8778 This style is deprecated and will be removed in the future.  There
8779 are plans to replace it with a more flexible solution in fvwm-3.0.
8781 .I UseStyle
8782 takes one arg, which is the name of another style.  That way you
8783 can have unrelated window names easily inherit similar traits
8784 without retyping.  For example:
8786   Style rxvt UseStyle XTerm
8788 Warning: If a style is built from one or more parent styles and
8789 the parent styles are changed, the derived style is not
8790 modified. To achieve this you have to issue the
8791 .I UseStyle
8792 line again.
8794 .I Unmanaged
8795 Windows with the
8796 .I Unmanaged
8797 style option are ignored by fvwm.  They are not decorated, can not
8798 be moved or resized, etc.  You probably want to use
8799 .B Bugopts RaiseOverUnmanaged
8800 too.  This option can be turned off with the
8801 .IR !Unmanaged
8802 style.
8803 However, windows that are already ignored at the time when the
8804 option is set must be recaptured with the
8805 .B Recapture
8806 command in order to become managed.
8808 .I State
8809 sets the initial value of one of the 32 user defined states
8810 which are associated with each window.  The state number ranges
8811 from 0 to 31 and must be given as an argument.  The states have no
8812 meaning in fvwm, but they can be checked in conditional commands
8813 like
8814 .B Next
8815 with the
8816 .I State
8817 condition and manipulated with the
8818 .B State
8819 command.
8821 # turn on state 11 for xterms ...
8822 Style xterm State 11
8823 # ... but not for rxvts.
8824 Style rxvt !State 11
8827 .\" +++++++++++++++ styles affecting window selection
8829 Windows with the
8830 .I WindowListSkip
8831 styles do not appear in the menu that is created with the
8832 .B WindowList
8833 command or the lists shown in several modules like
8834 .BR FvwmIconMan " or " FvwmWinList .
8835 In the modules, the style can usually be ignored with an option.
8836 Please refer to the man page of the module in question for
8837 further information.  To disable this feature, use the default
8838 style
8839 .IR WindowListHit .
8841 The styles
8842 .IR CirculateSkip " and " CirculateHit
8843 control whether the window is considered by conditional commands,
8844 for example
8845 .BR Next ", " Prev " or " All .
8846 Windows with
8847 .IR CirculateSkip ,
8848 are never selected by conditional commands.  However, the styles
8849 can be overridden explicitly in the condition with the
8850 .IR CirculateHit ", " CirculateHitIcon " or " CirculateHitShaded
8851 conditions, and some conditional commands, e.g.
8852 .BR Current " and " All ,
8853 do this by default.
8854 The styles
8855 .IR CirculateSkipIcon ", " CirculateHitIcon ,
8856 .IR CirculateSkipShaded " and " CirculateHitShaded
8857 work like
8858 .IR CirculateSkip " and " CirculateHit
8859 but apply only to iconic or shaded windows.
8860 Note: if multiple ...Skip... options are combined, windows are
8861 only selected if they match none of the given conditions.  So,
8862 with
8864 Style * CirculateSkipIcon, CirculateSkipShaded
8866 only windows that are neither iconic nor shaded are selected.
8867 Note:  For historical reasons, the conditional commands understand
8868 the names of these styles as condition names.  Take care not to
8869 confuse them.
8871 .\" +++++++++++++++ examples
8873 .B Examples
8875 # Change default fvwm behavior to no title-
8876 # bars on windows! Also define a default icon.
8877 Style *             !Title,                \\
8878                     Icon unknown1.xpm,     \\
8879                     BorderWidth 4,         \\
8880                     HandleWidth 5
8882 # now, window specific changes:
8883 Style Fvwm*       !Handles, Sticky,        \\
8884                   WindowListSkip,          \\
8885                   BorderWidth 0
8886 Style FvwmPager   StaysOnTop, BorderWidth 0
8887 Style *lock       !Handles, Sticky,        \\
8888                   StaysOnTop, WindowListSkip
8889 Style xbiff       Sticky, WindowListSkip
8890 Style FvwmButtons !Handles, Sticky,        \\
8891                   WindowListSkip
8892 Style sxpm        !Handles
8894 # Put title-bars back on xterms only!
8895 Style xterm     Title, Color black/grey
8897 Style rxvt        Icon term.xpm
8898 Style xterm       Icon rterm.xpm
8899 Style xcalc       Icon xcalc.xpm
8900 Style xbiff       Icon mail1.xpm
8901 Style xmh         Icon mail1.xpm,         \\
8902                     StartsOnDesk 2
8903 Style xman        Icon xman.xpm
8904 Style matlab      Icon math4.xpm,         \\
8905                     StartsOnDesk 3
8906 Style xmag        Icon magnifying_glass2.xpm
8907 Style xgraph      Icon graphs.xpm
8908 Style FvwmButtons Icon toolbox.xpm
8909 Style Maker       StartsOnDesk 1
8910 Style signal      StartsOnDesk 3
8912 # Fire up Netscape on the second desk, in the
8913 # middle of my 3x3 virtual desktop, and do not
8914 # bother me with it...
8915 Style Netscape* SkipMapping,              \\
8916                 StartsOnPage 1 1 1
8918 Note that all properties for a window are or'ed together.  In the
8919 above example "FvwmPager" gets the property
8920 .I StaysOnTop
8921 via an exact window name match but also gets
8922 .IR !Handles ", " Sticky " and " WindowListSkip
8923 by a match to "Fvwm*".  It gets
8924 .I !Title
8925 by virtue of a match to "*".  If conflicting styles are specified
8926 for a window, then the last style specified is used.
8929 .BI "WindowStyle " "options"
8930 sets attributes (styles) on the selected window. The
8931 .I options
8932 are exactly the same as for the
8933 .B Style
8934 command.
8936 .SS OTHER COMMANDS CONTROLLING WINDOW STYLES
8939 .B "AddButtonStyle \fIbutton\fP \
8940 [\fIstate\fP\
8941 ] [\fIstyle\fP\
8942 ] [-- [!] \fIflag\fP \
8943 ...]"
8945 Adds a button style to
8946 .IR button .
8947 .I button
8948 can be a button number, or one of "All", "Left" or "Right".
8949 .I state
8950 can be "ActiveUp", "ActiveDown", "InactiveUp" or "InactiveDown",
8951 or "Active" (the same as both "ActiveUp" and "ActiveDown")
8952 or "Inactive" (the same as both "InactiveUp" and "InactiveDown")
8953 or any of these 6 with "Toggled" prepended.
8954 The "Active" states apply to the focused window, the "Inactive"
8955 ones apply to all other windows. The "Up" states apply to the
8956 non pressed buttons, the "Down" ones apply to pressed buttons.
8957 The "Toggled" prefix refers to maximized, shaded or sticky windows
8958 that have the corresponding
8959 .I MwmDecor...
8960 button style set.
8961 Additionally, the following shortcuts may be used: "AllNormal",
8962 "AllToggled", "AllActive", "AllInactive", "AllUp", "AllDown".
8963 They are actually different masks for 4 individual states from
8964 8 total.  These are supported too: "AllActiveUp", "AllActiveDown",
8965 "AllInactiveUp", "AllInactiveDown".
8968 .I state
8969 is omitted, then the style is added to every state.  If the
8970 .IR style " and " flags
8971 are enclosed in parentheses, then multiple
8972 .I state
8973 definitions can be placed on a single line.
8974 .I Flags
8975 for additional button styles cannot be changed after definition.
8977 Buttons are drawn in the order of definition, beginning with the
8978 most recent button style, followed by those added with
8979 .BR AddButtonStyle .
8980 To clear the button style stack, change style flags, or for
8981 descriptions of available styles and flags, see the
8982 .B ButtonStyle
8983 command.  Examples:
8985 ButtonStyle 1 Pixmap led.xpm -- Top Left
8986 ButtonStyle 1 ActiveDown HGradient 8 grey \\
8987   black
8988 ButtonStyle All --  UseTitleStyle
8989 AddButtonStyle 1 ActiveUp (Pixmap a.xpm)  \\
8990   ActiveDown (Pixmap b.xpm -- Top)
8991 AddButtonStyle 1 Vector 4 50x30@1 70x70@0 \\
8992   30x70@0 50x30@1
8994 Initially for this example all button states are set to a pixmap.
8995 The second line replaces the "ActiveDown" state with a gradient
8996 (it overrides the pixmap assigned to it in the line before, which
8997 assigned the same style to every state).  Then, the
8998 .I UseTitleStyle
8999 flag is set for all buttons, which causes fvwm to draw any styles
9000 set with
9001 .B TitleStyle
9002 before drawing the buttons.  Finally,
9003 .B AddButtonStyle
9004 is used to place additional pixmaps for both "ActiveUp" and
9005 "ActiveDown" states and a vector button style is drawn on top of
9006 all states.
9009 .B "AddTitleStyle [\fIstate\fP\
9010 ] [\fIstyle\fP\
9011 ] [-- [!] \fIflag\fP \
9012 ...]"
9013 Adds a title style to the title-bar.
9014 .I state
9015 can be "ActiveUp", "ActiveDown", "InactiveUp" or "InactiveDown",
9016 or "Active" (the same as both "ActiveUp" and "ActiveDown")
9017 or "Inactive" (the same as both "InactiveUp" and "InactiveDown")
9018 or any of these 6 with "Toggled" prepended.  If
9019 .I state
9020 is omitted, then the style is added to every state.  If the
9021 .IR style " and " flags
9022 are enclosed in parentheses, then multiple
9023 .I state
9024 definitions can be placed on a single line.  This command is quite
9025 similar to the
9026 .B AddButtonStyle
9027 command (see above).
9029 Title-bars are drawn in the order of definition, beginning with
9030 the most recent
9031 .BR TitleStyle ,
9032 followed by those added with
9033 .BR AddTitleStyle .
9034 To clear the title style stack, change style flags, or for the
9035 descriptions of available styles and flags, see the
9036 .BR TitleStyle " and " ButtonStyle
9037 commands.
9040 .BI "AddToDecor " decor
9041 This command is deprecated and will be removed in the future.  There
9042 are plans to replace it with a more flexible solution in fvwm-3.0.
9044 Add or divert commands to the decor named
9045 .IR decor .
9046 A decor is a name given to the set of commands which affect button
9047 styles, title-bar styles and border styles.  If
9048 .I decor
9049 does not exist it is created; otherwise the existing
9050 .I decor
9051 is modified.  Note: Earlier versions allowed to use the
9052 .BR HilightColor ", " HilightColorset " and " WindowFont
9053 commands in decors.  This is no longer possible.  Please use the
9054 .I Style
9055 command with the
9056 .IR Hilight... " and " Font
9057 options.
9059 New decors start out exactly like the "default" decor without any
9060 style definitions.  A given decor may be applied to a set of
9061 windows with the
9062 .I UseDecor
9063 option of the
9064 .B Style
9065 command.  Modifying an existing decor affects all windows which
9066 are currently assigned to it.
9068 .B AddToDecor
9069 is similar in usage to the
9070 .BR AddToMenu " and " AddToFunc
9071 commands, except that menus and functions are replaced by
9072 .BR ButtonStyle ", " AddButtonStyle ", " TitleStyle ,
9073 .BR AddTitleStyle " and " BorderStyle
9074 commands.  Decors created with
9075 .B AddToDecor
9076 can be manipulated with
9077 .BR ChangeDecor ", " DestroyDecor ", " UpdateDecor
9078 and the
9079 .IB "UseDecor " Style
9080 option.
9082 The following example creates a decor "FlatDecor" and style
9083 "FlatStyle".  They are distinct entities:
9085 AddToDecor FlatDecor
9086 + ButtonStyle All \\
9087     Active   (-- flat) \\
9088     Inactive (-- flat)
9089 + TitleStyle  -- flat
9090 + BorderStyle -- HiddenHandles NoInset
9092 Style FlatStyle \\
9093     UseDecor FlatDecor, HandleWidth 4, \\
9094     ForeColor   white, BackColor   grey40, \\
9095     HilightFore black, HilightBack grey70
9097 Style xterm UseStyle FlatStyle
9099 An existing window's decor may be reassigned with
9100 .BR ChangeDecor .
9101 A decor can be destroyed with
9102 .BR DestroyDecor .
9104 DestroyDecor FlatDecor
9105 AddToDecor FlatDecor ...
9107 Style FlatStyle UseDecor FlatDecor
9109 and now apply the style again:
9111 Style xterm UseStyle FlatStyle
9115 .B "BorderStyle [\fIstate\fP\
9116 ] [\fIstyle\fP\
9117 ] [-- [!] \fIflag\fP \
9118 ...]"
9119 Defines a border style for windows.
9120 .I state
9121 can be either "Active" or "Inactive".  If
9122 .I state
9123 is omitted, then the style is set for both states.  If the
9124 .IR style " and " flags
9125 are enclosed in parentheses, then multiple
9126 .I state
9127 definitions can be specified per line.
9129 .I style
9130 is a subset of the available button styles, and can only be
9131 .I TiledPixmap
9132 (uniform pixmaps which match the bevel colors work best this
9133 way) or Colorset. If a
9134 .RI ' ! '
9135 is prefixed to any
9136 .IR flag ,
9137 the behavior is negated.  If
9138 .I style
9139 is not specified, then one can change flags without resetting the
9140 style.
9143 .I HiddenHandles
9144 flag hides the corner handle dividing lines on windows with
9145 handles (this option has no effect for NoHandle windows).  By
9146 default,
9147 .I HiddenHandles
9148 is disabled.
9151 .I NoInset
9152 flag supplements
9153 .IR HiddenHandles .
9154 If given, the inner bevel around the window frame is not drawn.
9156 .I HiddenHandles
9157 is not specified, the frame looks a little strange.
9159 .I Raised
9160 causes a raised relief pattern to be drawn (default).
9161 .I Sunk
9162 causes a sunken relief pattern to be drawn.
9163 .I Flat
9164 inhibits the relief pattern from being drawn.
9166 To decorate the active and inactive window borders with a textured
9167 pixmap, one might specify:
9169 BorderStyle Active TiledPixmap marble.xpm
9170 BorderStyle Inactive TiledPixmap granite.xpm
9171 BorderStyle Active -- HiddenHandles NoInset
9173 To clear the style for both states:
9175 BorderStyle Simple
9177 To clear for a single state:
9179 BorderStyle Active Simple
9181 To unset a flag for a given state:
9183 BorderStyle Inactive -- !NoInset
9185 title-bar buttons can inherit the border style with the
9186 .I UseBorderStyle
9187 flag (see
9188 .BR ButtonStyle ).
9191 .B "ButtonState [\fIActiveDown\fP bool]\
9192  [\fIInactive\fP bool]\
9193  [\fIInactiveDown\fP bool]"
9195 .B ButtonState
9196 command controls which states of the window titles and title
9197 buttons are used.  The default is to use all four states:
9198 "ActiveUp", "ActiveDown", "InactiveUp" and "InactiveDown" (see
9199 .BR ButtonStyle " and " TitleStyle
9200 commands).  The
9201 .I bool
9202 argument after the key word controls if the designated state is
9203 used ("True") or not ("False").  The "ActiveUp" state cannot be
9204 deactivated. If no arguments are provided or the given arguments
9205 are illegal, the default is restored.
9208 .I ActiveDown
9209 argument is "False", no different button style
9210 for the pressed down buttons used, instead "ActiveUp" state is
9211 used even when button is pressed.
9214 .I Inactive
9215 argument is "False", focused and unfocused windows
9216 look similarly, the corresponding "Active" states are always used.
9219 .I InactiveDown
9220 argument is "False" (only applied when
9221 .I Inactive
9222 is "True"), the pressed titles and title buttons in non-focused
9223 windows are drawn using "InactiveUp" or "ActiveUp" states
9224 depending on the values of the other key words.
9227 .B "ButtonStyle \fIbutton\fP \
9228 [\fIstate\fP\
9229 ] [\fIstyle\fP\
9230 ] [-- [!] \fIflag\fP \
9231 ...]"
9232 Sets the button style for a title-bar button.
9233 .I button
9234 is the title-bar button number between 0 and 9, or one of "All",
9235 "Left", "Right", or "Reset".  Button numbering is described in the
9236 .B Mouse
9237 command section.  If the
9238 .IR style " and " flags
9239 are enclosed in parentheses, then multiple
9240 .I state
9241 definitions can be specified per line.
9243 .I state
9244 refers to which button state should be set.  Button states are
9245 defined as follows: "ActiveUp" and "ActiveDown" refer to the
9246 un-pressed and pressed states for buttons on active windows; while
9247 the "InactiveUp" and "InactiveDown" states denote buttons on
9248 inactive windows.  The shortcut "Active" denotes both "ActiveUp" and
9249 "ActiveDown" states.  Shortcut "Inactive" denotes both "InactiveUp"
9250 and "InactiveDown" states.
9251 The similar state names like just described, but with the "Toggled"
9252 prefix are used instead for title buttons which have one of the
9253 .IR MwmDecorMax ", " MwmDecorShade ", " MwmDecorStick " or " MwmDecorLayer
9254 hints, if the window is maximized, shaded, sticky or placed on specific
9255 layer, respectively.
9257 AddToDecor Default
9258  + ButtonStyle 6                   \\
9259    Vector 4 50x25@1 85x75@0 15x75@0 50x25@1
9260  + ButtonStyle 6 ToggledActiveUp   \\
9261    Vector 4 50x75@0 85x25@1 15x25@0 50x75@0
9262  + ButtonStyle 6 ToggledActiveDown \\
9263    Vector 4 50x75@0 85x25@1 15x25@0 50x75@0
9264  + ButtonStyle 6 ToggledInactive   \\
9265    Vector 4 50x75@0 85x25@1 15x25@0 50x75@0
9266  + ButtonStyle 6 - MwmDecorShade
9267 Mouse 0 6 N WindowShade
9269 Additionally, the following shortcuts may be used: "AllNormal",
9270 "AllToggled", "AllActive", "AllInactive", "AllUp", "AllDown".
9271 They are actually different masks for 4 individual states from
9272 8 total.  These are supported too: "AllActiveUp", "AllActiveDown",
9273 "AllInactiveUp", "AllInactiveDown".
9276 .I state
9277 is specified,
9278 that particular button state is set.  If
9279 .I state
9280 is omitted, every state is set.  Specifying a style destroys the
9281 current style (use
9282 .B AddButtonStyle
9283 to avoid this).
9286 .I style
9287 is omitted, then state-dependent flags can be set for the primary
9288 button style without destroying the current style.  Examples (each
9289 line should be considered independent):
9291 ButtonStyle Left -- flat
9292 ButtonStyle All ActiveUp (-- flat) \\
9293   Inactive (-- flat)
9295 The first line sets every state of the left buttons to flat, while
9296 the second sets only the "ActiveUp" and "Inactive" states of every
9297 button to flat (only flags are changed; the buttons' individual
9298 styles are not changed).
9300 If you want to reset all buttons to their defaults:
9302 ButtonStyle Reset
9304 To reset the "ActiveUp" button state of button 1 to the default:
9306 ButtonStyle 1 ActiveUp Default
9308 To reset all button states of button 1 to the default of
9309 button number 2:
9311 ButtonStyle 1 Default 2
9313 For any button, multiple
9314 .I state
9315 definitions can be given on one line by enclosing the
9316 .IR style " and " flags
9317 in parentheses.  If only one definition per line is given the
9318 parentheses can be omitted.
9320 .I flags
9321 affect the specified
9322 .IR state .
9323 If a
9324 .RI ' ! '
9325 is prefixed to any
9326 .IR flag ,
9327 its behavior is negated.  The available state-dependent flags for
9328 all styles are described here (the
9329 .B ButtonStyle
9330 entry deals with state-independent flags).
9332 .I Raised
9333 causes a raised relief pattern to be drawn.
9335 .I Sunk
9336 causes a sunken relief pattern to be drawn.
9338 .I Flat
9339 inhibits the relief pattern from being drawn.
9341 .I UseTitleStyle
9342 causes the given button state to render the current title style
9343 before rendering the buttons' own styles.  The
9344 .IR Raised ", " Flat " and " Sunk
9345 .B TitleStyle
9346 flags are ignored since they are redundant in this context.
9348 .I UseBorderStyle
9349 causes the button to inherit the decorated
9350 .B BorderStyle
9351 options.
9353 .IR Raised ", " Sunk " and " Flat
9354 are mutually exclusive, and can be specified for the initial
9355 .B ButtonStyle
9356 only.
9357 .IR UseTitleStyle " and " UseBorderStyle
9358 are also mutually exclusive (both can be off however).  The
9359 default is
9360 .I Raised
9361 with both
9362 .I UseBorderStyle " and " UseTitleStyle
9363 left unset.
9365 .I Important note
9366 for the "ActiveDown" and "InactiveDown" states:  When a button is
9367 pressed, the relief is inverted.  Because of this, to obtain the
9368 raised look in "ActiveDown" or "InactiveDown" states you must
9369 specify the opposite of the desired relief (i.e.
9370 .I Sunk
9371 for "ActiveDown" or "InactiveDown").  This behavior is consistent,
9372 but may seem confusing at first.  The same applies to the
9373 "Toggled" states.
9375 Button styles are classified as non-destructive, partially
9376 destructive, or fully destructive.  Non-destructive styles do not
9377 affect the image. Partially destructive styles can obscure some or
9378 all parts of the underlying image (i.e.
9379 .IR Pixmap ).
9380 Fully destructive styles obscure the entire underlying image (i.e.
9381 .I Solid
9382 or one of the
9383 .I gradient
9384 styles).  Thus, if stacking styles with
9385 .BR AddButtonStyle " (or " AddTitleStyle
9386 for title-bars), use care in sequencing styles to minimize redraw.
9388 The available styles are:
9390 .IR Simple ", " Default ", " Solid ", " Colorset ", " Vector ,
9391 .IR ?Gradient ", " Pixmap ", " AdjustedPixmap ,
9392 .IR ShrunkPixmap ", " StretchedPixmap ", " TiledPixmap ", " MiniIcon
9394 The description of these styles and their arguments follow:
9397 .I Simple
9398 style does nothing.  There are no arguments, and this style is an
9399 example of a non-destructive button style.
9402 .I Default
9403 style conditionally accepts one argument: a number which specifies
9404 the default button number to load.  If the style command given is
9405 .BR ButtonStyle " or " AddButtonStyle ,
9406 the argument is optional (if given, it overrides the current button).
9407 If a command other than
9408 .BR ButtonStyle " or " AddButtonStyle
9409 is used, the number must be specified.
9412 .I Solid
9413 style fills the button with a solid color.  The relief border
9414 color is not affected.  The color is specified as a single
9415 argument.  This style is fully destructive.
9418 .IR Colorset " " cs " [" alpha "]"
9419 style fills the button with the Colorset
9420 .IR cs .
9421 The optional
9422 .I alpha
9423 argument is a percentage between 0 and 100. It causes fvwm to
9424 merge the colorset background onto the button using this
9425 percentage. If the percentage is 0 the colorset background is
9426 hidden and if it is 100 the colorset background is fully
9427 applied. The default is 100. So, the destructiveness depends on the
9428 .I alpha
9429 argument.
9432 .I "Vector num"
9433 .IB X [ offset p]x Y [ offset p]@ C " ..."
9434 style draws a line pattern.  Since this is a standard button style,
9435 the keyword
9436 .I Vector
9437 is optional,
9438 .I num
9439 is a number of point specifications of the form
9440 .IB X [ offset p]x Y [ offset p]@ C " ..."
9441 .IR X " and " Y
9442 are point coordinates inside the button, given in percents
9443 (from 0 to 100).  An optional absolute
9444 .I offset
9445 in pixels, can be given as "+<offset>p" for a positive or
9446 "-<offset>p" for a negative offset.
9448 .I C
9449 specifies a line color (0 - the shadow color, 1 - the highlight
9450 color, 2 - the background color, 3 - the foreground color, 4 -
9451 only move the point, do not draw).  The first point color is not
9452 used.  You can use up to 10000 points in a line pattern.  This
9453 style is partially destructive.
9455 The specification is a little cumbersome:
9457 ButtonStyle 2 Vector 4 50x30@1 70x70@0 \\
9458   30x70@0 50x30@1
9460 then the button 2 decoration uses a 4-point pattern consisting of
9461 a line from (x=50,y=30) to (70,70) in the shadow color (@0), and
9462 then to (30,70) in the shadow color, and finally to (50,30) in the
9463 highlight color (@1).  Is that too confusing?  See the fvwm web
9464 pages for some examples with screenshots.
9466 A more complex example of
9467 .IR Vector :
9469 ButtonStyle 8 Vector 10 45x65@2 45x75@3 \\
9470   20x75@3 20x50@3 35x50@3 35x65@1 35x25@1 \\
9471   75x25@1 75x65@0 35x65@0
9472 ButtonStyle 0 Vector 10 45x65@2 45x75@0 \\
9473   20x75@0 20x50@1 45x50@1 45x65@0 75x65@3 \\
9474   75x25@3 35x25@3 35x47@3
9477 .I ?Gradient
9478 styles denote color gradients.  Fill in the question mark with any
9479 one of the defined gradient types.  Please refer to the
9480 .B COLOR GRADIENTS
9481 section for a description of the gradient syntax.  The gradient
9482 styles are fully destructive.
9485 .I Pixmap
9486 style displays a pixmap.  A pixmap should be specified as an
9487 argument.  For example, the following would give button number 2
9488 the same pixmap for all 4 states (2 active and 2 inactive), and
9489 button number 4 all different pixmaps.
9491 ButtonStyle 2 Pixmap my_pixmap.xpm
9492 ButtonStyle 4 \\
9493   ActiveUp   (Pixmap activeup.xpm) \\
9494   ActiveDown (Pixmap activedown.xpm) \\
9495   Inactive   (Pixmap inactiveup.xpm)
9496 ButtonStyle 4 \\
9497   InactiveDown Pixmap inactivedown.xpm
9499 The pixmap specification can be given as an absolute or relative
9500 pathname (see
9501 .BR ImagePath ).
9502 If the pixmap cannot be found, the button style reverts to
9503 .IR Simple .
9504 Flags specific to the
9505 .I Pixmap
9506 style are
9507 .IR Left ", " Right ", "
9508 .IR Top ", and " Bottom .
9509 These can be used to justify the pixmap (default is centered for
9510 both directions).  Pixmap transparency is used for the color
9511 "None."  This style is partially destructive.
9514 .I AdjustedPixmap
9515 style is similar to the
9516 .I Pixmap
9517 style. But the image is resized to exactly fit the button.
9520 .I ShrunkPixmap
9521 style is similar to the
9522 .I Pixmap
9523 style. But if the image is bigger than the button the image is
9524 resized to fit into the button.
9527 .I StretchedPixmap
9528 style is similar to the
9529 .I Pixmap
9530 style. But if the image is smaller than the button the image is
9531 resized to cover the button.
9534 .I TiledPixmap
9535 style accepts a pixmap to be tiled as the button background. One
9536 pixmap is specified as an argument.  Pixmap transparency is not
9537 used.  This style is fully destructive.
9540 .I MiniIcon
9541 style draws the window's miniature icon in the button, which is
9542 specified with the
9543 .I MiniIcon
9544 option of the
9545 .B Style
9546 command.  This button style accepts no arguments.  Example:
9548 Style *     MiniIcon mini-bx2.xpm
9549 Style xterm MiniIcon mini-term.xpm
9550 Style Emacs MiniIcon mini-doc.xpm
9552 ButtonStyle 1 MiniIcon
9557 .BI "ButtonStyle " button " - [!]" flag " ..."
9558 Sets state-independent flags for the specified
9559 .IR button .
9560 State-independent flags affect button behavior.  Each
9561 .I flag
9562 is separated by a space.  If a
9563 .RI ' ! '
9564 is prefixed to the flag then the behavior is negated.  The special
9565 flag
9566 .I Clear
9567 clears any existing flags.
9569 The following flags are usually used to tell fvwm which buttons
9570 should be affected by mwm function hints (see
9571 .I MwmFunctions
9572 option of the
9573 .B Style
9574 command.  This is not done automatically since you might have
9575 buttons bound to complex functions, for instance.
9577 .I MwmDecorMenu
9578 should be assigned to title-bar buttons which display a menu.  The
9579 default assignment is the leftmost button.  When a window with the
9580 .I MwmFunctions
9581 .B Style
9582 option requests not to show this button, it is hidden.
9584 .I MwmDecorMin
9585 should be assigned to title-bar buttons which minimize or iconify
9586 the window.  The default assignment is the second button over from
9587 the rightmost button.  When a window with the
9588 .I MwmFunctions
9589 .B Style
9590 option requests not to show this button, it is hidden.
9592 .I MwmDecorMax
9593 should be assigned to title-bar buttons which maximize the
9594 window. The default assignment is the rightmost button.  When a
9595 window with the
9596 .I MwmFunctions
9597 .B Style
9598 option requests not to show this button, it is hidden.  When the
9599 window is maximized, the vector pattern on the button looks
9600 pressed in.
9602 .I MwmDecorShade
9603 should be assigned to title-bar buttons which shade the window
9604 (see
9605 .B WindowShade
9606 command).  When the window is shaded, the vector pattern on the
9607 button looks pressed in.
9609 .I MwmDecorStick
9610 should be assigned to title-bar buttons which make the window
9611 sticky. When the window is sticky, the vector pattern on the
9612 button looks pressed in.
9614 The flag
9615 .IB "MwmDecorLayer " layer
9616 should be assigned to title-bar buttons which place the window in
9617 the layer numbered
9618 .BR layer .
9619 When the window is on that specific layer, the vector pattern on
9620 the button looks pressed in.
9623 .BI "ChangeDecor " decor
9624 This command is deprecated and will be removed in the future.  There
9625 are plans to replace it with a more flexible solution in fvwm-3.0.
9627 Changes the decor of a window to
9628 .IR decor .
9629 .I decor
9630 is "Default" or the name of a decor defined with
9631 .BR AddToDecor .
9633 .I decor
9634 is invalid, nothing occurs.  If called from somewhere in a window
9635 or its border, then that window is affected.  If called from the
9636 root window the user is allowed to select the target window.
9637 .B ChangeDecor
9638 only affects attributes which can be set using the
9639 .B AddToDecor
9640 command.
9642 ChangeDecor CustomDecor1
9646 .BI "DestroyDecor [" recreate "] " decor
9647 This command is deprecated and will be removed in the future.  There
9648 are plans to replace it with a more flexible solution in fvwm-3.0.
9650 Deletes the
9651 .I decor
9652 defined with
9653 .BR AddToDecor ,
9654 so that subsequent references to it are no longer valid.  Windows
9655 using this
9656 .I decor
9657 revert to the "Default" decor. The optional parameter
9658 .I recreate
9659 tells fvwm not to throw away the decor completely but to throw
9660 away only its contents. If the decor is created again later,
9661 windows do not use it before the
9662 .I UseDecor
9663 style is applied again unless the decor was destroyed with the
9664 .I recreate
9665 option.  The decor named "Default" cannot be destroyed.
9667 DestroyDecor CustomDecor1
9671 .BI "TitleStyle [" justification "] [" Height " [" num "]] [" MinHeight " [" num "]]"
9672 Sets attributes for the title-bar.  Justifications can be
9673 .IR Centered ", " RightJustified " or " LeftJustified .
9674 .I Height
9675 sets the title bar's height to an amount in pixels.
9676 .I MinHeight
9677 sets the minimal height in pixels of the title bar.
9678 Defaults are
9679 .IR Centered ,
9680 the window's font height and no minimal height.
9681 To reset the font height to the
9682 default value, omit the
9683 .I num
9684 argument after the
9685 .I Height
9686 keyword. The
9687 .I MinHeight
9688 height is reseted by
9689 .I Height
9690 or if given with no argument.
9691 Example:
9693 TitleStyle LeftJustified Height 24
9697 .B "TitleStyle [\fIstate\fP\
9698 ] [\fIstyle\fP\
9699 ] [-- [!] \fIflag\fP \
9700 ...]"
9701 Sets the style for the title-bar.
9702 See also
9703 .BR AddTitleStyle " and " ButtonStyle .
9704 .I state
9705 can be one of "ActiveUp", "ActiveDown", "InactiveUp",
9706 or "InactiveDown".  Shortcuts like "Active" and "Inactive" are
9707 allowed.  The states with the "Toggled" prefix are allowed too,
9708 the title itself does not use "Toggled" states, but these states
9709 are used for the buttons with
9710 .B ButtonStyle
9711 .IR UseTitleStyle .
9713 .I state
9714 is omitted, then the
9715 .I style
9716 is added to every state.  If parentheses are placed around the
9717 .IR style " and " flags ,
9718 then multiple state definitions can be given per line.
9719 .I style
9720 can be omitted so that flags can be set while not destroying the
9721 current style.
9723 If a
9724 .RI ' ! '
9725 is prefixed to any
9726 .IR flag ,
9727 its behavior is negated.  Valid flags for each state include
9728 .IR Raised ", " Flat " and " Sunk
9729 (these are mutually exclusive).  The default is
9730 .IR Raised .
9731 See the note in
9732 .B ButtonStyle
9733 regarding the "ActiveDown" state.  Examples:
9735 TitleStyle ActiveUp HGradient 16 navy black
9736 TitleStyle ActiveDown (Solid red -- flat) \\
9737     Inactive (TiledPixmap wood.xpm)
9738 TitleStyle ActiveUp (-- Flat) ActiveDown  \\
9739     (-- Raised) InactiveUp (-- Flat) \\
9740     InactiveDown (-- Sunk)
9742 This sets the "ActiveUp" state to a horizontal gradient, the
9743 "ActiveDown" state to solid red, and the "Inactive" states to a
9744 tiled wood pixmap. Finally, "ActiveUp" and "InactiveUp" are set
9745 to look flat, while "ActiveDown" set to be sunk (the
9746 .I Raised
9747 flag for the "ActiveDown" state causes it to appear sunk due to
9748 relief inversion), and "InactiveDown" is set to look raised. An
9749 example which sets flags for all states:
9751 TitleStyle -- flat
9753 For a flattened look:
9755 TitleStyle -- flat
9756 ButtonStyle All Active (-- flat) Inactive (-- flat)
9759 .B TitleStyle
9760 accepts all the
9761 .B ButtonStyle
9762  styles and arguments:
9764 .IR Simple ", " Default ", " Solid ", " Colorset ", " Vector ,
9765 .IR ?Gradient ", " Pixmap ", " AdjustedPixmap ,
9766 .IR ShrunkPixmap ", " StretchedPixmap ", " TiledPixmap ", " MiniIcon  .
9768 See the
9769 .B ButtonStyle
9770 command for a description of all these styles and their arguments.
9772 In addition to these styles
9773 .B TitleStyle
9774 accepts a powerful
9775 .B MultiPixmap
9776 option. This allows you to specify different pixmaps, colorsets or
9777 colors for different parts of the titlebar. Some of them are tiled or
9778 stretched to fit a particular space; others are discrete "transition"
9779 images. The definable
9780 .I sections
9781 are:
9783 .I Main
9784   The full titlebar
9785 .I LeftMain
9786   Left of title text
9787 .I RightMain
9788   Right of title text
9789 .I UnderText
9790   Underneath title text
9791 .I LeftOfText
9792   just to the left of the title text
9793 .I RightOfText
9794   just to the right of the title text
9795 .I LeftEnd
9796   at the far left end of the titlebar
9797   (just after left buttons if any)
9798 .I RightEnd
9799   at the far right end of the titlebar
9800   (just before right buttons if any)
9801 .I Buttons
9802   under buttons in case of UseTitleStyle
9803 .I LeftButtons
9804   under left buttons in case of UseTitleStyle
9805 .I RightButtons
9806   under right buttons in case of UseTitleStyle
9808 None of these are mandatory except for
9809 .I Main
9810 (or, if you do not define
9811 .IR Main ,
9812 you must define both
9813 .IR LeftMain " and " RightMain ")."
9814 If no
9815 .I Buttons
9816 pixmaps are defined and
9817 .I UseTitleStyle
9818 is specified for one or more buttons,
9819 .IR Main ", " LeftMain ", or " RightMain
9820 are used as appropriate.
9822 The syntax for this style type is:
9824 MultiPixmap section style arg, ...
9826 continuing for whatever you want to define. The
9827 .I style
9828 can be either
9829 .IR TiledPixmap ", " AdjustedPixmap ", " Colorset " or " Solid .
9830 See the
9831 .B ButtonStyle
9832 command for the description of these styles.
9833 In the case of a transition section,
9834 .IR LeftEnd ", " LeftOfText ", " RightOfText " or " RightEnd ","
9835 .I AdjustedPixmap
9836 only resize the pixmap in the "y" direction. For the
9837 .IR Colorset " and " Solid
9838 styles a width of the half of the title bar height is assumed
9839 for the transition sections.
9841 An example:
9843 MultiPixmap Main AdjustedPixmap foo.xpm, \\
9844             UnderText TiledPixmap bar.xpm, \\
9845             Buttons Colorset 2
9847 Note that the old syntax is still supported: if the style is omitted,
9848 .I TiledPixmap
9849 is assumed and adding "(stretched)" between the section and the
9850 file name implies
9851 .IR AdjustedPixmap .
9854 .BI "UpdateDecor " [ "decor" ]
9855 This command is deprecated and will be removed in the future.  There
9856 are plans to replace it with a more flexible solution in fvwm-3.0.
9858 This command is kept mainly for backward compatibility.  Since
9859 all elements of a decor are updated immediately when they are
9860 changed, this command is mostly useless.
9862 Updates window decorations.
9863 .I decor
9864 is an optional argument which specifies the
9865 .I decor
9866 to update.  If given, only windows which are assigned to that
9867 particular
9868 .I decor
9869 are updated.  This command is useful, for instance, after a
9870 .BR ButtonStyle ", " TitleStyle " or " BorderStyle
9871 (possibly used in conjunction with
9872 .BR AddToDecor ).
9873 Specifying an invalid decor results in all windows being
9874 updated.  This command is less disturbing than
9875 .BR Recapture ,
9876 but does not affect window style options as
9877 .B Recapture
9878 does.
9881 .SS COMMANDS CONTROLLING THE VIRTUAL DESKTOP
9884 .B "Desk \fIarg1\fP \
9885 [\fIarg2\fP\
9886 ] [\fImin max\fP\
9888 This command has been renamed.  Please see
9889 .B GotoDesk
9890 command.
9893 .BI "DesktopName " desk " name"
9894 Defines the name of the desktop number
9895 .I desk
9897 .IR name .
9898 This name is used in the
9899 .B WindowList
9900 command and in the
9901 .B FvwmPager
9902 where it override the
9903 .I Label
9904 configuration option. Moreover, if consecutive names starting from
9905 desktop 0 are defined, then these names can be used by any
9906 .SM EWMH
9907 compliant application (as a pager).
9910 .BI "DeskTopSize " Horizontal x Vertical
9911 Defines the virtual desktop size in units of the physical screen
9912 size.
9915 .BI "EdgeResistance " "scrolling moving " [ "xinerama-moving" ]
9916 Tells how hard it should be to change the desktop viewport by
9917 moving the mouse over the edge of the screen and how hard it
9918 should be to move a window over the edge of the screen.
9920 The first parameter tells how many milliseconds the pointer must
9921 spend on the screen edge before fvwm moves the viewport.  This is
9922 intended for people who use
9924 EdgeScroll 100 100
9926 but find themselves accidentally flipping pages when they do not
9927 want to.
9929 The second parameter tells how many pixels over the edge of the
9930 screen a window's edge must move before it actually moves
9931 partially off the screen.  By default the viewport is moved a full
9932 page in the requested direction, but if you used
9933 .B EdgeScroll
9934 and set any values other than zero they are used instead.
9936 Note that, with
9938 EdgeScroll 0 0
9940 it is still possible to move or resize windows across the edge of
9941 the current screen.  By making the first parameter to
9942 .B EdgeResistance
9943 10000 this type of motion is impossible.  With
9944 .B EdgeResistance
9945 less than 10000 but greater than 0 moving over pages becomes
9946 difficult but not impossible.  See also
9947 .BR EdgeThickness .
9949 The optional third parameter does the same as the second, but for
9950 individual Xinerama screens.  If omitted,
9951 .I xinerama-moving
9952 is set to the value of
9953 .IR moving .
9955 .I xinerama-moving
9956 to zero to ignore individual screen edges.  Note that the center of
9957 the window being moved determines the xinerama screen on which the
9958 window should be kept.
9961 .BI "EdgeScroll " horizontal "[" p "] " vertical "[" p "] [" \
9962 wrap "|" wrapx "|" wrapy "]"
9963 Specifies the percentage of a page to scroll when the cursor hits
9964 the edge of a page.  A trailing
9965 .RI ' p '
9966 changes the interpretation to mean pixels.  If you do not want any
9967 paging or scrolling when you hit the edge of a page include
9969 EdgeScroll 0 0
9971 in your
9972 .I config
9973 file, or possibly better, set the
9974 .B EdgeThickness
9975 to zero.  See the
9976 .B EdgeThickness
9977 command. If you want whole pages, use
9979 EdgeScroll 100 100
9981 Both
9982 .IR horizontal " and " vertical
9983 should be positive numbers.
9985 If the
9986 .IR horizontal " and " vertical
9987 percentages are multiplied by 1000 or one of the keywords
9988 .IR wrap ", " wrapx " and " wrapy
9989 is given then scrolling wraps around at the edge of the desktop.
9992 EdgeScroll 100000 100000
9994 is used fvwm scrolls by whole pages, wrapping around at the edge
9995 of the desktop.
9998 .BI "EdgeThickness " 0 | 1 | 2
9999 This is the width or height of the invisible window that fvwm
10000 creates on the edges of the screen that are used for the edge
10001 scrolling feature.
10003 In order to enable page scrolling via the mouse, four windows
10004 called the "pan frames" are placed at the very edge of the
10005 screen. This is how fvwm detects the mouse's presence at the
10006 window edge. Because of the way this works, they need to be at the
10007 top of the stack and eat mouse events, so if you have any kind of
10008 error along the lines of: "mouse clicks at the edge of the screen
10009 do the wrong thing" you're having trouble with the pan frames and
10010 (assuming you do not use the mouse to flip between pages) should
10011 set the EdgeThickness to 0.
10013 A value of
10014 .I 0
10015 completely disables mouse edge scrolling, even while dragging a
10016 window.
10017 .I 1
10018 gives the smallest pan frames, which seem to work best except on
10019 some servers.
10021 .I 2
10022 is the default.
10024 Pan frames of
10025 .IR 1 " or " 2
10026 pixels can sometimes be confusing, for example, if you drag a
10027 window over the edge of the screen, so that it straddles a pan
10028 frame, clicks on the window, near the edge of the screen are
10029 treated as clicks on the root window.
10032 .BI "EwmhBaseStruts " left " " right " " top " " bottom
10033 Where left, right, top and bottom are positive or null integers
10034 which define bands at the edge of the screen.
10035 .I left
10036 defines a band on the left of your screen of width
10037 .IR left ","
10038 .I right
10039 defines a band on the right of your screen of width
10040 .IR right ","
10041 .I top
10042 defines a band on the top of your screen of height
10043 .I top
10045 .I bottom
10046 defines a band on the bottom of your screen of height
10047 .IR bottom "."
10048 The unit is the pixel and the default is 0 0 0 0.  These areas
10049 define additional reserved space to the reserved space defined by
10050 some ewmh compliant applications. This is used to compute the
10051 Working Area. See the
10052 .B EXTENDED WINDOW MANAGER HINTS
10053 section for a definition of the Working Area.
10056 .BI "EWMHNumberOfDesktops " num "  [" max "]"
10057 This command is useful only for an ewmh compliant pager or taskbar
10058 (as kpager or kicker taskbar) and not for fvwm modules (FvwmPager
10059 or FvwmIconMan). It causes a compliant application to consider at
10060 least
10061 .I num
10062 desktops (desktop 0 to desktop
10063 .IR num "-1)."
10064 The optional argument
10065 .I max
10066 causes a compliant application to never consider more than
10067 .I max
10068 desktops. If
10069 .I max
10070 is 0 (the default) there is no limitation.  The actual number of
10071 desktops is determined dynamically.  It is at least
10072 .IR num ","
10073 but it can be d if there is a window on desktop d-1 (or if the
10074 current desktop is desktop d-1) and d is less or equal to
10075 .I max
10077 .I max
10078 is null.
10079 Moreover, a compliant pager can ask to change
10080 .I num
10081 itself.
10082 This is accepted by fvwm only if this number is
10083 less than or equal to
10084 .I max
10085 or if
10086 .I max
10087 is null.  Note that negative desktops are not supported by the
10088 ewmh specification.  The default is 4 0.
10091 .B "GotoDesk \fIprev\fP \
10092 | \fIarg1\fP \
10093 [\fIarg2\fP\
10094 ] [\fImin max\fP\
10096 Switches the current viewport to another desktop (workspace,
10097 room).
10099 The command takes 1, 2, 3, or 4 arguments.  A single argument is
10100 interpreted as a relative desk number.  Two arguments are
10101 understood as a relative and an absolute desk number.  Three
10102 arguments specify a relative desk and the minimum and maximum of
10103 the allowable range. Four arguments specify the relative,
10104 absolute, minimum and maximum values.  (Desktop numbers can be
10105 negative).  If a literal
10106 .I prev
10107 is given as the single argument, the last visited desk number is
10108 used.
10111 .I arg1
10112 is non zero then the next desktop number is the current desktop
10113 number plus
10114 .IR arg1 .
10117 .I arg1
10118 is zero then the new desktop number is
10119 .IR arg2 .
10121 .I arg2
10122 is not present, then the command has no effect.)
10125 .IR min " and " max
10126 are given, the new desktop number is no smaller than
10127 .I min
10128 and no bigger than
10129 .IR max .
10130 Values out of this range are truncated (if you gave an absolute
10131 desk number) or wrapped around (if you gave a relative desk
10132 number).
10134 The syntax is the same as for
10135 .BR MoveToDesk ,
10136 which moves a window to a different desktop.
10138 The number of active desktops is determined dynamically.  Only
10139 desktops which contain windows or are currently being displayed
10140 are active.  Desktop numbers must be between 2147483647 and
10141 -2147483648 (is that enough?).
10144 .BI "GotoDeskAndPage " prev " | " "desk xpage ypage"
10145 Switches the current viewport to another desktop and page, similar
10146 to the
10147 .BR GotoDesk " and " GotoPage
10148 commands.  The new desk is
10149 .I desk
10150 and the new page is
10151 .RI ( xpage , ypage ).
10154 .B "GotoPage \fIprev\fP \
10155 | [\fIoptions\fP] \
10156 \fIx\fP \
10157 [\fIp\fP\
10158 ] \fIy\fP \
10159 [\fIp\fP\
10161 Moves the desktop viewport to page (x,y).  The upper left page is
10162 (0,0), the upper right is (M,0), where M is one less than the
10163 current number of horizontal pages specified in the
10164 .B DeskTopSize
10165 command.  The lower left page is (0,N), and the lower right page
10166 is (M,N), where N is the desktop's vertical size as specified in
10168 .B DeskTopSize
10169 command.  To switch to a page relative to the current one add a
10170 trailing
10171 .RI ' p '
10172 after any or both numerical arguments.
10174 Possible
10175 .I options
10177 .IR wrapx " and " wrapy
10178 to wrap around the x or y coordinate when the viewport is moved
10179 beyond the border of the desktop.
10181 To go to the last visited page use
10182 .I prev
10183 as the first argument.  The
10184 .B GotoPage
10185 function should not be used in a pop-up menu.
10187 Examples:
10189 # Go to page (2,3)
10190 GotoPage 2 3
10192 # Go to lowest and rightmost page
10193 GotoPage -1 -1
10195 # Go to last page visited
10196 GotoPage prev
10198 # Go two pages to the right and one page up
10199 GotoPage +2p -1p
10203 .B "Scroll [\fIhorizonal\fP \
10204 [\fIp\fP\
10205 ] \fIvertical\fP \
10206 [\fIp\fP\
10207 ]] | [\fIreverse\fP\
10209 Scrolls the virtual desktop's viewport by
10210 .I horizontal
10211 pages in the x-direction and
10212 .I vertical
10213 pages in the y-direction or starts interactive scrolling of the viewport.
10214 Either or both entries may be negative.
10215 Both
10216 .IR horizontal " and " vertical
10217 values are expressed in percent of pages, so
10219 Scroll 100 100
10221 means to scroll down and right by one full page.
10223 Scroll 50 25
10225 means to scroll right half a page and down a quarter of a page.
10227 .B Scroll
10228 function should not be called from pop-up menus.  Normally,
10229 scrolling stops at the edge of the desktop.
10231 If the
10232 .IR horizontal " and " vertical
10233 percentages are 100 or more and are multiplied by 1000 then
10234 scrolling wraps around at the edge of the desktop.  If
10236 Scroll 100000 0
10238 is executed over and over fvwm moves to the next desktop page on
10239 each execution and wraps around at the edge of the desktop, so
10240 that every page is hit in turn.
10242 If the letter
10243 .RI ' p '
10244 is appended to each coordinate
10245 .RI ( horizontal " and/or " vertical ),
10246 then the scroll amount is measured in pixels.
10248 Without arguments or the option
10249 .I reverse
10250 is given interactive scrolling takes place.  The viewporst
10251 scrolls as the mouse is moved. With the
10252 .RI reverse
10253 option scrolling is done in opposite direction of the mouse
10254 movement, and without it scrolling in the same direction as the
10255 mouse.
10257 The binding
10259 Mouse 1 A CM Scroll reverse
10261 gives an effect of grabbing and dragging the viewport with button 1
10263 .SM Control
10265 .SM Meta
10266 is pressed.
10269 .BI "Xinerama " bool
10270 Enables Xinerama support if the boolean argument is true and
10271 disables it if the argument is false.  Calling this command
10272 without arguments turns on Xinerama support if it was disabled before
10273 and turns it off if it was enabled.  For example:
10275 # Turn Xinerama support on, use primary screen 2
10276 XineramaPrimaryScreen 2
10277 Xinerama on
10278 #Turn it off again
10279 Xinerama off
10283 .BI "XineramaPrimaryScreen [" primary-screen "]"
10284 Takes an integer number or 'g' or 'c' as its argument.  A number
10285 is taken as the number of the Xinerama screen that is to be used
10286 as the primary screen.  The primary screen can be used as the
10287 preferred screen to place windows with
10289 XineramaPrimaryScreen <screen number>
10290 Style * StartsOnScreen p
10292 The primary screen is used in some of the modules and for the
10293 default icon box too.  Any number that is zero or more is taken as
10294 the primary screen's number.  Instead, the letter 'c' indicates to
10295 use the current screen (containing the pointer) whenever the
10296 primary screen is used.  This may be very confusing under some
10297 circumstances.  With \'g', the global screen is used as the primary
10298 screen, effectively disabling the primary screen.  Calling this
10299 function with any other argument (including none) resets the
10300 primary screen to 0.
10303 .BI "XineramaSls [" bool "]"
10304 For multi-screen implementations other than Xinerama, such as
10305 Single Logical Screen, it is possible to simulate a Xinerama
10306 configuration if the total screen seen by fvwm is made up of
10307 equal sized monitors in a rectangular grid.  The
10308 .B XineramaSls
10309 command turns SLS support on or off or toggles it to the opposite
10310 state, depending on if the boolean argument is "True", "False" or
10311 "toggle".  If no argument is given, this is treated like "toggle".
10312 The default layout uses one by one screens.  To configure the
10313 layout, use the
10314 .BR XineramaSlsSize " or " XineramaSlsScreens
10315 command.
10318 .BI "XineramaSlsSize " Horizontal x Vertical
10319 This command configures the layout of the Single Logical screen
10320 feature.  It takes two arguments,
10321 .IR Horizontal " and " Vertical
10322 which must be an integer value dividing evenly into the total
10323 desktop width, and height.  For an example with two
10324 monitors side by side which appear as one screen through the
10325 X-Server with the right screen as the primary screen, use:
10327 XineramaSlsSize 2x1
10328 XineramaSls On
10329 XineramaPrimaryScreen 1
10330 Xinerama On
10334 .BI "XineramaSlsScreens " "number-of-screens screen-spec ..."
10335 This command configures the layout of the Single Logical screen
10336 feature.  Its first argument is the number of screens to use.  It
10337 must be followed by exactly this number of
10338 .I screen-spec
10339 arguments.  Each of these can be written either in standard X
10340 geometry format: "<width>x<height>+<x>+<y>" or as a space separated
10341 list of numbers: "x y width height". Both ways of describing
10342 screens can be mixed in a single command.  All four numbers must
10343 be supplied.  The
10344 .IR x " and " y
10345 values specify the origin of the screen in relation to the global
10346 screen's origin while
10347 .IR width " and " height
10348 specify the size of the screen in pixels.  No checks are done if
10349 the geometries make sense, so it is possible to define overlapping
10350 screens (with random results) or screens that are not visible at
10351 all.
10353 XineramaSlsScreens 3 \\
10354   512x768+0+0 512x300+512+0 512 300 512 468
10355 XineramaSls On
10356 XineramaPrimaryScreen 1
10357 Xinerama On
10361 .SS COMMANDS FOR USER FUNCTIONS AND SHELL COMMANDS
10364 .B "AddToFunc [\fIname\fP \
10365 [\fII\fP \
10366 | \fIM\fP \
10367 | \fIC\fP \
10368 | \fIH\fP \
10369 | \fID action\fP\
10371 Begins or adds to a function definition.  Here is an example:
10373 AddToFunc Move-or-Raise I Raise
10374  + M Move
10375  + D Lower
10377 The function name is "Move-or-Raise", and it could be invoked from a
10378 menu or a mouse binding or key binding:
10380 Mouse 1 TS A Move-or-Raise
10383 .I name
10384 must not contain embedded whitespace.  No guarantees are made
10385 whether function names with embedded whitespace work or not.  This
10386 behavior may also change in the future without further notice.
10387 The letter before the
10388 .I action
10389 tells what kind of action triggers the command which follows it.
10390 .RI ' I '
10391 stands for "Immediate", and is executed as soon as the function is
10392 invoked.
10393 .RI ' M '
10394 stands for "Motion", i.e. if the user starts moving the mouse.
10395 .RI ' C '
10396 stands for "Click", i.e., if the user presses and releases the
10397 mouse button.
10398 .RI ' H '
10399 stands for "Hold", i.e. if the user presses a mouse button and
10400 holds it down for more than
10401 .B ClickTime
10402 milliseconds.
10403 .RI ' D '
10404 stands for "Double-click". The action
10405 .RI ' I '
10406 causes an action to be performed on the button-press, if the
10407 function is invoked with prior knowledge of which window to act
10410 There is a number of predefined symbols that are replaced by
10411 certain values if they appear on the command line.  Please refer
10412 to the
10413 .B COMMAND EXPANSION
10414 section for details.
10416 Warning:  Please read the comments on executing complex functions
10417 in the section
10418 .BR "SCRIPTING AND COMPLEX FUNCTIONS" .
10420 Examples:
10422 If you call
10424 Key F10 R A Function MailFunction \\
10425   xmh "-font fixed"
10427 and "MailFunction" is
10429 AddToFunc MailFunction
10430  + I Next ($0) Iconify off
10431  + I Next (AcceptsFocus, $0) Focus
10432  + I None ($0) Exec exec $0 $1
10434 Then the last line of the function becomes
10436  + I None (xmh) Exec exec xmh -font fixed
10438 The expansion is performed as the function is executed, so you can
10439 use the same function with all sorts of different arguments.  You
10440 could use
10442 Key F11 R A Function MailFunction \\
10443   zmail "-bg pink"
10445 in the same
10446 .IR config ,
10447 if you wanted.  An example of using "$[w.id]" is:
10449 AddToFunc PrintFunction
10450  + I Raise
10451  + I Exec xdpr -id $[w.id]
10453 Note that "$$" is expanded to '$'.
10455 Another example: bind right mouse button within the window button
10456 number 6 (this is a minimize button for the win95 theme) to
10457 iconify all windows of the same resource:
10459 AddToFunc FuncIconifySameResource "I" \\
10460   All ($0) Iconify on
10461 Mouse 3 6 A FuncIconifySameResource $[w.resource]
10465 .BI "Beep"
10466 As might be expected, this makes the terminal beep.
10469 .BI "DestroyFunc " function
10470 Deletes a function, so that subsequent references to it are no
10471 longer valid.  You can use this to change the contents of a
10472 function during a fvwm session.  The function can be rebuilt using
10473 .BR AddToFunc .
10475 DestroyFunc PrintFunction
10479 .BI "Echo " string
10480 Prints a message to
10481 .IR stderr .
10482 Potentially useful for debugging things in your
10483 .IR config .
10485 Echo Beginning style definitions...
10489 .BI "Exec " command
10490 Executes
10491 .IR command .
10492 You should not use an ampersand '&' at the end of the command. You
10493 probably want to use an additional "exec" at the beginning of
10494 .IR command .
10495 Without that, the shell that fvwm invokes to run your command
10496 stays until the command exits.  In effect, you'll have twice as
10497 many processes running as you need.  Note that some shells are
10498 smart enough to avoid this, but it never hurts to include the
10499 "exec" anyway.
10501 The following example binds function key
10502 .SM F1
10503 in the root window, with no modifiers, to the exec function. The
10504 program rxvt is started with an assortment of options.
10507 Key F1 R N Exec exec rxvt -fg yellow -bg blue \\
10508   -e /bin/tcsh
10510 Note that this function doesn't wait for
10511 .I command
10512 to complete, so things like:
10514 Exec "echo AddToMenu ... > /tmp/file"
10515 Read /tmp/file
10517 do not work reliably
10518 (see the
10519 .I PipeRead
10520 command).
10524 .BI "ExecUseShell [" shell "]"
10525 Makes the
10526 .B Exec
10527 command use the specified shell, or the value of the
10528 .I $SHELL
10529 environment variable if no shell is specified, instead of the
10530 default Bourne shell
10531 .RI ( /bin/sh ).
10533 ExecUseShell
10534 ExecUseShell /usr/local/bin/tcsh
10538 .BI "Function " FunctionName
10539 Used to bind a previously defined function to a key or mouse
10540 button. The following example binds mouse button 1 to a function
10541 called "Move-or-Raise", whose definition was provided as an
10542 example earlier in this man page.  After performing this binding
10543 fvwm executes the "move-or-raise" function whenever button 1 is
10544 pressed in a window's title-bar.
10546 Mouse 1 T A Function Move-or-Raise
10548 The keyword
10549 .B Function
10550 may be omitted if
10551 .I FunctionName
10552 does not coincide with an fvwm command.
10554 Warning:  Please read the comments on executing complex functions
10555 in the section
10556 .BR "SCRIPTING AND COMPLEX FUNCTIONS" .
10559 .BI "Nop"
10560 Does nothing.  This is used to insert a blank line or separator in
10561 a menu.  If the menu item specification is
10563 AddToMenu MyMenu " " Nop
10565 then a blank line is inserted.  If it looks like
10567 + "" Nop
10569 then a separator line is inserted.  Can also be used as the
10570 double-click action for
10571 .BR Menu " or " Popup .
10574 .BI "PipeRead " command " [" quiet "]"
10575 Causes fvwm to read commands from the output of the
10576 .IR command .
10577 This
10578 .I command
10579 is executed by
10580 .I /bin/sh
10581 as if you typed it on the command line.  If the command consists
10582 of more than one word it must be quoted.  Useful for building up
10583 dynamic menu entries based on a directories contents, for
10584 example. If the keyword
10585 .I Quiet
10586 follows the command no message is produced if the
10587 .I command
10588 is not found.
10590 Example:
10592 AddToMenu HomeDirMenu
10593 PipeRead 'for i in $HOME/*; \\
10594   do echo "+ $i Exec xterm -e vi $i"; done'
10597 Note: The
10598 .B PipeRead
10599 changes the pointer to a watch cursor by default during
10600 execution.  However, some commands, for example xwd, need to take
10601 control of the pointer themselves and do not work.  To disable the
10602 watch cursor, use the command prior to
10603 .B PipeRead
10605 BusyCursor Read off
10609 .B PipeRead
10610 command executes synchronously.  If you want to
10611 .B Exec
10612 something, but need the command to run synchronously,
10613 you might do something like:
10615 PipeRead 'command 1>&2'
10617 The redirection causes any output from the program to go to stderr
10618 instead of being read as a sequence of commands by fvwm.
10619 .B PipeRead
10620 returns 1 if the given command could be executed or -1 if not
10621 (see the section
10622 .B CONDITIONAL COMMANDS
10623 for the meaning of return codes).
10626 .BI "Read " filename " [" quiet "]"
10627 Causes fvwm to read commands from the file named
10628 .IR filename .
10629 If the keyword
10630 .I Quiet
10631 follows the command no message is produced if the file is not
10632 found.  If the file name does not begin with a slash ('/'), fvwm
10633 looks in the user's data directory, then the system data
10634 directory.  The user's data directory is by default
10635 .IR $HOME/.fvwm .
10636 It can be overridden by exporting
10637 .I FVWM_USERDIR
10638 set to any other directory.  The
10639 .B Read
10640 command returns 1 if the given file could be read or -1 if not
10641 (see the section
10642 .B CONDITIONAL COMMANDS
10643 for the meaning of return codes).
10647 .BI "SetEnv " "variable value"
10648 Set an environment variable to a new value, similar to the shell's
10649 export or setenv command.  The
10650 .I variable
10651 and its
10652 .I value
10653 are inherited by processes started directly by fvwm.  This can be
10654 especially useful in conjunction with the
10655 .B FvwmM4
10656 module.  For example:
10658 SetEnv height HEIGHT
10660 makes the FvwmM4 set variable
10661 .I HEIGHT
10662 usable by processes started by fvwm as the environment variable
10663 .IR $height .
10665 .I value
10666 includes whitespace, you should enclose it in quotes.  If no
10667 .I value
10668 is given, the variable is deleted.
10671 .BI "Silent " command
10672 A number of commands require a window to operate on.  If
10673 no window was selected when such a function is invoked the user is
10674 asked to select a window.  Sometimes this behavior is unwanted,
10675 for example if the function was called by a module and the window
10676 that was selected at first does not exist anymore.  You can
10677 prevent this by putting
10678 .B Silent
10679 in front of the fvwm
10680 .IR command .
10681 If a function that needs a window is called with
10682 .B Silent
10683 without a window selected, it simply returns without doing
10684 anything. If
10685 .B Silent
10686 is used on a user defined function it affects all function and sub
10687 function calls until the original function exits.
10689 Another usage of
10690 .B Silent
10691 is with binding commands
10692 .BR Key ", " PointerKey " and " Mouse ,
10693 this disables error messages.
10695 .B Silent
10696 also disables the error message for non-existent commands.  Note:
10697 This command is treated as a prefix to its
10698 .IR command .
10699 Expansion of the command line is done as if
10700 .B Silent
10701 was not there.
10703 Examples:
10705 Silent Move 0 0
10706 Silent User_defined_function
10707 # do not complain on keyboards without "Help" key
10708 Silent Key Help R A Popup HelpMenu
10712 .BI "UnsetEnv " "variable"
10713 Unset an environment variable, similar to shell's export or
10714 unsetenv command. The
10715 .I variable
10716 then is removed from the environment array inherited by processes
10717 started directly by fvwm.
10720 .BI "Wait " window
10721 This command is intended to be used in fvwm functions only.  It
10722 causes execution of a function to pause until a new window matching
10723 .I window
10724 appears.  This can be a window's name, class, or resource string.
10725 It may contain the wildcards '*' and '?', which are matched in the
10726 usual Unix filename manner.  This is particularly useful in the
10727 "InitFunction" if you are trying to start windows on specific desktops:
10729 AddToFunc InitFunction
10730  + I Exec exec xterm -geometry 80x64+0+0
10731  + I Wait xterm
10732  + I GotoDesk 0 2
10733  + I Exec exec xmh -font fixed -geometry \\
10734        507x750+0+0
10735  + I Wait xmh
10736  + I GotoDesk 0 0
10738 The above function starts an xterm on the current desk, waits for
10739 it to map itself, then switches to desk 2 and starts an xmh.
10740 After the xmh window appears control moves to desk 0.
10742 Fvwm remains partially functional during a wait, but any input
10743 from the modules is queued up and processed only after the window
10744 appears or the command is aborted.  For example, windows can not
10745 be focused with FvwmTaskBar or FvwmWinList during a wait.
10747 You can escape from a
10748 .B Wait
10749 pause by pressing
10750 .SM Ctrl-Alt-Escape
10751 (where
10752 .SM Alt
10753 is the first modifier).  To redefine this key sequence see the
10754 .B EscapeFunc
10755 command.
10758 .SS CONDITIONAL COMMANDS
10760 Conditional commands are commands that are only executed if certain
10761 conditions are met.  Most conditional commands work on windows,
10762 like
10763 .BR Next ", " ThisWindow " or " All .
10764 There is one conditional command
10765 .B Test
10766 that works on global conditions unrelated to windows.  The syntax
10767 of the conditions is described below.  For readability, the list
10768 of conditions is located at the end of this section.
10770 .SS Return Codes
10772 All commands in this section (unless specifically stated for the
10773 command) also have a return code that can be 1 (if the condition
10774 was met) or 0 (if the condition was not met).  Some commands may
10775 return -1 which means that an error occurred and the return code
10776 is useless.  The
10777 .B Break
10778 command returns -2.  Additionally, the return codes of commands
10779 run in a complex functions are passed to the invoking complex
10780 function.  The return code is used by the
10781 .B TestRc
10782 command.  Please refer to the commands' description for examples.
10783 The return code can also be accessed through the variable
10784 .IR $[cond.rc] .
10785 Non conditional commands do not modify the return code of the last
10786 conditional command.  Important note:  return codes are only
10787 defined inside functions created with the
10788 .B AddToFunc
10789 command and are not inherited by sub functions.  To run a command
10790 without altering the return code, the
10791 .B KeepRc
10792 command can be used.
10794 .SS The Ring of Windows
10796 Fvwm stores windows in a ring internally.  Think of the focused
10797 window as a cursor on the current position in the ring.  The
10798 .B Next
10799 command and many other commands search forwards through the ring
10800 for a matching window, and
10801 .B Prev
10802 searches backwards.  The windows in the ring are either ordered by
10803 creation time (if the
10804 .I !FPSortWindowlistByFocus
10805 respectively
10806 .IR NeverFocus " or " MouseFocus
10807 styles are used) or by the last time they had the focus.
10809 .SS List of Conditional Commands
10812 .BI "All [" options "] [(" conditions ")] " command
10813 Execute
10814 .I command
10815 on all windows meeting the conditions.  It returns 1 if any window
10816 matches the condition and 0 otherwise. The execution starts at the top of the
10817 window ring and continues towards the bottom. The
10818 .I options
10819 can be any combination of
10820 .IR Reverse " and " UseStack .
10821 If the option
10822 .I Reverse
10823 is given the execution order is reversed. The option
10824 .I UseStack
10825 makes All use the stacking order instead of the window ring when walking
10826 through windows.
10827 .RB "See " Conditions " section below for a list of conditions."
10829 This command implies the conditions
10830 .IR CirculateHit ", " CirculateHitIcon " and " CirculateHitShaded .
10831 They can be turned off by specifying
10832 .I !CirculateHit
10833 etc. explicitly.
10836 .BI "Any [(" conditions ")] " command
10837 Performs
10838 .I command
10839 if any window which satisfies all
10840 .I conditions
10841 exists.  The command is run in the context of the root window.
10842 .RB "See " Conditions " section below for a list of conditions."
10845 .BI "Break [levels]"
10846 If the break command is used in a function, function execution is
10847 terminated immediately.  Further commands of the function are not
10848 processed.  Normally, all nested invocations of complex functions
10849 are left.  An optional integer number
10850 .I levels
10851 may be given to break out of the given number of nested functions
10852 and continue execution of a higher level function.
10854 .B Break
10855 command always has the return code -2.  Example:
10857 AddToFunc PickWindowRaiseAndDeiconify
10858 + I Pick
10859 + I TestRc (Error) Break
10860 + I Raise
10861 + I Iconify off
10865 .BI "Current [(" conditions ")] " command
10866 Performs
10867 .I command
10868 on the currently focused window if it satisfies all
10869 .IR conditions .
10870 .RB "See " Conditions " section below for a list of conditions."
10872 This command implies the conditions
10873 .IR CirculateHit ", " CirculateHitIcon " and " CirculateHitShaded .
10874 They can be turned off by specifying
10875 .I !CirculateHit
10876 etc. explicitly.
10879 .B "Direction \
10880 [\fIFromPointer\fP] \
10881 \fIdirection\fP \
10882 [(\fIconditions\fP)] \
10883 \fIcommand\fP"
10884 Performs
10885 .I command
10886 (typically
10887 .BR Focus )
10888 on a window in the given direction which satisfies all
10889 .IR conditions .
10890 Normally, the center of the currently focused window or the
10891 context window in which the command was invoked is taken as the
10892 starting point.  Lacking such a window, or when the
10893 .I FromPointer
10894 option is given, the current position of the pointer is taken as
10895 the starting point.  The
10896 .I direction
10897 may be one of "North", "Northeast", "East", "Southeast", "South",
10898 "Southwest", "West", "Northwest" and "Center".  Which window
10899 .B Direction
10900 selects depends on angle and distance between the center points of
10901 the windows.  Closer windows are considered a better match than
10902 those farther away.  The
10903 .I Center
10904 direction simply selects the window closest to the starting point.
10905 Returns -1 if an invalid direction was given.
10906 .RB "See " Conditions " section below for a list of conditions."
10909 .BI "KeepRc " command
10910 Runs the
10911 .I command
10912 but does not alter the return code of the previous command.  Note:
10913 .B KeepRc
10914 is treated as a prefix to its
10915 .IR command .
10916 Expansion of the command line is done as if
10917 .B KeepRc
10918 was not there.
10921 .BI "Next [(" conditions ")] " command
10922 Performs
10923 .I command
10924 (typically
10925 .BR Focus )
10926 on the next window which satisfies all
10927 .IR conditions .
10928 If the command is running in a window context, it starts looking
10929 for a matching window from there.  Otherwise it starts at the
10930 focused window.
10931 .RB "See " Conditions " section below for a list of conditions."
10934 .BI "None [(" conditions ")] " command
10935 Performs
10936 .I command
10937 if no window which satisfies all
10938 .I conditions
10939 exists.  The command is run in the context of the root window.
10940 Returns 1 if no window matches the conditions and 0 otherwise.
10941 .RB "See " Conditions " section below for a list of conditions."
10943 This command implies the conditions
10944 .IR CirculateHit ", " CirculateHitIcon " and " CirculateHitShaded .
10945 They can be turned off by specifying
10946 .I !CirculateHit
10947 etc. explicitly.
10950 .BI NoWindow " command"
10951 Performs
10952 .IR command ,
10953 but removes the window context if any.  This is not really a
10954 conditional command, but a prefix that may be useful in menu items
10955 that should operate without a window even if such menu is bound to
10956 window decorations.
10959 .BI "Pick [(" conditions ")] " command
10960 .B Pick
10961 works like
10962 .B Function
10963 if invoked in the context of a window.  If invoked in the root
10964 window, it first asks the user to pick a window and then executes
10966 .I command
10967 in the context of that window.  This avoids annoying multiple
10968 selections with complex functions.  The command is executed only
10969 if the given
10970 .I conditions
10971 are met.  Returns -1 if no window was selected.
10972 .RB "See " Conditions " section below for a list of conditions."
10974 This command implies the conditions
10975 .IR CirculateHit ", " CirculateHitIcon " and " CirculateHitShaded .
10976 They can be turned off by specifying
10977 .I !CirculateHit
10978 etc. explicitly.
10981 .BI "PointerWindow [(" conditions ")] " command
10982 Performs
10983 .I command
10984 if the window under the pointer satisfies all
10985 .IR conditions .
10986 Returns -1 if there is no window under the pointer.
10987 .RB "See " Conditions " section below for a list of conditions."
10989 This command implies the conditions
10990 .IR CirculateHit ", " CirculateHitIcon " and " CirculateHitShaded .
10991 They can be turned off by specifying
10992 .I !CirculateHit
10993 etc. explicitly.
10996 .BI "Prev [(" conditions ")] " command
10997 Performs
10998 .I command
10999 (typically
11000 .BR Focus )
11001 on the previous window which satisfies all
11002 .IR conditions .
11003 If the command is running in a window context, it starts looking
11004 for a matching window from there.  Otherwise it starts at the
11005 focused window.
11006 .RB "See " Conditions " section below for a list of conditions."
11009 .B "ScanForWindow \
11010 [\fIFromPointer\fP] \
11011 \fIdirection\fP \
11012 \fIdirection2\fP \
11013 [(\fIconditions\fP)] \
11014 \fIcommand\fP"
11015 Performs
11016 .I command
11017 (typically
11018 .BR Focus )
11019 on a window in the given direction which satisfies all
11020 .IR conditions .
11021 Normally, the center of the currently focused window or the
11022 context window in which the command was invoked is taken as the
11023 starting point.  Lacking such a window, or when the
11024 .I FromPointer
11025 option is given, the current position of the pointer is taken as
11026 the starting point.  The
11027 .I direction
11028 may be one of "North", "NorthEast", "East", "SouthEast", "South",
11029 "SouthWest", "West", and "NorthWest".  Which window
11030 .B ScanForWindow
11031 selects depends first on the position along the primary axis given
11033 .IR direction .
11034 If any windows have the exact same coordinate along the primary
11035 axis, the secondary direction is used to order the windows.  The
11036 .I direction2
11037 may be one of the same set of values as
11038 .IR direction .
11040 .I direction2
11041 is not perfectly perpendicular to
11042 .IR direction ,
11043 .B ScanForWindow
11044 returns a failure.  When using ScanForWindow repeatedly with the
11045 same arguments, it is guaranteed that all windows matching the
11046 conditions are eventually found.  If the focus reaches a limit
11047 along the primary axis, it wraps around to the opposite side.
11048 Returns -1 if an invalid direction was given.
11049 .RB "See " Conditions " section below for a list of conditions."
11052 .BI "Test [(" test-conditions ")] " command
11053 Performs
11054 .I command
11055 if all
11056 .I test-conditions
11057 are satisfied.  The
11058 .I test-conditions
11059 are keywords with possible arguments from the list below
11060 and are separated by commas or whitespace.  They include
11061 .IR "Version operator x.y.z" ,
11062 .IR "EnvIsSet varname" ,
11063 .IR "EnvMatch varname pattern" ,
11064 .IR "EdgeHasPointer direction" ,
11065 .IR "EdgeIsActive direction" ,
11066 .IR Start ,
11067 .IR Init ,
11068 .IR Restart ,
11069 .IR Exit ,
11070 .IR Quit ,
11071 .IR ToRestart ,
11072 .IR True ,
11073 .IR False ,
11074 .IR F ,
11075 .IR R ,
11076 .IR W ,
11077 .IR X " and"
11078 .IR I .
11079 A test-condition prefixed with "!" is negated.
11082 .I "Version operator x.y.z"
11083 test-condition is fulfilled if the logical condition of the expression is
11084 true. Valid
11085 .I operator
11086 values are:
11087 .IR >= ,
11088 .IR > ,
11089 .IR <= ,
11090 .IR < ,
11091 .I ==
11093 .IR != .
11095 Example:
11097 Test (Version >= 2.5.11) Echo 2.5.11 or later.
11100 .I "EnvIsSet varname"
11101 test-condition is true if the given environment variable is set.
11103 .I "EnvMatch varname pattern"
11104 test-condition is true if
11105 .I pattern
11106 matches the given environment variable value.
11107 The pattern may contain special "*" and "?" chars.
11110 .IB "EdgeHasPointer " [ direction ]
11111 test-condition is true if the edge in the given direction currently
11112 contains the pointer.
11114 .IB "EdgeIsActive " [ direction ]
11115 test-condition is true if the edge in the given direction currently is
11116 active. An edge is active, and can contain a pointer if either a
11117 command is bound to it or edge scroll is available in that
11118 direction. The direction may be one of
11119 .IR " Any", " North", " Top", " Up", " West", " Left", " South", " Bottom",
11120 .IR " Down", " Right" " and " " East" .
11121 If no direction is specified
11122 .I Any
11123 is assumed.
11126 .I Start
11127 test-condition is the same as either
11128 .IR Init " or " Restart .
11129 It is only true on startup or restart prior and during
11130 .B StartFunction
11131 execution.
11133 .I Exit
11134 test-condition is the same as either
11135 .IR Quit " or " ToRestart .
11136 It is only valid on shutdown during
11137 .B ExitFunction
11138 function execution.
11141 .I True
11143 .I False
11144 test-conditions are, well, unconditionally true and false.
11146 Additionally, if a test-condition name is not recognized, the Error
11147 return code is set and the command is not executed.
11150 .IR "F file" ,
11151 .IR "R file" ,
11152 .IR "W file" ,
11153 .IR "X file" " and"
11154 .IR "I file"
11155 test-conditions test for existence of the given [F]ile (possibly
11156 with [R]ead/[W]rite permissions), e[X]ecutable (in $PATH),
11157 or the [I]mage (in ImagePath).
11159 Example:
11161 AddToFunc StartFunction I Test (Init) Exec exec xterm
11163 AddToFunc VerifyVersion
11164 + I Test (Version 2.5.*) Echo 2.5.x detected
11165 + I TestRc (NoMatch) Test (!Version 2.6.*) Echo Future version
11166 + I TestRc (NoMatch) Echo 2.6.x is detected
11168 Test (F $[FVWM_USERDIR]/local-config) Read local-config
11169 Test (X xterm-utf16) Exec exec xterm-utf16
11173 .BI "TestRc [([!]" returncode ")] " command
11174 Performs
11175 .I command
11176 if the last conditional command returned the value
11177 .IR returncode .
11178 Instead of the numeric values 0 (no match), 1 (match), -1 (error),
11179 and -2 (break) the symbolic names "NoMatch", "Match", "Error" and
11180 "Break" can be used.  If no
11181 .I returncode
11182 is given, the default 0 is assumed.  If the return code is
11183 prefixed with '!', the command is executed if
11184 .I returncode
11185 does not match the value returned by the conditional command.
11186 .B TestRc
11187 command can only be used inside functions.  If the
11188 .I command
11189 is another conditional command, the previous return code is
11190 replaced by the new one.  Example:
11192 AddToFunc ToggleXterm
11193 + I All (my_xtermwindow) Close
11194 + I TestRc (NoMatch) Exec xterm -T my_xtermwindow
11198 .BI "ThisWindow [(" conditions ")] " command
11199 .B ThisWindow
11200 executes the specified
11201 .I command
11202 in the context of the current operand window.  If there is no
11203 operand window (it is invoked in the root window), the command is
11204 ignored.
11205 .B ThisWindow
11206 is never interactive.  The command is executed only if the given
11207 .I conditions
11208 are met.  It returns -1 if used outside a window context.
11209 .RB "See " Conditions " section below for a list of conditions."
11211 This command implies the conditions
11212 .IR CirculateHit ", " CirculateHitIcon " and " CirculateHitShaded .
11213 They can be turned off by specifying "!CirculateHit"
11214 etc. explicitly.
11217 .B "WindowId [\fIid\fP\
11218 ] [(\fIconditions\fP\
11219 )] | [\fIroot\fP \
11220 [\fIscreen\fP\
11221 ]] \fIcommand"
11223 .B WindowId
11224 command looks for a specific window
11225 .I id
11226 and runs the specified
11227 .I command
11228 on it.  The second form of syntax retrieves the window id of the
11229 root window of the given
11230 .IR screen .
11231 If no
11232 .I screen
11233 is given, the current screen is assumed.  The window indicated by
11234 .I id
11235 may belong to a window not managed by fvwm or even a window on a
11236 different screen.  Although most commands can not operate on such
11237 windows, there are some exceptions, for example the
11238 .B WarpToWindow
11239 command.
11240 Returns -1 if no window with the given id exists.
11241 .RB "See " Conditions " section below for a list of conditions."
11243 This command implies the conditions
11244 .IR CirculateHit ", " CirculateHitIcon " and " CirculateHitShaded .
11245 They can be turned off by specifying
11246 .I !CirculateHit
11247 etc. explicitly.
11249 Examples:
11251 WindowId 0x34567890 Raise
11252 WindowId root 1 WarpToWindow 50 50
11253 WindowId $0 (Silly_Popup) Delete
11255 In the past this command was mostly useful for functions used with
11257 .B WindowList
11258 command, or for selective processing of
11259 .B FvwmEvent
11260 calls (as in the last example), but currently these handler functions
11261 are called within a window context, so this command is not really
11262 needed in these cases.  Still it may be useful if, for example, the
11263 window id should be stored in the environment variable for a further
11264 proceeding.
11266 Pick SetEnv BOOKMARKED_WINDOW $[w.id]
11267 WindowId $[BOOKMARKED_WINDOW] WarpToWindow
11270 .SS Conditions
11273 .I conditions
11274 that may be given as an argument to any conditional command are a
11275 list of keywords separated by commas or whitespace, enclosed in
11276 parentheses.  Unless stated otherwise, conditional commands accept
11277 all the conditions listed below.  Note that earlier versions of
11278 fvwm required the conditions to be enclosed in brackets instead of
11279 parentheses (this is still supported for backward compatibility).
11281 In addition, the
11282 .I conditions
11283 may include one or more window names to match to.  If more than
11284 one window name is given, all of them must match.  The window
11285 name, icon name, class, and resource are considered when
11286 attempting to find a match. Each name may include the wildcards
11287 '*' and '?', and may consist of two or more alternatives,
11288 separated by the character '|', which acts as an OR operator.  (If
11289 OR operators are used, they must not be separated by spaces from
11290 the names.)  Each window name can begin with '!', which prevents
11291 .I command
11292 if any of the window name, icon name, class or resource match.
11293 However, '!' must not be applied to individual names in a group
11294 separated by OR operators; it may only be applied to the beginning
11295 of the group, and then it operates on the whole group.
11297 Examples:
11299  Next ("Netscape|konqueror|Mozilla*") WarpToWindow 99 90
11301 This goes to the next web browser window, no matter which of the
11302 three named web browsers is being used.
11304  Next ("Mozilla*", "Bookmark*") WarpToWindow 99 90
11306 This goes to Mozilla's bookmark manager window, ignoring other
11307 Mozilla windows and other browsers' bookmark windows.
11309  All ("XTerm|rxvt", !console) Iconify
11311 This iconifies all the xterm and rxvt windows on the current page,
11312 except that the one named "console" (with the -name option to xterm)
11313 is excluded.
11315  Next (!"FvwmPager|FvwmForm*|FvwmButtons") Raise
11316  Next (!FvwmPager, !FvwmForm*, !FvwmButtons) Raise
11318 These two commands are equivalent; either one raises the next window
11319 which is not one of the named fvwm modules.
11321 Any condition can be negated by using a an exclamation mark ('!')
11322 directly in front of its name.
11324 .IR AcceptsFocus ,
11325 .IR AnyScreen ,
11326 .IR CirculateHit ,
11327 .IR CirculateHitIcon ,
11328 .IR CirculateHitShaded ,
11329 .IR Closable ,
11330 .IR CurrentDesk ,
11331 .IR CurrentGlobalPage ,
11332 .IR CurrentGlobalPageAnyDesk ,
11333 .IR CurrentPage ,
11334 .IR CurrentPageAnyDesk ,
11335 .IR CurrentScreen ,
11336 .IR FixedPosition ,
11337 .IR FixedSize ,
11338 .IR Focused ,
11339 .IR HasHandles ,
11340 .IR HasPointer ,
11341 .IR Iconic ,
11342 .IR Iconifiable ,
11343 .IR "Layer [n]" ,
11344 .IR Maximizable ,
11345 .IR Maximized ,
11346 .IR Overlapped ,
11347 .IR "PlacedByButton n" ,
11348 .IR PlacedByButton3 ,
11349 .IR PlacedByFvwm ,
11350 .IR Raised ,
11351 .IR Shaded ,
11352 .IR "State n" ,
11353 .IR Sticky ,
11354 .IR StickyAcrossDesks ,
11355 .IR StickyAcrossPages ,
11356 .IR StickyIcon ,
11357 .IR StickyAcrossDesksIcon ,
11358 .IR StickyAcrossPagesIcon ,
11359 .IR Transient ,
11360 .IR Visible .
11363 .I AcceptsFocus
11364 condition excludes all windows that do not want the input focus
11365 (the application has set the "Input hints" for the window to
11366 False) and do not use the
11367 .I Lenience
11368 option of the
11369 .B Style
11370 command.  Also, all windows using the
11371 .I NeverFocus
11372 style are ignored.
11373 Note:
11374 .I !Lenience
11375 is equivalent to the deprecated option
11376 .IR NoLenience .
11378 With the
11379 .I AnyScreen
11380 condition used together with any of the
11381 .I Current...
11382 conditions, windows that do not intersect the Xinerama screen
11383 containing the mouse pointer are considered for a match too.  For
11384 example:
11386 # Focus next window on current page,
11387 # regardless of Xinerama screen
11388 Next (CurrentPage, AnyScreen) Focus
11392 .IR CirculateHit " and " CirculateHitIcon
11393 options override the
11394 .IR CirculateSkip " and " CirculateSkipIcon
11395 .B Style
11396 attributes for normal or iconic windows.  The
11397 .I CirculateHitShaded
11398 option overrides the
11399 .I CirculateSkipShaded
11400 .B Style.
11401 All three options are turned on
11402 by default for the
11403 .B Current
11404 command.  They can be turned off by specifying
11405 .I !CirculateHit
11406 etc. explicitly.
11407 Note:  Do not confuse these conditions with the style options of
11408 the same name.  Specifically,
11410 Style foo CirculateSkip
11411 Next (foo, CirculateHit) ...
11413 is not the same as
11415 Style foo CirculateHit ...
11416 Next (foo)
11418 The prior selects windows with the name foo only in the Next
11419 command.  In the second example, these windows are always matched
11420 in all conditional commands.
11423 .I Closable
11424 condition matches only windows that are allowed to be closed.
11427 .I CurrentDesk
11428 condition matches only windows that are on the current desk.
11431 .I CurrentGlobalPage
11432 condition matches only windows that are on the current page of the
11433 current desk, regardless of whether Xinerama support is enabled or
11434 not.  This condition implicitly activates the
11435 .I CurrentDesk
11436 condition.
11439 .I CurrentGlobalPageAnyDesk
11440 condition matches only windows that are on the current page of any
11441 desk, regardless of whether Xinerama support is enabled or not.
11444 .I CurrentPage
11445 condition matches only windows that are on the current page of the
11446 current desk.  If Xinerama support is enabled, it only matches
11447 windows that are at least partially on the Xinerama screen
11448 containing the mouse pointer.  This condition implicitly
11449 activates the
11450 .I CurrentDesk
11451 condition.
11454 .IR CurrentPageAnyDesk " and " CurrentScreen
11455 conditions matches only windows that are on the current page of any
11456 desk.  If Xinerama support is enabled, they only match windows
11457 that are at least partially on the Xinerama screen containing the
11458 mouse pointer.
11461 .I FixedPosition
11462 condition excludes all windows that do not have a fixed position,
11463 either set through WM hints or the
11464 .B Style
11465 option
11466 .IR FixedPosition .
11467 Example:
11469 DestroyFunc ToggleFixedGeometry
11470 AddToFunc   ToggleFixedGeometry
11471 + I Pick (FixedPosition) WindowStyle VariablePosition, VariableSize
11472 + I TestRc (NoMatch) WindowStyle FixedPosition, FixedSize
11476 .I FixedSize
11477 condition excludes all windows that do not have a fixed size,
11478 either set through WM hints or the
11479 .B Style
11480 option
11481 .IR FixedSize .
11484 .I Focused
11485 matches on the window that currently has the keyboard focus.
11486 This is not useful for the
11487 .B Current
11488 command but can be used with the other conditional commands.
11491 .I HasHandles
11492 condition excludes all windows that do not have resize handles.
11495 .I HasPointer
11496 condition excludes all windows that do not contain the pointer.
11499 .I Iconic
11500 condition matches only iconic windows.
11503 .I Iconifiable
11504 condition matches only windows that are allowed to be iconified.
11507 .I "Layer [n]"
11508 condition matches only windows on the specified layer.  The
11509 optional argument of the
11510 .I Layer
11511 condition defaults to the layer of the focused window.  The
11512 negation
11513 .I !Layer
11514 switches off the
11515 .I Layer
11516 condition.
11519 .I Maximizable
11520 condition matches only windows that are allowed to be maximized.
11523 .I Maximized
11524 condition matches only maximized windows.
11527 .I Overlapped
11528 condition matches only windows that are overlapped by other windows
11529 on the same layer (or unmanaged windows if the option
11530 .I RaiseOverUnmanaged
11531 of the
11532 .B BugOpts
11533 command is used).  Note that this condition can be slow if you
11534 have many windows or if RaiseOverUnmanaged is used and the
11535 connection to the X server is slow.
11538 .I "PlacedByButton n"
11539 condition is fulfilled if the last interactive motion of the
11540 window (with the
11541 .B Move
11542 command or as
11543 .IR ManualPlacement )
11544 was ended by pressing mouse button
11545 .IR n .
11546 Example:
11548 Mouse   1 T     A       Function MoveWindow
11550 DestroyFunc MoveWindow
11551 AddToFunc MoveWindow
11552 + C Move
11553 + C ThisWindow (PlacedByButton 5) WindowShade off
11554 + C TestRc (Match) Maximize on 0 100
11555 + C ThisWindow (PlacedByButton 4) WindowShade on
11559 .I PlacedByButton3
11560 condition has the same meaning as
11561 .I PlacedByButton
11562 3. It remains only for backward compatibility.
11565 .I PlacedByFvwm
11566 condition excludes all windows that have been placed manually or
11567 by using the user or program position hint.
11570 .I Raised
11571 conditions matches only windows that are fully visible on the
11572 current viewport and not overlapped by any other window.
11575 .I Shaded
11576 conditions matches only shaded windows (see
11577 .B WindowShade
11578 command).
11581 .IR "State n" " or " "!State n"
11582 conditions match only windows with the specified integer state set
11583 (or unset).  See the
11584 .B State
11585 command for details.  The argument may range from 0 to 31.
11588 .IR Sticky ", " StickyAcrossDesks " and " StickyAcrossPages
11589 match only windows that are currently sticky, sticky across all
11590 desks or sticky across all pages.  Please refer to the
11591 .B Style
11592 options with the same name and the commands
11593 .BR Stick ", " StickAcrossDesks " and " StickAcrossPages
11594 for details.
11597 .IR StickyIcon ", " StickyAcrossDesksIcon " and " StickyAcrossPagesIcon
11598 match only windows that become sticky, sticky across all desks or sticky
11599 across all pages when they are in iconified state.
11602 .I Transient
11603 condition matches only windows that have the "transient"
11604 property set by the application.  This it usually the case for
11605 application popup menus and dialogs.  The
11606 .B FvwmIdent
11607 module can be used to find out whether a specific window is
11608 transient.
11611 .I Visible
11612 condition matches only windows that are at least partially
11613 visible on the current viewport and not completely overlapped by
11614 other windows.
11616 .SS MODULE COMMANDS
11618 Fvwm maintains a database of module configuration lines in a form
11620 .BI "*" "<ModuleName>" ": " "<Config-Resource>"
11622 where
11623 .I "<ModuleName>"
11624 is either a real module name or an alias.
11626 This database is initially filled from config file (or from
11627 output of
11628 .B \-cmd
11629 config command), and can be later modified either by user (via
11630 .BR FvwmCommand )
11631 or by modules.
11633 When modules are run, they read appropriate portion of database.
11634 (The concept of this database is similar to one used in X resource
11635 database).
11637 Commands for manipulating module configuration database are
11638 described below.
11641 .BI "*" module_config_line
11642 Defines a module configuration.
11643 .I module_config_line
11644 consists of a module name (or a module alias) and a module
11645 resource line. The new syntax allows a delimiter, a colon and
11646 optional spaces, between the module name and the rest of the line,
11647 this is recommended to avoid conflicts.
11649 *FvwmIconBox: MaxIconSize 48x48
11650 *FvwmPager: WindowBorderWidth 1
11651 *FvwmButtons-TopRight: Geometry 100x100-0+0
11652 *FvwmButtons-Bottom: Geometry +0-0
11656 .BI "DestroyModuleConfig " module_config
11657 Deletes module configuration entries, so that new configuration
11658 lines may be entered instead.  This also sometimes the only way to
11659 turn back some module settings, previously defined.  This changes
11660 the way a module runs during a fvwm session without restarting.
11661 Wildcards can be used for portions of the name as well.
11663 The new non-conflicting syntax allows a delimiter, a colon and
11664 optional spaces between the module name and the rest of the line.
11665 In this case a module name (or alias) can't have wildcards.
11667 DestroyModuleConfig FvwmButtons*
11668 DestroyModuleConfig FvwmForm: Fore
11669 DestroyModuleConfig FvwmIconBox: Max*
11673 .BI "KillModule " modulename " [" modulealias ]
11674 Causes the module which was invoked with name
11675 .I modulename
11676 to be killed.  The name may include wildcards. If
11677 .I modulealias
11678 is given, only modules started with the given alias are killed.
11680 KillModule FvwmPager  # kill all pagers
11682 Module FvwmEvent SoundEvent
11683 KillModule FvwmEvent SoundEvent
11687 .BI "Module " modulename " [" moduleparams ]
11688 Specifies a module with its optional parameters which should be
11689 spawned. Currently several modules, including
11690 .BR FvwmButtons ", " FvwmEvent ", " FvwmForm ", " FvwmGtk ", "
11691 .BR FvwmPager ", " FvwmScript
11692 support aliases.  Aliases are useful if more than one instance of
11693 the module should be spawned.  Aliases may be configured
11694 separately using
11695 .B *
11696 syntax described above.  To start a module
11697 .B FvwmForm
11698 using an alias
11699 .IR MyForm ,
11700 the following syntax may be used:
11702 Module FvwmForm MyForm
11705 At the current time the available modules (included with fvwm) are
11706 .B FvwmAnimate
11707 (produces animation effects when a window is iconified or
11708 de-iconified),
11709 .B FvwmAuto
11710 (an auto raise module),
11711 .B FvwmBacker
11712 (to change the background when you change desktops),
11713 .B FvwmBanner
11714 (to display a spiffy XPM, XBM or PNG),
11715 .B FvwmButtons
11716 (brings up a customizable tool bar),
11717 .B FvwmCommandS
11718 (a command server to use with shell's FvwmCommand client),
11719 .B FvwmConsole
11720 (to execute fvwm commands directly),
11721 .B FvwmCpp
11722 (to preprocess your
11723 .I config
11724 with cpp),
11725 .B FvwmDebug
11726 (to help debug fvwm),
11727 .B FvwmDragWell
11728 (the place to drag&drop to),
11729 .B FvwmEvent
11730 (trigger various actions by events),
11731 .B FvwmForm
11732 (to bring up dialogs),
11733 .B FvwmGtk
11734 (to bring up
11735 .SM GTK
11736 menus and dialogs),
11737 .B FvwmIconBox
11738 (like the mwm IconBox),
11739 .B FvwmIconMan
11740 (a flexible icon manager),
11741 .B FvwmIdent
11742 (to get window info),
11743 .B FvwmM4
11744 (to preprocess your
11745 .I config
11746 with m4),
11747 .B FvwmPager
11748 (a mini version of the desktop),
11749 .B FvwmPerl
11750 (a Perl manipulator and preprocessor),
11751 .B FvwmProxy
11752 (to locate and control obscured windows by using small proxy windows),
11753 .B FvwmRearrange
11754 (to rearrange windows),
11755 .B FvwmSave
11756 (saves the desktop state in .xinitrc style),
11757 .B FvwmSaveDesk
11758 (saves the desktop state in fvwm commands),
11759 .B FvwmScript
11760 (another powerful dialog toolkit),
11761 .B FvwmScroll
11762 (puts scrollbars on any window),
11763 .B FvwmTabs
11764 (a generic tabbing module),
11765 .B FvwmTaskBar
11766 (a Windows like task bar),
11767 .B FvwmTheme
11768 (managed colorsets, obsolete),
11769 .B FvwmWharf
11770 (an AfterStep like button bar),
11771 .B FvwmWindowMenu
11772 (a configurable fvwm menu listing current windows),
11773 .B FvwmWinList
11774 (a window list).  These modules have their own man
11775 pages.  There may be other modules out on there as well.
11778 Modules can be short lived transient programs or, like
11779 .BR FvwmButtons ,
11780 can remain for the duration of the X session.  Modules are
11781 terminated by the window manager prior to restarts and quits, if
11782 possible.  See the introductory section on modules.  The keyword
11783 .B Module
11784 may be omitted if
11785 .I modulename
11786 is distinct from all fvwm commands.
11789 .BI "ModuleListenOnly " modulename " [" moduleparams ]
11790 This command works like the
11791 .B Module
11792 command, but fvwm never sends any messages to the module. This may
11793 be handy to write a module as a shell script that is triggered by
11794 external events without the burden to answer packets sent by
11795 fvwm. For example, a module written as a shell script may change
11796 labels of the
11797 .B FvwmButtons
11798 module to implement a simple clock.
11801 .BI "ModulePath " path
11802 Specifies a colon separated list of directories in which to search
11803 for modules.  To find a module, fvwm searches each directory in
11804 turn and uses the first file found.  Directory names on the list
11805 do not need trailing slashes.
11808 .BI ModulePath
11809 may contain environment variables such as
11810 .IR $HOME " (or " ${HOME} ).
11811 Further, a '+' in the
11812 .I path
11813 is expanded to the previous value of the
11814 .IR path ,
11815 allowing easy appending or prepending to the
11816 .IR path .
11818 For example:
11820 ModulePath ${HOME}/lib/fvwm/modules:+
11822 The directory containing the standard modules is available via the
11823 environment variable
11824 .IR $FVWM_MODULEDIR .
11827 .BI "ModuleSynchronous  [" "Expect string" "] [" "Timeout secs" "] " modulename
11829 .B ModuleSynchronous
11830 command is very similar to
11831 .BR Module .
11832 Fvwm stops processing any commands and user input until the module
11833 sends a string beginning with "NOP FINISHED STARTUP" back to fvwm.
11834 If the optional
11835 .I Timeout
11836 is given fvwm gives up if the module sent no input back to fvwm
11838 .I secs
11839 seconds.  If the
11840 .I Expect
11841 option is given, fvwm waits for the given
11842 .I string
11843 instead.
11844 .B ModuleSynchronous
11845 should only be used during fvwm startup to enforce the order in
11846 which modules are started.  This command is intended for use with
11847 the (currently hypothetical) module that should be in place before
11848 other modules are started.
11850 Warning: It is quite easy to hang fvwm with this command, even if
11851 a timeout is given.  Be extra careful choosing the string to wait
11852 for. Although all modules in the fvwm distribution send back the
11853 "NOP FINISHED STARTUP" string once they have properly started up,
11854 this may not be the case for third party modules.  Moreover, you
11855 can try to escape from a locked
11856 .B ModuleSynchronous
11857 command by using the key sequence
11858 .SM Ctrl-Alt-Escape
11859 (see the
11860 .BR EscapeFunc ).
11863 .BI "ModuleTimeout " timeout
11864 Specifies how many seconds fvwm waits for a module to respond. If
11865 the module does not respond within the time limit then fvwm kills
11867 .I timeout
11868 must be greater than zero, or it is reset to the default value of
11869 30 seconds.
11872 .BI "SendToModule " "modulename string"
11873 Sends an arbitrary string (no quotes required) to all modules,
11874 whose alias or name matching
11875 .IR modulename ,
11876 which may contain wildcards.  This only makes sense if the module
11877 is set up to understand and deal with these strings though. Can be
11878 used for module to module communication, or implementation of more
11879 complex commands in modules.
11882 .SS QUIT, RESTART AND SESSION MANAGEMENT COMMANDS
11885 .BI "Quit"
11886 Exits fvwm, generally causing X to exit too.
11889 .BI "QuitScreen"
11890 Causes fvwm to stop managing the screen on which the command was
11891 issued.
11894 .BI "QuitSession"
11895 Causes a session manager (if any) to shutdown the session.  This
11896 command does not work for xsm, it seems that xsm does not
11897 implement this functionality.  Use Unix signals to manage xsm
11898 remotely.
11901 .BI "Restart [" window_manager " [" params "]]"
11902 Causes fvwm to restart itself if
11903 .I window_manager
11904 is left blank, or to switch to an alternate window manager (or
11905 other fvwm version) if
11906 .I window_manager
11907 is specified.  If the window manager is not in your default search
11908 path, then you should use the full path name for
11909 .IR window_manager .
11911 This command should not have a trailing ampersand.  The command
11912 can have optional parameters with simple shell-like syntax.  You
11913 can use
11914 .I ~
11915 (is expanded to the user's home directory) and environmental
11916 variables
11917 .IR $VAR " or " ${VAR} .
11918 Here are several examples:
11920 Key F1 R N Restart
11921 Key F1 R N Restart fvwm -s
11922 Key F1 R N Restart ~/bin/fvwm -f $HOME/.fvwm/main
11923 Key F1 R N Restart fvwm1 -s -f .fvwmrc
11924 Key F1 R N Restart xterm -n '"X console"' \\
11925   -T \\"X\\ console\\" -e fvwm1 -s
11927 If you need a native restart, we suggest only to use
11928 .B Restart
11929 command without parameters unless there is a reason not to.  If you
11930 still use an old command 'Restart fvwm2' that was correct in 2.2.x,
11931 all current command line arguments are lost.  On a restart without
11932 parameters or with --pass-args, they are preserved.  Here are some
11933 cases when 'Restart fvwm2' or 'Restart fvwm' cause troubles:
11935 * running fvwm under a session manager
11936 * running fvwm with multi headed displays
11937 * having command line arguments, like
11938   -f themes-rc or -cmd
11939 * if the first fvwm2 in the $PATH is a
11940   different one
11942 This is why we are issuing a warning on an old usage. If you
11943 really want to restart to fvwm with no additional arguments, you
11944 may get rid of this warning by using "Restart fvwm -s" or
11945 "Restart /full/path/fvwm".
11947 Note, currently with multi headed displays, restart of fvwms on
11948 different screens works independently.
11951 .BI "Restart " "--pass-args window_manager"
11952 The same as
11953 .B Restart
11954 without parameters but the name for the current window manager is
11955 replaced with the specified
11956 .I window_manager
11957 and original arguments are preserved.
11959 This command is useful if you use initial arguments like
11961 -cmd FvwmCpp
11963 and want to switch to another fvwm version without losing the
11964 initial arguments.
11967 .BI "Restart " --dont-preserve-state " [" other-params "]"
11968 The same as
11970 .BI "Restart [" other-params "]"
11972 but it does not save any window states over the restart.
11974 Without this option,
11975 .B Restart
11976 preserves most per-window state by writing it to a file named
11977 .I .fs-restart-$HOSTDISPLAY
11978 in the user's home directory.
11981 .BI "SaveSession"
11982 Causes a session manager (if any) to save the session.  This
11983 command does not work for xsm, it seems that xsm does not
11984 implement this functionality.  Use Unix signals to manage xsm
11985 remotely.
11988 .BI "SaveQuitSession"
11989 Causes a session manager (if any) to save and then shutdown the
11990 session. This command does not work for xsm, it seems that xsm
11991 does not implement this functionality.  Use Unix signals to manage
11992 xsm remotely.
11995 .SS COLORSETS
11997 Colorsets are a powerful method to control colors. Colorsets
11998 create appearance resources that are shared by fvwm and its
11999 modules.  When a colorset is modified all parts of fvwm react to
12000 that change. A colorset includes a foreground color, background
12001 color, shadow and highlight color (often based on the background
12002 color), background face (this includes images and all kinds of
12003 gradients).  There is a way to render background face and specify
12004 other color operations.
12006 In the 2.4.x versions a special module
12007 .B FvwmTheme
12008 was introduced to manage colorsets.  Starting with the 2.5.x beta
12009 version, the FvwmTheme functionality was moved to the core fvwm,
12010 so this module became obsolete.
12012 The old syntax:
12014 DestroyModuleConfig FvwmTheme: *
12015 *FvwmTheme: Colorset 0 fg black, bg rgb:b4/aa/94
12016 *FvwmTheme: Colorset 1 fg black, bg rgb:a1/b2/c8
12018 corresponds to the new syntax:
12020 CleanupColorsets
12021 Colorset 0 fg black, bg rgb:b4/aa/94
12022 Colorset 1 fg black, bg rgb:a1/b2/c8
12026 .BI "Colorset " num " [" options "]"
12027 Creates or modifies colorset
12028 .IR num .
12029 Colorsets are identified by this number. The number can start at
12030 zero and can be a very large number.
12032 Warning: The highest colorset number used determines memory
12033 consumption. Thus, if you define 'Colorset 100000', the memory for
12034 100001 colorsets is used.  Keep your colorset numbers as small as
12035 possible.
12037 By convention, colorsets are numbered like this:
12039 # 0 = Default colors
12040 # 1 = Inactive windows
12041 # 2 = Active windows
12042 # 3 = Inactive menu entry and menu background
12043 # 4 = Active menu entry
12044 # 5 = greyed out menu entry (only bg used)
12045 # 6 = module foreground and background
12046 # 7 = hilight colors
12049 If you need to have more colors and do not want to reinvent the
12050 wheel, you may use the convention used in fvwm-themes, it defines
12051 the meaning of the first 40 colorsets for nearly all purposes:
12053 .B http://fvwm-themes.sourceforge.net/doc/colorsets
12055 Each colorset has four colors, an optional pixmap and an optional
12056 shape mask.  The four colors are used by modules as the
12057 foreground, background, highlight and shadow colors.  When a
12058 colorset is created it defaults to a foreground of black and
12059 background of gray.  The background and foreground are marked as
12060 "average" and "contrast" (see later) so that just specifying a
12061 pixmap or gradient gives sensible results.
12063 .I options
12064 is a comma separated list containing some of the keywords:
12065 fg, Fore, Foreground,
12066 bg, Back, Background,
12067 hi, Hilite, Hilight,
12068 sh, Shade, Shadow,
12069 fgsh,
12070 Pixmap, TiledPixmap, AspectPixmap,
12071 Transparent, RootTransparent,
12072 Shape, TiledShape, AspectShape, NoShape,
12073 ?Gradient,
12074 Tint, fgTint, bgTint,
12075 Alpha, fgAlpha,
12076 Dither, NoDither,
12077 IconTint,
12078 IconAlpha,
12079 Plain.
12081 .IR fg ", " Fore " and " Foreground
12082 take a color name as an argument and set the foreground color.
12083 The special name
12084 .I Contrast
12085 may be used to select a color that contrasts well with the
12086 background color.  To reset the foreground color to the default
12087 value you can simply omit the color name.
12089 .IR bg ", " Back " and " Background
12090 take a color name as an argument and set the background color.  It
12091 also sets the highlight and shadow colors to values that give a 3d
12092 effect unless these have been explicitly set with the options
12093 below.  The special name
12094 .I Average
12095 may be used to select a color that is the average color of the
12096 pixmap.  If the pixmap is tinted with the
12097 .I Tint
12098 option, the tint is not taken in account in the computation of the
12099 average color. You should use the
12100 .I bgTint
12101 option to get the "real" average color.  The background color is
12102 reset to the default value if the color name is omitted.
12104 .IR hi ", " Hilite " and " Hilight
12105 take a color name as an argument and set the highlight color.  If
12106 the highlight color is not explicitly set, the default is to
12107 calculate it from the background color.  To switch back to the
12108 default behavior the color name can be omitted.
12110 .IR sh ", " Shade " and " Shadow
12111 take a color name as an argument and set the shadow color.  If the
12112 shadow color is not explicitly set, the default is to calculate it
12113 from the background color.  To switch back to the default behavior
12114 the color name can be omitted.
12116 .I fgsh
12117 takes a color name as an argument and sets the color used by the
12118 shadowing font effect. See the
12119 .B FONT SHADOW EFFECTS
12120 section of the fvwm man page.  By default this color is computed
12121 from the foreground and background colors.  To switch back to the
12122 default the color name can be omitted.
12124 .IR Pixmap ", " TiledPixmap " and " AspectPixmap
12125 take a file name as an argument, search the
12126 .B ImagePath
12127 and use it as the background pixmap.  Any transparent parts are
12128 filled with the background color.  Not specifying a file name
12129 removes any existing image from the colorset.
12130 .I TiledPixmap
12131 produces repeated copies of the image with no scaling,
12132 .I Pixmap
12133 causes the image to be stretched to fit whatever object the
12134 colorset is applied to and
12135 .I AspectPixmap
12136 stretches to fit but retains the image aspect ratio.
12138 .I Transparent
12139 creates a transparent background pixmap.  The pixmap is used as a
12140 window background to achieve root transparency.  For this you
12141 should use the
12142 .I ParentalRelativity
12143 option to the
12144 .B Style
12145 command.
12146 A subsequent root background change may be detected or not, this
12147 depends on the program used to set the background.  If you use
12148 fvwm-root, xsetbg (xli), FvwmBacker with solid or colorset colors
12149 or a recent version of Esetroot (>= 9.2) a background change is
12150 detected. If background changes are not detected (e.g., if you use
12151 xv or xsetroot) you can force detection by using the -d option of
12152 fvwm-root:
12154 xv -root -quit mybg.png; fvwm-root -d
12156 Due to the way X implements transparency no guarantees can be made
12157 that the desired effect can be achieved.  The application may even
12158 crash.  If you experience any problems with this option, do not
12159 use it.
12161 Using outline move and resize (see the
12162 .B OpaqueMoveSize
12163 command and the
12164 .I ResizeOpaque
12165 .B Style
12166 option) as well as setting the
12167 .I WindowShadeShrinks
12168 style may help.  The transparency achieved with
12169 .I Transparent
12170 depends on whether the colorset is applied to the foreground or
12171 the background of a window. In the second case the transparency is
12172 relative to the parent window of the window on which the colorset
12173 is defined.  For example:
12175 Colorset 12 VGradient 200 grey30 grey60
12176 Colorset 17 Transparent
12177 *FvwmIconMan: Colorset 12
12178 *FvwmIconMan: PlainColorset 17
12180 gives an IconMan with a vertical grey gradient background and the
12181 buttons use the background (by transparency). To obtain a (root)
12182 transparent IconMan:
12184 Colorset 12 Transparent
12185 Colorset 17 Transparent
12186 Colorset 18 Transparent
12187 Colorset 19 Transparent
12189 *FvwmIconMan: Colorset 12
12190 *FvwmIconMan: PlainColorset 17
12191 *FvwmIconMan: FocusColorset 18
12192 *FvwmIconMan: IconColorset  19
12194 The Colorset IconMan option defines the IconMan window background,
12195 but the PlainColorset and the FocusColorset are drawn on the
12196 foreground. So, the transparency of the IconMan buttons is
12197 achieved by drawing nothing.  Now if this IconMan is swallowed in
12198 an FvwmButtons as:
12200 FvwmButtons:(Colorset 10, Swallow \\
12201   "FvwmIconMan" 'FvwmIconMan')
12203 then,
12204 .B FvwmIconMan
12205 becomes a child of
12206 .B FvwmButtons
12207 and it is transparent relative to
12208 .BR FvwmButtons .
12209 So, in this case
12210 .B FvwmIconMan
12211 uses Colorset 10 as background. If you want root transparency use
12213 .I RootTransparent
12214 option.
12215 .BR FvwmButtons ", " FvwmIconMan ", " FvwmIdent ", " FvwmScroll
12217 .B FvwmTaskBar
12218 are relatively simple. There is one main colorset option which
12219 defines the background of the window and the other colorsets (if
12220 any) are drawn on the foreground. The case of
12221 .BR FvwmWinList " and " FvwmProxy
12222 are simpler. With
12223 .B FvwmWinList
12224 all the colorsets are drawn on the foreground and with
12225 .B FvwmProxy
12226 the two colorsets refer to the window backgrounds.
12227 .B FvwmPager
12228 is more complicated as almost everything in the pager are windows
12229 with some parental relations (the mini windows are the child and
12230 the desktops are the parents and all this is complicated by the
12231 hilighted page). So, the colorsets apply to the background of
12232 these windows. You should experiment. For
12233 .BR FvwmForm " and " FvwmScript
12234 the situation is similar. There is a main window (a child of the
12235 root window) which corresponds to the main colorset and most of
12236 the widgets are windows which are children of the main window.
12237 .I Tint
12238 may work or not with the
12239 .I Transparent
12240 option. When the colorset is drawn on the foreground
12241 .I Tint
12242 should work. In some cases, tinting may be very slow. Tinting may
12243 work with fvwm menu (without animation). Tinting may work better
12244 if your X server has backing store enabled (try xdpyinfo to see if
12245 this the case). There is a chance that the backing store support
12246 of your X server does not work well with the terrible hack used to
12247 Tint the ParentRelative Pixmap. So, to get tinted root
12248 transparency it is more safe to use the
12249 .I RootTransparent
12250 option.
12252 .IR RootTransparent " [ " buffer " ] "
12253 creates a root transparent background. To make this option work,
12254 you must use an Esetroot compatible program, fvwm-root with the
12255 --retain-pixmap option or FvwmBacker with the RetainPixmap option
12256 (and colorset or solid backgrounds).  The
12257 .I buffer
12258 keyword is useful only when the
12259 .I Tint
12260 option is used too. This speeds up creation of windows which use
12261 the colorset (useful for fvwm menus) at the cost of memory
12262 usage. It also speeds up opaque move and resize which can be
12263 unacceptably slow without
12264 .IR buffer .
12265 However, this option may add a lot of memory to your X server
12266 (depending on the size of the image used to set the
12267 background). In summary, using outline move and resize for modules
12268 which use such a colorset may be a good idea.
12270 .IR Shape ", " TiledShape " and " AspectShape
12271 take a file name as an argument, search the
12272 .B ImagePath
12273 and use it as the shape bitmap.
12274 .I TiledShape
12275 produces repeated copies of the bitmap with no scaling,
12276 .I Shape
12277 causes the bitmap to be stretched to fit whatever object the
12278 colorset is applied to and
12279 .I AspectShape
12280 stretches to fit but retains the bitmap aspect ratio.  If the file
12281 is a pixmap in xpm format, the shape mask of the pixmap is used.
12283 Warning: Due to the way X11 implements shapes you cannot take back
12284 making windows shaped. You may have to restart fvwm or the shaped
12285 application.
12287 .I ?Gradient ...
12288 creates a pixmap and stretches it to fit the window.
12289 .I ?Gradient
12290 may be one of HGradient, VGradient, DGradient, BGradient,
12291 SGradient, CGradient, RGradient or YGradient.  The gradient types
12292 are as follows:  H is horizontal; V is vertical; D is diagonal
12293 from top left to bottom right; B is a backwards diagonal from
12294 bottom left to top right; S is concentric squares; C is concentric
12295 circles; R is a radar like pattern and Y is a Yin Yang style (but
12296 without the dots).
12297 Please refer to the
12298 .B COLOR GRADIENTS
12299 section for the syntax of gradients.
12301 .I Tint
12302 takes 2 arguments, a color and a percentage between 0 and 100. It
12303 causes the image defined using
12304 .I ?Pixmap
12306 .I ?Gradient
12307 to be tinted with the specified color using the percentage. If the
12308 image is transparent
12309 .I Tint
12310 tints only the image part. Unfortunately, a colorset background
12311 specified using the
12312 .I Transparent
12313 option can give strange results. See the
12314 .I Transparent
12315 option for details. With no arguments this option removes the
12316 tint.
12318 .I fgTint
12319 takes 2 arguments, a color and a percentage between 0 and 100. It
12320 causes the color defined using
12321 .I fg
12322 to be tinted with the specified color using the percentage. With
12323 no arguments this option removes the tint.
12325 .I bgTint
12326 takes 2 arguments, a color and a percentage between 0 and 100. It
12327 causes the color defined using
12328 .I bg
12329 to be tinted with the specified color using the percentage. If the
12330 .I sh
12332 .I hi
12333 colors are not specified, they are recomputed from the tinted bg
12334 color. With no arguments this option removes the tint.
12336 .I Alpha
12337 takes a percentage between 0 and 100 as an argument. It causes
12338 fvwm to merge the image defined using
12339 .I ?Pixmap
12341 .I ?Gradient
12342 with the
12343 .I bg
12344 color using the percentage. If the percentage is 0 the image is
12345 hidden and if it is 100 the image is displayed as usual (no
12346 merge). The default is 100 and it is restored if no argument is
12347 given.
12349 .I fgAlpha
12350 takes a percentage between 0 and 100 as an argument. It causes
12351 fvwm to merge the text and the colorset background using the
12352 percentage. If the percentage is 0 the text is hidden and if it is
12353 100 the text is displayed as usual (no merge). This option has an
12354 effect only with fonts loaded by Xft, see the
12355 .B FONT NAMES AND FONT LOADING
12356 section. The default is 100 and it is restored if no argument is
12357 given.
12359 .I Dither
12360 causes fvwm to dither the image defined using
12361 .I ?Pixmap
12363 .I ?Gradient.
12364 This is useful only with displays with depth less than or equal to
12365 16 (i.e., on displays which can only display less than 65537
12366 colors at once). The dithering effect lets you simulate having
12367 more colors available that you actually have.
12368 .I NoDither
12369 causes fvwm to do not dither the images.
12370 .I Dither
12371 is the default if the depth is less than or equal to 8 (a screen
12372 with 256 colors or less). In depth 15 (32768 colors) and 16 (65536
12373 colors), the default is
12374 .IR NoDither ,
12375 however this effect can be useful with images which contain a lot
12376 of close colors. For example a fine gradient looks more smooth.
12378 .I IconTint
12379 takes 2 arguments, a color and a percentage between 0 and 100. It
12380 causes fvwm or a module to tint the "icons" which are rendered
12381 into the colorset background with the specified color using a
12382 percentage. Here "icons" means, fvwm Icons, fvwm menu icons,
12383 MiniIcons which represent applications in various modules, images
12384 loaded by modules (e.g., images specified by the
12385 .I Icon
12386 .B FvwmButtons
12387 button option) ...etc. With no arguments this option removes the
12388 icon tint.
12390 .I IconAlpha
12391 takes a percentage between 0 and 100 as an argument. It causes
12392 fvwm to merge the "icons" which are rendered into the colorset
12393 background using this percentage. The default is 100 and it is
12394 restored if no argument is given.
12396 .IR Note :
12397 It is equivalent to use "Tint a_color rate" and "Alpha a" if a =
12398 100 and the bg color is a_color. This equivalence does not hold
12399 for IconAlpha and IconTint as the background can be an image or a
12400 gradient (and not a uniform color background).
12401 However, in some cases you can achieve (almost) the same effect by
12402 using IconTint in the place of IconAlpha. This is preferable as,
12403 in general, IconAlpha generates more redrawing than IconTint.
12405 .I NoShape
12406 removes the shape mask from the colorset while
12407 .I Plain
12408 removes the background pixmap or gradient.
12410 .SH EXAMPLES
12413 Colorset 3 fg tan, bg navy
12416 If necessary this creates colorsets 0, 1, 2 and 3 and then changes
12417 colorset 3 to have a foreground of tan, a background of navy.
12420 Colorset 3 bg "navy blue"
12423 changes the background color of colorset 3 to navy blue. The
12424 foreground and pixmap are unchanged.
12427 Colorset 3 AspectPixmap large_murky_dungeon.xpm
12430 Causes depression.
12433 Colorset 3 bg Average
12436 Sets the background color and the relief colors to match the
12437 background pixmap. This is the default setting but it must be used
12438 if a background color was specified and is now not required.
12440 Colorset 3 YGradient 200 3 blue 1000 navy 1 blue 1000 navy
12442 Adds a Yin Yang gradient background pixmap to colorset 3.  If the
12443 background is set to average it is recomputed along with the
12444 foreground if that is set to contrast.
12447 #!/bin/sh
12448 FvwmCommand "Colorset 7 fg navy, bg gray"
12449 while true
12451   FvwmCommand "Colorset 7 fg gray"
12452   sleep 1
12453   FvwmCommand "Colorset 7 fg navy"
12454   sleep 1
12455 done
12457 Makes colorset 7 blink.
12459 The color names used in colorsets are saved as fvwm variables which
12460 can be substituted in any fvwm command. For example:
12462 AddToFunc InitFunction
12463 + I Exec exec xterm -fg $[fg.cs0] -bg $[bg.cs0]
12465 Where $[fg.cs0] is the foreground color of colorset zero. Please
12466 refer to the
12467 .B COMMAND EXPANSION
12468 section for more information.
12471 .B CleanupColorsets
12472 Resets a definition of all colorsets.
12475 .SS COLOR GRADIENTS
12477 A color gradient is a background that changes its color gradually
12478 from one hue to a different one.  Color gradients can be used by
12479 various commands and modules of fvwm.  There are eight types of
12480 gradients:
12481 .B HGradient
12482 is a horizontal gradient,
12483 .B VGradient
12484 is vertical,
12485 .B DGradient
12486 is diagonal from top left to bottom right,
12487 .B BGradient
12488 is backwards diagonal from bottom left to top right,
12489 .B SGradient
12490 is concentric squares,
12491 .B CGradient
12492 is concentric circles,
12493 .B RGradient
12494 is a radar like pattern and
12495 .B YGradient
12496 is a Yin Yang style (but without the dots).
12498 The color gradient syntax has two forms:
12501 .BI "?Gradient " "colors start-color end-color"
12502 This form specifies a linear gradient.  The arguments denote the
12503 total number of
12504 .I colors
12505 to allocate (between 2 and 1000), the initial color and the final
12506 color.
12508 Example:
12510 TitleStyle VGradient 20 \\
12511 rgb:b8/ce/bc rgb:5b/85/d0
12515 .BI "?Gradient " "colors segments color length color" " [" "length color" "] ..."
12516 The second form specifies a nonlinear gradient.  The arguments are:
12517 the total number of
12518 .I colors
12519 to allocate (between 2 and 1000), then the number of
12520 .IR segments .
12521 For each segment, specify the starting
12522 .IR color ,
12523 a relative
12524 .IR length ,
12525 then the ending color.  Each subsequent segment begins with the
12526 second color of the last segment.  The lengths may be any
12527 non-negative integers.  The length of one segment divided by the
12528 sum of all segments lengths is the fraction of the colors that
12529 are used for the segment.
12530 .in -2
12532 Examples:
12534 MenuStyle * MenuFace DGradient \\
12535   128 2 lightgrey 50 blue 50 white
12537 # 20% gradient from red to blue,
12538 # 30% from blue to black,
12539 # 50% from black to grey
12540 MenuStyle * MenuFace DGradient 100 3 Red 20 Blue 30 \\
12541   Black 50 Grey
12543 # 50% from blue to green, then
12544 # 50% from yellow to red
12545 Colorset 0 HGradient \\
12546   128 3 Blue 1000 Green 1 Yellow 1000 Red
12549 .SH ENVIRONMENT
12552 .I DISPLAY
12553 Fvwm starts on this display unless the
12554 .I -display
12555 option is given.
12557 .I FVWM_MODULEDIR
12558 Set by fvwm to the directory containing the standard fvwm modules.
12560 .I FVWM_USERDIR
12561 Used to determine the user's data directory for reading and
12562 sometimes writing personal files. If this variable is not already
12563 set, it is set by fvwm to $HOME/.fvwm, which is the default user's
12564 data directory.
12566 .I SESSION_MANAGER
12567 Fvwm tries to contact this session manager.
12569 .I SESSION_MANAGER_NAME
12570 This is used mainly to determine xsm running to work around its
12571 bug. If this variable is set to "xsm", DiscardCommand is set as
12572 xsm expects it and not as XSMP requires.  If you run fvwm under
12573 xsm, you should set this variable to "xsm", otherwise old state
12574 files are not removed.
12576 .I SM_SAVE_DIR
12577 If this is set, fvwm saves its session data in this
12578 directory. Otherwise it uses
12579 .IR $HOME .
12580 Note, the state files are named
12581 .I .fs-??????
12582 and normally are removed automatically when not used anymore.
12584 .SH AUTHORS
12586 Robert Nation with help from many people, based on twm code, which
12587 was written by Tom LaStrange.  After Robert Nation came Charles
12588 Hines, followed by Brady Montz. Currently fvwm is developed by a
12589 number of people on the fvwm-workers mailing list.
12591 .SH COPYRIGHT
12593 Fvwm and all the modules, scripts and other files coming with the
12594 distribution are subject to the
12595 .SM GNU
12596 General Public License (GPL). Please refer to the
12597 .I COPYING
12598 file that came with fvwm for details.
12600 .SH BUGS
12602 As of fvwm version 2.4.0 there were exactly 71.8 unidentified
12603 bugs. Since then 22.825 bugs have been fixed.  Assuming that there
12604 are at least 10 unidentified bugs for every identified one, that
12605 leaves us with 71.8 - 22.825 + 10 * 22.825 = 277.225 unidentified
12606 bugs. If we follow this to its logical conclusion we will have an
12607 infinite number of unidentified bugs before the number of bugs can
12608 start to diminish, at which point the program will be bug-free.
12609 Since this is a computer program infinity = 3.4028e+38 if you
12610 do not insist on double-precision.  At the current rate of bug
12611 discovery we should expect to achieve this point in 4.27e+27
12612 years.  I guess we better plan on passing this thing on to our
12613 children...
12615 Known bugs can be found in the fvwm bug tracking system
12616 (accessible from the fvwm home page).
12618 Bug reports can be sent to the fvwm-workers mailing list at
12619 @FVWMWORKERSLIST@ (see the
12620 .IR FAQ )
12621 or reported through the bug tracking system.
12623 The official fvwm homepage is
12624 .BR @FVWMHOMEPAGE@ .