* NEWS:
[fvwm.git] / fvwm / fvwm.1.in
blob9db177e4fd88865773378275896bc760786b54be
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.  Don't 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 will eventually get 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 ICCCM
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, gnome hints, EWMH hints,
267 session management, bidirectional text, multibyte characters,
268 xinerama and Xft aa font rendering.
270 .BR "-C" " | " "--visual "
271 .I visual-class
272 Causes fvwm to use
273 .I visual-class
274 for the window borders and menus.
275 .I visual-class
276 can be "StaticGray", "GrayScale", "StaticColor", "PseudoColor",
277 "TrueColor" or "DirectColor".
279 .BR "-I" " | " "--visualid "
280 .I id
281 Causes fvwm to use
282 .I id
283 as the visual id for the window borders and menus.
284 .I id
285 can be specified as N for decimal or 0xN for hexadecimal. See man
286 page of xdpyinfo for a list of supported visuals.
288 .BR "-l" " | " "--color-limit "
289 .I limit
290 Specifies a
291 .I limit
292 on the colors used in image, gradient and possibly simple colors
293 used by fvwm. In fact, fvwm (and all the modules) uses a palette
294 with at most
295 .I limit
296 colors. This option is only useful with screens that display 256
297 colors (or less) with a dynamic visual (PseudoColor, GrayScale or
298 DirectColor). The default depends on your X server and how you run
299 fvwm. In most case this default is reasonable. The
300 .B "-l"
301 option should be used only if you encounter problems with colors.
302 By default, fvwm tries to detect "large" pre-allocated
303 palettes. If such a palette is detected fvwm uses it and a priori
305 .B "-l"
306 must not be used. Moreover, in this case the
307 .BR "-A" " and " "-S"
308 options are forced. Note that XFree-4.2 pre-allocate 244 colors
309 (if you use a driver with Render support) leaving only a few free
310 colors. This may leads to some colors problems (and nothing can be
311 done). XFree-4.3 or better pre-allocate only 85 colors.  If no
312 pre-allocated palette is auto detected the defaults are as follow:
314             | depth 8 (256 colors)| depth 4 (16 colors)
315 ------------|---------------------|--------------------
316 PseudoColor | 68 (4 cc + 4 grey)  | 10 (2 cc + 2 grey)
317 ------------|---------------------|--------------------
318 GrayScale   | 64 regular grey     |  8 regular grey
319 ----------- |---------------------|--------------------
320 DirectColor | 32 (3 cc + 5 grey)  | 10 (2 cc + 2 grey)
321 ------------|------------------------------------------
322 where "I cc" means a "IxIxI color cube"
324 These defaults may change before version 2.6. Note that if you use a
325 private color map (i.e., fvwm is started with the
326 .BR "-C" " or the " "-I"
327 options), then others defaults are used.
329 Now what to do if you encounter problems with colors? The first
330 thing to do is to check if you really cannot run your X server
331 with depth 15, 16 or better.  Check your X server
332 documentation. Note that some hardware can support two different
333 depths on the same screen (typically depth 8 and depth 24). If
334 depth 8 is the default, you can force fvwm to use the best depth
335 by using the
336 .B C
337 option with
338 .I TrueColor
339 as argument.  So now we assume that you are forced to run in depth
340 8 with a dynamic visual because your hardware/driver cannot do
341 better or because you need to use an application which needs to
342 run under this mode (e.g., because this application needs
343 read-write colors). What it should be understand is that you have
344 only 256 colors and that all the applications which uses the
345 default color map must share these colors. The main problem is
346 that there are applications which use a lot or even all the
347 colors.  If you use such application you will have no more free
348 colors and some applications (which used only a few colors) may
349 fail to start or are unusable. There are three things that can be
350 done (and fvwm does not really play a particular role, all
351 applications are concerned). The first is to run the applications
352 which waste your (default) color map with a private color map. For
353 example, run netscape with the -install option, run KDE/QT
354 applications with the --cmap option, use the
355 .B "-C"
356 option for fvwm. The disadvantage of this method is that it is
357 visually disturbing (see the
358 .B ColormapFocus
359 command for a better control of the color maps switching). The
360 second method is to limit the number of colors that the
361 applications used. Again, some applications have options to
362 specify a given color limit. With fvwm you may try various values,
363 61 (a special "visual" palette), 56 (a 4x4x3 color cubes plus 6
364 grey), 29 (a 3x3x3 color cube plus 2 grey), 10 or 9. Also, you may
365 use the
366 .B "-L"
367 option.  However, limiting the number of colors is not the
368 definitive solution. The definitive solution is to try cause
369 applications which use a lot of colors use the same colors. This
370 is a difficult task as there are no formal standards for this
371 goal. However, some toolkits as QT and GTK use color cubes as
372 palettes. So, the idea is to configure your applications/toolkits
373 to all use the same color cube. Moreover, you can use the colors
374 in this color cube in your X resources configuration files and/or
375 as arguments to colors options.
376 Fvwm can use any color cube of the form RxGxB with 2 <= R <= 6, R
377 = G, R-1 =< B <= R and B >= 2. To get an RxGxB color cube give an
378 argument to
379 .B "-l"
380 an integer c >= R*G*B and < (R+1)*(G+1)*B if B=R and < R*G*(B+1)
381 if B < R (and different from 61). If c > R*G*B, then some grey may
382 be added to the color cube. You can use the
383 .BI "PrintInfo " Colors " " [1]
384 command to get information on your fvwm colors setting. In
385 particular, this command prints the palette used by fvwm in rgb
386 format (the last integer gives the number of times fvwm has
387 allocated the colors).
389 .BR "-L" " | " "--strict-color-limit"
390 If the screens display 256 colors (or less) and has a dynamic visual,
391 causes fvwm to use its palette for all the colors. By default, the
392 palette is used only for images and gradients.
394 .BR "-P" " | " "--visual-palette"
395 If the screen displays 256 colors (or less) and has a dynamic
396 visual, this option causes fvwm to use a palette designed for
397 limiting the "visual" color distance between the points of the
398 palette. Moreover, for better color sharing, if possible colors
399 with a name in the X rgb data base are used for defining the
400 colors (with the hope that applications and images will prefer to
401 use named colors). If the
402 .B "-l"
403 option is not used this palette has 61 colors. This palette is
404 also automatically selected if  61 or 9 is used as argument to the
405 .B "-l"
406 option.
408 .BR "-A" " | " "--allocate-palette"
409 If the screen displays 256 colors (or less) and has a dynamic
410 visual this option causes fvwm to allocate all the colors of its
411 palette at start up for reserving these colors for future
412 use. This option forces the .B -static-palette option. By default,
413 fvwm allocates (reserves) a color in its palette only if it needs
414 this color.
416 .BR "-S" " | " "--static-palette"
417 If the screen displays 256 colors (or less) and has a dynamic
418 visual this option causes fvwm to never free the colors in its
419 palette. By default, when fvwm does not need a color any more it
420 frees this color so that a new color can be used. This option may
421 speed up image loading and save a few bits of memory.
423 .BI "-blackout"
424 This option is provided for backward compatibility only.  Blacking
425 out the screen during startup is not necessary anymore.
427 .BI "--debug-stack-ring"
428 Enables stack ring debugging.  This option is only intended for
429 internal debugging and should only be used by developers.
431 .SH ANATOMY OF A WINDOW
433 Fvwm puts a decorative border around most windows.  This border
434 consists of a bar on each side and a small L-shaped section on
435 each corner.  There is an additional top bar called the title-bar
436 which is used to display the name of the window.  In addition,
437 there are up to 10 title-bar buttons.  The top, side, and bottom
438 bars are collectively known as the side-bars.  The corner pieces
439 are called the frame.
441 With the built-in minimal configuration, dragging mouse button 1
442 in the frame or side-bars begins a resize operation on the window.
443 Dragging mouse button 2 in the frame or side-bars begins a move
444 operation.  There are raise/lower operations bound to a single
445 clicking on borders.  Similarly for the window title.
447 Up to ten title-bar buttons may exist.  Their use is completely
448 user definable.  One popular configuration uses one button on the
449 left that is used to bring up a list of window options and two
450 buttons on the right used to iconify and maximize the window.
451 Another popular configuration adds a close button to the right.
452 The number of title-bar buttons used depends on which ones have
453 mouse actions bound to them.  See the section on the
454 .B Mouse
455 command below.
457 .SH THE VIRTUAL DESKTOP
459 Fvwm provides multiple virtual desktops for users who wish to use
460 them.  The screen is a viewport onto a
461 .I desktop
462 which may be larger than the screen.  Several distinct desktops
463 can be accessed (concept: one desktop for each project, or one
464 desktop for each application, when view applications are
465 distinct).  Since each desktop can be larger than the physical
466 screen, divided into m by n
467 .I pages
468 which are each the size of the physical screen, windows which are
469 larger than the screen or large groups of related windows can
470 easily be viewed.
472 The (m by n) size (i.e. number of pages) of the virtual desktops
473 can be changed any time, by using the
474 .B DeskTopSize
475 command.  All virtual desktops must be (are) the same
476 size.  The total number of distinct desktops does not need to be
477 specified, but is limited to approximately 4 billion total. All
478 windows on a range of desktops can be viewed in the
479 .BR FvwmPager ,
480 a miniature view of the desktops.  The pager is an accessory
481 program, called a module, which is not essential for the window
482 manager to operate.  Windows may also be listed, along with their
483 geometries, in a window list, accessible as a pop-up menu, or as a
484 separate window, called the
485 .B FvwmWinList
486 (another module).
488 Fvwm keeps the windows on the desktop in a layered stacking order;
489 a window in a lower layer never obscures a window in a higher
490 layer. The layer of a window can be changed by using the
491 .B Layer
492 command.  The concept of layers is a generalization of the
493 .I StaysOnTop
494 flag of older fvwm versions. The
495 .IR StaysOnTop " and " StaysPut
496 .B Style
497 options are now implemented by putting the windows in suitable
498 layers and the previously missing
499 .IB "StaysOnBottom " Style
500 option has been added.
502 .B Sticky
503 windows are windows which transcend the virtual desktop by
504 "Sticking to the screen's glass".  They always stay put on the
505 screen. This is convenient for things like clocks and xbiff's, so
506 you only need to run one such gadget and it always stays with you.
507 Icons can also be made to stick to the glass, if desired.
509 Window geometries are specified relative to the current viewport.
510 That is:
512 xterm -geometry +0+0
514 creates a window in the upper left hand corner of the visible
515 portion of the screen.  It is permissible to specify geometries
516 which place windows on the virtual desktop, but off the screen.
517 For example, if the visible screen is 1000 by 1000 pixels, and the
518 desktop size is 3x3, and the current viewport is at the upper left
519 hand corner of the desktop, invoking:
521 xterm -geometry +1000+1000
523 places a window just off of the lower right hand corner of the
524 screen.  It can be found by moving the mouse to the lower right
525 hand corner of the screen and waiting for it to scroll into view.
526 A geometry specified as something like:
528 xterm -geometry -5-5
530 places the window's lower right hand corner 5 pixels from the
531 lower right corner of the visible portion of the screen.  Not all
532 applications support window geometries with negative offsets.
533 Some applications place the window's upper right hand corner 5
534 pixels above and to the left of the upper left hand corner of the
535 screen; others may do just plain bizarre things.
537 There are several ways to cause a window to map onto a desktop or
538 page other than the currently active one. The geometry technique
539 mentioned above (specifying x,y coordinates larger than the
540 physical screen size), however, suffers from the limitation of
541 being interpreted relative to the current viewport: the window may
542 not consistently appear on a specific page, unless you always
543 invoke the application from the same page.
545 A better way to place windows on a different page, screen or desk
546 from the currently mapped viewport is to use the
547 .IR StartsOnPage " or " StartsOnScreen
548 style specification (the successors to the older
549 .I StartsOnDesk
550 style) in your
551 .I config
552 file.  The placement is consistent: it does
553 not depend on your current location on the virtual desktop.
555 Some applications that understand standard Xt command line
556 arguments and X resources, like xterm and xfontsel, allow the user
557 to specify the start-up desk or page on the command line:
559 xterm -xrm "*Desk:1"
561 starts an xterm on desk number 1;
563 xterm -xrm "*Page:3 2 1"
565 starts an xterm two pages to the right and one down from the upper
566 left hand page of desk number 3.  Not all applications understand
567 the use of these options, however.  You could achieve the same
568 results with the following lines in your
569 .I .Xdefaults
570 file:
572 XTerm*Desk: 1
576 XTerm*Page: 3 2 1
580 .SH USE ON MULTI-SCREEN DISPLAYS
582 If the
583 .B -s
584 command line argument is not given, fvwm automatically starts up
585 on every screen on the specified display.  After fvwm starts each
586 screen is treated independently.  Restarts of fvwm need to be
587 performed separately on each screen.  The use of
589  EdgeScroll 0 0
591 is strongly recommended for multi-screen displays.  You may need
592 to quit on each screen to quit from the X session completely.
593 This is not to be confused with Xinerama support.
595 .SH XINERAMA SUPPORT
597 Fvwm supports the Xinerama extension of newer X servers which
598 is similar to multi head support (multiple screens) but allows for
599 move windows between screens.  If Xinerama support has been
600 compiled into fvwm, it is used whenever fvwm runs on an X server
601 that supports and uses multiple screens via Xinerama.  Without
602 this option, the whole desktop is treated as one big screen.  For
603 example, menus might pop up right between two screens.  The
604 .BI EdgeResistance
605 command allows for specifying an explicit resistance value for moving
606 windows over the screen edge between two Xinerama screens.
607 Xinerama support can be enabled or disabled on the fly or from the
608 configuration file with the
609 .B Xinerama
610 command.  Many modules and commands work nicely with Xinerama
611 displays.
613 Everywhere where a geometry in the usual X format can be supplied,
614 fvwm's Xinerama extension allows for specifying a screen in addition
615 to the geometry (or even the screen alone).  To do this, a '@' is
616 added to the end of the geometry string followed by either the
617 screen number or a letter.  A number is taken as the number of the
618 Xinerama screen to be used (as configured in the X server).  The
619 letter can be one of 'g' for the global screen (the rectangle that
620 encloses all Xinerama screens), 'p' for the primary screen (see
621 below), 'c' for the current screen (the one that currently
622 contains the pointer).  If the X server does not support Xinerama
623 or only one screen is used, the screen bit is ignored.
626 Style * IconBox 64x300-0-0@p
629 Xinerama support can be configured to use a primary screen.  Fvwm
630 can be configured to place new windows and icons on this screen.
631 The primary screen is screen 0 by default but can be changed with
633 .B XineramaPrimaryScreen
634 command.
636 Xinerama support was designed to work out of the box with the same
637 configurations file that would work on a single screen.  It may
638 not work too well if the involved screens use different screen
639 resolutions.  In this situation, windows may get stuck in the
640 portion of the whole desktop that belongs to neither screen.  If
641 this happens, the windows or icons can be retrieved with the
642 command
645 All MoveToScreen
648 that can be entered in an FvwmConsole window or with FvwmCommand.
650 For multi-screen implementations other than Xinerama, such as
651 Single Logical Screen, it is possible to simulate a Xinerama
652 configuration if the total screen seen by fvwm is made up of
653 equal sized monitors in a rectangular grid.  The commands
654 .BR XineramaSls ", " XineramaSlsSize " and " XineramaSlsScreens
655 are used to configure this feature.
657 .SH INITIALIZATION
659 During initialization, fvwm searches for a configuration file
660 which describes key and button bindings, and many other
661 things. The format of these files is described later.  Fvwm first
662 searches for configuration files using the command
664 .BI "Read " config
666 This looks for file
667 .IR config " in " "$FVWM_USERDIR" " and " "$FVWM_DATADIR"
668 directories, as described in
669 .B Read
670 below.  If this fails more files are queried for backward
671 compatibility.  Here is the complete list of all file locations
672 queried in the default installation (only the first found file
673 is used):
675 $HOME/.fvwm/config
676 /usr/local/share/fvwm/config
678 $HOME/.fvwm/.fvwm2rc
679 $HOME/.fvwm2rc
680 /usr/local/share/fvwm/.fvwm2rc
681 /usr/local/share/fvwm/system.fvwm2rc
682 /etc/system.fvwm2rc
684 Please note, the last 5 locations are not guarranteed to be
685 supported in the future.
687 If a configuration file is not found, the left mouse button, or
688 .SM Help
690 .SM F1
691 keys on the root window bring up menus and forms that can create
692 a starting configuration file.
694 Fvwm sets two environment variables which are inherited by its
695 children.  These are
696 .I $DISPLAY
697 which describes the display on which fvwm is running.
698 .I $DISPLAY
699 may be
700 .I unix:0.0
702 .IR ":0.0" ,
703 which doesn't work too well when passed through rsh to another
704 machine, so
705 .I $HOSTDISPLAY
706 is set to a network-ready description of the display.
707 .I $HOSTDISPLAY
708 always uses the TCP/IP transport protocol (even for a local
709 connection) so
710 .I $DISPLAY
711 should be used for local connections, as it may use Unix-domain
712 sockets, which are faster.
714 If you want to start some applications or modules with fvwm, you
715 can simply put
717 Exec app
721 Module FvwmXxx
723 into your
724 .IR config ,
725 but it is not recommended; do this only if you know what you are
726 doing. It is usually critical to start applications or modules
727 after the entire config is read, because it contains styles or
728 module configurations which can affect window appearance and
729 functionality.
731 The standard way to start applications or modules on fvwm's start
732 up is to add them to an initialization function (usually
733 .BR StartFunction " or " InitFunction ).
734 This way they are only started after fvwm finishes to read and
735 execute
736 .I config
737 file.
739 Fvwm has three special functions for initialization:
740 .BR StartFunction ,
741 which is executed on startups and restarts;
742 .BR InitFunction " and " RestartFunction ,
743 which are executed during initialization and restarts
744 (respectively) just after StartFunction.  These functions may be
745 customized in a user's
746 .I config
747 file using the
748 .B AddToFunc
749 command (described later) to start up modules, xterms, or whatever
750 you'd like to have started by fvwm.
752 Fvwm has also a special exit function:
753 . BR ExitFunction ,
754 executed when exiting or restarting before actually quitting.
755 It could be used to explicitly kill modules, etc.
757 If fvwm is run under a session manager, functions
758 .BR SessionInitFunction " and " SessionRestartFunction
759 are executed instead of InitFunction and RestartFunction.
760 This helps to define the user's
761 .I config
762 file to be good for both running under a session manager and
763 without it.  Generally it is a bad idea to start xterms or other
764 applications in "Session*" functions.  Also someone can decide to
765 start different modules while running under a session manager or
766 not.  For the similar purposes
767 .B SessionExitFunction
768 is used instead of ExitFunction.
770 DestroyFunc StartFunction
771 AddToFunc StartFunction
772  + I Module FvwmPager * *
773  + I Module FvwmButtons
775 DestroyFunc InitFunction
776 AddToFunc InitFunction
777  + I Module FvwmBanner
778  + I Module FvwmTaskBar
779  + I xsetroot -solid cyan
780  + I Exec xterm
781  + I Exec netscape
783 DestroyFunc RestartFunction
784 AddToFunc RestartFunction
785  + I Module FvwmTaskBar
787 DestroyFunc SessionInitFunction
788 AddToFunc SessionInitFunction
789  + I Module FvwmBanner
791 DestroyFunc SessionRestartFunction
792 AddToFunc SessionRestartFunction
793  + I Nop
795 You don't need to define all special functions if some are empty.
796 Also note, all these special functions may be emulated now using
797 .BR StartFunction " and " ExitFunction,
798 like this:
800 DestroyFunc StartFunction
801 AddToFunc StartFunction
802 + I Test (Init) Module FvwmBanner
803 + I Module FvwmPager * *
804 + I Test (Restart) Beep
806 DestroyFunc ExitFunction
807 AddToFunc ExitFunction
808 + I Test (Quit) Echo Bye-bye
809 + I KillModule MyBuggyModule
810 + I Test (ToRestart) Beep
813 .SH COMPILATION OPTIONS
815 Fvwm has a number of compile-time options.  If you have trouble
816 using a certain command or feature, check to see if support for it
817 was included at compile time.  Optional features are described in
819 .I config.h
820 file that is generated during compilation.
822 .SH ICONS AND IMAGES
824 Fvwm can load
825 .B .xbm,
826 .B .xpm,
828 .B .png
829 images.
830 .B XBM
831 images are monochrome.  Fvwm can always display
832 .B XBM
833 files.
834 .B XPM
836 .B PNG
837 formats are color images.
838 Compile-time
839 options determine whether fvwm can display
840 .B XPM
842 .B PNG
843 icons and images.
844 See the
845 .I INSTALL.fvwm
846 file for more information.
848 The related
849 .BR SHAPE
850 compile-time option can make fvwm display spiffy
851 shaped icons.
853 .SH MODULES
855 A module is a separate program which runs as a separate Unix
856 process but transmits commands to fvwm to execute.  Users can
857 write their own modules to do any weird or bizarre manipulations
858 without bloating or affecting the integrity of fvwm itself.
860 Modules must be spawned by fvwm so that it can set up two pipes
861 for fvwm and the module to communicate with.  The pipes are
862 already open for the module when it starts and the file
863 descriptors for the pipes are provided as command line arguments.
865 Modules can be spawned during fvwm at any time during the X
866 session by use of the
867 .B Module
868 command.  Modules can exist for the duration of the X
869 session, or can perform a single task and exit.  If the module is
870 still active when fvwm is told to quit, then fvwm closes the
871 communication pipes and waits to receive a SIGCHLD from the
872 module, indicating that it has detected the pipe closure and has
873 exited.  If modules fail to detect the pipe closure fvwm exits
874 after approximately 30 seconds anyway.  The number of
875 simultaneously executing modules is limited by the operating
876 system's maximum number of simultaneously open files, usually
877 between 60 and 256.
879 Modules simply transmit commands to the fvwm command
880 engine.  Commands are formatted just as in the case of a
881 mouse binding in the
882 .I config
883 setup file.  Certain auxiliary information is also transmitted, as
884 in the sample module
885 .BR FvwmButtons .
887 .B FvwmButtons
888 module is documented in its own man page.
890 Please refer to the
891 .B "MODULE COMMANDS"
892 section for details.
894 .SH ICCCM COMPLIANCE
896 Fvwm attempts to be
897 .SM ICCCM
898 2.0 compliant.  In addition,
899 .SM ICCCM
900 states that it should be possible for applications to receive any
901 keystroke, which is not consistent with the keyboard shortcut
902 approach used in fvwm and most other window managers.  In
903 particular you cannot have the same keyboard shortcuts working
904 with your fvwm and another fvwm running within Xnest (a nested X
905 server running in a window).  The same problem exists with mouse
906 bindings.
909 .SM ICCCM
910 states that windows possessing the property
912 WM_HINTS(WM_HINTS):
913     Client accepts input or input focus: False
915 should not be given the keyboard input focus by the window
916 manager. These windows can take the input focus by themselves,
917 however.  A number of applications set this property, and yet
918 expect the window manager to give them the keyboard focus anyway,
919 so fvwm provides a window style,
920 .IR Lenience ", "
921 which allows fvwm to overlook this
922 .SM ICCCM
923 rule.  Even with this window style it is not guaranteed that the
924 application accepts focus.
926 The differences between
927 .SM ICCCM
928 1.1 and 2.0 include the ability to take over from a running
929 .SM ICCCM
930 2.0 compliant window manager; thus
932 fvwm; vi ~/.fvwm/config; fvwm -replace
934 resembles the
935 .B Restart
936 command.  It is not exactly the same, since killing the previously
937 running wm may terminate your X session, if the wm was started as
938 the last client in your
939 .IR .Xclients " or " .Xsession
940 file.
942 Further additions are support for client-side colormap
943 installation (see the .SM ICCCM for details) and the urgency hint.
944 Clients can set this hint in the WM_HINTS property of their window
945 and expect the window manager to attract the users attention to
946 the window.  Fvwm has two re-definable functions for this purpose,
947 "UrgencyFunc" and "UrgencyDoneFunc", which are executed when the
948 flag is set/cleared.  Their default definitions are:
950 AddToFunc UrgencyFunc
951  + I Iconify off
952  + I FlipFocus
953  + I Raise
954  + I WarpToWindow 5p 5p
955 AddToFunc UrgencyDoneFunc
956  + I Nop
959 .SH GNOME COMPLIANCE
961 Fvwm attempts to be
962 .SM GNOME
963 (version 1) compliant.  Check
964 .B http://www.gnome.org
965 for what that may mean. To disable GNOME hints for some or all
966 windows, the
967 .I GNOMEIgnoreHints
968 style can be used.
970 .SH EXTENDED WINDOW MANAGER HINTS
972 Fvwm attempts to respect the extended window manager hints (ewmh
973 or EWMH for short) specification:
974 .BR http://www.freedesktop.org/standards/wm-spec.html
975 and some extensions of this specification.  This allows fvwm to
976 work with
977 .SM KDE
978 version >= 2,
979 .SM GNOME
980 version 2 and other applications which respect this specification
981 (any application based on
982 .SM GTK+
983 version 2). Applications which respect this specification are
984 called ewmh compliant applications.
986 This support is configurable with styles and commands.
987 These styles and commands have
988 .SM EWMH
989 as the prefix (so you can find them easily in this man page).
991 There is a new Context 'D' for the
992 .BR Key ", " PointerKey ", " Mouse " and " Stroke
993 commands. This context is for desktop applications (such as
994 kdesktop and Nautilus desktop).
996 When a compliant taskbar asks fvwm to activate a window (typically
997 when you click on a button which represents a window in such a
998 taskbar), then fvwm calls the complex function
999 .B EWMHActivateWindowFunc
1000 which by default is Iconify Off, Focus and Raise. You can redefine
1001 this function.  For example:
1003 DestroyFunc EWMHActivateWindowFunc
1004 AddToFunc EWMHActivateWindowFunc I Iconify Off
1005 + I Focus
1006 + I Raise
1007 + I WarpToWindow 50 50
1009 additionally warps the pointer to the center of the window.
1012 .SM EWMH
1013 specification introduces the notion of Working Area.  Without ewmh
1014 support the Working Area is the full visible screen (or all your
1015 screens if you have a multi head setup and you use Xinerama).
1016 However, compliant applications (such as a panel) can ask to
1017 reserve space at the edge of the screen.  If this is the case, the
1018 Working Area is your full visible screen minus these reserved
1019 spaces. If a panel can be hidden by clicking on a button the
1020 Working Area does not change (as you can unhide the panel at any
1021 time), but the Dynamic Working Area is updated: the space reserved
1022 by the panel is removed (and added again if you pop up the
1023 panel). The Dynamic Working Area may be used when fvwm places or
1024 maximizes a window.  To know if an application reserves space you
1025 can type "xprop | grep _NET_WM_STRUT" in a terminal and select the
1026 application.  If four numbers appear then these numbers define the
1027 reserved space as explained in the
1028 .B EwmhBaseStruts
1029 command.
1031 .SH MWM COMPATIBILITY
1033 Fvwm provides options to emulate Motif Window Manager (Mwm) as
1034 well as possible.  Please refer to the
1035 .B Emulate
1036 command as well as to the Mwm specific options of the
1037 .BR Style " and " MenuStyle
1038 commands for details.
1040 .SH OPEN LOOK and XVIEW COMPATIBILITY
1041 Fvwm supports all the Open Look decoration hints (except
1042 pushpins).  Should you use any such application, please add the
1043 following line to your config:
1045 Style * OLDecor
1047 Most (perhaps all) Open Look applications have a strange notion of
1048 keyboard focus handling.  Although a lot of work went into fvwm to
1049 work well with these, you may still encounter problems.  It is
1050 recommended to use the NeverFocus focus policy and the NoLenience
1051 style for all such applications (the windows will still get the
1052 focus):
1054 Style <application name> NeverFocus, NoLenience
1056 But in case you can not live with that focus policy, you can try
1057 using one of the other focus policies in combination with the
1058 Lenience style:
1060 Style <application name> MouseFocus, Lenience
1061 Style <application name> SloppyFocus, Lenience
1062 Style <application name> ClickToFocus, Lenience
1065 .SH M4 PREPROCESSING
1068 M4 pre-processing is handled by a module in fvwm.  To get more
1069 details, try man
1070 .BR FvwmM4 .
1071 In short, if you want fvwm to parse your files with m4, then
1072 replace the command
1073 .B Read
1074 with
1075 .B FvwmM4
1076 in your
1077 .I ~/.fvwm/config
1078 file (if it appears at all), and start fvwm with the command
1080 fvwm -cmd "FvwmM4 config"
1083 .SH CPP PREPROCESSING
1086 Cpp is the C-language pre-processor.  fvwm offers cpp processing
1087 which mirrors the m4 pre-processing.  To find out about it,
1088 re-read the M4 section above, but replace "m4" with "cpp".
1090 .SH AUTO-RAISE
1093 Windows can be automatically raised when it receives focus, or
1094 some number of milliseconds after it receives focus, by using the
1095 auto-raise module,
1096 .BR FvwmAuto .
1098 .SH CONFIGURATION FILES
1100 The configuration file is used to describe mouse and button
1101 bindings, colors, the virtual display size, and related items.
1102 The initialization configuration file is typically called
1103 .IR config " (or " .fvwm2rc ")."
1104 By using the
1105 .B Read
1106 command, it is easy to read in new configuration files as you go.
1108 Lines beginning with '#' are ignored by fvwm.  Lines starting with
1109 \'*' are expected to contain module configuration commands (rather
1110 than configuration commands for fvwm itself). Like in shell
1111 scripts embedded newlines in a configuration file line can be
1112 quoted by preceding them with a backslash.  All lines linked in
1113 this fashion are treated as a single line.  The newline itself is
1114 ignored.
1116 Fvwm makes no distinction between configuration commands and
1117 action commands, so anything mentioned in the fvwm commands
1118 section can be placed on a line by itself for fvwm to execute as
1119 it reads the configuration file, or it can be placed as an
1120 executable command in a menu or bound to a mouse button or a
1121 keyboard key.  It is left as an exercise for the user to decide
1122 which function make sense for initialization and which ones make
1123 sense for run-time.
1125 .SH SUPPLIED CONFIGURATION
1127 A sample configuration file,
1128 .IR system.fvwm2rc ,
1129 is supplied with the fvwm distribution.  It is well commented and
1130 can be used as a source of examples for fvwm configuration.
1131 It may be copied to /usr/local/share/fvwm/config file.
1133 Alternativelly, the built-in menu (accessible when no
1134 configuration file is found) has options to create an initial
1135 config file for the user.
1137 If you are new to
1138 .IR fvwm ", try " fvwm-themes
1139 package demonstrating the powerful fvwm functionality.
1141 .\" .SH INTERNATIONALIZATION
1142 .\" Internationalized fvwm enables to display not only LATIN-1
1143 .\" characters but also multi byte characters such as Japanese,
1144 .\" Korean, etc. You should set up your environment variable
1145 .\" .IR LC_TYPE " or " LANG ,
1146 .\" to enable this feature.  Also, you should specify proper
1147 .\" .I FONTSET
1148 .\" instead of
1149 .\" .IR FONT .
1150 .\" Note that no catalog-file or input-methods are implemented.
1152 .SH FONT NAMES AND FONT LOADING
1154 The fonts used for the text of a window title, icon titles, menus
1155 and geometry window can be specified by using the Font and
1156 IconFont Style, the Font MenuStyle and the DefaultFont
1157 command. Also, all the Modules which use text have configuration
1158 command(s) to specify font(s). All these styles and commands take
1159 a font name as an argument. This section explains what is a font
1160 name for fvwm and which fonts fvwm loads.
1162 First, you can use what we can call a usual font name, for
1163 example,
1165 -adobe-courier-bold-r-normal--10-100-75-75-m-60-ISO8859-1
1166 -adobe-courier-bold-r-normal--10-*
1167 -*-fixed-medium-o-normal--14-*-ISO8859-15
1169 That is, you can use an X Logical Font Description (XLFD for
1170 short).  Then the "first" font which matches the description is
1171 loaded and used. This "first" font depends of your font path and
1172 also of your locale. Fonts which match the locale charset are
1173 loaded in priority order. For example with
1175 -adobe-courier-bold-r-normal--10-*
1177 if the locale charset is ISO8859-1, then fvwm tries to load a
1178 font which matches
1180 -adobe-courier-bold-r-normal--10-*-ISO8859-1
1182 with the locale charset ISO8859-15 fvwm tries to load
1184 -adobe-courier-bold-r-normal--10-*-ISO8859-15.
1187 A font name can be given as an extended XLFD. This
1188 is a comma separated list of (simple) XLFD font names, for example:
1190 -adobe-courier-bold-r-normal--14-*,-*-courier-medium-r-normal--14-*
1192 Each simple font name is tried until a matching font with the
1193 locale charset is found and if this fails each simple font name is
1194 tried without constraint on the charset.
1196 More details on the XLFD can be found in the X manual page, the X
1197 Logical Font Description Conventions document (called xlfd) and
1198 the XLoadFont and XCreateFontSet manual pages. Some useful font
1199 utilities are: xlsfonts, xfontsel, xfd and xset.
1201 If you have Xft support you can specify an Xft font name
1202 (description) of a true type (or Type1) font prefixed by "xft:",
1203 for example:
1205 "xft:Luxi Mono"
1206 "xft:Luxi Mono:Medium:Roman:size=14:encoding=iso8859-1"
1208 The "first" font which matches the description is loaded.  This
1209 first font depends on the XftConfig configuration file with Xft1
1210 and on the /etc/fonts/fonts.conf file with Xft2.
1211 One may read the Xft manual page and the fontconfig man page with
1212 Xft2. The first string which follows "xft:" is always considered
1213 as the family. With the second example Luxi Mono is the Family
1214 (Other XFree TTF families: "Luxi Serif", "Luxi Sans"), Medium is
1215 the Weight (other possible weights: Light, DemiBold, Bold, Black),
1216 Roman is the slant or the style (other possibility: Regular,
1217 Oblique, Italic) size specifies the point size (for a pixel size
1218 use pixelsize=), encoding allows for enforce a charset (iso8859-1
1219 or iso10646-1 only; if no encoding is given the locale charset is
1220 assumed).
1221 An important parameter is "minspace=bool" where bool is True or
1222 False. If bool is False (the default?) Xft gives a greater font
1223 height to fvwm than if bool is True. This may modify text
1224 placement, icon and window title height, line spacing in menus and
1225 FvwmIdent, button height in some fvwm modules ...etc.  With a LCD
1226 monitor you may try to add "rgba=mode" where mode is either rgb,
1227 bgr, vrgb or vbgr to enable subpixel rendering. The best mode
1228 depends on the way your LCD cells are arranged. You can pass other
1229 specifications in between ":", as "foundry=foundry_name",
1230 "spacing=type" where type can be monospace, proportional or
1231 charcell, "charwidth=integer", "charheight=integer" or
1232 "antialias=bool" where bool is True or False. It seems that these
1233 parameters are not always taken in account.
1234 To determine which Xft fonts are really loaded you can export
1235 XFT_DEBUG=1 before starting fvwm and take a look to the error
1236 log. With Xft2 you may use fc-list to list the available
1237 fonts. Anyway, Xft support is experimental (from the X and the
1238 fvwm point of view) and the quality of the rendering depends on
1239 number of parameters (the XFree and the freetype versions and your
1240 video card(s)).
1242 After an Xft font name you can add after a ";" an XLFD
1243 font name (simple or extended) as:
1245 xft:Verdana:pixelsize=14;-adobe-courier-bold-r-normal--14-*
1247 then, if either loading the Xft font fails or fvwm has no Xft
1248 support, fvwm loads the font
1249 "-adobe-courier-bold-r-normal--14-*". This allows for writing
1250 portable configuration files.
1252 .SH FONT AND STRING ENCODING
1254 Once a font is loaded, fvwm finds its encoding (or charset) using
1255 its name (the last two fields of the name). fvwm assumes that the
1256 strings which are displayed with this font use this encoding (an
1257 exception is that if an iso10646-1 font is loaded, then UTF-8 is
1258 assumed for string encoding).
1259 In a normal situation,
1260 (i) a font is loaded by giving a font name without specifying the
1261 encoding,
1262 (ii) the encoding of the loaded font is the locale encoding, and
1263 then
1264 (iii) the strings in the fvwm configuration files should use the
1265 locale encoding as well as the window and icon name. With Xft the
1266 situation is bit different as Xft supports only iso10646-1 and
1267 iso8859-1. If you do not specify one of these encodings in the Xft
1268 font name, then fvwm does strings conversion using (iii). Note
1269 that with multibyte fonts (and in particular with "CJK" fonts) for
1270 good text rendering, the locale encoding should be the charset of
1271 the font.
1273 To override the previous rules, it is possible to specify the
1274 string encoding in the beginning of a font description as follow:
1276 StringEncoding=enc:_full_font_name_
1278 where
1279 .B enc
1280 is an encoding supported by fvwm (usually font name charset plus some
1281 unicode encodings: UTF-8, USC-2, USC-4 and UTF-16).
1283 For example, you may use an iso8859-1 locale charset and have an
1284 FvwmForm in Russian using koi8-r encoding. In this case, you just
1285 have to ask FvwmForm to load a koi8-r font by specifying the
1286 encoding in the font name. With a multibyte language, (as
1287 multibyte font works well only if the locale encoding is the
1288 charset of the font), you should use an iso10646-1 font:
1290 StringEncoding=jisx0208.1983-0:-*-fixed-medium-r-*-ja-*-iso10646-1
1294 "StringEncoding=jisx0208.1983-0:xft:Bitstream Cyberbit"
1296 if your
1297 .B FvwmForm
1298 configuration uses jisx0208.1983-0 encoding. Another possibility
1299 is to use UTF-8 encoding for your FvwmForm configuration and use
1300 an iso10646-1 font:
1302 -*-fixed-medium-r-*-ja-*-iso10646-1
1306 "StringEncoding=UTF-8:xft:Bitstream Cyberbit"
1308 or equivalently
1310 "xft:Bitstream Cyberbit:encoding=iso10646-1"
1312 In general iso10646-1 fonts together with UTF-8 string encoding
1313 allows the display of any characters in a given menu, FvwmForm
1314 ...etc.
1316 More and more, unicode is used and text files use UTF-8
1317 encoding. However, in practice the characters used range over your
1318 locale charset (this is the case when you generate a menu with
1319 fvwm-menu-desktop with recent versions of KDE and GNOME). For
1320 saving memory (an iso10646-1 font may have a very large number of
1321 characters) or because you have a pretty font without an
1322 iso10646-1 charset, you can specify the string encoding to be
1323 UTF-8 and use a font in the locale charset:
1325 StringEncoding=UTF-8:-*-pretty_font-*-12-*
1328 In most cases, fvwm correctly determines the encoding of the
1329 font. However, some fonts don't end with valid encoding
1330 names. When the font name isn't normal, for example:
1332 -misc-fixed-*--20-*-my_utf8-36
1334 you need to add the encoding after the font name using a slash as
1335 a delimiter. For example:
1337 MenuStyle * Font -misc-fixed-*--20-*-my_utf8-36/iso10646-1
1339 If fvwm finds an encoding, fvwm uses the iconv system functions to
1340 do conversion between encodings. Unfortunately, there are no
1341 standards. For conversion between iso8859-1 and UTF-8: a GNU
1342 system uses "ISO-8859-1" and other systems use "iso881" to define
1343 the converters (these two names are supported by fvwm). Moreover,
1344 in some cases it may be necessary to use machine specific
1345 converters. So, if you experience problems you can try to get
1346 information on your iconv implementation ("man iconv" may help)
1347 and put the name which defines the converter between the font
1348 encoding and UTF-8 at the end of the font name after the encoding
1349 hint and a / (another possible solution is to use GNU
1350 libiconv). For example use:
1352 Style * Font -misc-fixed-*--14-*-iso8859-1/*/latin1
1354 to use latin1 for defining the converter for the iso8859-1 encoding.
1355 The "*" in between the "/" says to fvwm to determine the
1356 encoding from the end of the font name. Use:
1358 Style * Font -misc-fixed-*--14-*-local8859-6/iso8859-6/local_iso8859_6_iconv
1360 to force fvwm to use the font with iso8859-6 as the encoding
1361 (this is useful for bi-directionality)
1362 and to use local_iso8859_6_iconv for defining the converters.
1364 .SH FONT SHADOW EFFECTS
1366 Fonts can be given 3d effects. At the beginning of the font name
1367 (or just after a possible StringEncoding specification) add
1369 Shadow=size [offset] [directions]:
1371 .I size
1372 is a positive integer which specifies the number of pixels of shadow.
1373 .I offset
1374 is an optional positive integer which defines the number of pixels
1375 to offset the shadow from the edge of the character.  The default
1376 offset is zero.
1377 .I directions
1378 is an optional set of directions the shadow emanates from the
1379 character.  The
1380 .I directions
1381 are a space separated list of fvwm directions:
1383 .IR N ", "  North ", "     Top ", "         t ", "  Up ", "        u ", " "-"
1385 .IR E ", "  East ", "      Right ", "       r ", "  Right ", "     r ", " "]"
1387 .IR S ", "  South ", "     Bottom ", "      b ", "  Down ", "      d ", " "_"
1389 .IR W ", "  West ", "      Left ", "        l ", "  Left ", "      l ", " "["
1391 .IR NE ", " NorthEast ", " TopRight ", "    tr ", " UpRight ", "   ur ", " "^"
1393 .IR SE ", " SouthEast ", " BottomRight ", " br ", " DownRight ", " dr ", " ">"
1395 .IR SW ", " SouthWest ", " BottomLeft ", "  bl ", " DownLeft ", "  dl ", " "v"
1397 .IR NW ", " NorthWest ", " TopLeft ", "     tl ", " UpLeft ", "    ul ", " "<"
1399 .IR C ", " Center ", "     Centre ", " .
1401 A shadow is displayed in each given direction.
1402 .I All
1403 is equivalent to all the directions.  The default
1404 .I direction
1406 .IR BottomRight .
1407 With the
1408 .I Center
1409 direction, the shadow surrounds the whole string.  Since this is a
1410 super set of all other directions, it is a waste of time to
1411 specify this along with any other directions.
1413 The shadow effect only works with colorsets.  The color of the
1414 shadow is defined by using the
1415 .I fgsh
1416 option of the
1417 .I Colorset
1418 command.  Please refer to the
1419 .B COLORSETS
1420 section for details about colorsets.
1422 Note: It can be difficult to find the font,
1423 .IR fg ", " fgsh " and " bg
1424 colors to make this effect look good, but it can look quite good.
1426 .SH BI-DIRECTIONAL TEXT
1428 Arabic and Hebrew text require bi-directional text support to be
1429 displayed correctly, this means that logical strings should be
1430 converted before their visual presentation, so left-to-right and
1431 right-to-left sub-strings are determined and reshuffled.
1432 In fvwm this is done automatically in window titles, menus,
1433 module labels and other places if the fonts used for displaying the
1434 text are of one of the charsets that require
1435 .I bidi
1436 (bi-directional) support.  For example, this includes iso8859-6,
1437 iso8859-8 and iso10646-1 (unicode), but not other iso8859-* fonts.
1439 This bi-directional text support is done using the
1440 .I fribidi
1441 library compile time option, see
1442 .IR INSTALL.fvwm .
1444 .SH KEYBOARD SHORTCUTS
1446 Almost all window manager operations can be performed from the
1447 keyboard so mouse-less operation should be possible.  In addition
1448 to scrolling around the virtual desktop by binding the
1449 .B Scroll
1450 command to appropriate keys,
1451 .BR Popup ", " Move ", " Resize ", "
1452 and any other command can be bound to keys.  Once a command
1453 is started the pointer is moved by using the up, down,
1454 left, and right arrows, and the action is terminated by pressing
1455 return.  Holding down the
1456 .SM Shift
1457 key causes the pointer movement to go in larger steps and holding
1458 down the
1459 .SM control
1460 key causes the pointer movement to go in smaller steps. Standard
1461 emacs and vi cursor movement controls (
1462 .SM n,
1463 .SM p,
1464 .SM f,
1465 .SM b,
1467 .SM j,
1468 .SM k,
1469 .SM h,
1470 .SM l
1471 ) can be used instead of the arrow keys.
1473 .SH SESSION MANAGEMENT
1475 Fvwm supports session management according to the X Session
1476 Management Protocol.  It saves and restores window position, size,
1477 stacking order, desk, stickiness, shadedness, maximizedness,
1478 iconifiedness for all windows. Furthermore, some global state is
1479 saved.
1481 Fvwm doesn't save any information regarding styles, decors,
1482 functions or menus.  If you change any on these resources during a
1483 session (e.g. by issuing
1484 .B Style
1485 commands or by using various modules), these changes are lost
1486 after saving and restarting the session.  To become permanent,
1487 such changes have to be added to the configuration file.
1489 Note further that the current implementation has the following
1490 anomaly when used on a multi-screen display: Starting fvwm for the
1491 first time, fvwm manages all screens by forking a copy of itself
1492 for each screen.  Every copy knows its parent and issuing a
1493 .B Quit
1494 command to any instance of fvwm kills the master and thus all
1495 copies of fvwm.  When you save and restart the session, the
1496 session manager brings up a copy of fvwm on each screen, but this
1497 time they are started as individual instances managing one screen
1498 only.  Thus a
1499 .B Quit
1500 kills only the copy it was sent to.  This is probably not a very
1501 serious problem, since with session management, you are supposed
1502 to quit a session through the session manager anyway. If it is
1503 really needed,
1505 Exec exec killall fvwm
1507 still kills all copies of fvwm.  Your system must have the
1508 .B killall
1509 command though.
1511 .SH BOOLEAN ARGUMENTS
1513 A number of commands take one or several boolean arguments.  These
1514 take a few equivalent inputs: "yes", "on", "true", "t" and "y" all
1515 evaluate to true while "no", "off", "false", "f" and "n" evaluate
1516 to false.  Some commands allow "toggle" too which means that the
1517 feature is disabled if it is currently enabled and vice versa.
1519 .SH CONDITIONAL COMMANDS AND RETURN CODES
1521 Fvwm recognizes a number of commands that are executed only if
1522 certain conditions are met.  For a complete description, please
1523 refer to the section
1524 .B CONDITIONAL COMMANDS
1525 below.
1527 .SH BUILT-IN KEY AND MOUSE BINDINGS
1529 The following commands are built-in to fvwm:
1531 Key Help R A Popup MenuFvwmRoot
1532 Key F1 R A Popup MenuFvwmRoot
1533 Key Tab A M WindowList Root c c NoDeskSort
1534 Key Escape A MC EscapeFunc
1535 Mouse 1 R A Menu MenuFvwmRoot
1536 Mouse 1 T   A FuncFvwmRaiseLowerX Move
1537 Mouse 1 FS  A FuncFvwmRaiseLowerX Resize
1538 Mouse 2 FST A FuncFvwmRaiseLowerX Move
1539 AddToFunc FuncFvwmRaiseLowerX
1540 + I Raise
1541 + M $0
1542 + D Lower
1545 .SM Help
1547 .SM F1
1548 keys invoke a built-in menu that fvwm creates.  This is primarily
1549 for new users that have not created their own configuration
1550 file. Either key on the root (background) window pops up an menu
1551 to help you get started.
1554 .SM Tab
1555 key pressed anywhere with the
1556 .SM Meta
1557 key (same as the
1558 .SM Alt
1559 key on PC keyboards) held down pop-ups a window list.
1561 Mouse button 1 on the title-bar or side frame can move, raise or
1562 lower a window.
1564 Mouse button 1 on the window corners can resize, raise or lower a
1565 window.
1567 You can override or remove these bindings. To remove the window
1568 list binding, use this:
1570 Key Tab A M -
1573 .SH MODULE AND FUNCTION COMMANDS
1575 If fvwm encounters a command that it doesn't recognize,
1576 it checks to see if the
1577 specified command should have been
1579 Function (rest of command)
1583 Module (rest of command)
1585 This allows complex functions or modules to be invoked in a manner
1586 which is fairly transparent to the configuration file.
1588 Example: the
1589 .I config
1590 file contains the line
1592 HelpMe
1594 Fvwm looks for an fvwm command called "HelpMe", and fails.
1595 Next it looks for a user-defined complex function called "HelpMe".
1596 If no such function exists, fvwm tries to execute a
1597 module called "HelpMe".
1599 .SH DELAYED EXECUTION OF COMMANDS
1601 Note: There are many commands that affect look and feel of
1602 specific, some or all windows, like
1603 .BR Style ", " Mouse ", " Colorset ", " TitleStyle
1604 and many others.  For performance reasons such changes are
1605 not applied immediately but only when fvwm is idle, i.e. no user
1606 interaction or module input is pending.  Specifically, new
1607 .B Style
1608 options that are set in a function are not applied until after the
1609 function has completed.  This can sometimes lead to unwanted
1610 effects.
1612 To force that all pending changes are applied immediately, use the
1613 .BR UpdateStyles ", " Refresh " or " RefreshWindow
1614 commands.
1616 .SH QUOTING
1618 Quotes are required only when needed to make fvwm consider two or
1619 more words to be a single argument.  Unnecessary quoting is
1620 allowed.  If you want a quote character in your text, you must
1621 escape it by using the backslash character.  For example, if you
1622 have a pop-up menu called "Window-Ops", then you don't need
1623 quotes:
1625 Popup Window-Ops
1627 but if you replace the dash with a space, then you need
1628 quotes:
1630 Popup "Window Ops"
1632 The supported quoting characters are double quotes, single quotes
1633 and reverse single quotes.  All three kinds of quotes are treated
1634 in the same way.  Single characters can be quoted with a preceding
1635 backslash.  Quoting single characters works even inside other
1636 kinds of quotes.
1638 .SH COMMAND EXPANSION
1640 Whenever an fvwm command line is executed, fvwm performs parameter
1641 expansion.  A parameter is a '$' followed by a word enclosed in
1642 brackets ($[...]) or a single special character.  If fvwm
1643 encounters an unquoted parameter on the command line it expands it
1644 to a string indicated by the parameter name.  Unknown parameters
1645 are left untouched.  Parameter expansion is performed before
1646 quoting.  To get a literal '$' use "$$".
1648 In the past, some single letter variables were supported.  It is
1649 deprecated now, since they cause a number of problems.  You should
1650 use the longer substitutes instead.
1652 Example:
1655 # Print the current desk number, horizontal page number
1656 # and the window's class (unexpanded here, no window).
1657 Echo $[desk.n] $[page.nx] $[w.class]
1660 Note: If the command is called outside a window context, it will
1661 print "$[w.class]" instead of the class name.  It is usually not
1662 enough to have the pointer over a window to have a context window.
1663 To force using the window with the focus, the
1664 .B Current
1665 command can be used:
1667 Current Echo $[desk.n] $[page.nx] $[w.class]
1670 The parameters known by fvwm are:
1672 .in +.5i
1674 .in +.3i
1675 A literal '$'.
1676 .in -.3i
1677 .in -.5i
1679 .in +.5i
1681 .in +.3i
1682 The absolute directory of the currently Read file.  Intended for
1683 creating relative and relocatable configuration trees.  If used
1684 outside of any read file, the returned value is '.'.
1685 .in -.3i
1686 .in -.5i
1688 .in +.5i
1689 $0 to $9
1690 .in +.3i
1691 The positional parameters given to a complex function (a function
1692 that has been defined with the
1693 .B AddToFunc
1694 command).  "$0" is replaced with the first parameter, "$1" with
1695 the second parameter and so on.  If the corresponding parameter is
1696 undefined, the "$..." is deleted from the command line.
1697 .in -.3i
1698 .in -.5i
1700 .in +.5i
1702 .in +.3i
1703 All positional parameters given to a complex function.  This
1704 includes parameters that follow after "$9".
1705 .in -.3i
1706 .in -.5i
1708 .in +.5i
1709 $[version.num]
1710 .in +.3i
1711 The version number, like "2.6.0".
1712 .in -.3i
1713 .in -.5i
1715 .in +.5i
1716 $[version.info]
1717 .in +.3i
1718 The version info, like " (from cvs)", empty for the official
1719 releases.
1720 .in -.3i
1721 .in -.5i
1723 .in +.5i
1724 $[version.line]
1725 .in +.3i
1726 The first line printed by the --version command line option.
1727 .in -.3i
1728 .in -.5i
1730 .in +.5i
1731 $[vp.x]
1732 $[vp.y]
1733 $[vp.width]
1734 $[vp.height]
1735 .in +.3i
1736 Either coordinate or the width or height of the current viewport.
1737 .in -.3i
1738 .in -.5i
1740 .in +.5i
1741 $[desk.n]
1742 .in +.3i
1743 The current desk number.
1744 .in -.3i
1745 .in -.5i
1747 .in +.5i
1748 $[desk.name<n>]
1749 .in +.3i
1750 These parameters are replaced with the name of the desktop
1751 number <n> that is defined with the
1752 .B DesktopName
1753 command. If no name is defined, then the default name is returned.
1754 .in -.3i
1755 .in -.5i
1757 .in +.5i
1758 $[desk.width]
1759 $[desk.height]
1760 .in +.3i
1761 The width or height of the whole desktop, i.e. the width or height
1762 multiplied by the number of pages in x or y direction.
1763 .in -.3i
1764 .in -.5i
1766 .in +.5i
1767 $[desk.pagesx]
1768 $[desk.pagesy]
1769 .in +.3i
1770 The number of total pages in a desk in x or y direction.
1771 This is the same as the values set by
1772 .BR DesktopSize .
1773 .in -.3i
1774 .in -.5i
1776 .in +.5i
1777 $[page.nx]
1778 $[page.ny]
1779 .in +.3i
1780 The current page numbers, by X and Y axes, starting from 0.
1781 .IR page " is equivalent to " area " in the GNOME terminology."
1782 .in -.3i
1783 .in -.5i
1785 .in +.5i
1786 $[w.id]
1787 .in +.3i
1788 The window-id (expressed in hex, e.g. 0x10023c) of the window the
1789 command was called for or "$[w.id]" if no window is associated
1790 with the command.
1791 .in -.3i
1792 .in -.5i
1794 .in +.5i
1795 $[w.name]
1796 $[w.iconname]
1797 $[w.iconfile]
1798 $[w.miniiconfile]
1799 $[w.class]
1800 $[w.resource]
1801 .in +.3i
1802 The window's name, icon name, file name of its icon or mini icon
1803 defined with the
1804 .IR Icon " or " MiniIcon
1805 style including the path information if the file was found on
1806 disk, resource class or resource name respectivelly, or unexpanded
1807 "$[w.<attribute>]" string if no window is associated with the
1808 command.
1810 .in -.3i
1811 .in -.5i
1813 .in +.5i
1814 $[w.x]
1815 $[w.y]
1816 $[w.width]
1817 $[w.height]
1818 .in +.3i
1819 Either coordinate or the width or height of the current window if
1820 it is not iconified.  If no window is associated with the command
1821 or the window is iconified, the string is left as is.
1822 .in -.3i
1823 .in -.5i
1825 .in +.5i
1826 $[w.desk]
1827 .in +.3i
1828 The number of the desk on which the window is shown.  If the
1829 window is sticky the current desk number is used.
1830 .in -.3i
1831 .in -.5i
1833 .in +.5i
1834 $[w.layer]
1835 .in +.3i
1836 The layer of the window.
1837 .in -.3i
1838 .in -.5i
1840 .in +.5i
1841 $[cw.x]
1842 $[cw.y]
1843 $[cw.width]
1844 $[cw.height]
1845 .in +.3i
1846 These work like $[w....] but return the geometry of the client
1847 part of the window.  In other words: the border and title of the
1848 window is not taken into account.
1849 .in -.3i
1850 .in -.5i
1852 .in +.5i
1853 $[i.x], $[it.x], $[ip.x]
1854 $[i.y], $[it.y], $[ip.y]
1855 $[i.width], $[it.width], $[ip.width]
1856 $[i.height], $[it.height], $[ip.height]
1857 .in +.3i
1858 These work like $[w....] but return the geometry of the icon
1859 ($[i....]), the icon title ($[it....]) or the icon picture
1860 ($[ip....]).
1861 .in -.3i
1862 .in -.5i
1864 .in +.5i
1865 $[pointer.x]
1866 $[pointer.y]
1867 .in +.3i
1868 These return the position of the pointer on the screen.  If the
1869 pointer is not on the screen, these variables are not expanded.
1870 .in -.3i
1871 .in -.5i
1873 .in +.5i
1874 $[pointer.wx]
1875 $[pointer.wy]
1876 .in +.3i
1877 These return the position of the pointer in the selected window.
1878 If the pointer is not on the screen, the window is iconified  or
1879 no window is selected, these variables are not expanded.
1880 .in -.3i
1881 .in -.5i
1883 .in +.5i
1884 $[pointer.cx]
1885 $[pointer.cy]
1886 .in +.3i
1887 These return the position of the pointer in the client portion of
1888 the selected window.  If the pointer is not on the screen, the
1889 window is shaded or iconified or no window is selected, these
1890 variables are not expanded.
1892 .in -.3i
1893 .in -.5i
1895 .in +.5i
1896 $[screen]
1897 .in +.3i
1898 The screen number fvwm is running on.  Useful for setups with
1899 multiple screens.
1900 .in -.3i
1901 .in -.5i
1903 .in +.5i
1904 $[fg.cs<n>]
1905 .in -.5i
1906 .in +.5i
1907 $[bg.cs<n>]
1908 .in -.5i
1909 .in +.5i
1910 $[hilight.cs<n>]
1911 .in -.5i
1912 .in +.5i
1913 $[shadow.cs<n>]
1914 .in +.3i
1915 These parameters are replaced with the name of the foreground
1916 (fg), background (bg), hilight (hilight) or shadow (shadow) color
1917 that is defined in colorset <n> (replace <n> with zero or a
1918 positive integer).  For example "$[fg.cs3]" is expanded to the
1919 name of the foreground color of colorset 3 (in rgb:rrrr/gggg/bbbb
1920 form).  Please refer to the
1921 .B COLORSETS
1922 section for details about colorsets.
1923 .in -.3i
1924 .in -.5i
1926 .in +.5i
1927 $[schedule.last]
1928 .in +.3i
1929 This is replaced by the id of the last command that was scheduled
1930 with the
1931 .B Schedule
1932 command, even if this command was already executed.
1933 .in -.3i
1934 .in -.5i
1936 .in +.5i
1937 $[schedule.next]
1938 .in +.3i
1939 This is replaced by the id the next command used with
1940 .B Schedule
1941 will get (unless a different id is specified explicitly).
1942 .in -.3i
1943 .in -.5i
1945 .in +.5i
1946 $[cond.rc]
1947 .in +.3i
1948 The return code of the last conditional command.  This variable is
1949 only valid inside a function and can not be used in a conditional
1950 command.  Please refer to the section
1951 .B CONDITIONAL COMMANDS
1952 in the command list.
1953 .in -.3i
1954 .in -.5i
1956 .in +.5i
1957 $[func.context]
1958 .in +.3i
1959 The context character of the running command as used in the
1960 .BS Mouse ", " Key " or " PointerKey
1961 command.  This is useful for example with:
1963 Mouse 3 FS N WindowShade $$[func.context]
1965 .in -.3i
1966 .in -.5i
1968 .in +.5i
1969 $[gt.str]
1970 .in +.3i
1971 return the translation of
1972 .I str
1973 by looking in the current locale catalog(s). If no translation is
1974 found
1975 .I str
1976 is returned as is. See the
1977 .B LocalePath
1978 command.
1979 .in -.3i
1980 .in -.5i
1982 .in +.5i
1983 $[...]
1984 .in +.3i
1985 If the string within the braces is neither of the above, fvwm
1986 tries to find an environment variable with this name and replaces
1987 its value if one is found (e.g. "$[PAGER]" could be replaced by
1988 "more").  Otherwise the string is left as is.
1989 .in -.3i
1990 .in -.5i
1992 Some examples can be found in the description of the
1993 .B AddToFunc
1994 command.
1996 .SH SCRIPTING AND COMPLEX FUNCTIONS
1998 To achieve the more complex effects, fvwm has a number of
1999 commands that improve its scripting abilities.  Scripts can be
2000 read from a file with
2001 .BR Read ,
2002 from the output of a command with
2003 .B PipeRead
2004 or written as a complex function with the
2005 .B AddToFunc
2006 command.  For the curious, section 7 of the fvwm FAQ shows some
2007 real life applications of scripting.  Please refer to the sections
2008 .B COMMANDS FOR USER FUNCTIONS AND SHELL COMMANDS
2010 .B CONDITIONAL COMMANDS
2011 for details.  A word of warning:  during execution of complex
2012 functions, fvwm needs to take all input from the mouse pointer
2013 (the pointer is "grabbed" in the slang of X).  No other programs
2014 can receive any input from the pointer while a function is run.
2015 This can confuse some programs.  For example, the xwd program
2016 refuses to make screen shots when run from a complex function.  To
2017 achieve the same functionality you can use the
2018 .BR Read " or " PipeRead
2019 command instead.
2021 .SH THE LIST OF FVWM COMMANDS
2023 The command descriptions below are grouped together in the
2024 following sections.  The sections are hopefully sorted in order of
2025 usefulness to the newcomer.
2027 - Menu commands
2028 - Miscellaneous commands
2029 - Commands affecting window movement and placement
2030 - Commands for focus and mouse movement
2031 - Commands controlling window state
2032 - Commands for mouse, key and stroke bindings
2033 - The Style command (controlling window styles)
2034 - Other commands controlling window styles
2035 - Commands controlling the virtual desktop
2036 - Commands for user functions and shell commands
2037 - Conditional commands
2038 - Module commands
2039 - Quit, restart and session management commands
2040 - Color gradients
2043 .SS MENUS
2045 Before a menu can be opened, it has to be populated with menu
2046 items using the
2047 .B AddToMenu
2048 command and bound to a key or mouse button with the
2049 .BR Key ", " PointerKey " or " Mouse
2050 command (there are many other ways to invoke a menu too).  This is
2051 usually done in the configuration file.
2053 Fvwm menus are extremely configurable in look and feel.  Even the
2054 slightest nuances can be changed to the user's liking, including
2055 the menu item fonts, the background, delays before popping up sub
2056 menus, generating menus dynamically and many other features.
2057 Please refer to the
2058 .B MenuStyle
2059 command to learn more.
2062 .B Types of Menus
2064 In fvwm there are four slightly different types of menus:
2066 .I Popup menus
2067 can appear everywhere on the screen on their own or attached to a
2068 part of a window.  The
2069 .B Popup
2070 command opens popup menus.  If the popup menu was invoked with a
2071 mouse button held down, it is closed when the button is released.
2072 THe item under the pointer is then activated and the associated
2073 action is executed.
2075 .B Menu
2076 is a very similar command, but the menus it opens are slightly less
2077 transient.  When invoked by clicking a mouse button, it stays open
2078 and can be navigated with no button held.  But if it is invoked by
2079 a button press followed by mouse motion, it behaves exactly like a
2080 popup menu.
2082 .IR "Tear off menus" " or " "Pin up menus"
2083 are menus from either of the above two commands that have been
2084 "torn off" their original context and pinned on the desktop like a
2085 normal window.  They are created from other menus by certain key
2086 presses or mouse sequences or with the
2087 .B TearMenuOff
2088 command from inside a menu.
2090 .I Sub menus
2091 are menus inside menus.  When a menu item that has the
2092 .B Popup
2093 command as its action is selected, the named menu is opened as an
2094 inferior menu to the parent.  Any type of menu can have sub menus.
2097 .B Menu Anatomy
2099 Menus consist of any number of titles which are inactive menu
2100 items that usually appear at the top of the menu, normal items
2101 triggering various actions when selected, separator lines between
2102 the items, tear off bars (a horizontal broken line) that tear off
2103 the menu when selected, and sub menu items indicated with a
2104 triangle pointing left or right, depending on the direction in
2105 which the sub menu appears.  All the above menu items are
2106 optional.
2108 Additionally, if the menu is too long to fit on the screen, the
2109 excess menu items are put in a continuation menu and a sub menu
2110 with the string "More..." is placed at the bottom of the menu.
2111 Finally, there may be a picture running up either side of the menu
2112 (a "side bar").
2115 .B Menu Navigation
2117 Menus can be navigated either with the keyboard or with the
2118 mouse.  Many people prefer to use the mouse, but it can be rather
2119 tedious.  Once you get the hang of it, keyboard navigation can be
2120 much faster.  While fvwm displays a menu, it can do nothing else.
2121 For example, new windows do not appear before the menu is closed.
2122 However, this is not exactly true for tear off menus.  See the
2123 .B Tear Off Menus
2124 section for details.
2127 .B Mouse Navigation
2129 Moving the pointer over a menu selects the item below it.
2130 Normally this is indicated by a 3d border around the item, but not
2131 all parts of a menu can be selected.  Pressing any mouse button
2132 while a menu is open activates the item below it.  Items of a
2133 popup menu are also activated by releasing a held mouse button.
2134 In case of an item that hides a sub menu, the sub menu is
2135 displayed if the pointer hovers over the item long enough or moves
2136 close to the triangle indicating the sub menu.  This behaviour can
2137 be tuned with menu styles.
2139 Clicking on a selected item activates it - what happens exactly
2140 depends on the type of the item.
2142 Clicking on a title, a separator, the side bar, or outside the
2143 menu closes the menu (exception:  tear off menus can not be closed
2144 this way).  Pressing mouse button 2 over a menu title or
2145 activating a tear off bar creates a tear off menu from the current
2146 menu.  Clicking on a normal menu item invokes the command that is
2147 bound to it, and clicking on a sub menu item either closes all
2148 open menus and replaces them with the sub menu or posts the menu
2149 (default).
2151 Posting menus is meant to ease mouse navigation.  Once a sub menu
2152 is posted, only items from that sub menu can be selected.  This
2153 can be very useful to navigate the menu if the pointer tends to
2154 stray off the menu.  To unpost the menu and revert back to normal
2155 operation, either click on the same sub menu item or press any
2156 key.
2159 .B Keyboard Navigation
2161 Just like with mouse navigation, the item below the pointer is
2162 selected.  This is achieved by warping the pointer to the menu
2163 items when necessary.  While a menu is open, all key presses are
2164 intercepted by the menu.  No other application can get keyboard
2165 input (although this is not the case for tear off menus).
2167 Items can be selected directly by pressing a hotkey that can be
2168 configured individually for each menu item.  The hotkey is
2169 indicated by underlining it in the menu item label.  With the
2170 .I AutomaticHotkeys
2171 menu style fvwm automatically assigns hotkeys to all menu items.
2173 The most basic keys to navigate through menus are the cursor keys
2174 (move up or down one item, enter or leave a sub menu),
2175 .SM Space
2176 (activate item) and
2177 .SM Escape
2178 (close menu).  Numerous other keys can be used to navigate through
2179 menus:
2181 .SM \fIEnter\fP,
2182 .SM \fIReturn\fP,
2183 .SM \fISpace\fP
2184 activate the current item.
2186 .SM \fIEscape\fP,
2187 .SM \fIDelete\fP,
2188 .SM \fICtrl-G\fP
2189 exit the current sequence of menus or destroy a tear off menu.
2191 .SM \fIJ\fP,
2192 .SM \fIN\fP,
2193 .SM \fICursor-Down\fP,
2194 .SM \fITab\fP,
2195 .SM \fIMeta-Tab\fP,
2196 .SM \fICtrl-F\fP,
2197 move to the next item.
2199 .SM \fIK\fP,
2200 .SM \fIP\fP,
2201 .SM \fICursor-Up\fP,
2202 .SM \fIShift-Tab\fP,
2203 .SM \fIShift-Meta-Tab\fP,
2204 .SM \fICtrl-B\fP,
2205 move to the prior item.
2207 .SM \fIL\fP,
2208 .SM \fICursor-Right\fP,
2209 .SM \fIF\fP
2210 enter a sub menu.
2212 .SM \fIH\fP,
2213 .SM \fICursor-Left\fP,
2214 .SM \fIB\fP
2215 return to the prior menu.
2217 .SM \fICtrl-Cursor-Up\fP,
2218 .SM \fICtrl-K\fP
2219 .SM \fICtrl-P\fP,
2220 .SM \fIShift-Ctrl-Meta-Tab\fP,
2221 .SM \fIPage-Up\fP
2222 move up five items.
2224 .SM \fICtrl-Cursor-Down\fP,
2225 .SM \fICtrl-J\fP
2226 .SM \fICtrl-N\fP,
2227 .SM \fICtrl-Meta-Tab\,P,
2228 .SM \fIPage-Down\fP
2229 move down five items.
2231 .SM \fIHome\fP,
2232 .SM \fIShift-Cursor-Up\fP,
2233 .SM \fICtrl-A\fP
2234 move to the first item.
2236 .SM \fIEnd\fP,
2237 .SM \fIShift-Cursor-Down\fP,
2238 .SM \fICtrl-E\fP
2239 move to the last item.
2241 .SM \fIMeta-Cursor-Up\fP,
2242 .SM \fICtrl-Cursor-Left\fP,
2243 .SM \fIShift-Ctrl-Tab\fP
2244 move up just below the next separator.
2246 .SM \fIMeta-Cursor-Down\fP,
2247 .SM \fICtrl-Cursor-Right\fP,
2248 .SM \fICtrl-Tab\fP
2249 move down just below the next separator.
2251 .SM \fIInsert\fP
2252 opens the "More..." sub menu if any.
2254 .SM \fIBackspace\fP
2255 tears off the menu.
2258 .B Tear Off Menus
2260 A tear off menu is any menu that has been "torn off" the window it
2261 was attached to and pinned to the root window.  There are three
2262 ways to tear off a menu:  click on the menu title with mouse
2263 button 2, press
2264 .SM Backspace
2265 in the menu or activate its tear off bar (a horizontal bar with a
2266 broken line).  Tear off bars must be added to the menu as any
2267 other item by assigning them the command
2268 .BR TearMenuOff .
2270 The action taken with the backspace key cannot be overridden
2271 but the action of mouse button 2 on the title can.
2272 To remove the builtin mouse button 2 binding, use:
2274 Mouse 2 M N -
2276 ("M" is for "Menu" context)
2278 To assign some other button for tearoff, use:
2280 Mouse 1 M N TearOff
2282 Note that the Modifier, must be "N" (none) and that the
2283 notation "Mouse 0" (for any mouse button cannot be used.)
2285 The window containing the menu is placed as any other window would
2286 be.  If you find it confusing to have your tear off menus appear
2287 at random positions on the screen, put this line in your
2288 configuration file:
2290 Style fvwm_menu UsePPosition
2293 A tear off menu is a cross breeding between a window and a menu.
2294 The menu is swallowed by a window and its title is stripped off
2295 and displayed in the window title.  The main advantage is that the
2296 menu becomes permanent - activating an item does not close the
2297 menu.  Therefore, it can be used multiple times without reopening
2298 it.  To destroy such a menu, close its window or press the
2299 .SM Escape
2300 key.
2302 Tear off menus behave somewhat differently than normal menus and
2303 windows.  They do not take the keyboard focus, but while the
2304 pointer is over one of them, all key presses are sent to the
2305 menu.  Other fvwm key bindings are disabled as long as the pointer
2306 is inside the tear off menu or one of its sub menus.  When the
2307 pointer leaves this area, all sub menus are closed immediately.
2308 Note that the window containing a tear off menu is never hilighted
2309 as if it had the focus.
2311 A tear off menu is an independent copy of the menu it originated
2312 from.  As such, it is not affected by adding items to that menu or
2313 changing its menu style.
2315 To create a tear off menu without opening the normal menu first,
2316 the option
2317 .I TearOffImmediately
2318 can be added to the
2319 .BR Menu " or " Popup
2320 command.
2323 .BI "AddToMenu " menu-name " [" menu-label " " action "]"
2325 Begins or adds to a menu definition.  Typically a menu definition
2326 looks like this:
2328 AddToMenu Utilities Utilities Title
2329  + Xterm           Exec  exec xterm -e tcsh
2330  + Rxvt            Exec  exec rxvt
2331  + "Remote Logins" Popup Remote-Logins
2332  + Top             Exec  exec rxvt -T Top -n \\
2333                    Top -e top
2334  + Calculator      Exec  exec xcalc
2335  + Xman            Exec  exec xman
2336  + Xmag            Exec  exec xmag
2337  + emacs           Exec  exec xemacs
2338  + Mail            MailFunction \\
2339                    xmh "-font fixed"
2340  + ""              Nop
2341  + Modules         Popup Module-Popup
2342  + ""              Nop
2343  + Exit Fvwm       Popup Quit-Verify
2345 The menu could be invoked via
2347 Mouse 1 R A Menu Utilities Nop
2351 Mouse 1 R A Popup Utilities
2353 There is no end-of-menu symbol.  Menus do not have to be defined
2354 in a contiguous region of the
2355 .I config
2356 file.  The quoted (or first word)
2357 portion in the above examples is the menu label,
2358 which appears in the menu when the user pops it up.  The remaining
2359 portion is an fvwm command which is executed if the user
2360 selects that menu item.  An empty menu-label ("") and the
2361 .B Nop
2362 function are used to insert a separator into the menu.
2364 The keywords
2365 .IR DynamicPopUpAction " and " DynamicPopDownAction
2366 have a special meaning when used as the name of a menu item.  The
2367 action following the keyword is executed whenever the menu is
2368 popped up or down.  This way you can implement dynamic menus.  It
2369 is even possible to destroy itself with
2370 .B DestroyMenu
2371 and the rebuild from scratch.  When the menu has been destroyed
2372 (unless you used the
2373 .I recreate
2374 option when destroying the menu), do not forget to add the dynamic
2375 action again.
2377 Note: Do not trigger actions that require user interaction. They
2378 will probably fail and may screw up your menus.  See the
2379 .B Silent
2380 command.
2382 Warning: Do not issue
2383 .B MenuStyle
2384 commands as dynamic menu actions.  Chances are good that this will
2385 crash fvwm.
2387 There are several configurable scripts installed together with fvwm
2388 for automatical menu generation.  They have their own man pages.
2389 Some of them, specifically
2390 .BR fvwm-menu-directory " and " fvwm-menu-desktop ,
2391 may be used with
2392 .I DynamicPopupAction
2393 to create a directory listing or GNOME/KDE application listing.
2395 Example (File browser):
2397 # You can find the shell script fvwm_make_browse_menu.sh
2398 # in the utils/ directory of the distribution.
2399 AddToMenu BrowseMenu
2400 + DynamicPopupAction Piperead \\
2401   'fvwm_make_browse_menu.sh BrowseMenu'
2403 Example (Picture menu):
2405 # Build a menu of all .jpg files in
2406 # $HOME/Pictures
2407 AddToMenu JpgMenu foo title
2408 + DynamicPopupAction Function MakeJpgMenu
2410 AddToFunc MakeJpgMenu
2411 + I DestroyMenu recreate JpgMenu
2412 + I AddToMenu JpgMenu Pictures Title
2413 + I PipeRead 'for i in $HOME/Pictures/*.jpg; \\
2414   do echo AddToMenu JpgMenu "`basename $i`" Exec xv $i; done'
2416 The keyword
2417 .I MissingSubmenuFunction
2418 has a similar meaning.  It is executed whenever you try to pop up
2419 a sub menu that does not exist.  With this function you can define
2420 and destroy menus on the fly.  You can use any command after the
2421 keyword, but the name of an item (that is a submenu) defined with
2422 .B AddToFunc
2423 follows it, fvwm executes this command:
2425 Function <function-name> <submenu-name>
2427 I.e. the name is passed to the function as its first argument and
2428 can be referred to with "$0".
2431 .B fvwm-menu-directory
2432 script mentioned above may be used with
2433 .I MissingSubmenuFunction
2434 to create an up to date recursive directory listing.
2436 Example:
2438 # There is another shell script fvwm_make_directory_menu.sh
2439 # in the utils/ directory of the distribution. To use it,
2440 # define this function in your configuration file:
2442 DestroyFunc MakeMissingDirectoryMenu
2443 AddToFunc MakeMissingDirectoryMenu
2444 + I PipeRead fvwm_make_directory_menu.sh $0
2446 DestroyMenu SomeMenu
2447 AddToMenu SomeMenu
2448 + MissingSubmenuFunction MakeMissingDirectoryMenu
2449 + "Root directory" Popup /
2451 This is another implementation of the file browser that uses
2452 sub menus for subdirectories.
2454 Titles can be used within the menu. If you add the option
2455 .I top
2456 behind the keyword
2457 .BR Title ,
2458 the title is added to the top of the menu.  If there was a title
2459 already, it is overwritten.
2461 AddToMenu Utilities Tools Title top
2463 All text up to the first
2464 .SM Tab
2465 in the menu label is aligned to the left side of the menu, all
2466 text right of the first
2467 .SM Tab
2468 is aligned to the left in a second column and all text thereafter
2469 is placed right aligned in the third column.  All other
2470 .SM Tabs
2471 are replaced by spaces.  Note that you can change this format with
2473 .I ItemFormat
2474 option of the
2475 .B MenuStyle
2476 command.
2478 If the menu-label contains an ampersand ('&'), the next character
2479 is taken as a hot-key for the menu item.  Hot-keys are underlined
2480 in the label.  To get a literal '&', insert "&&".  Pressing the
2481 hot-key moves through the list of menu items with this hot-key or
2482 selects an item that is the only one with this hot-key.
2484 If the menu-label contains a sub-string which is set off by stars,
2485 then the text between the stars is expected to be the name of an
2486 image file to insert in the menu.  To get a literal
2487 \'*', insert "**".  For example
2489  + Calculator*xcalc.xpm* Exec exec xcalc
2491 inserts a menu item labeled "Calculator" with a picture of a
2492 calculator above it.  The following:
2494  + *xcalc.xpm*           Exec exec xcalc
2496 Omits the "Calculator" label, but leaves the picture.
2498 If the menu-label contains a sub-string which is set off by
2499 percent signs, then the text between the percent signs is expected
2500 to be the name of image file (a so called mini
2501 icon to insert to the left of the menu label.  A second mini icon
2502 that is drawn at the right side of the menu can be given in the
2503 same way.  To get a literal '%', insert "%%". For example
2505  + Calculator%xcalc.xpm% Exec exec xcalc
2507 inserts a menu item labeled "Calculator" with a picture of a
2508 calculator to the left.  The following:
2510  + %xcalc.xpm%           Exec exec xcalc
2512 Omits the "Calculator" label, but leaves the picture.  The
2513 pictures used with this feature should be small (perhaps 16x16).
2514 If the menu-name (not the label) contains a sub-string which is
2515 set off by at signs ('@'), then the text between them is expected
2516 to be the name of an xpm or bitmap file to draw along the left
2517 side of the menu (a side pixmap).  You may want to use the
2518 .I SidePic
2519 option of the
2520 .B MenuStyle
2521 command instead.  To get a literal '@', insert "@@".  For example
2523 AddToMenu StartMenu@linux-menu.xpm@
2525 creates a menu with a picture in its bottom left corner.
2527 If the menu-name also contains a sub-string surrounded by '^'s, then
2528 the text between '^'s is expected to be the name of an X11 color
2529 and the column containing the side picture is colored with that
2530 color.  You can set this color for a menu style using the
2531 .I SideColor
2532 option of the
2533 .B MenuStyle
2534 command.  To get a literal '^', insert "^^".  Example:
2536 AddToMenu StartMenu@linux-menu.xpm@^blue^
2538 creates a menu with a picture in its bottom left corner and
2539 colors with blue the region of the menu containing the picture.
2541 In all the above cases, the name of the resulting menu is name
2542 specified, stripped of the substrings between the various
2543 delimiters.
2546 .BI "ChangeMenuStyle " "menustyle menu ..."
2547 Changes the menu style of
2548 .IR menu " to " menustyle .
2549 You may specified more than one menu in each call of
2550 .BR ChangeMenuStyle .
2552 ChangeMenuStyle pixmap1 \\
2553   ScreenSaverMenu ScreenLockMenu
2557 .BI "CopyMenuStyle " "orig-menustyle dest-menustyle"
2558 Copy
2559 .IR orig-menustyle " to " dest-menustyle ,
2560 where
2561 .IR orig-menustyle
2562 is an existing menu style.  If the menu style
2563 .IR dest_menustyle
2564 does not exist, then it is created.
2567 .BI "DestroyMenu [" recreate "] " menu
2568 Deletes a menu, so that subsequent references to it are no longer
2569 valid.  You can use this to change the contents of a menu during
2570 an fvwm session.  The menu can be rebuilt using
2571 .BR AddToMenu .
2572 The optional parameter
2573 .I recreate
2574 tells fvwm not to throw away the menu completely but to throw away
2575 all the menu items (including the title).
2577 DestroyMenu Utilities
2581 .BI "DestroyMenuStyle " menustyle
2582 Deletes the menu style named
2583 .I menustyle
2584 and changes all menus using this style to the default style, you
2585 cannot destroy the default menu style.
2587 DestroyMenuStyle pixamp1
2591 .B "Menu \fImenu-name\fP \
2592 [\fIposition\fP\
2593 ] [\fIdouble-click-action\fP\
2595 Causes a previously defined menu to be popped up in a sticky
2596 manner.  That is, if the user invokes the menu with a click action
2597 instead of a drag action, the menu stays up.  The command
2598 .I double-click-action
2599 is invoked if the user double-clicks a button (or hits the key
2600 rapidly twice if the menu is bound to a key) when bringing up the
2601 menu.  If the double click action is not specified, double
2602 clicking on the menu does nothing.  However, if the menu begins
2603 with a menu item (i.e. not with a title or a separator) and the
2604 double click action is not given, double clicking invokes the
2605 first item of the menu (but only if the pointer really was over
2606 the item).
2608 The pointer is warped to where it was when the menu was invoked if
2609 it was both invoked and closed with a keystroke.
2612 .I position
2613 arguments allow placement of the menu somewhere on the screen, for
2614 example centered on the visible screen or above a title bar.
2615 Basically it works like this: you specify a
2616 .I context-rectangle
2617 and an offset to this rectangle by which the upper left corner of
2618 the menu is moved from the upper left corner of the rectangle.
2620 .I position
2621 arguments consist of several parts:
2623 .BI "[" context-rectangle "] " "x y" " [" special-options "]"
2626 .I context-rectangle
2627 can be one of:
2629 .in +.5i
2630 .BR Root
2631 .in +.3i
2632 the root window of the current screen.
2633 .in -.3i
2634 .BR XineramaRoot
2635 .in +.3i
2636 the root window of the whole Xinerama screen.  Equivalent to
2637 "root" when Xinerama is not used.
2638 .in -.3i
2639 .BR Mouse
2640 .in +.3i
2641 a 1x1 rectangle at the mouse position.
2642 .in -.3i
2643 .BR Window
2644 .in +.3i
2645 the frame of the context window.
2646 .in -.3i
2647 .BR Interior
2648 .in +.3i
2649 the inside of the context window.
2650 .in -.3i
2651 .BR Title
2652 .in +.3i
2653 the title of the context window or icon.
2654 .in -.3i
2655 .BR Button<n>
2656 .in +.3i
2657 button #n of the context window.
2658 .in -.3i
2659 .BR Icon
2660 .in +.3i
2661 the icon of the context window.
2662 .in -.3i
2663 .BR Menu
2664 .in +.3i
2665 the current menu.
2666 .in -.3i
2667 .BR Item
2668 .in +.3i
2669 the current menu item.
2670 .in -.3i
2671 .BR Context
2672 .in +.3i
2673 the current window, menu or icon.
2674 .in -.3i
2675 .BR This
2676 .in +.3i
2677 whatever widget the pointer is on (e.g. a corner of a window or
2678 the root window).
2679 .in -.3i
2680 .BI "Rectangle <" geometry ">"
2681 .in +.3i
2682 the rectangle defined by
2683 .RI < geometry >
2684 in X geometry format.  Width and height default to 1 if omitted.
2685 .in -.3i
2686 .in -.5i
2688 If the context-rectangle is omitted or illegal (e.g. "item" on a
2689 window), "Mouse" is the default.  Note that not all of these make
2690 sense under all circumstances (e.g. "Icon" if the pointer is on a
2691 menu).
2693 The offset values
2694 .I x
2696 .I y
2697 specify how far the menu is moved from it's default position.  By
2698 default, the numeric value given is interpreted as a percentage of
2699 the context rectangle's width (height), but with a trailing
2700 .RI ' m '
2701 the menu's width (height) is used instead.  Furthermore a trailing
2702 .RI ' p '
2703 changes the interpretation to mean pixels.
2705 Instead of a single value you can use a list of values.  All
2706 additional numbers after the first one are separated from their
2707 predecessor by their sign.  Do not use any other separators.
2710 .IR x " or " y
2711 are prefixed with "o<number>" where <number> is an integer, the
2712 menu and the rectangle are moved to overlap at the specified
2713 position before any other offsets are applied.  The menu and the
2714 rectangle are placed so that the pixel at <number> percent of the
2715 rectangle's width/height is right over the pixel at <number>
2716 percent of the menu's width/height. So "o0" means that the
2717 top/left borders of the menu and the rectangle overlap, with
2718 "o100" it's the bottom/right borders and if you use "o50" they are
2719 centered upon each other (try it and you will see it is much
2720 simpler than this description).  The default is "o0".  The prefix
2721 "o<number>" is an abbreviation for "+<number>-<number>m".
2723 A prefix of
2724 .RI ' c '
2725 is equivalent to "o50".  Examples:
2727 # window list in the middle of the screen
2728 WindowList Root c c
2730 # menu to the left of a window
2731 Menu name window -100m c+0
2733 # popup menu 8 pixels above the mouse pointer
2734 Popup name mouse c -100m-8p
2736 # somewhere on the screen
2737 Menu name rectangle 512x384+1+1 +0 +0
2739 # centered vertically around a menu item
2740 AddToMenu foobar-menu
2741  + "first item" Nop
2742  + "special item" Popup "another menu" item \\
2743                   +100 c
2744  + "last item" Nop
2746 # above the first menu item
2747 AddToMenu foobar-menu
2748  + "first item" Popup "another menu" item \\
2749                 +0 -100m
2751 Note that you can put a sub menu far off the current menu so you
2752 could not reach it with the mouse without leaving the menu.  If
2753 the pointer leaves the current menu in the general direction of
2754 the sub menu the menu stays up.
2757 .IR special-options :
2759 .in +.5i
2760 To create a tear off menu without opening the normal menu, add the
2761 option
2762 .IR TearOffImmediately .
2763 Normally the menu opens in normal state for a split second before
2764 being torn off.  As tearing off places the menu like any other
2765 window, a position should be specified explicitly:
2767 # Forbid fvwm to place the menu window
2768 Style <name of menu> UsePPosition
2769 # Menu at top left corner of screen
2770 Menu Root 0p 0p TearOffImmediately
2774 .IR animated " and " Mwm " or " Win
2775 menu styles may move a menu somewhere else on the screen.  If you
2776 do not want this you can add
2777 .I Fixed
2778 as an option.  This might happen for example if you want the menu
2779 always in the top right corner of the screen.
2781 Where do you want a menu to appear when you click on it's menu
2782 item? The default is to place the title under the cursor, but if
2783 you want it where the position arguments say, use the
2784 .I SelectInPlace
2785 option.  If you want the pointer on the title of the menu, use
2786 .I SelectWarp
2787 too.  Note that these options apply only if the
2788 .IB "PopupAsRootMenu " MenuStyle
2789 option is used.
2791 The pointer is warped to the title of a sub menu whenever the
2792 pointer would be on an item when the sub menu is popped up
2793 .RI ( fvwm
2794 menu style) or never warped to the title at all
2795 .RI ( Mwm " or " Win
2796 menu styles).  You can force (forbid) warping whenever the
2797 sub menu is opened with the
2798 .IR WarpTitle " (" NoWarp ") option."
2800 Note that the
2801 .I special-options
2802 do work with a normal menu that has no other position arguments.
2803 .in -.5i
2806 .BI "MenuStyle " "stylename options"
2807 Sets a new menu style or changes a previously defined style.  The
2808 .I stylename
2809 is the style name; if it contains spaces or tabs it has to be
2810 quoted.  The name "*" is reserved for the default menu style. The
2811 default menu style is used for every menu-like object (e.g. the
2812 window created by the
2813 .B WindowList
2814 command) that had not be assigned a style using the
2815 .BR ChangeMenuStyle .
2816 See also
2817 .BR DestroyMenuStyle .
2818 When using monochrome color options are ignored.
2820 .I options
2821 is a comma separated list containing some of the keywords
2822 Fvwm / Mwm / Win,
2823 BorderWidth,
2824 Foreground,
2825 Background,
2826 Greyed,
2827 HilightBack / HilightBackOff,
2828 ActiveFore / ActiveForeOff,
2829 MenuColorset,
2830 ActiveColorset,
2831 GreyedColorset,
2832 Hilight3DThick / Hilight3DThin / Hilight3DOff,
2833 Hilight3DThickness,
2834 Animation / AnimationOff,
2835 Font,
2836 MenuFace,
2837 PopupDelay,
2838 PopupOffset,
2839 TitleWarp / TitleWarpOff,
2840 TitleUnderlines0 / TitleUnderlines1 / TitleUnderlines2,
2841 SeparatorsLong / SeparatorsShort,
2842 TrianglesSolid / TrianglesRelief,
2843 PopupImmediately / PopupDelayed,
2844 PopdownImmediately / PopdownDelayed,
2845 PopupActiveArea,
2846 DoubleClickTime,
2847 SidePic,
2848 SideColor,
2849 PopupAsRootMenu / PopupAsSubmenu / PopupIgnore / PopupClose,
2850 RemoveSubmenus / HoldSubmenus,
2851 SubmenusRight / SubmenusLeft,
2852 SelectOnRelease,
2853 ItemFormat,
2854 VerticalItemSpacing,
2855 VerticalTitleSpacing,
2856 AutomaticHotkeys / AutomaticHotkeysOff.
2858 In the above list some options are listed as option pairs or
2859 triples with a '/' in between.  These options exclude each other.
2861 .IR Fvwm ", " Mwm ", " Win
2862 reset all options to the style with the same name in former
2863 versions of fvwm.  The default for new menu styles is
2864 .I Fvwm
2865 style.  These options override all others except
2866 .IR Foreground ", " Background ", " Greyed ", " HilightBack ", "
2867 .IR ActiveFore " and " PopupDelay ,
2868 so they should be used only as the first option specified for a
2869 menu style or to reset the style to defined behavior.  The same
2870 effect can be created by setting all the other options one by one.
2872 .IR Mwm " and " Win
2873 style menus popup sub menus automatically.
2874 .I Win
2875 menus indicate the current menu item by changing the background to
2876 dark.
2877 .I Fvwm
2878 sub menus overlap the parent menu,
2879 .IR Mwm " and " Win
2880 style menus never overlap the parent menu.
2882 .I Fvwm
2883 style is equivalent to HilightBackOff, Hilight3DThin,
2884 ActiveForeOff, ActiveBackOff,
2885 AnimationOff, Font, MenuFace, PopupOffset 0 67,
2886 TitleWarp, TitleUnderlines1, SeparatorsShort, TrianglesRelief,
2887 PopupDelayed, PopdownDelayed, PopupDelay 150, PopdownDelay 150,
2888 PopupAsSubmenu, HoldSubmenus,
2889 SubmenusRight, BorderWidth 2, AutomaticHotkeysOff,
2890 PopupActiveArea 75.
2892 .I Mwm
2893 style is equivalent to HilightBackOff, Hilight3DThick,
2894 ActiveForeOff, ActiveBackOff,
2895 AnimationOff, Font, MenuFace, PopupOffset -3 100,
2896 TitleWarpOff, TitleUnderlines2, SeparatorsLong, TrianglesRelief,
2897 PopupImmediately, PopdownDelayed, PopdownDelay 150,
2898 PopupAsSubmenu, HoldSubmenus, SubmenusRight, BorderWidth 2,
2899 AutomaticHotkeysOff, PopupActiveArea 75.
2901 .I Win
2902 style is equivalent to HilightBack, Hilight3DOff, ActiveFore,
2903 ActiveBack,
2904 AnimationOff, Font, MenuFace, PopupOffset -5 100, TitleWarpOff,
2905 TitleUnderlines1, SeparatorsShort, TrianglesSolid,
2906 PopupImmediately, PopdownDelayed, PopdownDelay 150,
2907 PopupAsSubmenu, RemoveSubmenus, SubmenusRight, BorderWidth 2,
2908 AutomaticHotkeysOff, PopupActiveArea 75.
2910 .I BorderWidth
2911 takes the thickness of the border around the menus in pixels. It
2912 may be zero to 50 pixels.  The default is 2.  Using an illegal
2913 value reverts the border width to the default.
2915 .IR Foreground " and " Background
2916 may have a color name as an argument.  This color is used for menu
2917 text or the menu's background.  You can omit the color name to
2918 reset these colors to the built-in default.
2920 .I Greyed
2921 may have a color name as an argument.  This color is the one used
2922 to draw a menu-selection which is prohibited (or not recommended)
2923 by the Mwm hints which an application has specified. If the color
2924 is omitted the color of greyed menu entries is based on the
2925 background color of the menu.
2927 .IR HilightBack " and " HilightBackOff
2928 switch hilighting the background of the selected menu item on and
2929 off.  A specific background color may be used by providing the
2930 color name as an argument to
2931 .IR HilightBack .
2932 If you use this option without an argument the color is based on
2933 the menu's background color.  The
2934 .I ActiveColorset
2935 option overrides the specified color.
2937 .I ActiveFore " and " ActiveForeOff
2938 switch hilighting the foreground of the selected menu item on and
2939 off.  A specific foreground color may be used by providing the
2940 color name as an argument to
2941 .IR ActiveFore .
2942 Omitting the color turns hilighting on when an
2943 .I ActiveColorset
2944 is used.
2945 .I ActiveForeOff
2946 turns off hilighting the foreground completely.  The
2947 .I ActiveColorset
2948 option overrides the specified color.
2950 .I MenuColorset
2951 controls if a colorset is used instead of the
2952 .IR Foreground ", " Background " and " MenuFace
2953 menu styles.  If the
2954 .I MenuColorset
2955 keyword is followed by a number equal to zero or greater, this
2956 number is taken as the number of the colorset to use.  If the
2957 number is omitted, the colorset is switched off and the regular
2958 menu styles are used again.  The foreground and background colors
2959 of the menu items are replaced by the colors from the colorset. If
2960 the colorset has a pixmap defined, this pixmap is used as the
2961 background of the menu.  Note that the
2962 .I MenuFace
2963 menu style has been optimized for memory consumption and may use
2964 less memory than the background from a colorset.  The shape mask
2965 from the colorset is used to shape the menu.  Please refer to the
2966 .B COLORSETS
2967 section for details about colorsets.
2969 .I ActiveColorset
2970 works exactly like
2971 .IR MenuColorset ,
2972 but the foreground from the colorset replaces the color given with
2974 .I ActiveFore
2975 menu style and the colorset's background color replaces the color
2976 given with the
2977 .I HilightBack
2978 command (to turn on background hilighting you have to use the
2979 .I HilightBack
2980 menu style too).  If specified, the hilight and shadow colors
2981 from the colorset are used too.  The pixmap and shape mask from
2982 the colorset are not used.  Hilighting the background or
2983 foreground can be turned off individually with the
2984 .IR ActiveForeOff " or " HilightBackOff
2985 menu styles.
2987 .I GreyedColorset
2988 works exactly like
2989 .IR MenuColorset ,
2990 but the foreground from the colorset replaces the color given with
2992 .I Greyed
2993 menu style.  No other parts of the colorset are used.
2995 .IR Hilight3DThick ", " Hilight3DThin " and " Hilight3DOff
2996 determine if the selected menu item is hilighted with a 3D
2997 relief. Thick reliefs are two pixels wide, thin reliefs are one
2998 pixel wide.
3000 .I Hilight3DThickness
3001 takes one numeric argument that may be between -50 and +50
3002 pixels. With negative values the menu item gets a pressed in look.
3003 The above three commands are equivalent to a thickness of 2, 1 and
3006 .IR Animation " and " AnimationOff
3007 turn menu animation on or off.  When animation is on, sub menus
3008 that don't fit on the screen cause the parent menu to be shifted
3009 to the left so the sub menu can be seen.
3011 .I Font
3012 takes a font name as an argument.  If a font by this name exists
3013 it is used for the text of all menu items.  If it does not exist
3014 or if the name is left blank the built-in default is used.
3016 .I MenuFace
3017 enforces a fancy background upon the menus.  You can use the same
3018 options for
3019 .I MenuFace
3020 as for the
3021 .BR ButtonStyle .
3022 See description of
3023 .B ButtonStyle
3024 command and the
3025 .B COLOR GRADIENTS
3026 sections for more information.  If you use
3027 .I MenuFace
3028 without arguments the style is reverted back to normal.
3030 Some examples of MenuFaces are:
3032 MenuFace DGradient 128 2 lightgrey 50 blue 50 \\
3033   white
3034 MenuFace TiledPixmap texture10.xpm
3035 MenuFace HGradient 128 2 Red 40 Maroon 60 \\
3036   White
3037 MenuFace Solid Maroon
3039 Note: The gradient styles H, V, B and D are optimized for high
3040 speed and low memory consumption in menus.  This is not the case
3041 for all the other gradient styles.  They may be slow and consume
3042 huge amounts of memory, so if you encounter performance problems
3043 with them you may be better off by not using them.  To improve
3044 performance you can try one or all of the following:
3046 Turn hilighting of the active menu item other than foreground
3047 color off:
3049 MenuStyle <style> Hilight3DOff, HilightBackOff
3050 MenuStyle <style> ActiveFore <preferred color>
3052 Make sure sub menus do not overlap the parent menu. This can
3053 prevent menus being redrawn every time a sub menu pops up or down.
3055 MenuStyle <style> PopupOffset 1 100
3057 Run your X server with backing storage.  If your X Server is
3058 started with the -bs option, turn it off.  If not try the -wm
3059 and +bs options:
3061 startx -- -wm +bs
3063 You may have to adapt this example to your system (e.g. if you use
3064 xinit to start X).
3066 .I PopupDelay
3067 requires one numeric argument.  This value is the delay in
3068 milliseconds before a sub menu is popped up when the pointer moves
3069 over a menu item that has a sub menu.  If the value is zero no
3070 automatic pop up is done.  If the argument is omitted the built-in
3071 default is used. Note that the popup delay has no effect if the
3072 .I PopupImmediately
3073 option is used since sub menus pop up immediately then.
3075 .I PopupImmediately
3076 makes menu items with sub menus pop up it up as soon as the
3077 pointer enters the item.  The
3078 .I PopupDelay option
3079 is ignored then.  If
3080 .I PopupDelayed
3081 is used fvwm looks at the
3082 .I PopupDelay
3083 option if or when this automatic popup happens.
3085 .I PopdownDelay
3086 works exactly like
3087 .I PopupDelay
3088 but determines the timeout of the
3089 .I PopupDelayed
3090 style.
3092 .I PopdownImmediately
3093 makes sub menus vanish as soon as the pointer leaves the sub menu
3094 and the correspondent item in the parent menu.  With the opposite
3095 option
3096 .I PopdownDelayed
3097 the sub menu only pops down after the time specified with the
3098 .I PopdownDelay
3099 option.  This comes handy when the pointer often strays off the
3100 menu item when trying to move into the sub menu.  Whenever there
3101 is a conflict between the
3102 .IR PopupImmediately ", " PopupDelayed ", " PopupDelay
3103 styles and the
3104 .IR PopdownImmediately ", " PopdownDelayed ", " PopdownDelay
3105 styles, the
3106 .I Popup...
3107 styles win when using mouse navigation and the
3108 .I Popdown...
3109 styles win when navigating with the keyboard.
3111 .I PopupOffset
3112 requires two integer arguments.  Both values affect where sub
3113 menus are placed relative to the parent menu.  If both values are
3114 zero, the left edge of the sub menu overlaps the left edge of the
3115 parent menu.  If the first value is non-zero the sub menu is
3116 shifted that many pixels to the right (or left if negative).  If
3117 the second value is non-zero the menu is moved by that many
3118 percent of the parent menu's width to the right or left.
3120 .I PopupActiveArea
3121 requires an integer value between 51 and 100.  Normally, when the
3122 pointer is over a menu item with a sub menu and the pointer enters
3123 the area that starts at 75% of the menu width, the sub menu is
3124 shown immediately.  This percentage can be changed with
3125 .IR PopupActiveArea .
3126 Setting this value to 100 disables this kind of automatic popups
3127 altogether.  The default value is restored if no or an illegal
3128 value is given.
3130 .IR TitleWarp " and " TitleWarpOff
3131 affect if the pointer warps to the menu title when a sub menu is
3132 opened or not. Note that regardless of this setting the pointer is
3133 not warped if the menu does not pop up under the pointer.
3135 .IR TitleUnderlines0 ", " TitleUnderlines1 " and " TitleUnderlines2
3136 specify how many lines are drawn below a menu title.
3138 .IR SeparatorsLong " and " SeparatorsShort
3139 set the length of menu separators.  Long separators run from the
3140 left edge all the way to the right edge.  Short separators leave a
3141 few pixels to the edges of the menu.
3143 .IR TrianglesSolid " and " TrianglesRelief
3144 affect how the small triangles for sub menus is drawn.  Solid
3145 triangles are filled with a color while relief triangles are
3146 hollow.
3148 .I DoubleClickTime
3149 requires one numeric argument.  This value is the time in
3150 milliseconds between two mouse clicks in a menu to be considered
3151 as a double click.  The default is 450 milliseconds.  If the
3152 argument is omitted the double click time is reset to this
3153 default.
3155 .I SidePic
3156 takes the name of an image file as an argument. The
3157 picture is drawn along the left side of the menu.  The
3158 .I SidePic
3159 option can be overridden by a menu specific side pixmap (see
3160 .BR AddToMenu ).
3161 If the file name is omitted an existing side pixmap is remove from
3162 the menu style.
3164 .I SideColor
3165 takes the name of an X11 color as an argument. This color is used
3166 to color the column containing the side picture (see
3167 above). The SideColor option can be overridden by a menu specific
3168 side color (see
3169 .BR AddToMenu ).
3170 If the color name is omitted the side color option is switched off.
3172 .IR PopupAsRootMenu ", " PopupAsSubmenu ", " PopupIgnore " and " PopupClose
3173 change the behavior when you click on a menu item that opens a
3174 sub menu. With
3175 .I PopupAsRootMenu
3176 the original menu is closed before the sub menu appears, with
3177 .I PopupAsSubmenu
3178 it is not, so you can navigate back into the
3179 parent menu.  Furthermore, with
3180 .I PopupAsSubmenu
3181 the sub menu is held open (posted) regardless of where you move
3182 the mouse.  Depending on your menu style this may simplify
3183 navigating through the menu.  Any keystroke while a menu is posted
3184 reverts the menu back to the normal behavior.  With
3185 .I PopupClose
3186 the menu is cloed when a sub menu item is activated, and the menu
3187 stays open if
3188 .I PopupIgnore
3189 is used (even if the menu was invoked with the
3190 .B Popup
3191 command).
3192 .I PopupAsSubmenu
3193 is the default.
3195 .I RemoveSubmenus
3196 instructs fvwm to remove sub menus when you move back into the
3197 parent menu.  With
3198 .I HoldSubmenus
3199 the sub menu remains visible.  You probably want to use
3200 .I HoldSubmenus
3201 if you are using the
3202 .I PopupDelayed
3203 style.
3204 .I RemoveSubmenus
3205 affects menu navigation with the keyboard.
3207 .I SelectOnRelease
3208 takes an optional key name as an argument.  If the given key is
3209 release in a menu using this style, the current menu item is
3210 selected.  This is intended for
3211 .SM Alt-Tab
3212 .B WindowList
3213 navigation.
3214 The key name is a standard X11 key name as defined in
3215 .IR /usr/include/X11/keysymdef.h ,
3216 (without the 
3217 .I XK_
3218 prefix), or the keysym database
3219 .IR /usr/X11R6/lib/X11/XKeysymDB .
3220 To disable this behavior, omit
3221 the key name.
3223 Note: Some X servers do not support KeyRelease events.
3224 .I SelectOnRelease
3225 does not work on such a machine.
3227 .I ItemFormat
3228 takes a special string as its argument that determines the layout
3229 of the menu items.  Think of the format string as if it were a
3230 menu item.  All you have to do is tell fvwm where to place the
3231 different parts of the menu item (i.e. the labels, the triangle
3232 denoting a sub menu, the mini icons and the side pic) in the blank
3233 area.  The string consists of spaces,
3234 .SM Tab
3235 characters and formatting directives beginning with '%'. Any
3236 illegal characters and formatting directives are silently ignored:
3238 .in +.5i
3239 .BR %l ", " %c " and " %r
3240 .in +.3i
3241 Insert the next item label.  Up to three labels can be used. The
3242 item column is left-aligned
3243 .RB ( %l ),
3244 centered
3245 .RB ( %c )
3246 or right-aligned
3247 .RB ( %r ).
3248 .in -.3i
3249 .B %i
3250 .in +.3i
3251 Inserts the mini icon.
3252 .in -.3i
3253 .BR %> " and " %<
3254 .in +.3i
3255 Insert the sub menu triangle pointing either to the right
3256 .RB ( %> )
3257 or to the left
3258 .RB ( %< )
3259 .in -.3i
3260 .B %|
3261 .in +.3i
3262 The first
3263 .B %|
3264 denotes the beginning of the area that is highlighted either with
3265 a background color or a relief (or both).  The second
3266 .B %|
3267 marks the end of this area.
3268 .B %|
3269 can be used up to twice in the string.  If you don't add one or
3270 both of them, fvwm sets the margins to the margins of the whole
3271 item (not counting the side picture).
3272 .in -.3i
3273 .B %s
3274 .in +.3i
3275 Places the side picture either at the beginning or the end of the
3276 menu. This directive may be used only once and only as the first
3277 or last in the format string. If the
3278 .B %s
3279 is not at the beginning of the string, all characters to the right
3280 of it are silently ignored.
3281 .in -.3i
3282 .BR Space ", " Tab ", " %Space " and " %Tab
3283 .in +.3i
3284 Add gap of one space, or a tab, using the width of the menu font.
3285 When using a tab, the size of the gap can be one to 8 spaces
3286 since the tab position is a multiple of 8 from the edge of the menu.
3287 The whole string must be quoted if spaces or tabs are used.
3288 .in -.3i
3289 .B %p
3290 .in +.3i
3291 Like
3292 .SM Space
3294 .SM Tab
3295 .B %p
3296 inserts an empty area into the item, but with better control of
3297 its size (see below).
3298 .in -.3i
3299 .in -.5i
3301 You can define an additional space before and after each of the
3302 objects like this:
3304 .BI % left . right p
3306 This means: if the object is defined in the menu (e.g. if it is
3307 .B %s
3308 and you use a side picture, or it is
3309 .B %l
3310 for the third column and there are items defined that actually
3311 have a third column), then add
3312 .I left
3313 pixels before the object and
3314 .I right
3315 pixels after it.  You may leave out the
3316 .I left
3317 or the
3318 .I .right
3319 parts if you don't need them.  All values up to the screen width
3320 are allowed.  Even negative values can be used with care.  The
3321 .B p
3322 may be replaced with any other formatting directives described
3323 above.
3325 Note: Only items defined in the format string are visible in the
3326 menus. So if you do not put a
3327 .B %s
3328 in there you do not see a side picture, even if one is specified.
3330 Note: The
3331 .I SubmenusLeft
3332 style changes the default
3333 .I ItemFormat
3334 string, but if it was set manually it is not modified.
3336 Note: If any unformatted title of the menu is wider than the
3337 widest menu item, the spaces between the different parts of the
3338 menu items are enlarged to match the width of the title.  Leading
3339 left aligned objects in the format string
3340 .RB ( %l ", " %i ", "%< ", first " %| )
3341 stick to the left edge of the menu and trailing right aligned
3342 objects
3343 .RB ( %r ", " %i ", "%> ", second " %| )
3344 stick to the right edge.  The gaps between the remaining items are
3345 enlarged equally.
3347 Examples:
3349 MenuStyle * ItemFormat \\
3350   "%.4s%.1|%.5i%.5l%.5l%.5r%.5i%2.3>%1|"
3352 Is the default string used by fvwm: (side picture + 4 pixels gap)
3353 (beginning of the hilighted area + 1 pixel gap) (mini icon + 5p)
3354 (first column left aligned + 5p) (second column left aligned + 5p)
3355 (third column right aligned + 5p) (second mini icon + 5p) (2p +
3356 sub menu triangle + 3p) (1p + end of hilighted area).
3358 MenuStyle * ItemFormat \\
3359   "%.1|%3.2<%5i%5l%5l%5r%5i%1|%4s"
3361 Is used by fvwm with the
3362 .I SubmenusLeft
3363 option below.
3365 .IR VerticalItemSpacing " and " VerticalTitleSpacing
3366 control the vertical spacing of menu items and titles like
3367 .I ItemFormat
3368 controls the horizontal spacing.  Both take two numeric arguments
3369 that may range from -100 to +100.  The first is the gap in pixels
3370 above a normal menu item (or a menu title), the second is the gap
3371 in pixels below it.  Negative numbers do not make much sense and
3372 may screw up the menu completely.  If no arguments are given or
3373 the given arguments are invalid, the built-in defaults are used:
3374 one pixel above the item or title and two below.
3376 .I SubmenusLeft
3377 mirrors the menu layout and behavior.  Sub menus pop up to the
3378 left, the sub menu triangle is drawn left and the mini icon and
3379 side picture are drawn at the right side of the menu.  The default
3381 .IR SubmenusRight .
3382 The position hints of a menu are also affected by this setting,
3383 i.e. position hints using
3384 .IR item " or " menu
3385 as context rectangle and position hints using
3386 .I m
3387 offsets.
3389 .IR AutomaticHotkeys " and " AutomaticHotkeysOff
3390 control the menu's ability to automatically provide hot-keys on
3391 the first character of each menu item's label.  This behavior is
3392 always overridden if an explicit hot-key is assigned in the
3393 .B AddToMenu
3394 command.
3396 Examples:
3398 MenuStyle * Mwm
3399 MenuStyle * Foreground Black, Background gray40
3400 MenuStyle * Greyed gray70, ActiveFore White
3401 MenuStyle * HilightBackOff, Hilight3DOff
3402 MenuStyle * Font lucidasanstypewriter-14
3403 MenuStyle * MenuFace DGradient 64 darkgray \\
3404   MidnightBlue
3406 MenuStyle red Mwm
3407 MenuStyle red Foreground Yellow
3408 MenuStyle red Background Maroon
3409 MenuStyle red Greyed Red, ActiveFore Red
3410 MenuStyle red HilightBackOff, Hilight3DOff
3411 MenuStyle red Font lucidasanstypewriter-12
3412 MenuStyle red MenuFace DGradient 64 Red Black
3414 Note that all style options could be placed on a single line for
3415 each style name.
3418 .BI "MenuStyle " "forecolor backcolor shadecolor font style" " [" anim "]"
3419 This is the old syntax of the
3420 .B MenuStyle
3421 command.  It is obsolete and may be removed in the future.  Please
3422 use the new syntax as described above.
3424 Sets the menu style.  When using monochrome the colors are
3425 ignored.  The
3426 .I shadecolor
3427 is the one used to draw a menu-selection which is prohibited (or
3428 not recommended) by the Mwm hints which an application has
3429 specified.  The style option is either
3430 .IR Fvwm ", " Mwm " or " Win ,
3431 which changes the appearance and operation of the menus.
3433 .IR Mwm " and " Win
3434 style menus popup sub menus automatically.
3435 .I win
3436 menus indicate the current menu item by changing the background to
3437 black.
3438 .I fvwm
3439 sub menus overlap the parent menu,
3440 .IR Mwm " and " win
3441 style menus never overlap the parent menu.
3443 When the
3444 .I anim
3445 option is given, sub menus that don't fit on the screen cause the
3446 parent menu to be shifted to the left so the sub menu can be
3447 seen. See also
3448 .B SetAnimation
3449 command.
3452 .BI "Popup " PopupName " [" position "] [" default-action "]"
3453 This command has two purposes: to bind a menu to a key or mouse
3454 button, and to bind a sub menu into a menu.  The formats for the
3455 two purposes differ slightly.  The
3456 .I position
3457 arguments are the same as for
3458 .BR Menu .
3459 The command
3460 .I default-action
3461 is invoked if the user clicks a button to invoke the menu and
3462 releases it immediately again (or hits the key rapidly twice if
3463 the menu is bound to a key).  If the default action is not
3464 specified, double clicking on the menu does nothing.  However, if
3465 the menu begins with a menu item (i.e. not with a title or a
3466 separator) and the default action is not given, double clicking
3467 invokes the first item of the menu (but only if the pointer really
3468 was over the item).
3470 To bind a previously defined pop-up menu to a key or mouse button:
3472 .in +.25i
3473 The following example binds mouse buttons 2 and 3 to a pop-up
3474 called "Window Ops".  The menu pops up if the buttons 2 or 3 are
3475 pressed in the window frame, side-bar, or title-bar, with no
3476 modifiers (none of shift, control, or meta).
3478 Mouse 2 FST N Popup "Window Ops"
3479 Mouse 3 FST N Popup "Window Ops"
3481 Pop-ups can be bound to keys through the use of the
3482 .B Key
3483 command.  Pop-ups can be operated without using the mouse by
3484 binding to keys and operating via the up arrow, down arrow, and
3485 enter keys.
3486 .in -.25i
3488 To bind a previously defined pop-up menu to another menu, for use
3489 as a sub menu:
3491 .in +.25i
3492 The following example defines a sub menu "Quit-Verify" and binds
3493 it into a main menu, called "RootMenu":
3495 AddToMenu Quit-Verify
3496  + "Really Quit Fvwm?" Title
3497  + "Yes, Really Quit"  Quit
3498  + "Restart Fvwm"      Restart
3499  + "Restart Fvwm 1.xx" Restart fvwm1 -s
3500  + ""                  Nop
3501  + "No, Don't Quit"    Nop
3503 AddToMenu RootMenu "Root Menu" Title
3504  + "Open XTerm Window" Popup NewWindowMenu
3505  + "Login as Root"     Exec exec xterm \\
3506                          -fg green -T Root \\
3507                          -n Root -e su -
3508  + "Login as Anyone"   Popup AnyoneMenu
3509  + "Remote Hosts"      Popup HostMenu
3510  + ""                  Nop
3511  + "X utilities"       Popup Xutils
3512  + ""                  Nop
3513  + "Fvwm Modules"      Popup Module-Popup
3514  + "Fvwm Window Ops"   Popup Window-Ops
3515  + ""                  Nop
3516  + "Previous Focus"    Prev (AcceptsFocus) Focus
3517  + "Next Focus"        Next (AcceptsFocus) Focus
3518  + ""                  Nop
3519  + "Refresh screen"    Refresh
3520  + ""                  Nop
3521  + "Reset X defaults"  Exec xrdb -load \\
3522                        $HOME/.Xdefaults
3523  + ""                  Nop
3524  + ""                  Nop
3525  + Quit                Popup Quit-Verify
3527 .in -.25i
3529 .B Popup
3530 differs from
3531 .B Menu
3532 in that pop-ups do not stay up if the user simply clicks.  These
3533 are popup-menus, which are a little hard on the wrist.
3534 .B Menu
3535 menus stay up on a click action.  See the
3536 .B Menu
3537 command for an explanation of the interactive behavior of menus. A
3538 menu can be open up to ten times at once, so a menu may even use
3539 itself or any of its predecessors as a sub menu.
3542 .BI "TearMenuOff"
3543 When assigned to a menu item, it inserts a tear off bar into the
3544 menu (a horizontal broken line).  Activating that item tears off
3545 the menu.  If the menu item has a label, it is shown instead of
3546 the broken line.  If used outside menus, this command does
3547 nothing.  Examples:
3549 AddToMenu WindowMenu
3550 + I "" TearMenuOff
3552 AddToMenu RootMenu
3553 + I "click here to tear me off" TearMenuOff
3557 .BI "Title"
3558 Does nothing.  This is used to insert a title line in a popup or
3559 menu.
3561 .SS MISCELLANEOUS COMMANDS
3564 .BI "BugOpts [" option " [" bool "]], " ...
3565 This command controls several workarounds for bugs in third party
3566 programs.  The individual options are separated by commas.  The
3567 optional argument
3568 .I bool
3569 is a boolean argument and controls if the bug workaround is
3570 enabled or not.  It can either be "True" or "False" to turn the
3571 option on or off, or "toggle" to switch is back and forth.  If
3572 .I bool
3573 is omitted, the default setting is restored.
3575 .I FlickeringMoveWorkaround
3576 disables ConfigureNotify events that are usually sent to an
3577 application while it is moved.  If some windows flicker annoyingly
3578 while being moved, this option may help you.  Note that if this
3579 problem occurs it is not an fvwm bug, it is a problem of the
3580 application.
3582 .I MixedVisualWorkaround
3583 makes fvwm install the root colormap before it does some
3584 operations using the root window visuals.  This is only useful
3585 when the
3586 .B -visual
3587 option is used to start fvwm and then only with some
3588 configurations of some servers (e.g. Exceed 6.0 with an 8 bit
3589 PseudoColor root and fvwm using a 24 bit TrueColor visual).
3592 .I ModalityIsEvil
3593 option controls whether Motif applications have the ability to
3594 have modal dialogs (dialogs that force you to close them first
3595 before you can do anything else).  The default is to not allow
3596 applications to have modal dialogs.  Use this option with
3597 care. Once this option is turned on, you have to restart fvwm to
3598 turn it off.
3600 .I RaiseOverNativeWindows
3601 makes fvwm try to raise the windows it manages over native windows
3602 of the X servers host system.  This is needed for some X servers
3603 running under Windows or Windows NT.  Fvwm tries to detect if it
3604 is running under such an X server and initializes the flag
3605 accordingly.
3607 .I RaiseOverUnmanaged
3608 makes fvwm try to raise the windows it manages over
3609 override_redirect windows.  This is used to cope with ill-mannered
3610 applications that use long-lived windows of this sort, contrary to
3611 .SM ICCCM
3612 conventions.  It is usefull with the
3613 .I Unmanaged
3614 style option too.
3616 .I FlickeringQtDialogsWorkaround
3617 suppresses flickering of the focused window in some modules when
3618 using KDE or Qt applications with application modal dialog
3619 windows.  By default this option is turned on.  This option may be
3620 visually disturbing for other applications using windows not
3621 managed by fvwm.  Since these applications are rare it is most
3622 likely safe to leave this option at its default.
3624 .I EWMHIconicStateWorkaround
3625 is needed by EWMH compliant pagers or taskbars which represent
3626 windows which are on a different desktops as iconified. These
3627 pagers and taskbars use a version of the EWMH specification before
3628 version 1.2 (the current KDE2 & 3 versions).  These pagers and
3629 taskbars use the IconicState WM_STATE state to determine if an
3630 application is iconified.  This state, according to the
3631 .SM ICCCM ,
3632 does not imply that a window is iconified (in the usual sense).
3633 Turning on this option forces fvwm to establish an equivalence
3634 between the IconicState WM_STATE state and the iconified window.
3635 This violates
3636 .SM ICCCM
3637 compliance but should not cause big problems.
3638 By default this option is off.
3640 With the
3641 .I DisplayNewWindowNames
3642 enabled, fvwm prints the name, icon name (if available), resource
3643 and class of new windows to the console.  This can help in finding
3644 the correct strings to use in the
3645 .B Style
3646 command.
3648 When the
3649 .I ExplainWindowPlacement
3650 option is enabled, fvwm prints a message to the console whenever a
3651 new window is placed or one of the commands
3652 .BR PlaceAgain ", " Recapture " or " RecaptureWindow
3653 is used.  The message explains on which desk, page, Xinerama
3654 screen and position it was placed and why.  This option can be
3655 used to figure out why a specific window does not appear where you
3656 think it should.
3659 .I DebugCRMotionMethod
3660 option enables some debugging code in the ConfigureRequest
3661 handling routines of fvwm.  It is not helpful for the user, but if
3662 you report a bug to the fvwm team we may ask you to enable this
3663 option.
3666 .BI "BusyCursor [" "Option bool" "], " ...
3667 This command controls the cursor during the execution of certain
3668 commands.
3669 .I Option
3670 can be
3671 .IR DynamicMenu ", " ModuleSynchronous ", " Read ", " Wait ", " * .
3672 An option must be followed by a boolean argument
3673 .IR bool .
3674 You can use commas to separate individual options.  If you set an
3675 option to "True", then when the corresponding command is run, fvwm
3676 displays the cursor of the
3677 .I WAIT
3678 context of the
3679 .B CursorStyle
3680 command.  "False" forces to not display the cursor.  The default is:
3682 BusyCursor DynamicMenu False, \\
3683   ModuleSynchronous False, Read False, \\
3684   Recapture True, Wait False
3686 The option
3687 .I *
3688 refers to all available options.
3691 .I Read
3692 option also controls the
3693 .B PipeRead
3694 command.
3697 .I DynamicMenu
3698 option affects the
3699 .I DynamicPopupAction
3701 .I MissingSubmenuFunction
3702 options of the
3703 .B AddToMenu
3704 command.  If this option is set to "False", then the busy cursor
3705 is not displayed during a dynamic menu command even if this
3706 command is a
3707 .BR Read " or " PipeRead
3708 command and the
3709 .I Read
3710 option is set to "True".
3713 .I Wait
3714 option affects only the root cursor.  During a wait pause the root
3715 cursor is replaced by the busy cursor and fvwm is still fully
3716 functional (you can escape from the pause, see the
3717 .B EscapeFunc
3718 command).  If you want to use this option and if you do not use
3719 the default root cursor, you must set your root cursor with the
3720 .B CursorStyle
3721 command.
3724 .BI "ClickTime [" delay "]"
3725 Specifies the maximum delay in milliseconds between a button press
3726 and a button release for the
3727 .B Function
3728 command to consider the action a mouse click.  The default delay
3729 is 150 milliseconds.  Omitting the delay value resets the
3730 .B ClickTime
3731 to the default.
3734 .BI "ColorLimit " limit
3735 This command is obsolete. See the
3736 .I --color-limit
3737 option to fvwm.
3738 .\"Specifies a
3739 .\".I limit
3740 .\"on the colors used in pixmaps used by fvwm. Zero (the default)
3741 .\"sets no limit.  Fvwm uses pixmaps for icons, mini-icons, and
3742 .\"pixmap borders, menu backgrounds and titles. This command limits
3743 .\"pixmap colors to a set of colors that starts out with common
3744 .\"colors.  The current list contains about 60 colors and starts with
3745 .\"white, black, grey, green, blue, red, cyan, yellow, and magenta.
3746 .\"The command
3747 .\".EX
3748 .\"ColorLimit 9
3749 .\".EE
3750 .\"would limit pixmaps to these 9 colors.
3752 .\"It makes the most sense to put this command at the front of the
3753 .\".I config
3754 .\"file.  This command should occur before any menu definitions that
3755 .\"contain mini-icons.
3757 .\"Solid frame and title colors (including shadows and gradients) are
3758 .\"not controlled by this command.
3760 .\"This command only makes sense on screens that display a limited
3761 .\"number of colors at once.  If your  display can display more than
3762 .\"2 million colors at once, this command is ignored.  Screens that
3763 .\"only display 256 colors at once are known as 8 bit displays. The 2
3764 .\"million color cutoff point corresponds to 21 bit color, the most
3765 .\"common screen that exceeds this limit would be 24 bit.
3767 .\"On 8 bit displays, the default color limit is set to the size of
3768 .\"the built-in table (about 60).  We recommend that you start with
3769 .\"the default value, and not include this command in your
3770 .\".IR config " file."
3773 .BI "ColormapFocus " FollowsMouse | FollowsFocus
3774 By default, fvwm installs the colormap of the window that the
3775 cursor is in.  If you use
3777 ColormapFocus FollowsFocus
3779 then the installed colormap is the one for the window that
3780 currently has the keyboard focus.
3783 .B "CursorStyle \fIcontext\fP [\fInumber\fP\
3784 | \fIname\fP \
3785 | \fIxpm\fP \
3786 | \fINone\fP \
3787 | \fITiny\fP \
3788 [\fIfore back\fP\
3790 Defines a new cursor for the specified context.  Note that this
3791 command can not control the shapes an applications uses, for
3792 example, to indicate that it is busy.  The various contexts are:
3794 .in +.5i
3795 .BR "POSITION " (top_left_corner)
3796 .in +.3i
3797 used when initially placing windows
3798 .in -.3i
3800 .BR "TITLE " (top_left_arrow)
3801 .in +.3i
3802 used in a window title-bar
3803 .in -.3i
3805 .BR "DEFAULT " (top_left_arrow)
3806 .in +.3i
3807 used in windows that don't set their cursor
3808 .in -.3i
3810 .BR "SYS " (hand2)
3811 .in +.3i
3812 used in one of the title-bar buttons
3813 .in -.3i
3815 .BR "MOVE " (fleur)
3816 .in +.3i
3817 used when moving or resizing windows
3818 .in -.3i
3820 .BR "RESIZE " (sizing)
3821 .in +.3i
3822 used when moving or resizing windows
3823 .in -.3i
3825 .BR "WAIT " (watch)
3826 .in +.3i
3827 used during certain fvwm commands (see
3828 .B BusyCursor
3829 for details).
3830 .in -.3i
3832 .BR "MENU " (top_left_arrow)
3833 .in +.3i
3834 used in menus
3835 .in -.3i
3837 .BR "SELECT " (crosshair)
3838 .in +.3i
3839 used when the user is required to select a window
3840 .in -.3i
3842 .BR "DESTROY " (pirate)
3843 .in +.3i
3844 used for DESTROY, CLOSE, and DELETE commands
3845 .in -.3i
3847 .BR "TOP " (top_side)
3848 .in +.3i
3849 used in the top side-bar of a window
3850 .in -.3i
3852 .BR "RIGHT " (right_side)
3853 .in +.3i
3854 used in the right side-bar of a window
3855 .in -.3i
3857 .BR "BOTTOM " (bottom_side)
3858 .in +.3i
3859 used in the bottom side-bar of a window
3860 .in -.3i
3862 .BR "LEFT " (left_side)
3863 .in +.3i
3864 used in the left side-bar of a window
3865 .in -.3i
3867 .BR "TOP_LEFT " (top_left_corner)
3868 .in +.3i
3869 used in the top left corner of a window
3870 .in -.3i
3872 .BR "TOP_RIGHT " (top_right_corner)
3873 .in +.3i
3874 used in the top right corner of a window
3875 .in -.3i
3877 .BR "BOTTOM_LEFT " (bottom_left_corner)
3878 .in +.3i
3879 used in the bottom left corner of a window
3880 .in -.3i
3882 .BR "BOTTOM_RIGHT " (bottom_right_corner)
3883 .in +.3i
3884 used in the bottom right corner of a window
3885 .in -.3i
3887 .BR "TOP_EDGE " (top_side)
3888 .in +.3i
3889 used at the top edge of the screen.
3890 .in -.3i
3892 .BR "RIGHT_EDGE " (right_side)
3893 .in +.3i
3894 used at the right edge of the screen.
3895 .in -.3i
3897 .BR "BOTTOM_EDGE " (bottom_side)
3898 .in +.3i
3899 used at the bottom edge of the screen.
3900 .in -.3i
3902 .BR "LEFT_EDGE " (left_side)
3903 .in +.3i
3904 used at the left edge of the screen.
3905 .in -.3i
3907 .BR "ROOT " (left_ptr)
3908 .in +.3i
3909 used as the root cursor.
3910 .in -.3i
3912 .BR "STROKE " (plus)
3913 .in +.3i
3914 used during a
3915 .B StrokeFunc
3916 command.
3917 .in -.3i
3918 .in -.5i
3920 The defaults are shown in parentheses above.  If you ever want to
3921 restore the default cursor for a specific context you can omit the
3922 second argument.
3924 The second is either the numeric value of the cursor as defined in
3925 the include file
3926 .I X11/cursorfont.h
3927 or its name (without the XC_ prefix). Alternativelly the xpm file
3928 name may be specified.  This xpm file should contain a pixmap
3929 using 3 colors (None, black, white) and an optional hot-spot.  If
3930 no hot-spot is defined, the hot-spot is placed in the center of
3931 the image.  Furthermore the name can be
3932 .I None
3933 (no cursor) or
3934 .I Tiny
3935 (a single pixel as the cursor).  For example:
3937 # make the kill cursor be XC_gumby (both forms work):
3938 CursorStyle DESTROY 56
3939 CursorStyle DESTROY gumby
3941 CursorStyle TOP_LEFT topl.xpm
3942 CursorStyle ROOT nice_arrow.xpm yellow black
3944 The optional
3945 .IR fg " and " bg
3946 arguments specify the foreground and background colors for the
3947 cursor, defaulting to black and white.
3949 Here is an example pixmap file
3950 .IR nice_arrow.xpm :
3952 /* XPM */
3953 static char *nice_arrow_xpm[] = {
3954 /* width height num_colors chars_per_pixel hot-spot */
3955 "    14    14        3            1          1 1",
3956 /* colors */
3957 "  c None",
3958 ". c black",
3959 "# c white",
3960 /* pixels */
3961 "...           ",
3962 ".##..         ",
3963 ".####..       ",
3964 " .#####..     ",
3965 " .#######..   ",
3966 "  .########.. ",
3967 "  .##########.",
3968 "   .#######.. ",
3969 "   .######.   ",
3970 "    .######.  ",
3971 "    .###.###. ",
3972 "     .#. .###.",
3973 "     .#.  .#. ",
3974 "      .    .  ",
3977 The hot-spot coordinates are relative to zero, in the above
3978 example, the hot-spot is in the second row, and second column.
3981 .BI "DefaultColors [" "foreground background" "]"
3982 .B DefaultColors
3983 sets the default foreground and background colors used in
3984 miscellaneous windows created by fvwm, for example in the geometry
3985 feedback windows during a move or resize operation. If you don't
3986 want to change one color or the other, use - as its color name. To
3987 revert to the built-in default colors omit both color names. Note
3988 that the default colors are not used in menus, window titles or
3989 icon titles.
3992 .BI "DefaultColorset [" num "]"
3993 .B DefaultColorset
3994 sets the colorset used by the windows controlled by the
3995 .B DefaultColors
3996 command.  To revert back to the
3997 .B DefaultColors
3998 colors use
4000 DefaultColorset -1
4002 or any variant of the
4003 .B DefaultColors
4004 command.
4007 .BI "DefaultFont [" fontname "]"
4008 .B DefaultFont
4009 sets the default font to font
4010 .IR fontname .
4011 The default font is used by fvwm whenever no other font has been
4012 specified.  To reset the default font to the built-in default,
4013 omit the argument.  The default font is used for menus, window
4014 titles, icon titles as well as the geometry feedback windows
4015 during a move or resize operation.  To override the default font
4016 in a specific context, use the
4017 .BR "Style * Font" ", " "Style * IconFont" ", or " MenuStyle
4018 commands.
4021 .BI "DefaultIcon " filename
4022 sets the default icon which is used if a window has neither an
4023 client-supplied icon nor an icon supplied via the
4024 .I Icon
4025 option of the
4026 .B Style
4027 command.
4030 .BI "DefaultLayers " "bottom put top"
4031 changes the layers that are used for the
4032 .IR StaysOnBottom ", " StaysPut ", " StaysOnTop
4033 .B Style
4034 options.  Initially, the layers 2, 4 and 6 are used.
4037 .BI "Deschedule " "[command_id]"
4038 Removes all commands that were scheduled with the id
4039 .I command_id
4040 with the
4041 .B Schedule
4042 command from the list of commands to be executed unless they were
4043 already executed.  If the
4044 .I command_id
4045 is omitted, the value of the variable $[schedule.last] is used as
4046 the id.
4049 .BI "Emulate " Fvwm | Mwm | Win
4050 This command is a catch all for how miscellaneous things are done
4051 by fvwm. Right now this command affects where the move/resize
4052 feedback window appears and how window placement is aborted. To
4053 have more Mwm- or Win-like behavior you can call
4054 .BI Emulate
4055 with
4056 .IR Mwm " or " Win
4057 as its argument.  With
4058 .I Mwm
4059 resize and move feedback windows are in the center of the screen,
4060 instead of the upper left corner.
4061 This also affects how manual placement is aborted.
4062 See the ManualPlacement description.
4065 .BI "EscapeFunc"
4066 By default the key sequence
4067 .SM Ctrl-Alt-Escape
4068 allows for escaping from a
4069 .B Wait
4070 pause and from a locked
4071 .B ModuleSynchronous
4072 command.  The
4073 .B EscapeFunc
4074 command used with the
4075 .B Key
4076 command allows for configuring this key sequence.  An example:
4078 Key Escape A MC -
4079 Key Escape A  S EscapeFunc
4081 replaces the
4082 .SM Ctrl-Alt-Escape
4083 key sequence with
4084 .SM Shift-Escape
4085 for aborting a
4086 .B Wait
4087 pause and
4088 .B ModuleSynchronous
4089 command.
4090 .B EscapeFunc
4091 used outside the
4092 .B Key
4093 command does nothing.
4096 .BI "FakeClick [" "command value" "] ..."
4097 This command is mainly intended for debugging fvwm and no
4098 guarantees are made that it works for you.
4099 .B FakeClick
4100 can simulate mouse button press and release events and pass them
4101 to fvwm or the applications.  The parameters are a list of
4102 commands which consist of pairs of
4103 .I command
4104 tokens and integer
4105 .IR values ,
4107 .IR press " and " release
4108 commands are followed by the appropriate mouse button number and
4109 generate a button press or release event on the window below the
4110 pointer.  The
4111 .I wait
4112 commands pauses fvwm for the given number of milliseconds.  The
4113 .I modifiers
4114 command simulates pressing or releasing modifier keys.  The values
4115 1 to 5 are mapped to
4116 .SM Mod1
4118 .SM Mod5
4119 while 6, 7 and 8 are mapped to
4120 .SM Shift,
4121 .SM Lock
4123 .SM Control.
4124 The modifier is set for any further button events.  To release a
4125 modifier key, use the corresponding negative number.  The
4126 .I depth
4127 command determines to which window the button events are
4128 sent. With a depth of 1, all events go to the root window,
4129 regardless of the pointer's position.  With 2, the event is passed
4130 to the top level window under the pointer which is usually the
4131 frame window. With 3, events go to the client window. Higher
4132 numbers go to successive sub windows.  Zero (0) goes to the
4133 smallest window that contains the pointer.  Note that events
4134 propagate upward.
4136  FakeClick depth 2 press 1 wait 250 release 1
4138 This simulates a click with button 1 in the parent window (depth
4139 2) with a delay of 250 milliseconds between the press and the
4140 release.
4141 Note: all command names can be abbreviated with their first letter.
4145 .BI "FakeKeypress [" "command value" "] ..."
4146 This command is mainly intended for debugging fvwm and no
4147 guarantees are made that it works for you.
4148 .B FakeKeypress
4149 can simulate key press and release events and pass them
4150 to fvwm or applications.  The parameters are a list of
4151 commands which consist of pairs of command tokens and values.
4153 .IR press " and " release
4154 commands are followed by a key name.  
4155 The key name is a standard X11 key name as defined in
4156 .IR /usr/include/X11/keysymdef.h ,
4157 (without the 
4158 .I XK_
4159 prefix), or the keysym database
4160 .IR /usr/X11R6/lib/X11/XKeysymDB .
4162 .IR wait ", " modifiers " and " depth
4163 commands are the same as those used by
4164 .BR FakeClick .
4166 Save all GVim sessions with: "Esc:w\\n"
4168 All (gvim) FakeKeypress press Escape \\
4169                         press colon \\
4170                         press w \\
4171                         press Return
4173 Save & exit all GVim sessions with: "Esc:wq\\n"
4175 All (gvim) FakeKeypress press Escape \\
4176                         press colon \\
4177                         press w \\
4178                         press q \\
4179                         press Return
4181 Send A to a specific window:
4183 WindowId 0x3800002 FakeKeypress press A
4185 Note: all command names can be abbreviated with their first letter.
4189 .BI "GlobalOpts [" options "]"
4190 As announced in the past, this command has been removed.  Please
4191 replace the global options in your configuration file according to
4192 the following table:
4194 GlobalOpts WindowShadeShrinks
4195   -->
4196 Style * WindowShadeShrinks
4198 GlobalOpts WindowShadeScrolls
4199   -->
4200 Style * WindowShadeScrolls
4202 GlobalOpts SmartPlacementIsReallySmart
4203   -->
4204 Style * MinOverlapPlacement
4206 GlobalOpts SmartPlacementIsNormal
4207   -->
4208 Style * TileCascadePlacement
4210 GlobalOpts ClickToFocusDoesntPassClick
4211   -->
4212 Style * ClickToFocusPassesClickOff
4214 GlobalOpts ClickToFocusPassesClick
4215   -->
4216 Style * ClickToFocusPassesClick
4218 GlobalOpts ClickToFocusDoesntRaise
4219   -->
4220 Style * ClickToFocusRaisesOff
4222 GlobalOpts ClickToFocusRaises
4223   -->
4224 Style * ClickToFocusRaises
4226 GlobalOpts MouseFocusClickDoesntRaise
4227   -->
4228 Style * MouseFocusClickRaisesOff
4230 GlobalOpts MouseFocusClickRaises
4231   -->
4232 Style * MouseFocusClickRaises
4234 GlobalOpts NoStipledTitles
4235   -->
4236 Style * StippledTitleOff
4238 GlobalOpts StipledTitles
4239   -->
4240 Style * StippledTitle
4242 GlobalOpts CaptureHonorsStartsOnPage
4243   -->
4244 Style * CaptureHonorsStartsOnPage
4246 GlobalOpts CaptureIgnoresStartsOnPage
4247   -->
4248 Style * CaptureIgnoresStartsOnPage
4250 GlobalOpts RecaptureHonorsStartsOnPage
4251   -->
4252 Style * RecaptureHonorsStartsOnPage
4254 GlobalOpts RecaptureIgnoresStartsOnPage
4255   -->
4256 Style * RecaptureIgnoresStartsOnPage
4258 GlobalOpts ActivePlacementHonorsStartsOnPage
4259   -->
4260 Style * ManualPlacementHonorsStartsOnPage
4262 GlobalOpts ActivePlacementIgnoresStartsOnPage
4263   -->
4264 Style * ManualPlacementIgnoresStartsOnPage
4266 GlobalOpts RaiseOverNativeWindows
4267   -->
4268 BugOpts RaiseOverNativeWindows on
4270 GlobalOpts IgnoreNativeWindows
4271   -->
4272 BugOpts RaiseOverNativeWindows off
4277 .BI "HilightColor " "textcolor backgroundcolor"
4278 This command is obsoleted by the
4279 .B Style
4280 options
4281 .IR HilightFore " and " HilightBack .
4282 Please use
4284 Style * HilightFore textcolor, \\
4285         HilightBack backgroundcolor
4287 instead.
4290 .BI "HilightColorset [" num "]"
4291 This command is obsoleted by the
4292 .B Style
4293 option
4294 .IR HilightColorset .
4295 Please use
4297 Style * HilightColorset num
4299 instead.
4302 .BI "IconFont [" fontname "]"
4303 This command is obsoleted by the
4304 .B Style
4305 option
4306 .IR IconFont .
4307 Please use
4309 Style * IconFont fontname
4311 instead.
4314 .BI "IconPath " path
4315 This command is obsolete.  Please use
4316 .B ImagePath
4317 instead.
4320 .BI "ImagePath " path
4321 Specifies a colon separated list of directories in which to search
4322 for images (both monochrome and pixmap).  To find an image given
4323 by a relative pathname, fvwm looks into each directory listed in
4324 turn, and uses the first file found.
4326 If a directory is given in the form "/some/dir;.ext", this means
4327 all images in this directory have the extension ".ext" that should
4328 be forced.  The original image name (that may contain another
4329 extension or no extension at all) is not probed, instead ".ext" is
4330 added or replaces the original extension.  This is useful, for
4331 example, if a user has some image directories with ".xpm" images
4332 and other image directories with the same names, but ".png"
4333 images.
4336 .I path
4337 may contain environment variables such as
4338 .IR $HOME " (or " ${HOME} ).
4339 Further, a '+' in the
4340 .I path
4341 is expanded to the previous value of the path, allowing appending
4342 or prepending to the path easily.
4344 For example:
4346 ImagePath $HOME/icons:+:/usr/include/X11/bitmaps
4348 Note: if the
4349 .B FvwmM4
4350 module is used to parse your
4351 .I config
4352 files, then m4 may want to mangle the word "include" which
4353 frequently shows up in the
4354 .B ImagePath
4355 command.  To fix this one may add
4357 undefine(`include')
4359 prior to the
4360 .B ImagePath
4361 command, or better: use the
4362 .I -m4-prefix
4363 option to force all
4364 .B m4
4365 directives to have a prefix of "m4_" (see the
4366 .B FvwmM4
4367 man page).
4370 .BI "LocalePath " path
4371 Specifies a colon separated list of "locale path" in which to
4372 search for string translations. A locale path is constituted by a
4373 directory path and a text domain separated by a semicolon
4374 (';'). As an example the default locale path is:
4376 /install_prefix/share/locale;fvwm
4378 where install_prefix is the fvwm installation directory. With such
4379 a locale path translations are searched for in
4381 /install_prefix/share/locale/lang/LC_MESSAGES/fvwm.mo
4383 where
4384 .I lang
4385 depends on the locale. If no directory is given the default
4386 directory path is assumed. If no text domain is given,
4387 .I fvwm
4388 is assumed. Without argument the default locale path is restored.
4390 As for the
4391 .B ImagePath
4392 command,
4393 .I path
4394 may contain environment variables and a '+' to append or prepend
4395 the locale path easily.
4397 For example, the fvwm-themes package uses
4399 LocalePath ";fvwm-themes:+"
4401 to add locale catalogs.
4403 The default fvwm catalog contains a few strings used by the fvwm
4404 executable itself (Desk and Geometry) and strings used in some
4405 default configuration files and
4406 .B FvwmForm
4407 configuration. You can take a look at the po/ subdirectory of the
4408 fvwm source to get the list of the strings with a possible
4409 translation in various languages. At present, very few languages
4410 are supported.
4412 The main use of locale catalogs is via the "$[gt.string]"
4413 parameter:
4415 DestroyMenu MenuFvwmWindowOps
4416 AddToMenu   MenuFvwmWindowOps "$[gt.Window Ops]" Title
4417 + "$[gt.&Move]"              Move
4418 + "$[gt.&Resize]"            Resize
4419 + "$[gt.R&aise]"             Raise
4420 + "$[gt.&Lower]"             Lower
4421 + "$[gt.(De)&Iconify]"       Iconify
4422 + "$[gt.(Un)&Stick]"         Stick
4423 + "$[gt.(Un)Ma&ximize]"      Maximize
4424 + "" Nop
4425 + "$[gt.&Close]"             Close
4426 + "$[gt.&Destroy]"            Destroy
4428 gives a menu in the locale languages if translations are
4429 available.
4431 Note that the
4432 .B FvwmTaskBar
4433 module has its own catalog and that the
4434 .B FvwmScript
4435 module has a set of special instructions for string
4436 translation. It is out of the scope of this discussion to explain
4437 how to build locale catalogs. Please refer to the GNU gettext
4438 documentation.
4441 .BI "PixmapPath " path
4442 This command is obsolete. Please use
4443 .B ImagePath
4444 instead.
4447 .BI "PrintInfo " "subject [verbose]"
4448 Print information on
4449 .I subject
4450 on stderr.  An optional integer argument
4451 .I verbose
4452 defines the level of information which is given.
4453 The current valid subjects are:
4455 .IR Colors
4456 which prints information about the colors used by fvwm. This useful
4457 on screens which can only display 256 (or less) colors at once.
4459 .I verbose
4460 is one or greater the palette used by fvwm is printed.
4461 If you have a limited color palette, and you run out of colors,
4462 this command might be helpful.
4464 .IR Locale
4465 which prints information on your locale and the fonts that fvwm
4466 used.
4467 .I verbose
4468 can be 1 or 2.
4470 .IR nls
4471 which prints information on the locale catalogs that fvwm used
4473 .IR style
4474 which prints information on fvwm styles.
4475 .I verbose
4476 can be 1.
4479 .BI "Repeat"
4480 When the
4481 .B Repeat
4482 command is invoked, the last command that was executed by fvwm is
4483 executed again.  This happens regardless of whether it was
4484 triggered by user interaction, a module or by an X event.
4485 Commands that are executed from a function defined with the
4486 .B Function
4487 command, from the
4488 .BR Read " or " PipeRead
4489 commands or by a menu are not repeated.  Instead, the function,
4490 menu  or the
4491 .B Read " or " PipeRead
4492 command is executed again.
4495 .BI "Schedule " "delay_ms [command_id] command"
4497 .I command
4498 is executed after about
4499 .I delay_ms
4500 milliseconds.  This may be useful in some tricky setups.  The
4501 .I command
4502 is executed in the same context window as the
4503 .B Schedule
4504 command.  An optional integer argument
4505 .I command_id
4506 may be given in decimal, hexadecimal or octal format.  This id can
4507 be used with the
4508 .B Deschedule
4509 command to remove the scheduled command before it is executed.  If
4510 no id is given, fvwm uses negative id numbers, starting with -1
4511 and decreasing by one with each use of the
4512 .B Schedule
4513 command.
4514 Note that the
4515 .B Schedule
4516 command and its arguments undergo the usual command line
4517 expansion, and, when
4518 .I command
4519 is finally executed, it is expanded again.  It may therefore be
4520 necessary to quote the parts of the command that must not be
4521 expanded twice.
4523 Note:  A window's id as it is returned with $[w.id] can be used as
4525 .IR command_id .
4526 Example:
4528 Current Schedule 1000 $[w.id] WindowShade
4532 .BI "State " state " [" bool "]"
4533 Sets, clears or toggles one of the 32 user defined states which
4534 are associated with each window.  The
4535 .I state
4536 is a number ranging from 0 to 31.  The states have no meaning in
4537 fvwm, but they can be checked in conditional commands like
4538 .B Next
4539 with the
4540 .I State
4541 condition.  The optional argument
4542 .I bool
4543 is a boolean argument.  "True" sets the given state, while "False"
4544 clears it.  Using "toggle" switches to the opposite state.  If the
4545 .I bool
4546 argument is not given, the state is toggled.
4549 .BI "WindowFont [" fontname "]"
4550 This command is obsoleted by the
4551 .B Style
4552 option
4553 .IR Font .
4554 Please use
4556 Style * Font fontname
4558 instead.
4561 .B "WindowList [(\fIconditions\fP\
4562 )] [\fIposition\fP\
4563 ] [\fIoptions\fP\
4564 ] [\fIdouble-click-action\fP\
4566 Generates a pop-up menu (and pops it up) in which the title and
4567 geometry of each of the windows currently on the desktop are
4568 shown.
4570 The format of the geometry part is:
4571 . IR desk "(" layer "): " "x-geometry sticky" ,
4572 where
4573 .IR desk " and " layer
4574 are the corresponding numbers and
4575 .I sticky
4576 is empty or a capital S.  The geometry of iconified windows is
4577 shown in parentheses.  Selecting an item from the window list
4578 pop-up menu causes the interpreted function "WindowListFunc" to be
4579 run with the window id of that window passed in as $0. The default
4580 "WindowListFunc" looks like this:
4582 AddToFunc WindowListFunc
4583 + I Iconify off
4584 + I FlipFocus
4585 + I Raise
4586 + I WarpToWindow 5p 5p
4588 You can destroy the built-in "WindowListFunc" and create your own
4589 if these defaults do not suit you.
4591 The window list menu uses the "WindowList" menu style if it is
4592 defined (see
4593 .B MenuStyle
4594 command).  Otherwise the default menu style is used.  To switch
4595 back to the default menu style, issue the command
4597 DestroyMenuStyle WindowList
4599 Example:
4601 MenuStyle WindowList SelectOnRelease Meta_L
4604 .I conditions
4605 can be used to exclude certain windows from the window
4606 list. Please refer to the
4607 .B Current
4608 command for details.  Only windows that match the given conditions
4609 are displayed in the window list.  The
4610 .I options
4611 below work vice versa: windows that would otherwise not be
4612 included in the window list can be selected with them.  The
4613 .I conditions
4614 always override the
4615 .IR options .
4619 .I position
4620 arguments are the same as for
4621 .BR Menu .
4622 The command
4623 .I double-click-action
4624 is invoked if the user double-clicks (or hits the key rapidly
4625 twice if the menu is bound to a key) when bringing the window
4626 list.  The
4627 .I double-click-action
4628 must be quoted if it consists of more than one word.
4631 .I double-click-action
4632 is useful to define a default window if you have bound the window
4633 list to a key (or button) like this:
4635 # Here we call an existing function, but
4636 # it may be different.  See the default
4637 # WindowListFunc definition earlier in this
4638 # man page.
4639 AddToFunc SwitchToWindow
4640 + I WindowListFunc
4642 Key Tab A M WindowList "Prev SwitchToWindow"
4644 Hitting
4645 .SM Alt-Tab
4646 once it brings up the window list, if you hit it twice the focus
4647 is flipped between the current and the last focused window.  With
4648 the proper
4649 .I SelectOnRelease
4650 menu style (see example above) a window is selected as soon as you
4651 release the
4652 .SM Alt
4653 key.
4656 .I options
4657 passed to WindowList are separated by commas and can be
4658 .IR Geometry " / " NoGeometry " / " NoGeometryWithInfo ,
4659 .IR NoDeskNum,
4660 .IR NoNumInDeskTitle ,
4661 .IR NoCurrentDeskTitle ,
4662 .IR "MaxLabelWidth width",
4663 .IR TitleForAllDesks ,
4664 .IR "Function funcname" ,
4665 .IR "Desk desknum" ,
4666 .IR CurrentDesk ,
4667 .IR NoIcons " / " Icons " / " OnlyIcons ,
4668 .IR NoNormal " / " Normal " / " OnlyNormal ,
4669 .IR NoSticky " / " Sticky " / " OnlySticky ,
4670 .IR NoStickyAcrossPages " / " StickyAcrossPages " / " OnlyStickyAcrossPages ,
4671 .IR NoStickyAcrossDesks " / " StickyAcrossDesks " / " OnlyStickyAcrossDesks ,
4672 .IR NoOnTop " / " OnTop " / " OnlyOnTop ,
4673 .IR NoOnBottom " / " OnBottom " / " OnlyOnBottom ,
4674 .IR "Layer m [n]" ,
4675 .IR UseListSkip " / " OnlyListSkip ,
4676 .IR NoDeskSort ,
4677 .IR ReverseOrder ,
4678 .IR CurrentAtEnd ,
4679 .IR IconifiedAtEnd ,
4680 .IR UseIconName ,
4681 .IR Alphabetic " / " NotAlphabetic ,
4682 .IR SortByResource ,
4683 .IR SortByClass ,
4684 .IR NoHotkeys ,
4685 .IR SelectOnRelease .
4687 (Note - normal means not iconic, sticky, or on top)
4689 With the
4690 .I SortByResource
4691 option windows are alphabetically sorted first by resource class,
4692 then by resource name and then by window name (or icon name if
4693 .I UseIconName
4694 is specified).
4695 .I ReverseOrder
4696 also works in the expected manner.
4698 With the
4699 .I SortByClass
4700 option windows are sorted just like with
4701 .IR SortByResource ,
4702 but the resource name is not taken into account, only the resource
4703 class.
4706 .I SelectOnRelease
4707 option works exactly like the
4708 .B MenuStyle
4709 option with the same name, but overrides the option given in a
4710 menu style.  By default, this option is set to the left
4711 .SM Alt
4712 key.  To switch it off, use
4713 .I SelectOnRelease
4714 without a key name.
4716 If you pass in a function via
4717 .IR "Function funcname" ,
4718 it is called within a window context of the selected window:
4720 AddToFunc IFunc I Iconify toggle
4721 WindowList Function IFunc, NoSticky, \\
4722   CurrentDesk, NoIcons
4724 If you use the
4725 .IB "Layer m " [ "n" ]
4726 option, only windows in layers between m and n are displayed. n
4727 defaults to m.  With the
4728 .I ReverseOrder
4729 option the order of the windows in the list is reversed.
4731 With the
4732 .I CurrentAtEnd
4733 option the currently focused window (if any) is shown at the
4734 bottom of the list.  This is mostly intended for simulating the
4735 Alt-Tab behavior in another GUI.
4737 .I IconifiedAtEnd
4738 makes iconified windows be moved to the end of the list.  This is
4739 also from another GUI.
4742 .I NoGeometry
4743 option causes fvwm to not display the geometries as well as
4744 the separators which indicate the different desktops.
4745 .I NoGeometryWithInfo
4746 removes the geometries, but keep the desktop information
4747 and indicates iconic windows.
4748 .I NoDeskNum
4749 causes fvwm to not display the desktop number in the geometry
4750 or before the window title with the
4751 .I NoGeometryWithInfo
4752 option.
4753 .I NoNumInDeskTitle
4754 is only useful if a desktop name is defined with the
4755 .B DesktopName
4756 command. It causes fvwm to not display the desktop number before
4757 the desktop name.  By default, the WindowList menu have a title
4758 which indicates the current desk or the selected desktop if the .I
4759 Desk condition is used. The
4760 .I NoCurrentDeskTitle
4761 option removes this title.
4762 .I TitleForAllDesks
4763 causes fvwm to add a menu title with the desk name and/or number
4764 before each group of windows on the same desk.
4765 With
4766 .IR NoLayer ,
4767 the layer of the window is not diplayed.  The options
4768 .IR ShowPage ", " ShowPageX " and " ShowPageY
4769 enable displaying the page of the window rounded multiples of the
4770 display size.
4771 With
4772 .IR ShowScreen ,
4773 the window's Xinerama screen number is displayed.
4776 .I MaxLabelWidth
4777 option takes the number of characters to print as its argument.
4778 No more than that many characters of the window name are visible.
4780 If you wanted to use the
4781 .B WindowList
4782 as an icon manager, you could invoke the following:
4784 WindowList OnlyIcons, Sticky, OnTop, Geometry
4786 (Note - the
4787 .I Only
4788 options essentially wipe out all other ones... but the
4789 .I OnlyListSkip
4790 option which just causes
4791 .B WindowList
4792 to only consider the windows with
4793 .I WindowListSkip
4794 style.)
4797 .BI "XSync "
4798 When
4799 .B XSync
4800 is called, the X function with the same name is used to send all
4801 pending X requests to the server.  This command is intended for
4802 debugging only.
4805 .BI "XSynchronize [" bool "]"
4807 .B XSynchronize
4808 command controls wether X requests are sent to the X server
4809 immediately or not.  Normally, requests are sent in larger batches
4810 to save unnecessary communication.  To send requests immediately,
4811 use "True" as the argument, to disable this use "False" or to
4812 toggle between both methods use "Toggle" or omit the
4813 .B bool
4814 argument.  Fvwm defaults to synchronized requests when started
4815 with the
4816 .B \-debug
4817 option.  This command is intended for debugging only.
4820 .BI "+"
4821 Used to continue adding to the last specified decor, function or
4822 menu. See the discussion for
4823 .BR AddToDecor ", " AddToFunc ", and " AddToMenu .
4826 .SS COMMANDS AFFECTING WINDOW MOVEMENT AND PLACEMENT
4829 .BI "AnimatedMove " "x y" " [" Warp "]"
4830 Move a window in an animated fashion.  Similar to
4831 .B Move
4832 command below. The options are the same, except they are required,
4833 since it doesn't make sense to have a user move the window
4834 interactively and animatedly.  If the optional argument
4835 .I Warp
4836 is specified the pointer is warped with the window.
4839 .BI "HideGeometryWindow [" Never " | " Move " | " Resize "]"
4840 Hides the position or size window that is usually shown when a
4841 window is moved or resized interactively.  To switch it off only
4842 for move or resize operations the optional parameters
4843 .IR Move " and " Resize
4844 can be used respectively.  To switch both on again use the
4845 .I Never
4846 option.
4849 .BI "Layer [" "arg1 arg2" "] | [" default "]"
4850 Puts the current window in a new layer.  If
4851 .I arg1
4852 is non zero then the next layer is the current layer number plus
4853 .IR arg1 .
4855 .I arg1
4856 is zero then the new layer is
4857 .IR arg2 .
4859 As a special case,
4860 .I default
4861 puts the window in its default layer, i.e. the layer it was
4862 initially in.  The same happens if no or invalid arguments are
4863 specified.
4866 .BI "Lower"
4867 Allows the user to lower a window.  Note that this lowers a window
4868 only in its layer.  To bring a window to the absolute bottom, use
4870 AddToFunc lower-to-bottom
4871  + I Layer 0 0
4872  + I Lower
4876 .B "Move [[\fIw\fP\
4877  | \fIm\fP\
4878 ]\fIx\fP\
4879 [\fIp\fP\
4880 ] [\fIw\fP\
4881  | \fIm\fP\
4882 ]\fIy\fP\
4883 [\fIp\fP\
4884 ] [\fIWarp\fP\
4885 ]] | [\fIpointer\fP\
4887 Allows the user to move a window.  If called from somewhere in a
4888 window or its border, then that window is moved.  If called from
4889 the root window then the user is allowed to select the target
4890 window.  If the optional argument
4891 .I Warp
4892 is specified the pointer is warped with the window.  If the single
4893 argument
4894 .I pointer
4895 is given, the top left corner of the window window is moved to the
4896 pointer position before starting the operation; this is mainly
4897 intended for internal use by modules like
4898 .BR FvwmPager .
4900 The operation can be aborted with Escape or by pressing mouse
4901 button 2. Pressing button 3 sets the
4902 .I PlacedByButton3
4903 condition (see
4904 .B Current
4905 command).
4907 If the optional arguments
4908 .IR x " and " y
4909 are provided, then the window is moved immediately without user
4910 interaction.  Each argument can specify an absolute or relative
4911 position from either the left/top or right/bottom of the screen.
4912 By default, the numeric value given is interpreted as a percentage
4913 of the screen width/height, but a trailing
4914 .RI ' p '
4915 changes the interpretation to mean pixels.  To move the window
4916 relative to its current position, add the
4917 .RI ' w '
4918 (for "window") prefix before the
4919 . IR x " and/or " y
4920 value.  To move the window to a position relative to the current
4921 location of the pointer, add the
4922 .RI ' m '
4923 (for "mouse") prefix.  To leave either coordinate unchanged,
4924 "keep" can be specified in place of
4925 .IR x " or " y .
4927 Simple Examples:
4929 # Interactive move
4930 Mouse 1 T A Move
4931 # Move window to top left is at (10%,10%)
4932 Mouse 2 T A Move 10 10
4933 # Move top left to (10pixels,10pixels)
4934 Mouse 3 T A Move 10p 10p
4936 More complex examples (these can be bound as actions to
4937 keystrokes, etc.; only the command is shown, though):
4939 # Move window so bottom right is at bottom
4940 # right of screen
4941 Move -0 -0
4943 # Move window so top left corner is 10 pixels
4944 # off the top left screen edge
4945 Move +-10 +-10
4947 # Move window 5% to the right, and to the
4948 # middle vertically
4949 Move w+5 50
4951 # Move window up 10 pixels, and so left edge
4952 # is at x=40 pixels
4953 Move 40p w-10p
4955 # Move window to the mouse pointer location
4956 Move m+0 m+0
4958 See also the
4959 .B AnimatedMove
4960 command above.
4963 .BI "MoveToDesk [" prev " | " arg1 " [" arg2 "] [" "min max" "]]"
4964 Moves the selected window to another desktop.  The arguments are
4965 the same as for the
4966 .B GotoDesk
4967 command.  Without any arguments, the window is moved to the
4968 current desk.
4969 .B MoveToDesk
4970 is a replacement for the old
4971 .B WindowsDesk
4972 command, which can no longer be used.
4975 .BI "MoveThreshold [" pixels "]"
4976 When the user presses a mouse button upon an object fvwm waits to
4977 see if the action is a click or a drag.  If the mouse moves by
4978 more than
4979 .I pixels
4980 pixels it is assumed to be a drag.
4982 Previous versions of fvwm hardwired
4983 .I pixels
4984 to 3, which is now the default value.  If
4985 .I pixels
4986 is negative or omitted the default value (which might be increased
4987 when 16000x9000 pixel displays become affordable) is restored.
4990 .B "MoveToPage [\fIoptions\fP
4991 ] [\fIx\fP\
4992 [\fIp\fP|\fIw\fP\
4993 ] \fIy\fP\
4994 [\fIp\fP|\fIw\fP\
4995 ]] | [\fIprev\
4997 Moves the selected window to another page (x,y).  The upper left
4998 page is (0,0), the upper right is (M,0), where M is one less than
4999 the current number of horizontal pages specified in the
5000 .B DeskTopSize
5001 command.  Similarly the lower left page is (0,N), and the lower
5002 right page is (M,N).  Negative page numbers refer to pages from
5003 the rightmost/lowest page.  If
5004 .IR x " and " y
5005 are not given, the window is moved to the current page (a window
5006 that has the focus but is off-screen can be retrieved with this).
5007 Moving windows to a page relative to the current page can be
5008 achieved by adding a trailing
5009 .RI ' p '
5010 after any or both numerical arguments.  To move the window
5011 relative to its current location, add a trailing
5012 .RI ' w '.
5013 To move a window to the previous page use
5014 .I prev
5015 as the single argument.
5017 Windows are usually not moved beyond desk boundaries.
5019 Possible
5020 .I options
5022 .IR wrapx " and " wrapy
5023 to wrap around the x or y coordinate when the window is moved
5024 beyond the border of the desktop. For example, with
5025 .IR wrapx ,
5026 when the window moves past the right edge of the desktop, it
5027 reappears on the left edge.  The options
5028 .IR nodesklimitx " and " nodesklimit
5029 allow moving windows beyond the desk boundaries in x and y
5030 direction (disabling the
5031 .IR wrapx " and " wrapy
5032 options).
5034 Examples:
5036 # Move window to page (2,3)
5037 MoveToPage 2 3
5039 # Move window to lowest and rightmost page
5040 MoveToPage -1 -1
5042 # Move window to last page visited
5043 MoveToPage prev
5045 # Move window two pages to the right and one
5046 # page up, wrap at desk boundaries
5047 MoveToPage wrapx wrapy +2p -1p
5051 .BI "MoveToScreen [" screen "]"
5052 Moves the selected window to another Xinerama screen.  The
5053 .I screen
5054 argument can be 'p' for the primary screen, 'c' for the current
5055 screen (containing the mouse pointer), 'g' for the global screen
5056 or the screen number itself (counting from zero).
5059 .BI "OpaqueMoveSize [" percentage "]"
5060 Tells fvwm the maximum size window with which opaque window
5061 movement should be used.  The percentage is percent of the total
5062 screen area (may be greater than 100).  With
5064 OpaqueMoveSize 0
5066 all windows are moved using the traditional rubber-band
5067 outline. With
5069 OpaqueMoveSize unlimited
5071 or if a negative percentage is given
5072 all windows are moved as solid windows.  The default is
5074 OpaqueMoveSize 5
5076 which allows small windows to be moved in an opaque manner but
5077 large windows are moved as rubber-bands.  If
5078 .I percentage
5079 is omitted or invalid the default value is set.  To resize windows
5080 in an opaque manner you can use the
5081 .I ResizeOpaque
5082 style.  See
5083 .B Style
5084 command.
5087 .BI "PlaceAgain [" Anim "] [" "Icon" "]"
5088 Causes the current window's position to be re-computed using the
5089 initial window placement logic.  The window is moved to where it
5090 would have been if it were a new window that had just appeared.
5091 Most useful with
5092 .IR Smart " or " Clever " (" ReallySmart ")"
5093 placement.  With the optional argument
5094 .I Anim
5095 an animated move is used to place the window in its new position.
5096 With the additional option
5097 .IR Icon ,
5098 the icon is placed again instead.
5101 .BI "Raise"
5102 Allows the user to raise a window. Note that this raises a window
5103 only in its layer. To bring a window to the absolute top, use
5105 AddToFunc raise-to-top
5106  + I Layer 0 ontop
5107  + I Raise
5109 where ontop is the highest layer used in your setup.
5112 .BI "RaiseLower"
5113 Alternately raises and lowers a window.  The window is raised if
5114 it is obscured by any window (except for its own transients when
5115 .I RaiseTransient
5116 style is used; see
5117 .B Style
5118 command) otherwise it is lowered.
5121 .B "Resize [[\fIframe\fP] [direction \fIdir\fP [\fIwarptoborder\fP]] \
5122 [\fIfixeddirection\fP] \
5123 \fIwidth\fP \
5124 [\fIp\fP \
5125 | \fIc\fP\
5126 ] \fIheight\fP \
5127 [\fIp\fP \
5128 | \fIc\fP\
5129 ]] | [\fIbottomright\fP \
5130 | \fIbr x y\fP\
5132 Allows for resizing a window.  If called from somewhere in a window
5133 or its border, then that window is resized.  If called from the
5134 root window then the user is allowed to select the target window.
5136 The operation can be aborted with Escape or by pressing any mouse
5137 button (except button 1 which confirms it).
5139 If the optional arguments
5140 .IR width " and " height
5141 are provided, then the window is resized so that its dimensions
5143 .IR width " by " height .
5144 The units of
5145 .IR width " and " height
5146 are percent-of-screen, unless a letter
5147 .RI ' p '
5148 is appended to one or both coordinates, in which case the location
5149 is specified in pixels.  With a
5150 .RI ' c '
5151 suffix the unit defined by the client application (hence the c) is
5152 used.  So you can say
5154 Resize 80c 24c
5156 to make a terminal window just big enough for 80x24
5157 characters. Both,
5158 .IR width " and " height
5159 can be negative.  In this case the new size is the screen size
5160 minus the given value.  If either value is "keep", the
5161 corresponding dimension of the window is left untouched.  The new
5162 size is the size of the client window, thus
5164 Resize 100 100
5166 may make the window bigger than the screen.  To base the new size
5167 on the size of the whole fvwm window, add the
5168 .I frame
5169 option after the command.  The options
5170 .IR fixeddirection ", " direction " and " warptoborder
5171 are only used in interactive move operations.  With
5172 .I fixeddirection
5173 the same border is moved even if the pointer moves past the
5174 opposite border.  The
5175 .I direction
5176 option must be followed by a direction name such as "NorthWest",
5177 "South" or "East" (you get the idea).  Resizing is started
5178 immediately, even if the pointer is not on a border.  The
5179 .I warptoborder
5180 option changes the behaviour of the
5181 .I direction
5182 option so that the pointer is automatically warped to the border
5183 in the given direction before starting to resize.  Also, if
5184 resizing is started by clicking on the window border, the pointer
5185 is warped to the outer edge of the border.
5187 AddToFunc ResizeSE I Resize Direction SE
5188 Mouse 3 A M ResizeSE
5191 An alternate syntax is used if the keyword
5192 .IR bottomright " or in short " br
5193 follows the command name.  In this case, the arguments
5194 .IR x " and " y
5195 specify the desired position of the bottom right corner of the
5196 window.  They are interpreted exactly like the
5197 .IR x " and " y
5198 arguments of the
5199 .B Move
5200 command.
5203 .BI "ResizeMaximize [" resize-arguments "]"
5204 Combines the effects of
5205 .BR Resize " and " Maximize
5206 in a single command.  When used on a maximized window, the window
5207 is resized and is still in the maximized state afterwards.  When
5208 used on an unmaximized window, the window is resized and put into
5209 the maximized state afterwards.  This is useful if the user wants
5210 to resize the window temporarily and then return to the original
5211 geometry.  The
5212 .I resize-arguments
5213 are the same as for the
5214 .B Resize
5215 command.
5218 .BI "ResizeMove " "resize-arguments move-arguments"
5219 This command does the same as the
5220 .BR Resize " and " Move
5221 commands, but in a single call which is less visually
5222 disturbing. The
5223 .I resize-arguments
5224 are exactly the same arguments as for the
5225 .B Resize
5226 command and the
5227 .I move-arguments
5228 are exactly the same arguments as for the
5229 .B Move
5230 command except the
5231 .I pointer
5232 option which is not supported by the
5233 .B ResizeMove
5234 command.
5236 Example:
5238 # Move the window to the top left corner
5239 ResizeMove w+0 -10p 0 -20p
5243 .BI "ResizeMoveMaximize " "resize-arguments move-arguments"
5244 Combines the effects of
5245 .BR ResizeMove " and " Maximize
5246 in a single command.  When used on a maximized window, the window
5247 is resized and moved and is still in the maximized state
5248 afterwards.  When used on an unmaximized window, the window is
5249 resized and put into the maximized state afterwards.  This is
5250 useful if the user wants to resize the window temporarily and then
5251 return to the original geometry.  The
5252 .IR resize-arguments " and " move-arguments
5253 are the same as for the
5254 .B ResizeMove
5255 command.
5258 .BI "RestackTransients"
5259 This command regroups the transients of a window close to it in
5260 the stacking order as if the window had just been lowered and then
5261 raised.  The position of the window itself is not altered.  Only
5262 windows that use either the
5263 .I RaiseTransient " or " LowerTransient
5264 style are affected at all.  When
5265 .B RestackTransients
5266 is used on a transient window with the
5267 .I StackTransientParent
5268 style set, it is redirected to the parent window.
5271 .BI "SetAnimation " milliseconds-delay " [" fractions-to-move-list "]"
5272 Sets the time between frames and the list of fractional offsets to
5273 customize the animated moves of the
5274 .B AnimatedMove
5275 command and the animation of menus (if the menu style is set to
5276 animated; see
5277 .B MenuStyle
5278 command).  If the
5279 .I fractions-to-move-list
5280 is omitted, only the time between frames is altered.  The
5281 .I fractions-to-move-list
5282 specifies how far the window should be offset at each successive
5283 frame as a fraction of the difference between the starting
5284 location and the ending location.  e.g.:
5286 SetAnimation 10 -.01 0 .01 .03 .08 .18 .3 \\
5287   .45 .6 .75 .85 .90 .94 .97 .99 1.0
5289 Sets the delay between frames to 10 milliseconds, and sets the
5290 positions of the 16 frames of the animation motion.  Negative
5291 values are allowed, and in particular can be used to make the
5292 motion appear more cartoonish, by briefly moving slightly in the
5293 opposite direction of the main motion.  The above settings are the
5294 default.
5297 .B "SnapAttraction [\fIproximity\fP \
5298 [\fIbehavior\fP\
5299 ] [\fIScreen\fP\
5301 If during an interactive move the window or icon comes within
5302 .I proximity
5303 pixels of another the window or icon, it is moved to make the
5304 borders adjoin.  The default of 0 means that no snapping happens.
5305 Calling this command without arguments turns off snap attraction
5306 and restores the default behavior.  Please refer also to the
5307 .B SnapGrid
5308 command.
5311 .I behavior
5312 argument is optional and may be set to one of the four following
5313 values:  With
5314 .I All
5315 both icons and windows snap to other windows and other icons.
5316 .I SameType
5317 lets snap windows only to other windows and icons only to other
5318 icons. With
5319 .I Windows
5320 windows snap only to other windows.  Icons do not snap. Similarly
5321 with
5322 .I Icons
5323 icons snap to only other icons and windows do not snap.
5325 If the
5326 .I behavior
5327 option is not given, the snapping behavior is not changed.  The
5328 default behavior is
5329 .IR All .
5331 If the
5332 .I Screen
5333 option is present windows and or icons are snapped to the screen
5334 edges too.
5337 .BI "SnapGrid [" "x-grid-size y-grid-size" "]"
5338 During an interactive move a window or icon is positioned such
5339 that its location (top left corner) is coincident with the nearest
5340 grid point. The default
5341 .IR x-grid-size " and " y-grid-size
5342 setting are both 1, which is effectively no grid all.  An
5343 interactive move with both
5344 .BR SnapGrid " and " SnapAttraction
5345 results in the window being moved to be adjacent to the nearest
5346 window border (if within snap proximity) or grid position.  In
5347 other words, the window moves the shortest distance possible to
5348 satisfy both
5349 .BR SnapGrid " and " SnapAttraction .
5350 Note that the x and y coordinates are not coupled.  For example, a
5351 window may snap to another window on the x axis while snapping to
5352 a grid point on the y axis.  Calling this command without
5353 arguments reinstates the default settings.
5356 .BI "WindowsDesk " arg1 " [" arg2 "]"
5357 Moves the selected window to another desktop.
5359 This command has been removed and must be replaced by
5360 .BR MoveToDesk ,
5361 the arguments for which are the same as for the
5362 .B GotoDesk
5363 command.
5364 .B Important note:
5365 You cannot simply change the name of the command: the syntax has
5366 changed.  If you used
5368 WindowsDesk n
5370 to move a window to desk n, you have to change it to
5372 MoveToDesk 0 n
5376 .BI "XorPixmap [" pixmap "]"
5377 Selects the pixmap with which bits are xor'ed when doing
5378 rubber-band window moving or resizing.  This has a better chance
5379 of making the rubber-band visible if
5380 .B XorValue
5381 does not give good results.  An example pixmap
5382 .I resize.rainbow.xpm
5383 is provided with the icon distribution.  To turn the
5384 .B XorPixmap
5385 off again use the
5386 .B XorValue
5387 command or omit the
5388 .I pixmap
5389 argument.
5392 .BI "XorValue [" number "]"
5393 Changes the value with which bits are xor'ed when doing
5394 rubber-band window moving or resizing.
5395 Valid values range from zero to the maximum value of an
5396 unsigned long integer on your system.
5397 Setting this value is a trial-and-error process.
5398 The default value 0 tries to find a
5399 value that gives a good contrast to black and white.
5400 The default value is used if the given
5401 .I number
5402 is omitted or invalid.
5405 .SS COMMANDS FOR FOCUS AND MOUSE MOVEMENT
5408 .BI "CursorMove " horizontal "[" p "] " vertical "[" p "]"
5409 Moves the mouse pointer by
5410 .I horizontal
5411 pages in the X direction and
5412 .I vertical
5413 pages in the Y direction.  Either or both entries may be
5414 negative. Both horizontal and vertical values are expressed in
5415 percent of pages, so
5417 CursorMove 100 100
5419 means to move down and right by one full page.
5421 CursorMove 50 25
5423 means to move right half a page and down a quarter of a
5424 page. Alternatively, the distance can be specified in pixels by
5425 appending a
5426 .RI ' p '
5427 to the horizontal and/or vertical specification.  For example
5429 CursorMove -10p -10p
5431 means move ten pixels up and ten pixels left.  The CursorMove
5432 function should not be called from pop-up menus.
5435 .BI "FlipFocus  [" NoWarp "]"
5436 Executes a
5437 .B Focus
5438 command as if the user had used the pointer to select the
5439 window. This command alters the order of the WindowList in the
5440 same way as clicking in a window to focus, i.e. the target window
5441 is removed from the
5442 .B WindowList
5443 and placed at the start. This command is recommended for use with
5445 .B Direction
5446 command and in the function invoked from
5447 .BR WindowList .
5450 .BI "Focus  [" NoWarp "]"
5451 Sets the keyboard focus to the selected window.  If the
5452 .I NoWarp
5453 argument is given, this is all it does.  Otherwise it also moves
5454 the viewport or window as needed to make the selected window
5455 visible. This command does not automatically raise the
5456 window. Does not warp the pointer into the selected window (see
5457 .B WarpToWindow
5458 function).  Does not de-iconify.  This command does not alter the
5459 order of the
5460 .BR WindowList ,
5461 it rotates the
5462 .B WindowList
5463 around so that the target window is at the start.
5465 When the
5466 .I NoWarp
5467 argument is given, Focus cannot transfer the keyboard focus to
5468 windows on other desks.
5470 To raise and/or warp a pointer to a window together with
5471 .BR Focus " or " FlipFocus ,
5472 use a function, like:
5474 AddToFunc SelectWindow
5475 + I Focus
5476 + I Iconify false
5477 + I Raise
5478 + I WarpToWindow 50 8p
5482 .BI "WarpToWindow " x "[" p "] " y "[" p "]"
5483 Warps the cursor to the associated window.  The parameters
5484 .IR x " and " y
5485 default to percentage of window down and in from the upper left
5486 hand corner (or number of pixels down and in if
5487 .RI ' p '
5488 is appended to the numbers).  If a number is negative the opposite
5489 edge is used and the direction reversed.  This command works also
5490 with windows that are not managed by fvwm.  In this case fvwm does
5491 not bring the window onto the screen if it is not visible.  For
5492 example it is possible to warp the pointer to the center of the
5493 root window on screen 1:
5495 WindowId root 1 WarpToWindow 50 50
5499 .SS COMMANDS CONTROLLING WINDOW STATE
5502 .BI "Close"
5503 If the window accepts the delete window protocol a message is sent
5504 to the window asking it to gracefully remove itself.  If the
5505 window does not understand the delete window protocol then the
5506 window is destroyed as with the
5507 .B Destroy
5508 command.  Note: if the window accepts the delete window protocol
5509 but does not close itself in response, the window is not deleted.
5512 .BI "Delete"
5513 Sends a message to a window asking that it remove itself,
5514 frequently causing the application to exit.
5517 .BI "Destroy"
5518 Destroys an application window, which usually causes the
5519 application to crash and burn.
5522 .BI "Iconify [" bool "]"
5523 Iconifies a window if it is not already iconified or de-iconifies
5524 it if it is already iconified.  The optional argument
5525 .I bool
5526 is a boolean argument.  "True" means only iconification is
5527 allowed, while "False" forces de-iconification.  Using "toggle"
5528 switches between iconified and de-iconified states.
5530 There are a number of
5531 .B Style
5532 options which influence the appearance and behavior of icons (e.g.
5533 .IR StickyIcon ", " NoIcon ).
5535 For backward compatibility, the optional argument may also be a
5536 positive number instead of "True", or a negative number instead
5537 of "False".  Note that this syntax is obsolete, and will be removed
5538 in the future.
5541 .B "Maximize [\fIflags\fP\
5542 ] [\fIbool\fP\
5543 ] [\fIhorizontal\fP\
5544 [\fIp\fP\
5545 ]] [\fIvertical\fP \
5546 [\fIp\fP\
5548 Without its optional arguments (or if the
5549 .I bool
5550 bit has the value "toggle")
5551 .B Maximize
5552 causes the window to alternately switch from a full-screen size to
5553 its normal size.  To force a window into maximized (normal) state
5554 you can use a "True" or "False" value for the
5555 .I bool
5556 argument.
5558 With the optional arguments
5559 .IR horizontal " and " vertical ,
5560 which are expressed as percentage of a full screen, the user can
5561 control the new size of the window.  An optional suffix
5562 .RI ' p '
5563 can be used to indicate pixels instead of percents of the screen
5564 size.  If horizontal is greater than 0 then the horizontal
5565 dimension of the window is set to
5566 .IR horizontal *screen_width/100.
5567 If the value is smaller than 0 the size is subtracted from the
5568 screen width, i.e. -25 is the same as 75.  If
5569 .I horizontal
5570 is "grow", it is maximized to current available space until
5571 finding any obstacle.  The vertical resizing is similar.  If both
5572 horizontal and vertical values are "grow", it expands vertically
5573 first, then horizontally to find space.  Instead of the horizontal
5574 "grow" argument, "growleft" or "growright" can be used
5575 respectively "growup" and "growdown".
5576 The optional
5577 .I flags
5578 argument is a space separated list containing the following
5579 key words:
5580 .IR ewmhiwa ", " growonwindowlayer ", " growonlayers " and " screen .
5581 .I ewmhiwa
5582 causes fvwm to ignore the EWMH working area.
5583 .I Growonwindowlayer
5584 causes the various grow methods to ignore windows with a layer
5585 other than the current layer of the window which is maximized.
5587 .I growonlayers
5588 option must have two integer arguments.  The first one is the
5589 minimum layer and the second one the maximum layer to use.
5590 Windows that are outside of this range of layers are ignored by
5591 the grow methods.  A negative value as the first or second
5592 argument means to assume no minimum or maximum layer.
5593 .I Screen
5594 must have an argument which specifies the Xinerama screen on which
5595 to operate.
5596 It can be 'p' for the primary screen, 'c' for the current
5597 screen (containing the mouse pointer), 'g' for the global screen
5598 or the screen number itself (counting from zero).  This option is
5599 only useful with multiple Xinerama screens.
5601 Here are some examples.  The following adds a title-bar button to
5602 switch a window to the full vertical size of the screen:
5604 Mouse 0 4 A Maximize 0 100
5606 The following causes windows to be stretched to the full width:
5608 Mouse 0 4 A Maximize 100 0
5610 This makes a window that is half the screen size in each
5611 direction:
5613 Mouse 0 4 A Maximize 50 50
5615 To expand a window horizontally until any other window is found:
5617 Mouse 0 4 A Maximize 0 grow
5619 To expand a window until any other window on the same or a higher
5620 layer is hit.
5622 Mouse 0 4 A Maximize growonlayers $[w.layer] -1 grow grow
5624 To expand a window but leave the lower 60 pixels of the screen
5625 unoccupied:
5627 Mouse 0 4 A Maximize 100 -60p
5629 Values larger than 100 can be used with caution.
5632 .BI "Recapture"
5633 This command is obsolete and should not be used anymore.  Should
5634 you want to do something specific that you cannot do without it,
5635 please report this to the fvwm-workers mailing list
5636 (@FVWMWORKERSLIST@).  This command will be removed at some point
5637 in the future.  Please read the note at the end of the section
5638 .B "DELAYED EXECUTION OF COMMANDS"
5639 to learn about how to avoid the
5640 .B Recapture
5641 command.
5643 Causes fvwm to recapture all of its windows.  This ensures that
5644 the latest style parameters are used.  The recapture operation is
5645 visually disturbing.
5647 Since fvwm version 2.4 only a very few
5648 .B Style
5649 options need a
5650 .B Recapture
5651 to take effect (e.g.
5652 .IR UseStyle ).
5655 .BI "RecaptureWindow"
5656 This command is obsolete and should not be used anymore.  See
5657 .B Recapture
5658 For details.
5660 Causes fvwm to recapture the chosen window.
5663 .BI "Refresh"
5664 Causes all windows on the screen to redraw themselves. All pending
5665 updates of all windows' styles and looks are applied immediately.
5666 E.g. if
5667 .BR Style " or " TitleStyle
5668 commands were issued inside a fvwm function.
5671 .BI "RefreshWindow"
5672 Causes the chosen window to redraw itself. All pending updates of
5673 the window's style and looks are applied immediately.  E.g. if
5674 .BR Style " or " TitleStyle
5675 commands were issued inside a fvwm function.
5678 .BI "Stick [" bool "]"
5679 If the
5680 .I bool
5681 argument is empty or "toggle", the
5682 .B Stick
5683 command makes a window sticky if it is not already sticky, or
5684 non-sticky if it is already sticky.  To make a window sticky
5685 regardless of its current state the
5686 .I bool
5687 argument must be "True".  To make it non-sticky use "False".
5690 .BI "StickAcrossPages [" bool "]"
5691 Works like
5692 .B Stick
5693 but only sticks a window across pages, not across desks.
5696 .BI "StickAcrossDesks [" bool "]"
5697 Works like
5698 .B Stick
5699 but only sticks a window across desks, not across pages.
5702 .BI "WindowShade [" bool "] | [[" ShadeAgain "] " direction "]"
5703 Toggles the window shade feature for titled windows.  Windows in
5704 the shaded state only display a title-bar.  If
5705 .I bool
5706 is not given or "toggle", the window shade state is toggled.  If
5707 .I bool
5708 is "True", the window is forced to the shaded state.  If
5709 .I bool
5710 is "False", then the window is forced to the non-shaded
5711 state.  To force shading in a certain direction, the
5712 .I direction
5713 argument can be used.  Any of the strings "North", "South",
5714 "West", "East", "NorthWest", "NorthEast", "SouthWest" or
5715 "SouthEast" can be given.  The direction can be abbreviated with
5716 the usual one or two letters "N", "NW", etc.  Using a direction on
5717 a window that was already shaded unshades the window.  To shade it
5718 in a different direction, use the
5719 .I ShadeAgain
5720 option.  Windows without titles can be shaded too.  Please refer
5721 also to the options
5722 .IR WindowShadeSteps ", " WindowShadeShrinks ,
5723 .IR WindowShadeScrolls ", " WindowShadeLazy ,
5724 .IR WindowShadeAlwaysLazy " and " WindowShadeBusy .
5725 option of the
5726 .B Style
5727 command.  Examples:
5729 Style * WindowShadeShrinks, \\
5730 WindowShadeSteps 20, WindowShadeLazy
5731 Mouse 1 S - WindowShade North
5732 Mouse 1 S [ WindowShade West
5733 Mouse 1 S ] WindowShade E
5734 Mouse 1 S _ WindowShade S
5737 Note: When a window that has been shaded with a
5738 .I direction
5739 argument changes the direction of the window title (see
5740 .I TitleAtTop
5741 .B Style
5742 option), the shading direction does not change.  This may look
5743 very strange.  Windows that were shaded without a
5744 .I direction
5745 argument stay shaded in the direction of the title bar.
5747 For backward compatibility, the optional argument may also be 1 to
5748 signify "on", and 2 to signify "off". Note that this syntax is
5749 obsolete, and will be removed in the future.
5752 .BI "WindowShadeAnimate  [" steps "[" p "]]"
5753 This command is obsolete.  Please use the
5754 .I WindowShadeSteps
5755 option of the
5756 .B Style
5757 command instead.
5760 .SS COMMANDS FOR MOUSE, KEY AND STROKE BINDINGS
5763 .BI "IgnoreModifiers [" Modifiers "]"
5764 Tells fvwm which modifiers to ignore when matching Mouse or Key
5765 bindings.
5766 .B IgnoreModifiers
5767 affects the
5768 .I ClickToFocus
5769 style too.  This command belongs into your
5770 .IR config .
5771 If you issue it when your fvwm session is already up and running
5772 the results are unpredictable.  The should appear before any
5773 applications or modules are started in your
5774 .I config
5775 file (e.g. with the
5776 .B Exec
5777 command).
5779 .I Modifiers
5780 has the same syntax as in the
5781 .BR Mouse " or " Key
5782 bindings, with the addition of 'L' meaning the
5783 .SM caps lock
5784 key.  The default is "L".
5785 .I Modifiers
5786 can be omitted, meaning no modifiers are ignored.  This command
5787 comes in handy if the
5788 .SM num-lock
5790 .SM scroll-lock
5791 keys interfere with your shortcuts.  With XFree86 '2' usually is
5793 .SM num-lock
5794 modifier and '5' refers to the
5795 .SM scroll-lock
5796 key. To turn all these pesky modifiers off you can use this
5797 command:
5799 IgnoreModifiers L25
5801 If the
5802 .I Modifiers
5803 argument is the string "default", fvwm reverts back to the
5804 default value "L".
5806 .I Important Note:
5807 This command creates a lot of extra network traffic, depending on
5808 your CPU, network connection, the number of
5809 .BR Key " or " Mouse
5810 commands in your configuration file and the number of modifiers
5811 you want to ignore.  If you do not have a lightning fast machine
5812 or very few bindings you should not ignore more than two
5813 modifiers. I.e. do not ignore
5814 .SM scroll-lock
5815 if you have no problem with it.  In the
5816 .I FAQ
5817 you can find a better solution of this problem.
5820 .BI "EdgeCommand [" direction " [" Function "]]"
5821 Binds a specified fvwm command
5822 .I Function
5823 to an edge of the screen. Direction may be one of
5824 "North", "Top", "West", "Left", "South", "Bottom", "Right"
5825 and "East". If
5826 .I Function
5827 is omitted the binding for this edge is removed. If EdgeCommand is
5828 called without any arguments all edge bindings are removed.
5830 .I Function
5831 is executed when the mouse pointer
5832 enters the invisible pan frames that surround the visible screen.
5833 The binding works only if
5834 .I EdgeThickness
5835 is set to a value greater than 0.
5836 If a function is bound to an edge, scrolling specified by
5837 .I EdgeScroll
5838 is disabled for this edge.
5839 It is possible to bind a function only to some edges
5840 and use the other edges for scrolling.
5841 This command is intended to raise or lower certain windows
5842 when the mouse pointer enters an edge.
5843 .I FvwmAuto
5844 can be used get a delay when raising or lowering windows.
5845 The following example raises
5846 .I FvwmButtons
5847 if the mouse pointer enters the top edge of the screen.
5849 # Disable EdgeScrolling but make it possible
5850 # to move windows over the screen edge
5851 EdgeResistance 10000 20
5853 # Set thickness of the edge of the screen to 1
5854 EdgeThickness 1
5856 # Give focus to FvwmButtons if the mouse
5857 # hits top edge
5858 EdgeCommand Top Next (FvwmButtons) Focus
5859 # Make sure the Next command matches the window
5860 Style FvwmButtons CirculateHit
5862 Module FvwmButtons
5863 Module FvwmAuto 100 \\
5864         "Silent AutoRaiseFunction" \\
5865         "Silent AutoLowerFunction"
5867 # If any window except FvwmButtons has
5868 # focus when calling this function
5869 # FvwmButtons are lowered
5870 DestroyFunc AutoLowerFunction
5871 AddToFunc AutoLowerFunction
5872 + I Current (!FvwmButtons) \\
5873         All (FvwmButtons) Lower
5875 # If FvwmButtons has focus when calling \\
5876 # this function raise it
5877 DestroyFunc AutoRaiseFunction
5878 AddToFunc AutoRaiseFunction
5879 + I Current (FvwmButtons) Raise
5881 Normally, the invisible pan frames are only on the screen edges
5882 that border virtual pages.  If a screen edge has a command bound
5883 to it, the pan frame is always created on that edge.
5886 .BI "EdgeLeaveCommand [" direction " [" Function "]]"
5887 Binds a specified fvwm command
5888 .I Function
5889 to an edge of the screen. Direction may be one of
5890 "North", "Top", "West", "Left", "South", "Bottom", "Right"
5891 and "East". If
5892 .I Function
5893 is omitted the binding for this edge is removed. If
5894 EdgeLeaveCommand is called without any arguments all edge bindings
5895 are removed.
5897 .I Function
5898 is executed when the mouse pointer
5899 leaves the invisible pan frames that surround the visible screen.
5900 The binding works only if
5901 .I EdgeThickness
5902 is set to a value greater than 0.
5903 If a function is bound to an edge, scrolling specified by
5904 .I EdgeScroll
5905 is disabled for this edge.
5906 It is possible to bind a function only to some edges
5907 and use the other edges for scrolling.
5908 This command is intended to raise or lower certain windows
5909 when the mouse pointer leaves an edge.
5910 .I FvwmAuto
5911 can be used get a delay when raising or lowering windows.
5912 See example for
5913 .I EdgeCommand
5915 Normally, the invisible pan frames are only on the screen edges
5916 that border virtual pages.  If a screen edge has a command bound
5917 to it, the pan frame is always created on that edge.
5920 .BI "GnomeButton"
5921 Used in conjunction with
5922 .B Mouse
5923 to pass mouse button presses on the root window to a
5924 .SM GNOME
5925 program (such as GMC).  The following example passes presses of
5926 mouse buttons 1 and 3 to such a program.
5928 Mouse 1 R A GnomeButton
5929 Mouse 3 R A GnomeButton
5933 .BI "Key [(" window ")] " "Keyname Context Modifiers Function"
5934 Binds a keyboard key to a specified fvwm command, or
5935 removes the binding if
5936 .I Function
5937 is '-'.  The syntax is the same as for a
5938 .B Mouse
5939 binding except that the mouse button number is replaced with a
5940 .IR Keyname .
5941 Normally, the key binding is activated when the key is pressed.
5942 .I Keyname
5943 is a standard X11 key name as defined in
5944 .IR /usr/include/X11/keysymdef.h ,
5945 (without the 
5946 .I XK_
5947 prefix), or the keysym database
5948 .IR /usr/X11R6/lib/X11/XKeysymDB .
5949 Only key names that are
5950 generated with no modifier keys or with just the
5951 .SM Shift
5952 key held are guaranteed to work.  The
5953 .IR Context " and " Modifiers
5954 fields are defined as in the
5955 .B Mouse
5956 binding.  However, when you press a key the context window is the
5957 window that has the keyboard focus.  That is not necessarily the
5958 same as the window the pointer is over (with
5959 .IR SloppyFocus " or " ClickToFocus ).
5960 Note that key bindings with the 'R' (root window) context do not
5961 work properly with
5962 .IR SloppyFocus " and " ClickToFocus .
5963 If you encounter problems, use the
5964 .B PointerKey
5965 command instead.  If you want to bind keys to a window with
5966 .IR SloppyFocus " or " ClickToFocus
5967 that are supposed to work when the pointer is not over the window,
5968 fvwm assumes the pointer is over the client window (i.e. you have
5969 to use the 'W' modifier).
5971 The following example binds the built-in window list to pop up
5972 when
5973 .SM Alt-Ctrl-Shift-F11
5974 is hit, no matter where the mouse pointer is:
5976 Key F11 A SCM WindowList
5978 Binding a key to a title-bar button causes that button to appear.
5979 Please refer to the
5980 .B Mouse
5981 command for details.
5984 .BI "Mouse [(" window ")] " "Button Context Modifiers Function"
5985 Defines a mouse binding, or removes the binding if
5986 .I Function
5987 is '-'.
5988 .I Button
5989 is the mouse button number.  If
5990 .I Button
5991 is zero then any button performs the specified function.  Note
5992 that only mouse buttons 1 to 5 are fully supported by X11.  Any
5993 number above this works only partially.  Complex functions can not
5994 be used with these buttons and neither any operation that requires
5995 dragging the pointer with the button held.  This is due to
5996 limitations of X11.  By default, the highest allowed button number
5997 is 9.
5999 .I Context
6000 describes where the binding applies.  Valid contexts are 'R' for
6001 the root window, 'W' for an application window, 'D' for a desktop
6002 application (as kdesktop or Nautilus desktop), 'T' for a window
6003 title-bar, 'S' for a window side, top, or bottom bar, '[', ']',
6004 \'-' and '_' for the left, right, top or bottom side only, 'F' for
6005 a window frame (the corners), '<', '^', '>' and 'v' for the top
6006 left, top right, bottom right or bottom left corner, 'I' for an
6007 icon window, or '0' through '9' for title-bar buttons, or any
6008 combination of these letters.  'A' is for any context.  For
6009 instance, a context of "FST" applies when the mouse is anywhere in
6010 a window's border except the title-bar buttons.  Only 'S' and 'W'
6011 are valid for an undecorated window.
6013 The special context 'M' for menus can only be used to control
6014 which mouse button is used to tear off menus.  See the section
6015 "Tear Off Menus" for details.
6017 By default, the binding applies to all windows. You can specify
6018 that a binding only applies to specific windows by specifying the
6019 window name in brackets. The window name is a wildcard pattern
6020 specifying the class, resource or name of the window you want the
6021 binding to apply to.
6023 The following example shows how the same key-binding can be used to
6024 perform different functions depending on the window that is focussed:
6026 Key (rxvt)  V A C Echo ctrl-V-in-RXVT
6027 Key (*term) V A C Echo ctrl-V-in-Term
6028 Key (*vim)  V A C --
6029 Key         V A C Echo ctrl-V-elsewhere
6032 A '--' action indicates that the event should be propagated to the specified
6033 window to handle. This is only a valid action for window-specific bindings.
6035 This example shows how to display the WindowList when Button 3 is
6036 pressed on an rxvt window:
6038 Mouse (rxvt) 3 A A WindowList
6041 Note that Fvwm actually intercepts all events for a window-specific
6042 binding and (if the focussed window doesn't match any of the bindings)
6043 sends a synthetic copy of the event to the window. This should be
6044 transparent to most applications, however (for security reasons) some programs
6045 ignore these synthetic events by default - xterm is one of them. To enable
6046 handling of these events, add the following line to your ~/.Xdefaults file:
6049 XTerm*allowSendEvents:  true
6052 .I Modifiers
6053 is any combination of 'N' for no modifiers, 'C' for control, 'S'
6054 for shift, 'M' for Meta, 'L' for Caps-Lock or 'A' for any
6055 modifier. For example, a modifier of "SM" applies when both the
6056 .SM Meta
6058 .SM Shift
6059 keys are down.  X11 modifiers mod1 through mod5 are represented as
6060 the digits '1' through '5'.  The modifier 'L' is ignored by
6061 default.  To turn it on, use the
6062 .B IgnoreModifiers
6063 command.
6065 .I Function
6066 is one of fvwm's commands.
6068 The title-bar buttons are numbered with odd numbered buttons on
6069 the left side of the title-bar and even numbers on the
6070 right. Smaller-numbered buttons are displayed toward the outside
6071 of the window while larger-numbered buttons appear toward the
6072 middle of the window (0 is short for 10).  In summary, the buttons
6073 are numbered:
6075 1 3 5 7 9    0 8 6 4 2
6077 The highest odd numbered button which has an action bound to it
6078 determines the number of buttons drawn on the left side of the
6079 title bar.  The highest even number determines the number or right
6080 side buttons which are drawn.  Actions can be bound to either
6081 mouse buttons or keyboard keys.
6084 .BI "PointerKey [(" window ")] " "Keyname Context Modifiers Function"
6085 This command works exactly like the
6086 .B Key
6087 command.  The only difference is that the binding operates on the
6088 window under the pointer.  Normal key bindings operate on the
6089 focused window instead.  The
6090 .B PointerKey
6091 command can for example be used to bind keys to the root window if
6092 you are using
6093 .IR SloppyFocus " or " ClickToFocus .
6094 However, some applications (xterm is one example) are unable to
6095 handle this key anymore, even if the pointer is over the xterm
6096 window.  It is recommended to use the
6097 .B PointerKey
6098 command only for key combinations that are not needed in any
6099 application window.
6101 Example:
6103 Style * SloppyFocus
6104 PointerKey f1 a m Menu MainMenu
6108 .BI "Stroke [(" window ")] " "Sequence Button Context Modifiers Function"
6109 Binds a mouse stroke sequence to a specified fvwm command,
6110 or removes the binding if
6111 .I Function
6112 is '-'.  The syntax is the same as for a
6113 .B Mouse
6114 binding except that
6115 .I Sequence
6116 is inserted in front of the button number and a value of 0 for
6117 .I Button
6118 concerns the
6119 .B StrokeFunc
6120 command.  The
6121 .IR Context " and " Modifiers
6122 fields are defined as in the
6123 .B Mouse
6124 binding.  However, only the 'R' Context really works (if you want
6125 to use other contexts you need to use the
6126 .B StrokeFunc
6127 below).
6129 Strokes sequences are defined in a telephone grid like this:
6131  1  2  3
6133  4  5  6
6135  7  8  9
6137 or in a numeric pad grid like this:
6139  7  8  9
6141  4  5  6
6143  1  2  3
6145 The telephone grid is used by default, to use the numeric pad grid
6146 you should begin the sequence with a 'N'.  Note that a complex
6147 motion may gives several different sequences (see the "netscape"
6148 example below to handle such motion).  Moreover, sequence are
6149 limited to 20 elements (with the present version of
6150 .BR libstroke ),
6151 however, in practice it is preferable to use sequence with less
6152 than 12 elements.
6154 Because of the default button menu in fvwm, you may need to remove
6155 a mouse button binding (using an empty action) before using the
6156 stroke
6158 Mouse 3 R N
6160 Also, you can still use the stroke "sequence 0" to simulate a
6161 click:
6163 Stroke 0 3 R N Menu WindowList Nop
6165 The following example starts xterm when the mouse drags an 'I' on
6166 the root window with button 3 pressed down:
6168 Stroke 258  3  R  N  Exec exec xterm
6170 An example for Netscape:
6172 Stroke 7415963    3  R  N  Exec exec netscape
6173 Stroke 74148963   3  R  N  Exec exec netscape
6174 Stroke 74158963   3  R  N  Exec exec netscape
6175 Stroke 7418963    3  R  N  Exec exec netscape
6176 Stroke 415963     3  R  N  Exec exec netscape
6178 You may prefer to use the numeric pad grid since you have such a
6179 grid on your machine. Here an example:
6181 Stroke N78963214   3  R  N  FvwmForm FvwmForm-QuitVerify
6182 Stroke N789632147  3  R  N  FvwmForm FvwmForm-QuitVerify
6184 This example starts the "QuitVerify" form if you draw a box that
6185 begins in the top left corner.
6187 Note: You need
6188 .B libstroke
6189 installed and fvwm compiled with stroke support.
6190 .B libstroke
6191 can be obtained at
6193 .B http://www.etla.net/~willey/projects/libstroke/
6197 .BI "StrokeFunc [" Options "]"
6198 Causes fvwm to record a mouse stroke sequence and to execute the
6199 corresponding action as defined in a
6200 .B Stroke
6201 command.  The cursor is modified to the
6202 .I STROKE
6203 context of the
6204 .B CursorStyle
6205 command during recording.  When the stroke is finished
6206 .B StrokeFunc
6207 looks for a stroke binding of the form
6209 Stroke sequence 0 Context Modifiers action
6211 and executes the corresponding action (Note the 0).  Normal use of
6212 this function is via a
6213 .BR Mouse " or " Key
6214 command.  Examples:
6216 Mouse 3 A M StrokeFunc
6217 Key x R N StrokeFunc
6219 If you press mouse button 3 and
6220 .SM Alt
6221 anywhere (respectively, press the key x when the cursor is on the
6222 root window), then fvwm records the mouse motions until the mouse
6223 button 3 (respectively, the x key) is released and then check if
6224 the recorded
6225 .I sequence
6226 corresponds to a stroke binding of the form
6228 .RI """Stroke " sequence " 0 A M " action """ \""
6229 .RI """Stroke " sequence " 0 R N " action """ \""
6231 Note that the
6232 .IR Context " and " Modifiers
6233 are taken at the beginning of the execution of the
6234 .B StrokeFunc
6235 command (so you can release the modifiers before the end of the
6236 stroke recording in the case of a mouse binding and if you used,
6237 say, a title-bar context the mouse motion can go through an
6238 application window).  The keys
6239 .SM Escape
6241 .SM Delete
6242 allow you to abort the command.
6245 .B StrokeFunc
6246 command has five options:
6247 .IR NotStayPressed ", " EchoSequence ", " DrawMotion ", "
6248 .IR FeedBack " and " StrokeWidth .
6249 These options are disabled by default.
6250 .I EchoSequence
6251 causes fvwm to Echo the recorded stroke sequence.
6252 .I DrawMotion
6253 causes fvwm to draw the mouse motion on the screen.
6254 .I FeedBack
6255 causes fvwm to display during a fraction of second the cursor of
6257 .I WAIT
6258 context of the
6259 .B CursorStyle
6260 command if the recorded stroke sequence corresponds to a stroke
6261 binding.
6262 .I StrokeWidth
6263 takes an integer argument, which must be >= 0 and <= 100 and which
6264 defines the width of the line for the
6265 .I DrawMotion option.
6267 .I NotStayPressed
6268 works only if
6269 .B StrokeFunc
6270 is used via a
6271 .BR Mouse
6272 or a
6273 .B Key
6274 command.  This option removes the need to have a button or the key
6275 pressed during the stroke, but you have to do a mouse click or
6276 press the
6277 .SM Return
6279 .SM Space
6280 key to finish the mouse motion recording (these keys also work
6281 without the
6282 .I NotStayPressed
6283 option).
6285 You can use the
6286 .B StrokeFunc
6287 "alone".  In this case it works as above with the
6288 .I NotStayPressed
6289 option enabled.  However,
6290 .I Modifiers,
6291 in general, may not work as expected (i.e., in this case use 'A'
6292 or 'N' as
6293 .I Modifiers
6294 in the stroke bindings).
6296 Note that some computers do not support key release events. If
6297 that is the case the
6298 .B StrokeFunc
6299 used via a
6300 .B Key
6301 command works as if the
6302 .I NotStayPressed
6303 option is enabled.
6306 .SS THE STYLE COMMAND (CONTROLLING WINDOW STYLES)
6308 For readability, the commands in this section are not sorted
6309 alphabetically.  The description of the
6310 .B Style
6311 command can be found at the end of this section.
6314 .BI "FocusStyle " "stylename options"
6315 works exactly like the
6316 .B Style
6317 command, but accepts only the focus policy related styles
6318 beginning with "FP".  The prefix can be removed, but at the cost
6319 of a little bit of time.
6320 .B FocusStyle
6321 is meant to make the configuration file more readable.  Example:
6323 FocusStyle * EnterToFocus, !LeaveToUnfocus
6325 is equivalent to
6327 Style * FPEnterToFocus, !FPLeaveToUnfocus
6331 .BI "DestroyStyle " style
6332 deletes the style named
6333 .IR style .
6334 The changes take effect immediately.  Note that
6335 .I style
6336 is not a wild-carded search string, but rather a case-sensitive
6337 string that should exactly match the original
6338 .B Style
6339 command.
6341 Destroying style "*" can be done, but isn't really to be
6342 recommended. For example:
6344 DestroyStyle Application*
6346 This removes all settings for the style named "Application*", NOT
6347 all styles starting with "Application".
6350 .B "DestroyWindowStyle"
6351 deletes the styles set by the
6352 .B WindowStyle
6353 command on the selected window. The changes take effect immediately.
6356 .BI "UpdateStyles"
6357 All pending updates of all windows' styles and looks are applied
6358 immediately.  E.g. if
6359 .BR Style ", " WindowStyle " or " TitleStyle
6360 commands were issued inside a fvwm function.
6363 .BI "Style " "stylename options"
6364 This command is intended to replace the old fvwm 1.xx global
6365 commands NoBorder, NoTitle, StartsOnDesk, Sticky, StaysOnTop,
6366 Icon, WindowListSkip, CirculateSkip, SuppressIcons, BoundaryWidth,
6367 NoBoundaryWidth, StdForeColor, and StdBackColor with a single
6368 flexible and comprehensive window specific command.  This command
6369 is used to set attributes of a window to values other than the
6370 default or to set the window manager default styles.
6372 .I stylename
6373 can be a window's name, class, or resource string.  It may contain
6374 the wildcards '*' and '?', which are matched in the usual Unix
6375 filename manner.  They are searched in the reverse order stated.
6376 When two conflicting styles apply to the same window, the style
6377 that was changed last wins.
6379 Note: windows that have no name (WM_NAME) are given a name of
6380 "Untitled", and windows that don't have a class (WM_CLASS,
6381 res_class) are given class "NoClass" and those that don't have a
6382 resource (WM_CLASS, res_name) are given resource "NoResource".
6384 .I options is a comma separated list containing one or more of the
6385 following keywords.  Each group of style names is separated by
6386 slashes ('/').  The last style in these groups is the default.
6387 .IR BorderWidth ", " HandleWidth ,
6388 .IR NoIcon " / " Icon ", " MiniIcon ,
6389 .IR IconBox ", " IconGrid ", " IconFill ", " IconSize ,
6390 .IR NoTitle " / " Title ,
6391 .IR TitleAtBottom " / " TitleAtLeft " / " TitleAtRight " / " TitleAtTop ,
6392 .IR LeftTitleRotatedCW " / " LeftTitleRotatedCCW,
6393 .IR RightTitleRotatedCCW " / " RightTitleRotatedCW,
6394 .IR TopTitleRotated " / " TopTitleNotRotated,
6395 .IR BottomTitleRotated " / " BottomTitleNotRotated,
6396 .IR !UseTitleDecorRotation " / " UseTitleDecorRotation,
6397 .IR StippledTitle " / " StippledTitleOff ,
6398 .IR IndexedWindowName " / " ExactWindowName ,
6399 .IR IndexedIconName " / " ExactIconName ,
6400 .IR !Borders " / " Borders ,
6401 .IR NoHandles " / " Handles ,
6402 .IR WindowListSkip " / " WindowListHit ,
6403 .IR CirculateSkip " / " CirculateHit ,
6404 .IR CirculateSkipShaded " / " CirculateHitShaded ,
6405 .IR Layer ,
6406 .IR StaysOnTop " / " StaysOnBottom " / " StaysPut ,
6407 .IR Sticky " / " Slippery ,
6408 .IR StickyAcrossPages " / " !StickyAcrossPages ,
6409 .IR StickyAcrossDesks " / " !StickyAcrossDesks ,
6410 .IR StartIconic " / " StartNormal ,
6411 .IR Color ", " ForeColor ", " BackColor ", " Colorset ,
6412 .IR HilightFore ", " HilightBack ", " HilightColorset ,
6413 .IR BorderColorset ", " HilightBorderColorset ,
6414 .IR IconTitleColorset ", " HilightIconTitleColorset ,
6415 .IR IconBackgroundColorset ,
6416 .IR IconTitleRelief ", " IconBackgroundRelief ", " IconBackgroundPadding ,
6417 .IR Font ,
6418 .IR IconFont ,
6419 .IR StartsOnDesk " / " StartsOnPage " / " StartsAnyWhere ,
6420 .IR StartsOnScreen ,
6421 .IR ManualPlacementHonorsStartsOnPage " / " ManualPlacementIgnoresStartsOnPage ,
6422 .IR CaptureHonorsStartsOnPage " / " CaptureIgnoresStartsOnPage ,
6423 .IR RecaptureHonorsStartsOnPage " / " RecaptureIgnoresStartsOnPage ,
6424 .IR StartsOnPageIncludesTransients " / " StartsOnPageIgnoresTransients ,
6425 .IR IconTitle " / " NoIconTitle ,
6426 .IR MwmButtons " / " FvwmButtons ,
6427 .IR MwmBorder " / " FvwmBorder ,
6428 .IR MwmDecor " / " NoDecorHint ,
6429 .IR MwmFunctions " / " NoFuncHint ,
6430 .IR HintOverride " / " NoOverride ,
6431 .IR NoButton " / " Button ,
6432 .IR ResizeHintOverride " / " NoResizeOverride ,
6433 .IR OLDecor " / " NoOLDecor ,
6434 .IR GNOMEUseHints " / " GNOMEIgnoreHints ,
6435 .IR StickyIcon " / " SlipperyIcon ,
6436 .IR StickyAcrossPagesIcon " / " !StickyAcrossPagesIcon ,
6437 .IR StickyAcrossDesksIcon " / " !StickyAcrossDesksIcon ,
6438 .IR ManualPlacement " / " CascadePlacement " / " MinOverlapPlacement " / "
6439 .IR MinOverlapPercentPlacement " / " TileManualPlacement " / "
6440 .IR TileCascadePlacement , " / " CenterPlacement ,
6441 .IR MinOverlapPlacementPenalties ,
6442 .IR MinOverlapPercentPlacementPenalties ,
6443 .IR DecorateTransient " / " NakedTransient ,
6444 .IR DontRaiseTransient " / " RaiseTransient ,
6445 .IR DontLowerTransient " / " LowerTransient ,
6446 .IR DontStackTransientParent " / " StackTransientParent ,
6447 .IR SkipMapping " / " ShowMapping ,
6448 .IR ScatterWindowGroups " / " KeepWindowGroupsOnDesk ,
6449 .IR UseDecor ,
6450 .IR UseStyle ,
6451 .IR NoPPosition " / " UsePPosition ,
6452 .IR NoUSPosition " / " UseUSPosition ,
6453 .IR NoTransientPPosition " / " UseTransientPPosition ,
6454 .IR NoTransientUSPosition " / " UseTransientUSPosition ,
6455 .IR NoIconPosition " / " UseIconPosition ,
6456 .IR Lenience " / " NoLenience ,
6457 .IR ClickToFocus " / " SloppyFocus " /"
6458 .IR MouseFocus | FocusFollowsMouse " / " NeverFocus ,
6459 .IR ClickToFocusPassesClickOff " / " ClickToFocusPassesClick ,
6460 .IR ClickToFocusRaisesOff " / " ClickToFocusRaises ,
6461 .IR MouseFocusClickRaises " / " MouseFocusClickRaisesOff ,
6462 .IR GrabFocus " / " GrabFocusOff ,
6463 .IR GrabFocusTransientOff " / " GrabFocusTransient ,
6464 .IR FPFocusClickButtons ,
6465 .IR FPFocusClickModifiers ,
6466 .IR !FPSortWindowlistByFocus " / " FPSortWindowlistByFocus,
6467 .IR FPClickRaisesFocused " / " !FPClickRaisesFocused,
6468 .IR FPClickDecorRaisesFocused " / " !FPClickDecorRaisesFocused,
6469 .IR FPClickIconRaisesFocused " / " !FPClickIconRaisesFocused,
6470 .IR !FPClickRaisesUnfocused " / " FPClickRaisesUnfocused,
6471 .IR FPClickDecorRaisesUnfocused " / " !FPClickDecorRaisesUnfocused,
6472 .IR FPClickIconRaisesUnfocused " / " !FPClickIconRaisesUnfocused,
6473 .IR FPClickToFocus " / " !FPClickToFocus,
6474 .IR FPClickDecorToFocus " / " !FPClickDecorToFocus,
6475 .IR FPClickIconToFocus " / " !FPClickIconToFocus,
6476 .IR !FPEnterToFocus " / " FPEnterToFocus,
6477 .IR !FPLeaveToUnfocus " / " FPLeaveToUnfocus,
6478 .IR !FPFocusByProgram " / " FPFocusByProgram,
6479 .IR !FPFocusByFunction " / " FPFocusByFunction,
6480 .IR FPFocusByFunctionWarpPointer " / " !FPFocusByFunctionWarpPointer,
6481 .IR FPLenient " / " !FPLenient,
6482 .IR !FPPassFocusClick " / " FPPassFocusClick,
6483 .IR !FPPassRaiseClick " / " FPPassRaiseClick,
6484 .IR FPIgnoreFocusClickMotion " / " !FPIgnoreFocusClickMotion,
6485 .IR FPIgnoreRaiseClickMotion " / " !FPIgnoreRaiseClickMotion,
6486 .IR !FPAllowFocusClickFunction " / " FPAllowFocusClickFunction,
6487 .IR !FPAllowRaiseClickFunction " / " FPAllowRaiseClickFunction,
6488 .IR FPGrabFocus " / " !FPGrabFocus,
6489 .IR !FPGrabFocusTransient " / " FPGrabFocusTransient,
6490 .IR FPOverrideGrabFocus " / " !FPOverrideGrabFocus,
6491 .IR FPReleaseFocus " / " !FPReleaseFocus,
6492 .IR !FPReleaseFocusTransient " / " FPReleaseFocusTransient,
6493 .IR FPOverrideReleaseFocus " / " !FPOverrideReleaseFocus,
6494 .IR StartsLowered " / " StartsRaised ,
6495 .IR IgnoreRestack " / " AllowRestack ,
6496 .IR FixedPosition " / " VariablePosition ,
6497 .IR FixedUSPosition " / " VariableUSPosition ,
6498 .IR FixedPPosition " / " VariablePPosition ,
6499 .IR FixedSize " / " VariableSize ,
6500 .IR FixedUSSize " / " VariableUSSize ,
6501 .IR FixedPSize " / " VariablePSize ,
6502 .IR !Closable " / " Closable ,
6503 .IR !Iconifiable " / " Iconifiable ,
6504 .IR !Maximizable " / " Maximizable ,
6505 .IR !AllowMaximizeFixedSize " / " AllowMaximizeFixedSize ,
6506 .IR IconOverride " / " NoIconOverride " / " NoActiveIconOverride ,
6507 .IR DepressableBorder " / " FirmBorder ,
6508 .IR MaxWindowSize ,
6509 .IR IconifyWindowGroups " / " IconifyWindowGroupsOff ,
6510 .IR ResizeOpaque " / " ResizeOutline ,
6511 .IR BackingStore " / " BackingStoreOff " / " BackingStoreWindowDefault ,
6512 .IR Opacity " / " ParentalRelativity ,
6513 .IR SaveUnder " / " SaveUnderOff ,
6514 .IR WindowShadeShrinks " / " WindowShadeScrolls ,
6515 .IR WindowShadeSteps ,
6516 .IR WindowShadeAlwaysLazy " / " WindowShadeBusy " / " WindowShadeLazy,
6517 .IR EWMHDonateIcon " / " EWMHDontDonateIcon ,
6518 .IR EWMHDonateMiniIcon " / " EWMHDontDonateMiniIcon ,
6519 .IR EWMHMiniIconOverride " / " EWMHNoMiniIconOverride ,
6520 .IR EWMHUseStackingOrderHints " / " EWMHIgnoreStackingOrderHints ,
6521 .IR EWMHIgnoreStateHints " / " EWMHUseStateHints ,
6522 .IR EWMHIgnoreStrutHints " / " EWMHUseStrutHints ,
6523 .IR EWMHMaximizeIgnoreWorkingArea " / " EWMHMaximizeUseWorkingArea " / "
6524 .IR EWMHMaximizeUseDynamicWorkingArea ,
6525 .IR EWMHPlacementIgnoreWorkingArea " / " EWMHPlacementUseWorkingArea
6526 .IR EWMHPlacementUseDynamicWorkingArea ,
6527 .IR MoveByProgramMethod ,
6528 .IR Unmanaged ,
6529 .IR State .
6531 .\" +++++++++++++++ general notes
6532 In the above list some options are listed as
6533 style-option/opposite-style-option.  The opposite-style-option for
6534 entries that have them describes the fvwm default behavior and can
6535 be used if you want to change the fvwm default behavior.
6537 .\" +++++++++++++++ focus policy
6539 .B Focus policy
6540 .I ClickToFocus
6541 instructs fvwm to give the focus to a window when it is clicked
6542 in.  The default
6543 .I MouseFocus
6544 (or its alias
6545 .IR FocusFollowsMouse )
6546 tells fvwm to give a window the focus as soon as the pointer
6547 enters the window, and take it away when the pointer leaves the
6548 window.
6549 .I SloppyFocus
6550 is similar, but doesn't give up the focus if the pointer leaves
6551 the window to pass over the root window or a ClickToFocus window
6552 (unless you click on it, that is), which makes it possible to move
6553 the mouse out of the way without losing focus.  A window with the
6554 style
6555 .I NeverFocus
6556 never receives the focus.  This is useful for modules like
6557 .BR FvwmButtons ,
6558 for example.
6559 Note:  Once any of the "FP..." styles has been used, the defaults
6560 that come with the basic focus policies are not restored when the
6561 latter are used again.  For example, once !FPGrabFocus has been
6562 used, using ClickToFocus does not restore FPGrabFocus.
6564 The focus model can be augmented with several additional options.
6565 In fvwm-2.5.3 and later, there are a large number of advanced
6566 options beginning with "FP" or "!FP".  These options shall replace
6567 the older options one day and are described first.  Using any of
6568 these new options may limit compatibility with older releases.  In
6569 general, options beginning with "FP" turn a feature on, while
6570 those beginning with "!FP" turn it off.
6572 .B Focusing the window
6574 With
6575 .IR FPEnterToFocus ,
6576 when the pointer enters a window it receives focus.
6578 With
6579 .IR FPLeaveToUnfocus
6580 a window loses focus when the pointer leaves it.
6582 With
6583 .IR FPClickToFocus ", " FPClickDecorToFocus " or "
6584 .IR FPClickIconToFocus ,
6585 a window receives focus when the inside of the window or the
6586 decorations or its icon is clicked.
6589 .IR FPFocusByProgram
6590 style allows windows to take the focus themselves.
6593 .IR !FPFocusByFunction
6594 style forbids that a window receives the focus via the
6595 .BR Focus " and " FlipFocus
6596 commands.
6599 .IR FPFocusByFunctionWarpPointer
6600 style controls if the pointer is warped to a selected window
6601 when the
6602 .B Focus
6603 command is used.
6605 .I FPLenient
6606 allows focus on windows that do not want it, like
6607 .BR FvwmPager
6608 or xclock.
6611 .IR FPFocusClickButtons
6612 style takes a list of mouse buttons that can be clicked to focus
6613 or raise a window when the appropriate style is used.  The default
6614 is to use the first three buttons ("123").
6617 .IR FPFocusClickModifiers
6618 style takes a list of modifier keys just like the
6619 .B Key
6620 command.  The exact combination of modifier keys must be pressed
6621 for the click to focus or raise a window to work.  The default is
6622 to use no modifiers ("N").
6624 With the
6625 .IR FPPassFocusClick
6626 style, the click that was used to focus a window is passed to
6627 the application.
6629 With the
6630 .IR FPAllowFocusClickFunction
6631 style, the click that was used to focus a window can also
6632 trigger a normal action that was bound to the window with the
6633 .B Mouse
6634 command).
6636 If the
6637 .IR FPIgnoreFocusClickMotion
6638 style is used, clicking in a window and then dragging the pointer
6639 with the button held down does not count as the click to focus the
6640 window.  Instead, the application processes these events
6641 normally.  This is useful to select text in a terminal window with
6642 the mouse without raising the window.  However, mouse bindings on
6643 the client window are not guaranteed to work anymore (see
6644 .B Mouse
6645 command).  This style forces the initial click to be
6646 passed to the application.  The distance that the pointer must be
6647 moved to trigger this is controlled by the
6648 .B MoveThreshold
6649 command.
6652 .IR FPSortWindowlistByFocus " and " !FPSortWindowlistByFocus
6653 styles control whether the internal window list is sorted in the
6654 order the windows were focused or in the order they were created.
6655 The latter is the default for
6656 .IR ClickToFocus " and " SloppyFocus .
6659 .B Clicking the window to raise
6661 The styles
6662 .IR FPClickRaisesFocused ", " FPClickDecorRaisesFocused " and "
6663 .IR FPClickIconRaisesFocused
6664 allow to raise the window when the interior or the decorations or
6665 the icon of the window is clicked while the window is already
6666 focused.
6668 The styles
6669 .IR FPClickRaisesUnfocused ", " FPClickDecorRaisesUnfocused " and "
6670 .IR FPClickIconRaisesUnfocused
6671 allow to raise the window when the interior or the decorations or
6672 the icon of the window is clicked while the window is not yet
6673 focused.
6675 With the
6676 .IR FPPassRaiseClick
6677 style, the click that was used to raise the window is passed to
6678 the application.
6680 With the
6681 .IR FPAllowRaiseClickFunction
6682 style, the click that was used to raise the window can also
6683 trigger a normal action that was bound to the window with the
6684 .B Mouse
6685 command.
6687 .IR FPIgnoreRaiseClickMotion
6688 style is used, clicking in a window and then dragging the pointer
6689 with the button held down does not count as the click to raise the
6690 window.  Instead, the application processes these events
6691 normally.  This is useful to select text in a terminal window with
6692 the mouse without raising the window.  However, mouse bindings on
6693 the client window are not guaranteed to work anymore (see
6694 .B Mouse
6695 command.  Note that this style forces that the initial click is
6696 passed to the application.  The distance that the pointer must be
6697 moved to trigger this is controlled by the
6698 .B MoveThreshold
6699 command.
6701 .B Grabbing the focus when a new window is created
6703 New normal or transient windows with the
6704 .IR FPGrabFocus " or " FPGrabFocusTransient
6705 style automatically receive the focus when they are created.
6706 .I FPGrabFocus
6707 is the default for windows with the
6708 .I ClickToFocus
6709 style.
6712 .I OverrideGrabFocus
6713 style instructs fvwm to never take away the focus from such a
6714 window via the
6715 .IR GrabFocus " or " GrabFocusTransient
6716 styles.  This can be useful if you like to have transient windows
6717 receive the focus immediately, for example in a web browser, but
6718 not while you are working in a terminal window or a text
6719 processor.
6721 The above three styles are accompanied by
6722 .IR FPReleaseFocus ", " FPReleaseFocusTransient " and "
6723 .IR FPOverrideReleaseFocus .
6724 These control if the focus is returned to another window when the
6725 window is closed.  Otherwise no window or the window under the
6726 pointer will receive the focus.
6728 .IR ClickToFocusPassesClickOff " and " ClickToFocusPassesClick
6729 controls whether a mouse click to focus a window is sent to the
6730 application or not.  Similarly,
6731 .I ClickToFocusRaisesOff/MouseFocusClickRaisesOff
6733 .I ClickToFocusRaises/MouseFocusClickRaises
6734 control if the window is raised (but depending on the focus
6735 model).
6737 Note: in fvwm versions prior to
6738 2.5.3, the "Click..." options applied only to windows with
6739 .I ClickToFocus
6740 while the "Mouse..." options applied to windows with a different
6741 focus policy.  This is no longer the case.
6743 The old
6744 .I GrabFocus
6745 style is equivalent to using
6746 .IR FPGrabFocus " + " FPReleaseFocus .
6748 The old
6749 .I GrabFocusTransient
6750 style is equivalent to using
6751 .IR FPGrabFocusTransient " + " FPReleaseFocusTransient .
6753 .I Lenience
6754 is equivalent to the new style
6755 .IR FPLenient .
6757 .\" +++++++++++++++ styles affecting the window title
6759 .B Window title
6761 .IR Title " and " NoTitle
6762 options determine if the window has a title-bar or not.  By
6763 default all windows have a title-bar.
6765 Windows with the
6766 .IR TitleAtBottom ", " TitleAtLeft " or " TitleAtRight
6767 style have a title-bar below, to the left or to the right of the
6768 window instead of above as usual.  The
6769 .I TitleAtTop
6770 style restores the default placement.  Even if the window has the
6771 .I NoTitle
6772 style set, this affects the
6773 .I WindowShade
6774 command.  Please check the
6775 .B WindowShade
6776 command for interactions between that command and these styles.
6777 Titles on the left or right side of the windows are augmented by
6778 the following styles:
6780 Normally, the text in titles on the left side of a window is
6781 rotated counterclockwise by 90 degrees from the normal upright
6782 position and 90 degrees clockwise for titles on the right side.
6783 It can also be rotated in the opposite directions with
6784 .IR LeftTitleRotatedCW " if " TitleAtLeft
6785 is used, and with
6786 .IR RightTitleRotatedCCW " if " TitleAtRight
6787 is used.  The defaults can be restored with
6788 .IR LeftTitleRotatedCCW " and " RightTitleRotatedCW .
6789 A normal horizontal text may be rotated as well with
6790 .IR TopTitleRotated " if " TitleAtTop
6791 is used, and with
6792 .IR BottomTitleRotated " if " TitleAtBottom
6793 is used.  The defaults can be restored with
6794 .IR TopTitleNotRotated " and " BottomTitleNotRotated .
6796 By default the title bar decoration defined using the
6797 .B TitleStyle
6798 command is rotated following the title text rotation (see the
6799 previous paragraph). This can be disabled by using the
6800 .I !UseTitleDecorRotation
6801 style.
6802 .I UseTitleDecorRotation
6803 reverts back to the default.
6805 With the
6806 .I StippledTitle
6807 style, titles are drawn with the same effect that is usually
6808 reserved for windows with the
6809 .IR Sticky ", " StickyAcrossPages " or " StickyAcrossDesks
6810 style.
6811 .I StippledTitleOff
6812 reverts back to normal titles.
6814 .I Color
6815 takes two arguments.  The first is the window-label text color and
6816 the second is the window decorations normal background color. The
6817 two colors are separated with a slash.  If the use of a slash
6818 causes problems then the separate
6819 .IR ForeColor " and " BackColor
6820 options can be used.
6822 .I Colorset
6823 takes the colorset number as its sole argument and overrides the
6824 colors set by
6825 .IR Color .
6826 Instead, the corresponding colors from the given colorset are
6827 used.  Note that all other features of a colorset are not used.
6828 Use the
6829 .I Colorset
6830 decoration style in the
6831 .BR TitleStyle " and " ButtonStyle
6832 command for that.
6833 To stop using the colorset, the colorset number is omitted.
6836 .IR HilightFore ", " HilightBack " and " HilightColorset
6837 style options work exactly like
6838 .IR ForeColor ", " BackColor " and " Colorset
6839 but are used only if the window has the focus.  These styles
6840 replace the old commands
6841 .BR HilightColor " and " HilightColorset .
6843 .IR BorderColorset
6844 takes the colorset number as its sole argument and overrides the
6845 colors set by
6846 .IR Color " or " Colorset .
6847 for the window border.  To stop using a colorset, the argument is
6848 omitted.
6851 .IR HilightBorderColorset
6852 style option works similarly to
6853 .IR BorderColorset
6854 but is used when the window has the focus.
6856 .I NoIconTitle
6857 disables displaying icon labels while the opposite style
6858 .I IconTitle
6859 enables icon labels (default behaviour).
6861 .IR IconTitleColorset
6862 takes the colorset number as its sole argument and overrides the
6863 colors set by
6864 .IR Color " or " Colorset .
6865 To stop using this colorset, the argument is omitted.
6867 .IR HilightIconTitleColorset
6868 takes the colorset number as its sole argument and overrides the
6869 colors set by
6870 .IR HilightColor " or " HilightColorset .
6871 To stop using this colorset, the argument is omitted.
6873 .IR IconBackgroundColorset
6874 takes the colorset number as its sole argument and uses it to set
6875 a background for the icon picture. By default the icon picture is
6876 not drawn onto a background image. To restore the default, the
6877 argument is omitted.
6879 .IR IconTitleRelief
6880 takes one numeric argument that may be between -50 and +50 pixels
6881 and defines the thickness of the 3D relief drawn around the icon
6882 title. With negative values the icon title gets a pressed in
6883 look. The default is 2 and it is restored if the argument is
6884 omitted.
6886 .IR IconBackgroundRelief
6887 takes one numeric argument that may be between -50 and +50 pixels
6888 and defines the thickness of the 3D relief drawn around the icon
6889 picture background (if any). With negative values the icon
6890 background gets a pressed in look.  The default is 2 and it is
6891 restored if the argument is omitted.
6893 .IR IconBackgroundPadding
6894 takes one numeric argument that may be between 0 and 50 pixels and
6895 defines the amount of free space between the relief of the icon
6896 background picture (if any) and the icon picture. The default is 2
6897 and it is restored if the argument is omitted.
6900 .IR Font " and " IconFont
6901 options take the name of a font as their sole argument. This font
6902 is used in the window or icon title.  By default the font given in
6904 .B DefaultFont
6905 command is used.  To revert back to the default, use the style
6906 without the name argument.  These styles replace the older
6907 .BR WindowFont " and " IconFont
6908 commands.
6911 .I IndexedWindowName
6912 style causes fvwm to use window titles in the form
6914 .IR name " (" i ") "
6916 where
6917 .I name
6918 is the exact window name and
6919 .I i
6920 is an integer which represents the
6921 .I i "th"
6922 window with
6923 .I name
6924 as window name.
6925 .I ExactWindowName
6926 restores the default which is to use the exact window name.
6927 .I IndexedIconName
6929 .I ExactIconName
6930 work the same as
6931 .I IndexedWindowName
6933 .I ExactWindowName
6934 styles but for the icon titles.
6936 .\" +++++++++++++++ styles affecting title buttons
6938 .B Title buttons
6939 .IR Button " and " NoButton
6940 take a numeric argument which is the number of the title-bar
6941 button which is to be included/omitted.
6943 .I MwmButtons
6944 makes the
6945 .B Maximize
6946 button look pressed-in when the window is maximized.  See the
6947 .I MwmDecorMax
6948 flag in
6949 .B ButtonStyle
6950 for more information.  To switch this style off again, use the
6951 .I FvwmButtons
6952 style.
6954 .\" +++++++++++++++ styles affecting borders
6956 .B Borders
6958 .I !Borders
6959 suppresses the window border (but not the title) completely.  The
6960 .I Borders
6961 style enables them again.  Without borders, all other styles
6962 affecting window borders are meaningless.
6964 .I MwmBorder
6965 makes the 3-D bevel more closely match Mwm's.
6966 .I FvwmBorder
6967 turns off the previous option.
6969 With the
6970 .I NoHandles
6971 style, the window does not get the handles in the window corners
6972 that are commonly used to resize it.  With
6973 .IR NoHandles ,
6974 the width from the
6975 .I BorderWidth
6976 style is used.  By default, or if
6977 .I Handles
6978 is is specified, the width from the
6979 .I HandleWidth
6980 style is used.
6982 .I HandleWidth
6983 takes a numeric argument which is the width of the border to place
6984 the window if it does have resize-handles.
6986 .I BorderWidth
6987 takes a numeric argument which is the width of the border to place
6988 the window if it does not have resize-handles.  It is used only if
6990 .I NoHandles
6991 style is specified too.
6993 .I DepressableBorder
6994 makes the border parts of the window decoration look sunken in
6995 when a button is pressed over them.  This can be disabled again
6996 with the
6997 .I FirmBorder
6998 style.
7000 .\" +++++++++++++++ icons, shading, maximizing, movement, resizing
7002 .B Icons, shading, maximizing, movement, resizing
7003 .I Icon
7004 takes an (optional) unquoted string argument which is the icon
7005 bitmap or pixmap to use. Icons specified this way override pixmap
7006 icons, but not icon windows or the ewmh icon, provided by the
7007 client in the application (with the WM_HINTS property or with the
7008 ewmh _NET_WM_ICON property).  The
7009 .I IconOverride
7010 style changes the behavior to override any client-provided icons;
7012 .I NoIconOverride
7013 style changes the behavior to not override any client-provided
7014 icons; the default overriding behavior can be activated with the
7015 .I NoActiveIconOverride
7016 style.  With this style, fvwm uses application provided icons if
7017 the icon is changed but uses the icon provided in the
7018 configuration file until then.
7020 There is one exception to these rules, namely
7022 Style * Icon unknown.xpm
7024 doesn't force the unknown.xpm icon on every window, it just sets
7025 the default icon like the DefaultIcon command. If you really want
7026 all windows to have the same icon, you can use
7028 Style ** Icon unknown.xpm
7030 If the
7031 .I NoIcon
7032 attribute is set then the specified window simply disappears when
7033 it is iconified.  The window can be recovered through the
7034 window-list.  If
7035 .I Icon
7036 is set without an argument then the
7037 .I NoIcon
7038 attribute is cleared but no icon is specified.  An example which
7039 allows only the
7040 .B FvwmPager
7041 module icon to exist:
7043 Style * NoIcon
7044 Style FvwmPager Icon
7047 .I IconBox
7048 takes no argument, four numeric arguments (plus optionally a
7049 screen specification), an X11 geometry string or the string
7050 "none":
7052 .RI IconBox " [" "screen scr-spec" "] " "l t r b"
7056 IconBox geometry
7058 Where
7059 .I l
7060 is the left coordinate,
7061 .I t
7062 is the top,
7063 .I r
7064 is right and
7065 .I b
7066 is bottom.  Negative coordinates indicate distance from the right
7067 or bottom of the screen.
7068 If the first argument is the word
7069 .IR screen ,
7071 .I scr-spec
7072 argument specifies the Xinerama screen on which the IconBox is
7073 defined.  It can be the usual screen Xinerama specification, 'p',
7074 \'c', 'g', a screen number or the additional 'w' for the screen
7075 where the window center is located.  This is only useful with
7076 multiple Xinerama screens.
7077 The "l t r b" specification is more flexible than an X11 geometry.
7078 For example:
7080 IconBox -80 240 -1 -1
7082 defines a box that is 80 pixels wide from the right edge,
7083 240 pixels down from the top, and continues to the bottom of
7084 the screen.
7086 Perhaps it is easier to use is an X11
7087 geometry string though:
7089 IconBox 1000x70-1-1
7091 places an 1000 by 70 pixel icon box on the bottom of the screen
7092 starting in the lower right  hand corner of the screen.
7093 One way to figure out a geometry like this is to use a window
7094 that resizes in pixel increments, for example, xv.
7095 Then resize and place the xv window where you want the iconbox.
7096 Then use FvwmIdent to read the windows geometry.
7097 The icon box is a region of the screen
7098 where fvwm attempts to put icons for any matching window, as long
7099 as they do not overlap other icons.
7100 Multiple icon boxes can be
7101 defined as overflow areas.  When the first icon box is full, the
7102 second one is filled.  All the icon boxes for one style must be
7103 defined in one
7104 .B Style
7105 command.  For example:
7107 Style * IconBox -80 240 -1 -1, \\
7108         IconBox 1000x70-1-1
7110 A Style command with the IconBox option replaces any icon box
7111 defined previously by another Style command for the same style.
7112 Thats why the backslash in the previous example is required.
7114 Note: The geometry for the icon box command takes the additional
7115 screen specifier "@w" in case a Xinerama setup is used.  This
7116 designates the screen where the window center is located.  The
7117 additional screen specifier is not allowed anywhere else.
7119 If you never define an icon box, or you fill all the icon boxes,
7120 fvwm has a default icon box that covers the screen, it fills top
7121 to bottom, then left to right, and has an 80x80 pixel grid.  To
7122 disable all but the default icon box you can use IconBox without
7123 arguments in a separate
7124 .B Style
7125 command.  To disable all icon boxes including the default icon
7126 box, the argument "none" can be specified.
7128 Hint: You can auto arrange your icons in the icon box with a
7129 simple fvwm function.  Put the "DeiconifyAndRearrange" function
7130 below in your configuration file:
7132 AddToFunc DeiconifyAndRearrange
7133  + C Iconify off
7134  + C All (CurrentPage, Iconic) PlaceAgain Icon
7136 And then replace all places where you call the
7137 .B Iconify
7138 command to de-iconify an icon with a call to the new
7139 function.  For example replace
7141 AddToFunc IconFunc
7142  + C Iconify off
7143  + M Raise
7144  + M Move
7145  + D Iconify off
7147 Mouse 1 I A Iconify off
7149 with
7151 AddToFunc IconFunc
7152  + C DeiconifyAndRearrange
7153  + M Raise
7154  + M Move
7155  + D DeiconifyAndRearrange
7157 Mouse 1 I A DeiconifyAndRearrange
7159 .I IconGrid
7160 takes 2 numeric arguments greater than zero.
7162 .I IconGrid x y
7164 Icons are placed in an icon box by stepping through the icon box
7165 using the
7166 .IR x " and " y
7167 values for the icon grid, looking for a free space. The default
7168 grid is 3 by 3 pixels which gives a tightly packed appearance. To
7169 get a more regular appearance use a grid larger than your largest
7170 icon. Use the
7171 .I IconSize
7172 definition to clip an icon to a maximum size. An
7173 .I IconGrid
7174 definition must follow the
7175 .B IconBox
7176 definition that it applies to:
7178 Style * IconBox -80x240-1-1, IconGrid 90 90
7180 .I IconFill
7181 takes 2 arguments.
7183 .RI "IconFill " "Bottom Right"
7185 Icons are placed in an icon box by stepping through the icon box
7186 using these arguments to control the direction the box is filled
7187 in. By default the direction is left to right, then top to bottom.
7188 This would be expressed as:
7190 IconFill left top
7192 To fill an icon box in columns instead of rows, specify the
7193 vertical direction (top or bottom) first. The directions can be
7194 abbreviated or spelled out as follows: "t", "top", "b", "bot",
7195 "bottom", "l", "lft", "left", "r", "rgt", "right". An
7196 .B IconFill
7197 definition must follow the
7198 .B IconBox
7199 definition that it applies to:
7201 Style * IconBox -80x240-1-1, IconFill b r
7203 .I IconSize
7204 sets limits on the size of an icon image.  Both user-provided
7205 and application-provided icon images are affected.
7207 .RI IconSize " [ " width " " height " [ " maxwidth " " maxheight " ] ]"
7209 All arguments are measured in pixels.  When all four arguments are
7210 passed to
7211 .I IconSize,
7212 .I width
7214 .I height
7215 represent the minimum size of an icon, and
7216 .I maxwidth
7218 .I maxheight
7219 represent the maximum size of an icon.  Icon images that are smaller
7220 than the minimum size are padded.  Icon images that are bigger than
7221 the maximum size are clipped.
7223 If only two arguments are passed to
7224 .I IconSize,
7225 .I width
7227 .I height
7228 represent the absolute size of an icon.  Icons covered by this style
7229 will be padded or clipped to achieve the given size.
7231 If no arguments are specified, the default values are used for each
7232 dimension.  This effectively places no limits on the size of an icon.
7234 The value of "-1" can be used in place of any of the arguments to
7235 specify the default value for that dimension.
7237 Note that application-provided icon windows are not affected.
7239 .I MiniIcon
7240 specifies a pixmap to use as the miniature icon for the
7241 window. This miniature icon can be drawn in a title-bar button
7242 (see
7243 .BR ButtonStyle ),
7244 and can be used by various fvwm modules
7245 .RB ( FvwmWinList ", " FvwmIconMan " and " FvwmTaskBar ).
7246 It takes the name of a pixmap as an argument.
7248 .IR WindowShadeShrinks " and " WindowShadeScrolls
7249 control if the contents of a window that is being shaded with the
7250 .B WindowShade
7251 command are scrolled (default) or if they stay in place.  The
7252 shrinking mode is a bit faster
7255 .I WindowShadeSteps
7256 option selects the number of steps for animation when shading a
7257 window with
7258 .BR WindowShade .
7259 It takes one number as its argument.  If the number has a trailing
7260 .RI ' p '
7261 it sets the number of pixels to use as the step size instead of
7262 a fixed number of steps.  0 disables the animation.  This happens
7263 too if the argument is omitted or invalid.
7266 .B WindowShade
7267 command has two modes of operation: busy and lazy shading.  Busy
7268 shading can be 50% slower than lazy shading, but the latter can
7269 look strange under some conditions, for example, if the window
7270 borders, buttons or the title are filled with a tiled pixmap.
7271 Also, the window handles are not drawn in lazy mode and the border
7272 relief may only be draw partially right before the window reaches
7273 the shaded state or tight after leaves the unshaded state. By
7274 default, fvwm uses lazy mode if there are no bad visual effects
7275 (not counting the window handles) and busy mode otherwise.  Use
7277 .I WindowShadeAlwaysLazy " or " WindowShadeBusy
7278 to force using the lazy or busy mode.  The default setting is
7279 restored with
7280 .IR WindowShadeLazy .
7282 .I ResizeOpaque
7283 instructs fvwm to resize the corresponding windows with their
7284 contents visible instead of using an outline.  Since this causes
7285 the application to redraw frequently it can be quite slow and make
7286 the window flicker excessively, depending on the amount of
7287 graphics the application redraws.  The
7288 .I ResizeOutline
7289 style (default) negates the
7290 .I ResizeOpaque
7291 style.  Many applications do not like their windows being resized
7292 opaque, e.g. XEmacs, Netscape or terminals with a pixmap
7293 background. If you do not like the result, don't use the
7294 .I ResizeOpaque
7295 style for these windows.  To exempt certain windows from opaque
7296 resizing you could use these lines in your configuration file:
7298 Style * ResizeOpaque
7299 Style rxvt ResizeOutline
7300 Style emacs ResizeOutline
7302 .I Sticky
7303 makes the window sticky, i.e. it is always visible on each page
7304 and each desk.  The opposite style,
7305 .I Slippery
7306 reverts back to the default.
7308 .IR StickyAcrossPages " and " StickyAcrossPagesIcon
7309 work like
7310 .IR Sticky " and " StickyIcon ,
7311 but stick the window only across pages, not desks while
7312 .I StickyAcrossDesks " and " StickyAcrossDesksIcon
7313 works the other way round.
7315 Windows with the
7316 .I StartIconic
7317 style are shown as icons initially.  Note that some applications
7318 counteract that by deiconifying themselves.  The default is to not
7319 iconify windows and can be set with the
7320 .I StartNormal
7321 style.
7323 .I StickyIcon
7324 makes the window sticky when its iconified.  It de-iconifies on
7325 top the active desktop.
7326 .I SlipperIcon
7327 reverts back to the default.
7329 .I StickyIconPage
7330 works like
7331 .IR StickyIcon ,
7332 but sticks the icon only across pages, not desks while
7333 .I StickyIconDesk
7334 works the other way round.
7336 .I IgnoreRestack
7337 makes fvwm ignore attempts of clients to raise or lower their own
7338 windows.  By default, the opposite style,
7339 .I AllowRestack
7340 is active.
7342 .IR FixedPosition " and " FixedUSPosition
7343 make fvwm ignore attempts of the user to move the window.  It is
7344 still possible to move the window by resizing is.  To allow the
7345 user to move windows, use the
7346 .IR VariablePosition or VariableUSPosition
7347 style.
7349 .IR FixedSize " and " FixedUSSize
7350 make fvwm ignore attempts of the user to resize the window.  To
7351 allow the user to resize windows, use the
7352 .IR VariableSize " or " VariableUSSize
7353 style.
7355 .IR FixedPPosition " and " FixedPSize
7356 make fvwm ignore attempts of the program to move or resize its
7357 windows.  To allow this kind of actions, use the
7358 .IR VariablePPosition " or " VariablePSize
7359 style.  These styles may sometimes affect the initial placement
7360 and dimensions of new windows (depending on the application).  If
7361 windows are created at strange places, try either the
7362 .IR VariablePPosition " or " NoPPosition
7363 styles.  The
7364 .I FixedPSize
7365 style may screw up window dimensions for some applications.  Don't
7366 use this style in this case.
7368 .IR MoveByProgramMethod
7369 affects how fvwm reacts to requests by the application to move its
7370 windows.  By default, fvwm tries to detect which method to use,
7371 but it sometimes detects the wrong method.  You may come across a
7372 window that travels across the screen by a few pixels when the
7373 application resizes it, moves to a screen border with the frame
7374 decorations off screen, that remembers its position for the next
7375 time it starts but appears in a slighly shifted position, or that
7376 attepmts to become full screen but has the.  Try out both options,
7377 .IR UseGravity " and " IgnoreGravity
7378 on the window (and that window only) and see if that helps.  By
7379 default, fvwm uses the
7380 .I AutoDetect
7381 method.  Once the method was detected, it is never changed again.
7382 As long as fvwm can not detect the proper method, it uses
7383 .IR IgnoreGravity .
7384 To force fvwm to retry the detection, use one of the other two
7385 options first and then use
7386 .I AutoDetect
7387 again.
7389 Note:  This option was introduced to alleviate a problem with the
7390 ICCCM2 specification.  The ICCCM2 clearly states that the
7391 .I UseGravity
7392 option should be used, but traditionally applications ignored this
7393 rule.
7395 .IR Closable
7396 enables the functions
7397 .I Close,
7398 .I Delete
7400 .I Destroy
7401 to be performed on the windows. This is on by default.
7402 The opposite,
7403 .IR !Closable ,
7404 inhibits the window to be closed.
7406 .IR Iconifiable
7407 enables the function
7408 .I Iconify
7409 to be performed on the windows.
7410 This is on by default.
7411 The opposite,
7412 .IR !Iconifiable ,
7413 inhibits the window from being iconified.
7415 .IR Maximizable
7416 enables the function
7417 .I Maximize
7418 to be performed on the windows.
7419 This is on by default.
7420 The opposite,
7421 .IR !Maximizable ,
7422 inhibits the window from being maximized.
7424 .IR AllowMaximizeFixedSize
7425 enables the function
7426 .I Maximize
7427 to be performed on windows that are not resizable, unless maximisation
7428 has been disabled either using the style
7429 .I Unmaximizable
7430 or throuth WM hints,
7431 This on by default.
7432 The opposite,
7433 .IR !AllowMaximizeFixedSize ,
7434 inibits all windows that are not resizable from being maximized.
7436 .I ResizeHintOverride
7437 instructs fvwm to ignore the program supplied minimum and maximum
7438 size.  This can be handy for broken applications that refuse to be
7439 resized.  Don't use it if you don't need it.  The default
7440 (opposite) style is
7441 .I NoResizeOverride.
7443 .I MaxWindowSize " [ width [ p ]  height [ p ] ]"
7444 Tells fvwm the maximum width and height of a window.  The values
7445 are the percentage of the total screen area.  If the letter
7446 .RI ' p '
7447 is appended to either of the values, the numbers are interpreted
7448 as pixels. This command is useful to force large application
7449 windows to be fully visible.  Neither
7450 .IR height " nor " width
7451 may be less than 100 pixels.  If you omit the parameters or their
7452 values are invalid, both limits are set to 32767 pixels (which is
7453 the default).
7455 With
7456 .I IconifyWindowGroups
7457 all windows in the same window group are iconified at once when
7458 group leader is iconified.  The default is
7459 .IR IconifyWindowGroupsOff ,
7460 which disables this behavior.  Although a number of applications
7461 use the window group hint, it is rarely used in a proper way, so
7462 it is probably best to use
7463 .I IconifyWindowGroups
7464 only for selected applications.
7466 .\" +++++++++++++++ Window Manager placement
7468 .B Window Manager placement
7469 Applications can place windows at a particular spot on the screen
7470 either by window manager hints or a geometry specification.  When
7471 they do neither, then the window manager steps in to find a place
7472 for the window.  Fvwm knows six ways to deal with this
7473 situation. The default is
7474 .IR TileCascadePlacement .
7476 .I CenterPlacement
7477 automatically places new windows in the center of the display.
7479 .I CascadePlacement
7480 automatically place new windows in a cascading fashion.
7482 .I TileCascadePlacement
7483 automatically places new windows in a smart location - a location
7484 in which they do not overlap any other windows on the screen.  If
7485 no such position can be found
7486 .IR CascadePlacement
7487 is used as a fall-back method.
7489 .I TileManualPlacement
7490 This is the same as
7491 .IR TileCascadePlacement ,
7492 but uses
7493 .IR ManualPlacement
7494 as the fall-back method.
7496 .I MinOverlapPlacement
7497 automatically places new windows in a location in which the
7498 overlapping area in pixels of other windows is minimized.
7499 By default this placement policy tries to avoid
7500 overlapping icons and windows on higher layers.
7501 This can be configured with the
7502 .IR MinOverlapPlacementPenalties
7503 style.
7505 .I MinOverlapPercentPlacement
7506 is similar to
7507 .IR MinOverlapPlacement
7508 but tries to minimize the overlapped percentages of other windows
7509 instead of the overlapped area in pixels.  This placement policy
7510 tries to avoid covering other windows completely and tries even
7511 harder not to cover small windows.
7512 This can be configured with the
7513 .I MinOverlapPlacementPenalties
7515 .I MinOverlapPercentPlacementPenalties
7516 styles.
7518 .I MinOverlapPlacementPenalties
7519 takes at most 6 positive or null decimal arguments:
7521 .I normal ontop icon sticky below strut
7523 if trailing arguments are missing
7524 the default is used which is:
7526 1 5 10 1 0.05 50
7528 This style configures the
7529 .IR MinOverlapPlacement " and " MinOverlapPercentPlacement
7530 placement policy.
7532 .I normal
7533 factor affects normal windows, the
7534 .I ontop
7535 factor affects windows with a greater layer than the window being
7536 placed, the
7537 .I icon
7538 factor affects icons, the
7539 .I sticky
7540 factor affects sticky windows, the
7541 .I below
7542 factor affects windows with a smaller layer than the window being
7543 placed, the
7544 .I strut
7545 factor affects the complement of the EWMH working area if the
7546 window being placed has the
7547 .I EWMHPlacementUseWorkingArea
7548 style and windows with an EWMH strut hint (i.e., a "please don't
7549 not cover me" hint) if the window being placed has the
7550 .I EWMHPlacementUseDynamicWorkingArea
7551 style.  These factors represent the amount of area that these
7552 types of windows (or area) are counted as, when a new window is
7553 placed.  For example, by default the area of ontop windows is
7554 counted 5 times as much as normal windows.  So
7555 .IR MinOverlapPlacement " and "  MinOverlapPercentPlacement
7556 will cover 5 times as much area of another window before it will
7557 cover an ontop window.  To treat ontop windows the same as other
7558 windows, set this to 1.  To really, really avoid putting windows
7559 under ontop windows, set this to a high value, say 1000. This
7560 style affects the window already mapped and not the window which
7561 is currently placed. There is one exception to this rule: in the
7562 case of the window being placed has the
7563 .I EWMHPlacementUseWorkingArea
7564 style the
7565 .I strut
7566 factor affects the placed window.
7568 .I MinOverlapPercentPlacementPenalties
7569 takes at most 4 positive or null integer arguments:
7571 .I cover_100 cover_95 cover_85 cover_75
7573 if trailing arguments are missing the defaults are used
7574 which are:
7576 12 6 4 1
7578 This style affects the
7579 .I MinOverlapPercentPlacement
7580 placement policy and is similar to the
7581 .I MinOverlapPlacementPenalties
7582 style. The
7583 .I cover_xx
7584 factor is used when the window being placed covers at least
7585 .I xx
7586 percent of the window. This factor is added to the factor
7587 determined by the
7588 .IR MinOverlapPlacementPenalties
7589 style.
7591 .I ManualPlacement
7592 (aka active placement). The user is required to place every new
7593 window manually.  The window only shows as a rubber band until a
7594 place is selected manually. The window is placed when a mouse
7595 button or any key except
7596 .SM Escape
7597 is pressed.  Escape aborts manual placement which places the
7598 window in the top left corner of the screen. If mouse button 2 is
7599 pressed during the initial placement of a window (respectively
7600 .SM Shift
7601 and mouse button 1 in case Mwm emulation has been enabled with the
7602 .B Emulate
7603 command), the user is asked to resize the window too.  Pressing
7604 button 3 sets the
7605 .I PlacedByButton3
7606 condition (see
7607 .B Current
7608 command).
7610 Example:
7612 Style * ManualPlacement
7614 *FvwmEvent: PassID
7615 *FvwmEvent: add_window GrowDownFunc
7616 AddToFunc StartFunction
7617 + I FvwmEvent
7619 AddToFunc GrowDownFunc
7620 + I windowid $0 (PlacedByButton3) \\
7621   Resize bottomright keep -0p
7624 Now, whenever a window is created and the user presses button 3 to
7625 finish initial placement, the window is automatically enlarged
7626 until it hits the bottom screen border.
7628 .I Old placement styles
7629 DumbPlacement / SmartPlacement / SmartPlacementOff,
7630 ActivePlacement / RandomPlacement,
7631 ActivePlacementsHonorsStartsOnPage /
7632 ActivePlacementsHonorsStartsOnPageOff, GlobalOpts
7633 SmartPlacementIsReallySmart / GlobalOpts SmartPlacementIsNormal
7634 are still supported but will be removed in the future. The old and
7635 new styles can be translated according to the following table:
7637 GlobalOpts SmartPlacementIsReallySmart
7638 Style * SmartPlacement
7639   -->
7640 Style * SmartPlacement, CleverPlacement
7642 GlobalOpts SmartPlacementIsNormal
7643 Style * SmartPlacement
7644   -->
7645 Style * SmartPlacement, CleverPlacementOff
7647 Style * DumbPlacement, RandomPlacement
7648   -->
7649 Style * CascadePlacement
7651 Style * DumbPlacement, ActivePlacement
7652   -->
7653 Style * ManualPlacement
7655 Style * SmartPlacement, \\
7656 RandomPlacement, CleverPlacementOff
7657   -->
7658 Style * TileCascadePlacement
7660 Style * SmartPlacement, \\
7661 ActivePlacement, CleverPlacementOff
7662   -->
7663 Style * TileManualPlacement
7665 Style * SmartPlacement, CleverPlacement
7666   -->
7667 Style * MinOverlapPlacement
7669 Style * SmartPlacement, \\
7670 ActivePlacement, CleverPlacement
7671   -->
7672 Style * MinOverlapPercentPlacement
7674 Style * ActivePlacementsHonorsStartsOnPage
7675   -->
7676 Style * ManualPlacementsHonorsStartsOnPage
7678 Style * ActivePlacementsHonorsStartsOnPageOff
7679   -->
7680 Style * ManualPlacementsHonorsStartsOnPageOff
7683 .\" +++++++++++++++ placement options and stacking policy
7685 .B Placement policy options and window stacking
7686 .I NoPPosition
7687 instructs fvwm to ignore the program specified position (PPosition
7688 hint) when adding new windows.  Using PPosition is required for
7689 some applications, but if you don't have one of those its a real
7690 headache.  Many programs set PPosition to something obnoxious like
7691 0,0 (upper left corner).
7693 .I NoUSPosition
7694 works like
7695 .I NoPPosition
7696 but applies suppresses using the user specified position indicated
7697 by the program (USPosition hint).  It is generally a bad thing to
7698 override the user's choice, but some applications misuse the
7699 USPosition hint to force their windows to a certain spot on the
7700 screen without the user's consent.
7702 .IR NoTransientPPosition " and " UseTransientPPosition
7703 work like
7704 .IR NoPPosition " and " UsePPosition
7705 but apply only to transient windows.
7707 .I NoIconPosition
7708 instructs fvwm to ignore the program specified icon position
7709 (IconPosition hint) when iconifying the window.
7711 .I StartsOnDesk
7712 takes a numeric argument which is the desktop number on which the
7713 window should be initially placed.  Note that standard Xt programs
7714 can also specify this via a resource (e.g. "-xrm '*Desk: 1'").
7716 .I StartsOnPage
7717 takes 1, 2, or 3 numeric arguments.  If one or three arguments are
7718 given, the first (or only) argument is the desktop number. If
7719 three arguments are given, the 2nd and 3rd arguments identify the
7720 x,y page position on the virtual window.  If two arguments are
7721 given, they specify the page position, and indicate no desk
7722 preference.  If only one argument is given,
7723 .I StartsOnPage
7724 functions exactly like
7725 .IR StartsOnDesk .
7726 For those standard Xt programs which understand this usage, the
7727 starting desk/page can also be specified via a resource (e.g.,
7728 "-xrm '*page: 1 0 2'").
7729 .I StartsOnPage
7730 in conjunction with
7731 .I SkipMapping
7732 is a useful technique when you want to start an app on some other
7733 page and continue with what you were doing, rather than waiting
7734 for it to appear.
7736 .I StartsOnScreen
7737 takes one argument.  It can be 'p' for the primary screen, 'c' for
7738 the current screen (containing the mouse pointer), 'g' for the
7739 global screen or the screen number itself (counting from zero).  A
7740 new window is placed on the specified Xinerama screen.  The
7741 default is to place windows on the screen that contains the mouse
7742 pointer at the time the window is created.  However, those windows
7743 which are not placed by fvwm (i.e., those with a USPosition hint
7744 from a user specified geometry) are normally placed in a position
7745 relative to the global screen.  The
7746 .I StartsOnScreen
7747 style is also useful to cause these windows to be placed relative
7748 to a specific Xinerama screen.  For example:
7750 Style * StartsOnScreen c
7752 Would cause all windows, including those with their own geometry
7753 to be placed relative to the current Xinerama screen rather than
7754 the global screen.  For those standard Xt programs which
7755 understand this usage, the starting desk/page can also be
7756 specified via a resource (e.g., "-xrm '*fvwmscreen: c'").
7757 ('fvwmscreen' was chosen because some applications already use
7758 \'.screen' for other purposes.)
7760 .I StartsOnPageIncludesTransients
7761 causes the
7762 .I StartsOnPage
7763 style to be applied even for transient windows.  This is not
7764 usually useful, since transients are usually pop ups that you want
7765 to appear in your visible viewport; but occasionally an
7766 application uses a transient for something like a startup window
7767 that needs to be coerced into place.
7769 .I ManualPlacementIgnoresStartsOnPage
7770 suppresses
7771 .IR StartsOnPage " or " StartsOnDesk
7772 placement in the event that both
7773 .IR ManualPlacement " and " SkipMapping
7774 are in effect when a window is created.  This prevents you from
7775 interactively placing a window and then wondering where it
7776 disappeared to, because it got placed on a different desk or page.
7777 .I ManualPlacementHonorsStartsOnPage
7778 allows this to happen anyway.  The option has no effect if
7779 .I SkipMapping
7780 is not in effect, because fvwm switches to the proper desk/page to
7781 perform interactive placement.  The default is
7782 .IR ManualPlacementIgnoresStartsOnPage "; "
7783 .I ManualPlacementHonorsStartsOnPage
7784 matches the way the old
7785 .I StartsOnDesk
7786 style used to handle the situation.
7788 .I CaptureHonorsStartsOnPage
7789 causes the initial capture (of an already existing window) at
7790 startup to place the window according to the
7791 .IR StartsOnPage " and " StartsOnScreen
7792 desk, page and Xinerama screen specification.
7793 .I CaptureIgnoresStartsOnPage
7794 causes fvwm to ignore these settings (including
7795 .IR StartsOnDesk )
7796 on initial capture.  The default is
7797 .IR CaptureIgnoresStartsOnPage .
7799 .I RecaptureHonorsStartsOnPage
7800 causes a window to be placed according to, or revert to, the
7801 .IR StartsOnPage " and " StartsOnScreen
7802 desk, page and Xinerama screen specification on
7803 .BR Restart " or " Recapture .
7804 .I RecaptureIgnoresStartsOnPage
7805 causes fvwm to respect the current window position on
7806 .BR Restart " or " Recapture .
7807 The default is
7808 .IR RecaptureIgnoresStartsOnPage .
7810 .I Layer
7811 accepts one optional argument: a non-negative integer.  This is
7812 the layer the window is put in.  If no argument is given, any
7813 previously set value is deleted and the default layer is implied.
7815 .I StaysOnTop
7816 puts the window in the top layer.  This layer can be changed by
7817 the command
7818 .BR DefaultLayers ;
7819 the default is 6.
7821 .I StaysPut
7822 puts the window in the put layer.  This layer can be changed by
7823 the command
7824 .BR DefaultLayers ;
7825 the default is 4.
7827 .I StaysOnBottom
7828 puts the window in the bottom layer.  This layer can be changed by
7829 the command
7830 .BR DefaultLayers ;
7831 the default is 2.
7833 .I StartsLowered
7834 instructs fvwm to put the window initially at the bottom of its
7835 layer rather than the default
7836 .IR StartsRaised .
7838 .I SkipMapping
7839 tells fvwm not to switch to the desk the window is on when it gets
7840 mapped initially (useful with
7841 .IR StartsOnDesk " or " StartsOnPage ).
7843 .I KeepWindowGroupsOnDesk
7844 makes new windows that have the window group hint set appear on
7845 the same desk as the other windows of the same group.  Since this
7846 behavior may be confusing, the default setting is
7847 .IR ScatterWindowGroups .
7848 The window group hint is ignored when placing windows in this
7849 case.
7851 .\" +++++++++++++++ transient windows
7853 .B Transient windows
7854 .I DecorateTransient
7855 causes transient windows, which are normally left undecorated, to
7856 be given the usual fvwm decorations (title bar, buttons,
7857 etc.). Note that some pop-up windows, such as the xterm menus, are
7858 not managed by the window manager and still do not receive
7859 decorations.
7860 .I NakedTransient
7861 (the default) causes transient windows not to be given the
7862 standard decorations. You can only bind keys or mouse buttons to
7863 the sides and the client window of an undecorated window ('S' and
7864 \'W' contexts in bindings, see
7865 .BR Mouse " and " Key
7866 commands).
7868 A window with the
7869 .I RaiseTransient
7870 style that has transient windows raises all its transients when it
7871 is raised.  The
7872 .I DontRaiseTransient
7873 style disables this behavior.  All windows are then treated as if
7874 they had no transients.
7876 A window with the
7877 .I LowerTransient
7878 style that has transient windows lowers all its transients when it
7879 is lowered.  The
7880 .I DontLowerTransient
7881 style disables this behavior.  All windows are then treated as if
7882 they had no transients.
7885 .I StackTransientParent
7886 style augments
7887 .IR RaiseTransient " and " LowerTransient
7888 styles.  Raising a window with
7889 .I StackTransientParent
7890 style transfers the raise action to the main window if the window
7891 being raised is a transient and its main window has
7892 .I RaiseTransient
7893 style; this effect makes raise on a transient act just like raise
7894 on its main - the whole group is raised.  Similar behavior holds
7895 for lowering a whole group of transients when the main has
7896 .I LowerTransient
7897 style.
7898 .I DontStackTransientParent
7899 turns this behavior off.
7900 .I (Dont)StackTransientParent
7901 has no effect if
7902 .IR RaiseTransient " and " LowerTransient
7903 are not used.
7905 A reasonable emulation of Motif raise/lower on transients is
7906 possible like this
7908 Style * RaiseTransient
7909 Style * LowerTransient
7910 Style * StackTransientParent
7913 .\" +++++++++++++++ Extended WM Hints styles
7915 .B Extended Window Manager Hints styles
7916 To understand the used terminology in this sub section, please
7917 read the section
7918 .BR "EXTENDED WINDOW MANAGER HINTS" .
7920 .I EWMHDonateIcon
7921 instructs fvwm to set the application ewmh icon hint with the icon
7922 that is used by fvwm if the application does not provide such hint
7923 (and if the icon used by fvwm is not an icon window).
7924 .I EWMHDonateMiniIcon
7925 does the same thing for mini icons. This allows compliant pager,
7926 taskbar, iconbox ...etc to display the same (mini) icons as
7927 fvwm. Note that on some hardware (e.g., 8-bit displays) these
7928 styles can slow down window mapping and that in general only one
7929 of these styles is needed by a compliant application.
7930 .I EWMHDontDonateIcon
7932 .I EWMHDontDonateMiniIcon
7933 restore the defaults which are to not set any ewmh (mini) icons
7934 hints.
7936 By default, if an application provides an ewmh icon hint of small
7937 size (i.e., height and width less than or equal to 22), then fvwm
7938 uses this icon as its mini icon.
7939 .I EWMHMiniIconOverride
7940 instructs fvwm to ignore ewmh icons and to use the mini icon
7941 provided by the
7942 .I MiniIcon
7943 style.
7944 .I EWMHNoMiniIconOverride
7945 restores the default.
7947 .I EWMHUseStackingOrderHints
7948 causes fvwm to use EWMH hints and respect EWMH hints which change
7949 the window layer.
7950 .I EWMHIgnoreStackingOrderHints
7951 causes fvwm to ignore EWMH layer hints.
7953 An application can ask for some reserved space on the desktop by a
7954 hint.  In the EWMH terminology such a hint is called a strut and
7955 it is used to compute the working area and may be used for window
7956 placement and in the maximize command.
7957 .I EWMHIgnoreStrutHints
7958 causes fvwm to ignore such hints, as
7959 .IR EWMHUseStrutHints ,
7960 causes fvwm to use it which is the default.
7962 .I EWMHIgnoreStateHints
7963 causes fvwm to ignore initial EWMH state hints when a new window
7964 is mapped. The default
7965 .I EWMHUseStateHints
7966 causes fvwm to accept such hints.
7968 .I EWMHMaximizeIgnoreWorkingArea
7969 causes fvwm to ignore the EWMH working area when it executes a
7970 .I Maximize
7971 command. With
7972 .I EWMHMaximizeUseWorkingArea
7973 the EWMH working area is used as with
7974 .I EWMHMaximizeUseDynamicWorkingArea
7975 the EWMH dynamic working area is used (the default).
7977 .I EWMHPlacementIgnoreWorkingArea
7978 causes fvwm to ignore the EWMH working area when it places (or
7979 places again) a window. With
7980 .I EWMHPlacementUseWorkingArea
7981 the EWMH working area is taken in account as with
7982 .I EWMHPlacementUseDynamicWorkingArea
7983 the EWMH dynamic working area is taken in account (the default).
7984 Note that with the
7985 .IR MinOverlapPlacement " and " MinOverlapPercentPlacement
7986 placement policy, the way the EWMH (dynamic) working area is taken
7987 in account is configurable with the
7988 .I MinOverlapPlacementPenalties
7989 style.
7991 .\" +++++++++++++++ miscellaneous
7993 .B Miscellaneous
7995 .IR BackingStore ", " BackingStoreOff " and " BackingStoreWindowDefault
7996 determine if the X server uses backing store for the window or
7997 not.
7998 .I BackingStore
7999 means that the X server tries to keep the obscured parts of a
8000 window in memory.  This is usually slower if the client runs on
8001 the same machine as the X server, but can be much faster if the
8002 connection is slow (see also
8003 .I SaveUnder
8004 below).
8005 .I BackingStoreOff
8006 tells disables backing store for the window.  By default, fvwm
8007 does not enable or disable backing store itself but leaves is as
8008 the window requested it.  To revert back to the application's
8009 choice, use the
8010 .I BackingStoreWindowDefault
8011 style.
8013 Note: This style is useless if the X server does not allow backing
8014 store.
8016 .I SaveUnder
8017 enables the corresponding window attribute in the X server.  For a
8018 window using this style, the X server tries to store the graphics
8019 below it in memory which is usually slower if the client runs on
8020 the same machine as the X server.
8021 .I SaveUnder
8022 may speed up fvwm if the connection to the X server is slow
8023 (e.g. over a modem link).  To disable backing store, use the
8024 .I BackingStoreOff
8025 style.  This is the default. See also
8026 .I BackingStore
8027 above.
8029 Note: This style is useless if the X server does not allow save
8030 under.
8032 .I ParentalRelativity
8033 enables clients that use a background pixmap of type
8034 .IR ParentRelative
8035 to achieve transparency. Fvwm modules that support transparent
8036 colorsets require this setting.
8037 .I Opacity
8038 is the default and should be used for all non-transparent clients
8039 for better performance.
8041 .I MwmDecor
8042 makes fvwm attempt to recognize and respect the mwm decoration
8043 hints that applications occasionally use.  To switch this style
8044 off, use the
8045 .I NoDecorHint
8046 style.
8048 .I MwmFunctions
8049 makes fvwm attempt to recognize and respect the mwm prohibited
8050 operations hints that applications occasionally use.
8051 .I HintOverride
8052 makes fvwm shade out operations that mwm would prohibit, but it
8053 lets you perform the operation anyway.
8054 .I NoFuncHint
8055 allows turns off the mwm hints completely.
8057 .I OLDecor
8058 makes fvwm attempt to recognize and respect the olwm and olvwm
8059 hints that many older XView and OLIT applications use.  Switch
8060 this option off with
8061 .IR NoOLDecor .
8063 With
8064 .I GNOMEIgnoreHints
8065 fvwm ignores all GNOME hints for the window, even if GNOME
8066 compliance is compiled in.  This is useful for those pesky
8067 applications that try to be more clever than the user and use
8068 GNOME hints to force the window manager to ignore the user's
8069 preferences.  The
8070 .I GNOMEUseHints
8071 style switches back to the default behavior.
8073 .I UseDecor
8074 This style is deprecated and will be removed in the future.  There
8075 are plans to replace it with a more flexible solution in fvwm-3.0.
8077 .I UseDecor
8078 accepts one argument: the name of a decor created with
8079 .BR AddToDecor .
8080 If no decor name is specified, the "Default" decor is
8081 used. Windows do not actually contain decors, but are always
8082 assigned to one.  If the decor is later modified with
8083 .BR AddToDecor ,
8084 the changes are visible for all windows which are assigned to it.
8085 The decor for a window can be reassigned with
8086 .BR ChangeDecor .
8088 .I UseStyle
8089 This style is deprecated and will be removed in the future.  There
8090 are plans to replace it with a more flexible solution in fvwm-3.0.
8092 .I UseStyle
8093 takes one arg, which is the name of another style.  That way you
8094 can have unrelated window names easily inherit similar traits
8095 without retyping.  For example:
8097   Style rxvt UseStyle XTerm
8099 Warning: If a style is built from one or more parent styles and
8100 the parent styles are changed, the derived style is not
8101 modified. To achieve this you have to issue the
8102 .I UseStyle
8103 line again.
8105 .I Unmanaged
8106 Windows with the
8107 .I Unmanaged
8108 style option are ignored by fvwm.  They are not decorated, can not
8109 be moved or resized, etc.  You probably want to use
8110 .B Bugopts RaiseOverUnmanaged
8111 too.  This option can be turned off with the
8112 .IR !Unmanaged style .
8113 However, windows that are already ignored at the time when the
8114 option is set must be recaptured with the
8115 .B Recapture
8116 command in order to become managed.
8118 .I State
8119 sets the initial value of of one of the 32 user defined states
8120 which are associated with each window.  The state number ranges
8121 from 0 to 31 and must be given as an argument.  The states have no
8122 meaning in fvwm, but they can be checked in conditional commands
8123 like
8124 .B Next
8125 with the
8126 .I State
8127 condition and manipulated with the
8128 .B State
8129 command.
8131 # turn on state 11 for xterms ...
8132 Style xterm State 11
8133 # ... but not for rxvts.
8134 Style rxvt !State 11
8137 .\" +++++++++++++++ styles affecting window selection
8139 Windows with the
8140 .I WindowListSkip
8141 styles do not appear in the menu that is created with the
8142 .B WindowList
8143 command or the lists shown in several modules like
8144 .BR FvwmIconMan " or " FvwmWinList .
8145 In the modules, the style can usually be ignored with an option.
8146 Please refer to the man pages of the module in question for
8147 further information.  To disable this feature, use the default
8148 style
8149 .IR WindowListHit .
8151 The styles
8152 .IR CirculateSkip " and " CirculateHit
8153 control wheter the window is considered by conditional commands,
8154 for example
8155 .BR Next ", " Prev " or " All .
8156 Windows with
8157 .IR CirculateSkip ,
8158 are never selected by conditional commands.  However, the styles
8159 can be overridden explicitly in the condition with the
8160 .IR CirculateHit ", " CirculateHitIcon " or " CirculateHitShaded
8161 conditions, and some conditional commands, e.g.
8162 .B Current " and " All ,
8163 do this by default.
8164 The styles
8165 .IR CirculateSkipIcon ", " CirculateHitIcon ,
8166 .IR CirculateSkipShaded " and " CirculateHitShaded
8167 work like
8168 .IR CirculateSkip " and " CirculateHit
8169 but apply only to iconic or shaded windows.
8170 Note: if multiple ...Skip... options are combined, windows are
8171 only selected if they match none of the given conditions.  So,
8172 with
8174 Style * CirculateSkipIcon, CirculateSkipShaded
8176 only windows that are neither iconic nor shaded are selecte.
8177 Note:  For historical reasons, the conditional commands understand
8178 the names of these styles as condition names.  Take care no to
8179 confuse them.
8181 .\" +++++++++++++++ examples
8183 .B Examples
8185 # Change default fvwm behavior to no title-
8186 # bars on windows! Also define a default icon.
8187 Style *             NoTitle,               \\
8188                     Icon unknown1.xpm,     \\
8189                     BorderWidth 4,         \\
8190                     HandleWidth 5
8192 # now, window specific changes:
8193 Style Fvwm*       NoHandles, Sticky,       \\
8194                   WindowListSkip,          \\
8195                   BorderWidth 0
8196 Style FvwmPager   StaysOnTop, BorderWidth 0
8197 Style *lock       NoHandles, Sticky,       \\
8198                   StaysOnTop, WindowListSkip
8199 Style xbiff       Sticky, WindowListSkip
8200 Style FvwmButtons NoHandles, Sticky,       \\
8201                   WindowListSkip
8202 Style sxpm        NoHandles
8204 # Put title-bars back on xterms only!
8205 Style xterm     Title, Color black/grey
8207 Style rxvt        Icon term.xpm
8208 Style xterm       Icon rterm.xpm
8209 Style xcalc       Icon xcalc.xpm
8210 Style xbiff       Icon mail1.xpm
8211 Style xmh         Icon mail1.xpm,         \\
8212                     StartsOnDesk 2
8213 Style xman        Icon xman.xpm
8214 Style matlab      Icon math4.xpm,         \\
8215                     StartsOnDesk 3
8216 Style xmag        Icon magnifying_glass2.xpm
8217 Style xgraph      Icon graphs.xpm
8218 Style FvwmButtons Icon toolbox.xpm
8219 Style Maker       StartsOnDesk 1
8220 Style signal      StartsOnDesk 3
8222 # Fire up Netscape on the second desk, in the
8223 # middle of my 3x3 virtual desktop, and don't
8224 # bother me with it...
8225 Style Netscape* SkipMapping,              \\
8226                 StartsOnPage 1 1 1
8228 Note that all properties for a window are or'ed together.  In the
8229 above example "FvwmPager" gets the property
8230 .I StaysOnTop
8231 via an exact window name match but also gets
8232 .IR NoHandles ", " Sticky " and " WindowListSkip
8233 by a match to "Fvwm*".  It gets
8234 .I NoTitle
8235 by virtue of a match to "*".  If conflicting styles are specified
8236 for a window, then the last style specified are used.
8238 If the
8239 .I NoIcon
8240 attribute is set then the specified window simply disappears when
8241 it is iconified.  The window can be recovered through the
8242 window-list.  If
8243 .I Icon
8244 is set without an argument then the
8245 .I NoIcon
8246 attribute is cleared but no icon is specified.  An example which
8247 allows only the FvwmPager module icon to exist:
8249 Style * NoIcon
8250 Style FvwmPager Icon
8254 .BI "WindowStyle " "options"
8255 sets attributes (styles) on the selected window. The
8256 .I options
8257 are exactly the same as for the
8258 .B Style
8259 command.
8261 .SS OTHER COMMANDS CONTROLLING WINDOW STYLES
8264 .B "AddButtonStyle \fIbutton\fP \
8265 [\fIstate\fP\
8266 ] [\fIstyle\fP\
8267 ] [-- [!] \fIflag\fP \
8268 ...]"
8270 Adds a button style to
8271 .IR button .
8272 .I button
8273 can be a button number, or one of "All", "Left" or "Right".
8274 .I state
8275 can be "ActiveUp", "ActiveDown", "InactiveUp" or "InactiveDown",
8276 or "Active" (the same as both "ActiveUp" and "ActiveDown")
8277 or "Inactive" (the same as both "InactiveUp" and "InactiveDown")
8278 or any of these 6 with "Toggled" prepended.
8279 The "Active" states apply to the focussed window, the "Inactive"
8280 ones apply to all other windows. The "Up" states apply to the
8281 non pressed buttons, the "Down" ones apply to pressed buttons.
8282 The "Toggled" prefix refers to maximized, shaded or sticky windows
8283 that have the corresponding
8284 .I MwmDecor...
8285 button style set.
8286 Additionally, the following shotcuts may be used: "AllNormal",
8287 "AllToggled", "AllActive", "AllInactive", "AllUp", "AllDown".
8288 They are actually different masks for 4 individual states from
8289 8 total.  These are supported too: "AllActiveUp", "AllActiveDown",
8290 "AllInactiveUp", "AllInactiveDown".
8293 .I state
8294 is omitted, then the style is added to every state.  If the
8295 .IR style " and " flags
8296 are enclosed in parentheses, then multiple
8297 .I state
8298 definitions can be placed on a single line.
8299 .I Flags
8300 for additional button styles cannot be changed after definition.
8302 Buttons are drawn in the order of definition, beginning with the
8303 most recent button style, followed by those added with
8304 .BR AddButtonStyle .
8305 To clear the button style stack, change style flags, or for
8306 descriptions of available styles and flags, see the
8307 .B ButtonStyle
8308 command.  Examples:
8310 ButtonStyle 1 Pixmap led.xpm -- Top Left
8311 ButtonStyle 1 ActiveDown HGradient 8 grey \\
8312   black
8313 ButtonStyle All --  UseTitleStyle
8314 AddButtonStyle 1 ActiveUp (Pixmap a.xpm)  \\
8315   ActiveDown (Pixmap b.xpm -- Top)
8316 AddButtonStyle 1 Vector 4 50x30@1 70x70@0 \\
8317   30x70@0 50x30@1
8319 Initially for this example all button states are set to a pixmap.
8320 The second line replaces the "ActiveDown" state with a gradient
8321 (it overrides the pixmap assigned to it in the line before, which
8322 assigned the same style to every state).  Then, the
8323 .I UseTitleStyle
8324 flag is set for all buttons, which causes fvwm to draw any styles
8325 set with
8326 .B TitleStyle
8327 before drawing the buttons.  Finally,
8328 .B AddButtonStyle
8329 is used to place additional pixmaps for both "ActiveUp" and
8330 "ActiveDown" states and a vector button style is drawn on top of
8331 all state.
8334 .B "AddTitleStyle [\fIstate\fP\
8335 ] [\fIstyle\fP\
8336 ] [-- [!] \fIflag\fP \
8337 ...]"
8338 Adds a title style to the title-bar.
8339 .I state
8340 can be "ActiveUp", "ActiveDown", "InactiveUp" or "InactiveDown",
8341 or "Active" (the same as both "ActiveUp" and "ActiveDown")
8342 or "Inactive" (the same as both "InactiveUp" and "InactiveDown")
8343 or any of these 6 with "Toggled" prepended.  If
8344 .I state
8345 is omitted, then the style is added to every state.  If the
8346 .IR style " and " flags
8347 are enclosed in parentheses, then multiple
8348 .I state
8349 definitions can be placed on a single line.  This command is quite
8350 similar to the
8351 .B AddButtonStyle
8352 command (see above).
8354 Title-bars are drawn in the order of definition, beginning with
8355 the most recent
8356 .BR TitleStyle ,
8357 followed by those added with
8358 .BR AddTitleStyle .
8359 To clear the title style stack, change style flags, or for the
8360 descriptions of available styles and flags, see the
8361 .BR TitleStyle " and " ButtonStyle
8362 commands.
8365 .BI "AddToDecor " decor
8366 This command is deprecated and will be removed in the future.  There
8367 are plans to replace it with a more flexible solution in fvwm-3.0.
8369 Add or divert commands to the decor named
8370 .IR decor .
8371 A decor is a name given to the set of commands which affect button
8372 styles, title-bar styles and border styles.  If
8373 .I decor
8374 does not exist it is created; otherwise the existing
8375 .I decor
8376 is modified.  Note: Earlier versions allowed to use the
8377 .BR HilightColor ", " HilightColorset " and " WindowFont
8378 commands in decors.  This is no longer possible.  Please use the
8379 .I Style
8380 command with the
8381 .IR Hilight... " and " Font
8382 options.
8384 New decors start out exactly like the "default" decor without any
8385 style definitions.  A given decor may be applied to a set of
8386 windows with the
8387 .I UseDecor
8388 option of the
8389 .B Style
8390 command.  Modifying an existing decor affects all windows which
8391 are currently assigned to it.
8393 .B AddToDecor
8394 is similar in usage to the
8395 .BR AddToMenu " and " AddToFunc
8396 commands, except that menus and functions are replaced by
8397 .BR ButtonStyle ", " AddButtonStyle ", " TitleStyle ,
8398 .BR AddTitleStyle " and " BorderStyle
8399 commands.  Decors created with
8400 .B AddToDecor
8401 can be manipulated with
8402 .BR ChangeDecor ", " DestroyDecor ", " UpdateDecor
8403 and the
8404 .IB "UseDecor " Style
8405 option.
8407 The following example creates a decor "FlatDecor" and style
8408 "FlatStyle".  They are distinct entities:
8410 AddToDecor FlatDecor
8411 + ButtonStyle All \\
8412     Active   (-- flat) \\
8413     Inactive (-- flat)
8414 + TitleStyle  -- flat
8415 + BorderStyle -- HiddenHandles NoInset
8417 Style FlatStyle \\
8418     UseDecor FlatDecor, HandleWidth 4, \\
8419     ForeColor   white, BackColor   grey40, \\
8420     HilightFore black, HilightBack grey70
8422 Style xterm UseStyle FlatStyle
8424 An existing window's decor may be reassigned with
8425 .BR ChangeDecor .
8426 A decor can be destroyed with
8427 .BR DestroyDecor .
8429 DestroyDecor FlatDecor
8430 AddToDecor FlatDecor ...
8432 Style FlatStyle UseDecor FlatDecor
8434 and now apply the style again:
8436 Style xterm UseStyle FlatStyle
8440 .B "BorderStyle [\fIstate\fP\
8441 ] [\fIstyle\fP\
8442 ] [-- [!] \fIflag\fP \
8443 ...]"
8444 Defines a border style for windows.
8445 .I state
8446 can be either "Active" or "Inactive".  If
8447 .I state
8448 is omitted, then the style is set for both states.  If the
8449 .IR style " and " flags
8450 are enclosed in parentheses, then multiple
8451 .I state
8452 definitions can be specified per line.
8454 .I style
8455 is a subset of the available button styles, and can only be
8456 .I TiledPixmap
8457 (uniform pixmaps which match the bevel colors work best this
8458 way) or Colorset. If a
8459 .RI ' ! '
8460 is prefixed to any
8461 .IR flag ,
8462 the behavior is negated.  If
8463 .I style
8464 is not specified, then one can change flags without resetting the
8465 style.
8468 .I HiddenHandles
8469 flag hides the corner handle dividing lines on windows with
8470 handles (this option has no effect for NoHandle windows).  By
8471 default,
8472 .I HiddenHandles
8473 is disabled.
8476 .I NoInset
8477 flag supplements
8478 .IR HiddenHandles .
8479 If given, the inner bevel around the window frame is not drawn.
8481 .I HiddenHandles
8482 is not specified, the frame looks a little strange.
8484 .I Raised
8485 causes a raised relief pattern to be drawn (default).
8486 .I Sunk
8487 causes a sunken relief pattern to be drawn.
8488 .I Flat
8489 inhibits the relief pattern from being drawn.
8491 To decorate the active and inactive window borders with a textured
8492 pixmap, one might specify:
8494 BorderStyle Active TiledPixmap marble.xpm
8495 BorderStyle Inactive TiledPixmap granite.xpm
8496 BorderStyle Active -- HiddenHandles NoInset
8498 To clear the style for both states:
8500 BorderStyle Simple
8502 To clear for a single state:
8504 BorderStyle Active Simple
8506 To unset a flag for a given state:
8508 BorderStyle Inactive -- !NoInset
8510 title-bar buttons can inherit the border style with the
8511 .I UseBorderStyle
8512 flag (see
8513 .BR ButtonStyle ).
8516 .B "ButtonState [\fIActiveDown\fP bool]\
8517  [\fIInactive\fP bool]\
8518  [\fIInactiveDown\fP bool]"
8520 .B ButtonState
8521 command controls which states of the window titles and title
8522 buttons are used.  The default is to use all four states:
8523 "ActiveUp", "ActiveDown", "InactiveUp" and "InactiveDown" (see
8524 .BR ButtonStyle " and " TitleStyle
8525 commands).  The
8526 .I bool
8527 argument after the key word controls if the designated state is
8528 used ("True") or not ("False").  The "ActiveUp" state cannot be
8529 deactivated. If no arguments are provided or the given arguments
8530 are illegal, the default is restored.
8533 .I ActiveDown
8534 argument is "False", no different button style
8535 for the pressed down buttons used, instead "ActiveUp" state is
8536 used even when button is pressed.
8539 .I Inactive
8540 argument is "False", focused and unfocused windows
8541 look similarly, the corresponding "Active" states are always used.
8544 .I InactiveDown
8545 argument is "False" (only applied when
8546 .I Inactive
8547 is "True"), the pressed titles and title buttons in non-focussed
8548 windows are drawn using "InactiveUp" or "ActiveUp" states
8549 depending on the values of the other key words.
8552 .B "ButtonStyle \fIbutton\fP \
8553 [\fIstate\fP\
8554 ] [\fIstyle\fP\
8555 ] [-- [!] \fIflag\fP \
8556 ...]"
8557 Sets the button style for a title-bar button.
8558 .I button
8559 is the title-bar button number between 0 and 9, or one of "All",
8560 "Left", "Right", or "Reset".  Button numbering is described in the
8561 .B Mouse
8562 command section.  If the
8563 .IR style " and " flags
8564 are enclosed in parentheses, then multiple
8565 .I state
8566 definitions can be specified per line.
8568 .I state
8569 refers to which button state should be set.  Button states are
8570 defined as follows: "ActiveUp" and "ActiveDown" refer to the
8571 un-pressed and pressed states for buttons on active windows; while
8572 the "InactiveUp" and "InactiveDown" states denote buttons on
8573 inactive windows.  The shortcut "Active" denotes both "ActiveUp" and
8574 "ActiveDown" states.  Shortcut "Inactive" denotes both "InactiveUp"
8575 and "InactiveDown" states.
8576 The similar state names like just described, but with the "Toggled"
8577 prefix are used instead for title buttons which have one of the
8578 .IR MwmDecorMax ", " MwmDecorShade ", " MwmDecorStick " or " MwmDecorLayer
8579 hints, if the window is maximized, shaded or sticky, respectively.
8581 AddToDecor Default
8582  + ButtonStyle 6                   \\
8583    Vector 4 50x25@1 85x75@0 15x75@0 50x25@1
8584  + ButtonStyle 6 ToggledActiveUp   \\
8585    Vector 4 50x75@0 85x25@1 15x25@0 50x75@0
8586  + ButtonStyle 6 ToggledActiveDown \\
8587    Vector 4 50x75@0 85x25@1 15x25@0 50x75@0
8588  + ButtonStyle 6 ToggledInactive   \\
8589    Vector 4 50x75@0 85x25@1 15x25@0 50x75@0
8590  + ButtonStyle 6 - MwmDecorShade
8591 Mouse 0 6 N WindowShade
8593 Additionally, the following shotcuts may be used: "AllNormal",
8594 "AllToggled", "AllActive", "AllInactive", "AllUp", "AllDown".
8595 They are actually different masks for 4 individual states from
8596 8 total.  These are supported too: "AllActiveUp", "AllActiveDown",
8597 "AllInactiveUp", "AllInactiveDown".
8600 .I state
8601 is specified,
8602 that particular button state is set.  If
8603 .I state
8604 is omitted, every state is set.  Specifying a style destroys the
8605 current style (use
8606 .B AddButtonStyle
8607 to avoid this).
8610 .I style
8611 is omitted, then state-dependent flags can be set for the primary
8612 button style without destroying the current style.  Examples (each
8613 line should be considered independent):
8615 ButtonStyle Left -- flat
8616 ButtonStyle All ActiveUp (-- flat) \\
8617   Inactive (-- flat)
8619 The first line sets every state of the left buttons to flat, while
8620 the second sets only the "ActiveUp" and "Inactive" states of every
8621 button to flat (only flags are changed; the buttons' individual
8622 styles are not changed).
8624 If you want to reset all buttons to their defaults:
8626 ButtonStyle Reset
8628 To reset the "ActiveUp" button state of button 1 to the default:
8630 ButtonStyle 1 ActiveUp Default
8632 To reset all button states of button 1 to the default of
8633 button number 2:
8635 ButtonStyle 1 Default 2
8637 For any button, multiple
8638 .I state
8639 definitions can be given on one line by enclosing the
8640 .IR style " and " flags
8641 in parentheses.  If only one definition per line is given the
8642 parentheses can be omitted.
8644 .I flags
8645 affect the specified
8646 .IR state .
8647 If a
8648 .RI ' ! '
8649 is prefixed to any
8650 .IR flag ,
8651 its behavior is negated.  The available state-dependent flags for
8652 all styles are described here (the
8653 .B ButtonStyle
8654 entry deals with state-independent flags).
8656 .I Raised
8657 causes a raised relief pattern to be drawn.
8659 .I Sunk
8660 causes a sunken relief pattern to be drawn.
8662 .I Flat
8663 inhibits the relief pattern from being drawn.
8665 .I UseTitleStyle
8666 causes the given button state to render the current title style
8667 before rendering the buttons own styles.  The
8668 .IR Raised ", " Flat " and " Sunk
8669 .B TitleStyle
8670 flags are ignored since they are redundant in this context.
8672 .I UseBorderStyle
8673 causes the button to inherit the decorated
8674 .B BorderStyle
8675 options.
8677 .IR Raised ", " Sunk " and " Flat
8678 are mutually exclusive, and can be specified for the initial
8679 .B ButtonStyle
8680 only.
8681 .IR UseTitleStyle " and " UseBorderStyle
8682 are also mutually exclusive (both can be off however).  The
8683 default is
8684 .I Raised
8685 with both
8686 .I UseBorderStyle " and " UseTitleStyle
8687 left unset.
8689 .I Important note
8690 for the "ActiveDown" and "InactiveDown" states:  When a button is
8691 pressed, the relief is inverted.  Because of this, to obtain the
8692 raised look in "ActiveDown" or "InactiveDown" states you must
8693 specify the opposite of the desired relief (i.e.
8694 .I Sunk
8695 for "ActiveDown" or "InactiveDown").  This behavior is consistent,
8696 but may seem confusing at first.  The same applies to the
8697 "Toggled" states.
8699 Button styles are classified as non-destructive, partially
8700 destructive, or fully destructive.  Non-destructive styles do not
8701 affect the image. Partially destructive styles can obscure some or
8702 all parts of the underlying image (i.e.
8703 .IR Pixmap ).
8704 Fully destructive styles obscure the entire underlying image (i.e.
8705 .I Solid
8706 or one of the
8707 .I gradient
8708 styles).  Thus, if stacking styles with
8709 .BR AddButtonStyle " (or " AddTitleStyle
8710 for title-bars), use care in sequencing styles to minimize redraw.
8712 The available styles are:
8714 .IR Simple ", " Default ", " Solid ", " Colorset ", " Vector ,
8715 .IR ?Gradient ", " Pixmap ", " AdjustedPixmap ,
8716 .IR ShrunkPixmap ", " StretchedPixmap ", " TiledPixmap ", " MiniIcon
8718 The description of these styles and their arguments follow:
8721 .I Simple
8722 style does nothing.  There are no arguments, and this style is an
8723 example of a non-destructive button style.
8726 .I Default
8727 style conditionally accepts one argument: a number which specifies
8728 the default button number to load.  If the style command given is
8729 .BR ButtonStyle " or " AddButtonStyle ,
8730 the argument is optional (if given, it overrides the current button).
8731 If a command other than
8732 .BR ButtonStyle " or " AddButtonStyle
8733 is used, the number must be specified.
8736 .I Solid
8737 style fills the button with a solid color.  The relief border
8738 color is not affected.  The color is specified as a single
8739 argument.  This style is fully destructive.
8742 .IR Colorset " " cs " [" alpha "]"
8743 style fills the button with the Colorset
8744 .IR cs .
8745 The optional
8746 .I alpha
8747 argument is a percentage between 0 and 100. It causes fvwm to
8748 merge the colorset background onto the button using this
8749 percentage. If the percentage is 0 the colorset background is
8750 hidden and if it is 100 the colorset background is fully
8751 applied. The default is 100. So, the destructivity depends on the
8752 .I alpha
8753 argument.
8756 .I "Vector num"
8757 .IB X [ offset p]x Y [ offset p]@ C " ..."
8758 style draws a line pattern.  Since this is a standard button style,
8759 the keyword
8760 .I Vector
8761 is optional,
8762 .I num
8763 is a number of point specifications of the form
8764 .IB X [ offset p]x Y [ offset p]@ C " ..."
8765 .IR X " and " Y
8766 are point coordinates inside the button, given in percents
8767 (from 0 to 100).  An optional absolute
8768 .I offset
8769 in pixels, can be given as "+<offset>p" for a positive or
8770 "-<offset>p" for a negative offset.
8772 .I C
8773 specifies a line color (0 - the shadow color, 1 - the highlight
8774 color, 2 - the background color, 3 - the foreground color, 4 -
8775 only move the point, do not draw).  The first point color is not
8776 used.  You can use up to 10000 points in a line pattern.  This
8777 style is partially destructive.
8779 The specification is a little cumbersome:
8781 ButtonStyle 2 Vector 4 50x30@1 70x70@0 \\
8782   30x70@0 50x30@1
8784 then the button 2 decoration uses a 4-point pattern consisting of
8785 a line from (x=50,y=30) to (70,70) in the shadow color (@0), and
8786 then to (30,70) in the shadow color, and finally to (50,30) in the
8787 highlight color (@1).  Is that too confusing?  See the fvwm web
8788 pages for some examples with screenshots.
8790 A more complex example of
8791 .IR Vector :
8793 ButtonStyle 8 Vector 10 45x65@2 45x75@3 \\
8794   20x75@3 20x50@3 35x50@3 35x65@1 35x25@1 \\
8795   75x25@1 75x65@0 35x65@0
8796 ButtonStyle 0 Vector 10 45x65@2 45x75@0 \\
8797   20x75@0 20x50@1 45x50@1 45x65@0 75x65@3 \\
8798   75x25@3 35x25@3 35x47@3
8801 .I ?Gradient
8802 styles denote color gradients.  Fill in the question mark with any
8803 one of the defined gradient types.  Please refer to the
8804 .B COLOR GRADIENTS
8805 section for a description of the gradient syntax.  The gradient
8806 styles are fully destructive.
8809 .I Pixmap
8810 style displays a pixmap.  A pixmap should be specified as an
8811 argument.  For example, the following would give button number 2
8812 the same pixmap for all 4 states (2 active and 2 inactive), and
8813 button number 4 all different pixmaps.
8815 ButtonStyle 2 Pixmap my_pixmap.xpm
8816 ButtonStyle 4 \\
8817   ActiveUp   (Pixmap activeup.xpm) \\
8818   ActiveDown (Pixmap activedown.xpm) \\
8819   Inactive   (Pixmap inactiveup.xpm)
8820 ButtonStyle 4 \\
8821   InactiveDown Pixmap inactivedown.xpm
8823 The pixmap specification can be given as an absolute or relative
8824 pathname (see
8825 .BR ImagePath ).
8826 If the pixmap cannot be found, the button style reverts to
8827 .IR Simple .
8828 Flags specific to the
8829 .I Pixmap
8830 style are
8831 .IR Left ", " Right ", "
8832 .IR Top ", and " Bottom .
8833 These can be used to justify the pixmap (default is centered for
8834 both directions).  Pixmap transparency is used for the color
8835 "None."  This style is partially destructive.
8838 .I AdjustedPixmap
8839 style is similar to the
8840 .I Pixmap
8841 style. But the image is resized to exactly fit the button.
8844 .I ShrunkPixmap
8845 style is similar to the
8846 .I Pixmap
8847 style. But if the image is bigger than the button the image is
8848 resized to fit into the button.
8851 .I StretchedPixmap
8852 style is similar to the
8853 .I Pixmap
8854 style. But if the image is smaller than the button the image is
8855 resized to cover the button.
8858 .I TiledPixmap
8859 style accepts a pixmap to be tiled as the button background. One
8860 pixmap is specified as an argument.  Pixmap transparency is not
8861 used.  This style is fully destructive.
8864 .I MiniIcon
8865 style draws the window's miniature icon in the button, which is
8866 specified with the
8867 .I MiniIcon
8868 option of the
8869 .B Style
8870 command.  This button style accepts no arguments.  Example:
8872 Style *     MiniIcon mini-bx2.xpm
8873 Style xterm MiniIcon mini-term.xpm
8874 Style Emacs MiniIcon mini-doc.xpm
8876 ButtonStyle 1 MiniIcon
8881 .BI "ButtonStyle " button " - [!]" flag " ..."
8882 Sets state-independent flags for the specified
8883 .IR button .
8884 State-independent flags affect button behavior.  Each
8885 .I flag
8886 is separated by a space.  If a
8887 .RI ' ! '
8888 is prefixed to the flag then the behavior is negated.  The special
8889 flag
8890 .I Clear
8891 clears any existing flags.
8893 The following flags are usually used to tell fvwm which buttons
8894 should be affected by mwm function hints (see
8895 .I MwmFunctions
8896 option of the
8897 .B Style
8898 command.  This is not done automatically since you might have
8899 buttons bound to complex functions, for instance.
8901 .I MwmDecorMenu
8902 should be assigned to title-bar buttons which display a menu.  The
8903 default assignment is the leftmost button.  When a window with the
8904 .I MwmFunctions
8905 .B Style
8906 option requests not to show this button, it is hidden.
8908 .I MwmDecorMin
8909 should be assigned to title-bar buttons which minimize or iconify
8910 the window.  The default assignment is the second button over from
8911 the rightmost button.  When a window with the
8912 .I MwmFunctions
8913 .B Style
8914 option requests not to show this button, it is hidden.
8916 .I MwmDecorMax
8917 should be assigned to title-bar buttons which maximize the
8918 window. The default assignment is the rightmost button.  When a
8919 window with the
8920 .I MwmFunctions
8921 .B Style
8922 option requests not to show this button, it is hidden.  When the
8923 window is maximized, the vector pattern on the button looks
8924 pressed in.
8926 .I MwmDecorShade
8927 should be assigned to title-bar buttons which shade the window
8928 (see
8929 .B WindowShade
8930 command).  When the window is shaded, the vector pattern on the
8931 button looks pressed in.
8933 .I MwmDecorStick
8934 should be assigned to title-bar buttons which make the window
8935 sticky. When the window is sticky, the vector pattern on the
8936 button looks pressed in.
8938 The flag
8939 .IB "MwmDecorLayer " layer
8940 should be assigned to title-bar buttons which place the window in
8941 the layer numbered
8942 .BR layer .
8943 When the window is on that specific layer, the vector pattern on
8944 the button looks pressed in.
8947 .BI "ChangeDecor " decor
8948 This command is deprecated and will be removed in the future.  There
8949 are plans to replace it with a more flexible solution in fvwm-3.0.
8951 Changes the decor of a window to
8952 .IR decor .
8953 .I decor
8954 is "Default" or the name of a decor defined with
8955 .BR AddToDecor .
8957 .I decor
8958 is invalid, nothing occurs.  If called from somewhere in a window
8959 or its border, then that window is affected.  If called from the
8960 root window the user is allowed to select the target window.
8961 .B ChangeDecor
8962 only affects attributes which can be set using the
8963 .B AddToDecor
8964 command.
8966 ChangeDecor CustomDecor1
8970 .BI "DestroyDecor [" recreate "] " decor
8971 This command is deprecated and will be removed in the future.  There
8972 are plans to replace it with a more flexible solution in fvwm-3.0.
8974 Deletes the
8975 .I decor
8976 defined with
8977 .BR AddToDecor ,
8978 so that subsequent references to it are no longer valid.  Windows
8979 using this
8980 .I decor
8981 revert to the "Default" decor. The optional parameter
8982 .I recreate
8983 tells fvwm not to throw away the decor completely but to throw
8984 away only its contents. If the decor is created again later,
8985 windows do not use it before the
8986 .I UseDecor
8987 style is applied again unless the decor was destroyed with the
8988 .I recreate
8989 option.  The decor named "Default" cannot be destroyed.
8991 DestroyDecor CustomDecor1
8995 .BI "TitleStyle [" justification "] [" Height " [" num "]] [" MinHeight " [" num "]]"
8996 Sets attributes for the title-bar.  Justifications can be
8997 .IR Centered ", " RightJustified " or " LeftJustified .
8998 .I Height
8999 sets the title bar's height to an amount in pixels.
9000 .I MinHeight
9001 sets the minimal height in pixels of the title bar's.
9002 Defaults are
9003 .IR Centered ,
9004 the window's font height and no minimal height.
9005 To reset the font height to the
9006 default value, omit the
9007 .I num
9008 argument after the
9009 .I Height
9010 keyword. The
9011 .I MinHeight
9012 height is reseted by
9013 .I Height
9014 or if given with no argument.
9015 is Example:
9017 TitleStyle LeftJustified Height 24
9021 .B "TitleStyle [\fIstate\fP\
9022 ] [\fIstyle\fP\
9023 ] [-- [!] \fIflag\fP \
9024 ...]"
9025 Sets the style for the title-bar.
9026 See also
9027 .BR AddTitleStyle " and " ButtonStyle .
9028 .I state
9029 can be one of "ActiveUp", "ActiveDown", "InactiveUp",
9030 or "InactiveDown".  Shortcuts like "Active" and "Inactive" are
9031 allowed.  The states with the "Toggled" prefix are allowed too,
9032 the title itself does not use "Toggled" states, but these states
9033 are used for the buttons with
9034 .B ButtonStyle
9035 .IR UseTitleStyle .
9037 .I state
9038 is omitted, then the
9039 .I style
9040 is added to every state.  If parentheses are placed around the
9041 .IR style " and " flags ,
9042 then multiple state definitions can be given per line.
9043 .I style
9044 can be omitted so that flags can be set while not destroying the
9045 current style.
9047 If a
9048 .RI ' ! '
9049 is prefixed to any
9050 .IR flag ,
9051 its behavior is negated.  Valid flags for each state include
9052 .IR Raised ", " Flat " and " Sunk
9053 (these are mutually exclusive).  The default is
9054 .IR Raised .
9055 See the note in
9056 .B ButtonStyle
9057 regarding the "ActiveDown" state.  Examples:
9059 TitleStyle ActiveUp HGradient 16 navy black
9060 TitleStyle ActiveDown (Solid red -- flat) \\
9061     Inactive (TiledPixmap wood.xpm)
9062 TitleStyle ActiveUp (-- Flat) ActiveDown  \\
9063     (-- Raised) InactiveUp (-- Flat) \\
9064     InactiveDown (-- Sunk)
9066 This sets the "ActiveUp" state to a horizontal gradient, the
9067 "ActiveDown" state to solid red, and the "Inactive" states to a
9068 tiled wood pixmap. Finally, "ActiveUp" and "InactiveUp" are set
9069 to look flat, while "ActiveDown" set to be sunk (the
9070 .I Raised
9071 flag for the "ActiveDown" state causes it to appear sunk due to
9072 relief inversion), and "InactiveDown" is set to look raised. An
9073 example which sets flags for all states:
9075 TitleStyle -- flat
9077 For a flattened look:
9079 TitleStyle -- flat
9080 ButtonStyle All Active (-- flat) Inactive (-- flat)
9083 .B TitleStyle
9084 accepts all the
9085 .B ButtonStyle
9086  styles and arguments:
9088 .IR Simple ", " Default ", " Solid ", " Colorset ", " Vector ,
9089 .IR ?Gradient ", " Pixmap ", " AdjustedPixmap ,
9090 .IR ShrunkPixmap ", " StretchedPixmap ", " TiledPixmap ", " MiniIcon  .
9092 See the
9093 .B ButtonStyle
9094 command for a description of all these styles and their arguments.
9096 In addition to these styles
9097 .B TitleStyle
9098 accepts a powerful
9099 .B MultiPixmap
9100 option. This allows you to specify different pixmaps, colorsets or
9101 colors for different parts of the titlebar. Some of them are tiled or
9102 stretched to fit a particular space; others are discrete "transition"
9103 images. The definable
9104 .I sections
9105 are:
9107 .I Main
9108   The full titlebar
9109 .I LeftMain
9110   Left of title text
9111 .I RightMain
9112   Right of title text
9113 .I UnderText
9114   Underneath title text
9115 .I LeftOfText
9116   just to the left of the title text
9117 .I RightOfText
9118   just to the right of the title text
9119 .I LeftEnd
9120   at the far left end of the titlebar
9121   (just after left buttons if any)
9122 .I RightEnd
9123   at the far right end of the titlebar
9124   (just before right buttons if any)
9125 .I Buttons
9126   under buttons in case of UseTitleStyle
9127 .I LeftButtons
9128   under left buttons in case of UseTitleStyle
9129 .I RightButtons
9130   under right buttons in case of UseTitleStyle
9132 None of these are mandatory except for
9133 .I Main
9134 (or, if you don't define
9135 .IR Main ,
9136 you must define both
9137 .IR LeftMain " and " RightMain ")."
9138 If no
9139 .I Buttons
9140 pixmaps are defined and
9141 .I UseTitleStyle
9142 is specified for one or more buttons,
9143 .IR Main ", " LeftMain ", or " RightMain
9144 are used as appropriate.
9146 The syntax for this style type is:
9148 MultiPixmap section style arg, ...
9150 continuing for whatever you want to define. The
9151 .I style
9152 can be either
9153 .IR TiledPixmap ", " AdjustedPixmap ", " Colorset " or " Solid .
9154 See the
9155 .B ButtonStyle
9156 command for the description of these styles.
9157 In the case of a transition section,
9158 .IR LeftEnd ", " LeftOfText ", " RightOfText " or " RightEnd ","
9159 .I AdjustedPixmap
9160 only resize the pixmap in the "y" direction. For the
9161 .IR Colorset " and " Solid
9162 styles a width of the half of the title bar height is assumed
9163 for the transition sections.
9165 An example:
9167 MultiPixmap Main AdjustedPixmap foo.xpm, \\
9168             UnderText TiledPixmap bar.xpm, \\
9169             Buttons Colorset 2
9171 Note that the old syntax is still supported: if the style is omitted,
9172 .I TiledPixmap
9173 is assumed and adding "(stretched)" between the section and the
9174 file name implies
9175 .IR AdjustedPixmap .
9178 .BI "UpdateDecor " [ "decor" ]
9179 This command is deprecated and will be removed in the future.  There
9180 are plans to replace it with a more flexible solution in fvwm-3.0.
9182 This command is kept mainly for backward compatibility.  Since
9183 all elements of a decor are updated immediately when they are
9184 changed, this command is mostly useless.
9186 Updates window decorations.
9187 .I decor
9188 is an optional argument which specifies the
9189 .I decor
9190 to update.  If given, only windows which are assigned to that
9191 particular
9192 .I decor
9193 are updated.  This command is useful, for instance, after a
9194 .BR ButtonStyle ", " TitleStyle " or " BorderStyle
9195 (possibly used in conjunction with
9196 .BR AddToDecor ).
9197 Specifying an invalid decor results in all windows being
9198 updated.  This command is less disturbing than
9199 .BR Recapture ,
9200 but does not affect window style options as
9201 .B Recapture
9202 does.
9205 .SS COMMANDS CONTROLLING THE VIRTUAL DESKTOP
9208 .B "Desk \fIarg1\fP \
9209 [\fIarg2\fP\
9210 ] [\fImin max\fP\
9212 This command has been renamed.  Please see
9213 .B GotoDesk
9214 command.
9217 .BI "DesktopName " desk name
9218 Defines the name of the desktop number
9219 .I desk
9221 .I name .
9222 This name is used in the
9223 .B WindowList
9224 command and in the
9225 .B FvwmPager
9226 where it override the
9227 .I Label
9228 configuration option. Moreover, if consecutive names starting from
9229 desktop 0 are defined, then these names can be used by any EWMH
9230 compliant application (as a pager).
9233 .BI "DeskTopSize " Horizontal x Vertical
9234 Defines the virtual desktop size in units of the physical screen
9235 size.
9238 .BI "EdgeResistance " "scrolling moving " [ "xinerama-moving" ]
9239 Tells how hard it should be to change the desktop viewport by
9240 moving the mouse over the edge of the screen and how hard it
9241 should be to move a window over the edge of the screen.
9243 The first parameter tells how many milliseconds the pointer must
9244 spend on the screen edge before fvwm moves the viewport.  This is
9245 intended for people who use
9247 EdgeScroll 100 100
9249 but find themselves accidentally flipping pages when they don't
9250 want to.
9252 The second parameter tells how many pixels over the edge of the
9253 screen a window's edge must move before it actually moves
9254 partially off the screen.  By default the viewport is moved a full
9255 page in the requested direction, but if you used
9256 .B EdgeScroll
9257 and set any values other than zero they is used instead.
9259 Note that, with
9261 EdgeScroll 0 0
9263 it is still possible to move or resize windows across the edge of
9264 the current screen.  By making the first parameter to
9265 .B EdgeResistance
9266 10000 this type of motion is impossible.  With
9267 .B EdgeResistance
9268 less than 10000 but greater than 0 moving over pages becomes
9269 difficult but not impossible.  See also
9270 .BR EdgeThickness .
9272 The optional third parameter does the same as the second, but for
9273 individual Xinerama screens.  If omitted,
9274 .I xinerama-moving
9275 will be set to the value of
9276 .IR moving .
9278 .I xinerama-moving
9279 to zero to ignore individual screen edges.  Note that the center of
9280 the window being moved determines the xinarema screen on which the
9281 window should be kept.
9284 .BI "EdgeScroll " horizontal "[" p "] " vertical "[" p "]"
9285 Specifies the percentage of a page to scroll when the cursor hits
9286 the edge of a page.  A trailing
9287 .RI ' p '
9288 changes the interpretation to mean pixels.  If you don't want any
9289 paging or scrolling when you hit the edge of a page include
9291 EdgeScroll 0 0
9293 in your
9294 .I config
9295 file, or possibly better, set the
9296 .B EdgeThickness
9297 to zero.  See the
9298 .B EdgeThickness
9299 command. If you want whole pages, use
9301 EdgeScroll 100 100
9303 Both
9304 .IR horizontal " and " vertical
9305 should be positive numbers.
9307 If the
9308 .IR horizontal " and " vertical
9309 percentages are multiplied by 1000 then scrolling wraps around at
9310 the edge of the desktop.  If
9312 EdgeScroll 100000 100000
9314 is used fvwm scrolls by whole pages, wrapping around at the edge
9315 of the desktop.
9318 .BI "EdgeThickness " 0 | 1 | 2
9319 This is the width or height of the invisible window that fvwm
9320 creates on the edges of the screen that are used for the edge
9321 scrolling feature.
9323 In order to enable page scrolling via the mouse, four windows
9324 called the "pan frames" are placed at the very edge of the
9325 screen. This is how fvwm detects the mouse's presence at the
9326 window edge. Because of the way this works, they need to be at the
9327 top of the stack and eat mouse events, so if you have any kind of
9328 error along the lines of: "mouse clicks at the edge of the screen
9329 do the wrong thing" you're having trouble with the pan frames and
9330 (assuming you don't use the mouse to flip between pages) should
9331 set the EdgeThickness to 0.
9333 A value of
9334 .I 0
9335 completely disables mouse edge scrolling, even while dragging a
9336 window.
9337 .I 1
9338 gives the smallest pan frames, which seem to work best except on
9339 some servers.
9341 .I 2
9342 is the default.
9344 Pan frames of
9345 .IR 1 " or " 2
9346 pixels can sometimes be confusing, for example, if you drag a
9347 window over the edge of the screen, so that it straddles a pan
9348 frame, clicks on the window, near the edge of the screen are
9349 treated as clicks on the root window.
9352 .BI "EwmhBaseStruts " left " " right " " top " " bottom
9353 Where left, right, top and bottom are positive or null integers
9354 which define bands at the edge of the screen.
9355 .I left
9356 defines a band on the left of your screen of width
9357 .IR left ","
9358 .I right
9359 defines a band on the right of your screen of width
9360 .IR right ","
9361 .I top
9362 defines a band on the top of your screen of height
9363 .I top
9365 .I bottom
9366 defines a band on the bottom of your screen of height
9367 .IR bottom "."
9368 The unit is the pixel and the default is 0 0 0 0.  These areas
9369 define additional reserved space to the reserved space defined by
9370 some ewmh compliant applications. This is used to compute the
9371 Working Area. See the
9372 .B EXTENDED WINDOW MANAGER HINTS
9373 section for a definition of the Working Area.
9376 .BI "EWMHNumberOfDesktops " num "  [" max "]"
9377 This command is useful only for an ewmh compliant pager or taskbar
9378 (as kpager or kicker taskbar) and not for fvwm modules (FvwmPager
9379 or FvwmIconMan). It causes a compliant application to consider at
9380 least
9381 .I num
9382 desktops (desktop 0 to desktop
9383 .IR num "-1)."
9384 The optional argument
9385 .I max
9386 causes a compliant application to never consider more than
9387 .I max
9388 desktops. If
9389 .I max
9390 is 0 (the default) there is no limitation.  The actual number of
9391 desktops is determined dynamically.  It is at least
9392 .IR num ","
9393 but it can be d if there is a window on desktop d-1 (or if the
9394 current desktop is desktop d-1) and d is less or equal to
9395 .I max
9397 .I max
9398 is null.
9399 Moreover, a compliant pager can ask to change
9400 .I num
9401 itself.
9402 This is accepted by fvwm only if this number is
9403 less than or equal to
9404 .I max
9405 or if
9406 .I max
9407 is null.  Note that negative desktops are not supported by the
9408 ewmh specification.  The default is 4 0.
9411 .B "GotoDesk \fIprev\fP \
9412 | \fIarg1\fP \
9413 [\fIarg2\fP\
9414 ] [\fImin max\fP\
9416 Switches the current viewport to another desktop (workspace,
9417 room).
9419 The command takes 1, 2, 3, or 4 arguments.  A single argument is
9420 interpreted as a relative desk number.  Two arguments are
9421 understood as a relative and an absolute desk number.  Three
9422 arguments specify a relative desk and the minimum and maximum of
9423 the allowable range. Four arguments specify the relative,
9424 absolute, minimum and maximum values.  (Desktop numbers can be
9425 negative).  If a literal
9426 .I prev
9427 is given as the single argument, the last visited desk number is
9428 used.
9431 .I arg1
9432 is non zero then the next desktop number is the current desktop
9433 number plus
9434 .IR arg1 .
9437 .I arg1
9438 is zero then the new desktop number is
9439 .IR arg2 .
9441 .I arg2
9442 is not present, then the command has no effect.)
9445 .IR min " and " max
9446 are given, the new desktop number is no smaller than
9447 .I min
9448 and no bigger than
9449 .IR max .
9450 Values out of this range are truncated (if you gave an absolute
9451 desk number) or wrapped around (if you gave a relative desk
9452 number).
9454 The syntax is the same as for
9455 .BR MoveToDesk ,
9456 which moves a window to a different desktop.
9458 The number of active desktops is determined dynamically.  Only
9459 desktops which contain windows or are currently being displayed
9460 are active.  Desktop numbers must be between 2147483647 and
9461 -2147483648 (is that enough?).
9464 .BI "GotoDeskAndPage " prev " | " "desk xpage ypage"
9465 Switches the current viewport to another desktop and page, similar
9466 to the
9467 .BR GotoDesk " and " GotoPage
9468 commands.  The new desk is
9469 .I desk
9470 and the new page is
9471 .RI ( xpage , ypage ).
9474 .B "GotoPage \fIprev\fP \
9475 | [\fIoptions\fP] \
9476 \fIx\fP \
9477 [\fIp\fP\
9478 ] \fIy\fP \
9479 [\fIp\fP\
9481 Moves the desktop viewport to page (x,y).  The upper left page is
9482 (0,0), the upper right is (M,0), where M is one less than the
9483 current number of horizontal pages specified in the
9484 .B DeskTopSize
9485 command.  The lower left page is (0,N), and the lower right page
9486 is (M,N), where N is the desktop's vertical size as specified in
9488 .B DeskTopSize
9489 command.  To switch to a page relative to the current one add a
9490 trailing
9491 .RI ' p '
9492 after any or both numerical arguments.
9494 Possible
9495 .I options
9497 .IR wrapx " and " wrapy
9498 to wrap around the x or y coordinate when the viewport is moved
9499 beyond the border of the desktop.
9501 To go to the last visited page use
9502 .I prev
9503 as the first argument.  The
9504 .B GotoPage
9505 function should not be used in a pop-up menu.
9507 Examples:
9509 # Go to page (2,3)
9510 GotoPage 2 3
9512 # Go to lowest and rightmost page
9513 GotoPage -1 -1
9515 # Go to last page visited
9516 GotoPage prev
9518 # Go two pages to the right and one page up
9519 GotoPage +2p -1p
9523 .B "Scroll \fIhorizonal\fP \
9524 [\fIp\fP\
9525 ] \fIvertical\fP \
9526 [\fIp\fP\
9528 Scrolls the virtual desktop's viewport by
9529 .I horizontal
9530 pages in the x-direction and
9531 .I vertical
9532 pages in the y-direction.  Either or both entries may be negative.
9533 Both
9534 .IR horizontal " and " vertical
9535 values are expressed in percent of pages, so
9537 Scroll 100 100
9539 means to scroll down and left by one full page.
9541 Scroll 50 25
9543 means to scroll left half a page and down a quarter of a page.
9545 .B Scroll
9546 function should not be called from pop-up menus.  Normally,
9547 scrolling stops at the edge of the desktop.
9549 If the
9550 .IR horizontal " and " vertical
9551 percentages are multiplied by 1000 then scrolling wraps around at
9552 the edge of the desktop.  If
9554 Scroll 100000 0
9556 is executed over and over fvwm moves to the next desktop page on
9557 each execution and wraps around at the edge of the desktop, so
9558 that every page is hit in turn.
9560 If the letter
9561 .RI ' p '
9562 is appended to each coordinate
9563 .RI ( horizontal " and/or " vertical ),
9564 then the scroll amount is measured in pixels.
9567 .BI "Xinerama " bool
9568 Enables Xinerama support if the boolean argument is true and
9569 disables it if the argument is false.  Calling this command
9570 without arguments turns on Xinerama support it was disabled before
9571 and turns it off if it was enabled.  For example:
9573 # Turn Xinerama support on, use primary screen 2
9574 XineramaPrimaryScreen 2
9575 Xinerama on
9576 #Turn it off again
9577 Xinerama off
9581 .BI "XineramaPrimaryScreen [" primary-screen "]"
9582 Takes an integer number or 'g' or 'c' as its argument.  A number
9583 is taken as the number of the Xinerama screen that is to be used
9584 as the primary screen.  The primary screen can be used as the
9585 preferred screen to place windows with
9587 XineramaPrimaryScreen <screen number>
9588 Style * StartsOnScreen p
9590 The primary screen is used in some of the modules and for the
9591 default icon box too.  Any number that is zero or more is taken as
9592 the primary screen's number.  Instead, the letter 'c' indicates to
9593 use the current screen (containing the pointer) whenever the
9594 primary screen is used.  This may be very confusing under some
9595 circumstances.  With \'g', the global screen is used as the primary
9596 screen, effectively disabling the primary screen.  Calling this
9597 function with any other argument (including none) resets the
9598 primary screen to 0.
9601 .BI "XineramaSls [" bool "]"
9602 For multi-screen implementations other than Xinerama, such as
9603 Single Logical Screen, it is possible to simulate a Xinerama
9604 configuration if the total screen seen by fvwm is made up of
9605 equal sized monitors in a rectangular grid.  The
9606 .B XineramaSls
9607 command turns SLS support on or off or toggles it to the opposite
9608 state, depending on if the boolean argument is "True", "False" or
9609 "toggle".  If no argument is given, this is treated like "toggle".
9610 The default layout uses 1 by one screens.  To configure the
9611 layout, use the
9612 .BR XineramaSlsSize " or " XineramaSlsScreens
9613 command.
9616 .BI "XineramaSlsSize " Horizontal x Vertical
9617 This command configures the layout of the Single Logical screen
9618 feature.  It takes two arguments,
9619 .IR Horizontal " and " Vertical
9620 which must be an integer value dividing evenly into the total
9621 desktop width, and height height.  For an example with two
9622 monitors side by side which appear as one screen through the
9623 X-Server with the right screen as the primary screen, use:
9625 XineramaSlsSize 2x1
9626 XineramaSlsOn
9627 XineramaPrimaryScreen 1
9628 XineramaOn
9632 .BI "XineramaSlsScreens " "number-of-screens screen-spec ..."
9633 This command configures the layout of the Single Logical screen
9634 feature.  Its first argument is the number of screens to use.  It
9635 must be followed by exactly this number of
9636 .I screen-spec
9637 arguments.  Each of these can be written either in standard X
9638 geometry format: "<width>x<height>+<x>+<y>" or as a space separated
9639 list of numbers: "x y width height". Both ways of describing
9640 screens can be mixed in a single command.  All four numbers must
9641 be supplied.  The
9642 .IR x and y
9643 values specify the origin of the screen in relation to the global
9644 screen's origin while
9645 .IR width and height
9646 specify the size of the screen in pixels.  No checks are done if
9647 the geometries make sense, so it is possible to define overlapping
9648 screens (with random results) or screens that are not visible at
9649 all.
9651 XineramaSlsScreens 3 \\
9652   512x768+0+0 512x300+512+0 512 300 512 468
9653 XineramaSlsOn
9654 XineramaPrimaryScreen 1
9655 XineramaOn
9659 .SS COMMANDS FOR USER FUNCTIONS AND SHELL COMMANDS
9662 .B "AddToFunc [\fIname\fP \
9663 [\fII\fP \
9664 | \fIM\fP \
9665 | \fIC\fP \
9666 | \fIH\fP \
9667 | \fID action\fP\
9669 Begins or adds to a function definition.  Here is an example:
9671 AddToFunc Move-or-Raise I Raise
9672  + M Move
9673  + D Lower
9675 The function name is "Move-or-Raise", and could be invoked from a
9676 menu or a mouse binding or key binding:
9678 Mouse 1 TS A Move-or-Raise
9681 .I name
9682 must not contain embedded whitespace.  No guarantees are made
9683 whether function names with embedded whitespace work or not.  This
9684 behavior may also change in the future without further notice.
9685 The letter before the
9686 .I action
9687 tells what kind of action triggers the command which follows it.
9688 .RI ' I '
9689 stands for "Immediate", and is executed as soon as the function is
9690 invoked.
9691 .RI ' M '
9692 stands for "Motion", i.e. if the user starts moving the mouse.
9693 .RI ' C '
9694 stands for "Click", i.e., if the user presses and releases the
9695 mouse.
9696 .RI ' H '
9697 stands for "Hold", i.e. if the user presses a mouse button and
9698 holds it down for more than
9699 .B ClickTime
9700 milliseconds.
9701 .RI ' D '
9702 stands for "Double-click". The action
9703 .RI ' I '
9704 causes an action to be performed on the button-press, if the
9705 function is invoked with prior knowledge of which window to act
9708 There is a number of predefined symbols that are replaced by
9709 certain values if they appear on the command line.  Please refer
9710 to the
9711 .B COMMAND EXPANSION
9712 section for details.
9714 Warning:  Please read the comments on executing complex functions
9715 in the section
9716 .BR "SCRIPTING AND COMPLEX FUNCTIONS" .
9718 Examples:
9720 If you call
9722 Key F10 R A Function MailFunction \\
9723   xmh "-font fixed"
9725 and "MailFunction" is
9727 AddToFunc MailFunction
9728  + I Next ($0) Iconify off
9729  + I Next (AcceptsFocus, $0) focus
9730  + I None ($0) Exec exec $0 $1
9732 Then the last line of the function becomes
9734  + I None (xmh) Exec exec xmh -font fixed
9736 The expansion is performed as the function is executed, so you can
9737 use the same function with all sorts of different arguments.  You
9738 could use
9740 Key F11 R A Function MailFunction \\
9741   zmail "-bg pink"
9743 in the same
9744 .IR config ,
9745 if you wanted.  An example of using "$[w.id]" is:
9747 AddToFunc PrintFunction
9748  + I Raise
9749  + I Exec xdpr -id $[w.id]
9751 Note that "$$" is expanded to '$'.
9753 Another example: bind right mouse button within the window button
9754 number 6 (this is a minimize button for the win95 theme) to
9755 iconify all windows of the same resource:
9757 AddToFunc FuncIconifySameResource "I" \\
9758   All ($r) Iconify on
9759 Mouse 3 6 A FuncIconifySameResource
9763 .BI "Beep"
9764 As might be expected, this makes the terminal beep.
9767 .BI "DestroyFunc " function
9768 Deletes a function, so that subsequent references to it are no
9769 longer valid.  You can use this to change the contents of a
9770 function during a fvwm session.  The function can be rebuilt using
9771 .BR AddToFunc .
9773 DestroyFunc PrintFunction
9777 .BI "Echo " string
9778 Prints a message to
9779 .IR stderr .
9780 Potentially useful for debugging things in your
9781 .IR config .
9783 Echo Beginning style definitions...
9787 .BI "Exec " command
9788 Executes
9789 .IR command .
9790 You should not use an ampersand '&' at the end of the command. You
9791 probably want to use an additional "exec" at the beginning of
9792 .IR command .
9793 Without that, the shell that fvwm invokes to run your command
9794 stays until the command exits.  In effect, you'll have twice as
9795 many processes running as you need.  Note that some shells are
9796 smart enough to avoid this, but it never hurts to include the
9797 "exec" anyway.
9799 The following example binds function key
9800 .SM F1
9801 in the root window, with no modifiers, to the exec function. The
9802 program rxvt is started with an assortment of options.
9805 Key F1 R N Exec exec rxvt -fg yellow -bg blue \\
9806   -e /bin/tcsh
9808 Note that this function doesn't wait for
9809 .I command
9810 to complete, so things like:
9812 Exec "echo AddToMenu ... > /tmp/file"
9813 Read /tmp/file
9815 do not work reliably
9816 (see the
9817 .I PipeRead
9818 command).
9822 .BI "ExecUseShell [" shell "]"
9823 Makes the
9824 .B Exec
9825 command use the specified shell, or the value of the
9826 .I $SHELL
9827 environment variable if no shell is specified, instead of the
9828 default Bourne shell
9829 .RI ( /bin/sh ).
9831 ExecUseShell
9832 ExecUseShell /usr/local/bin/tcsh
9836 .BI "Function " FunctionName
9837 Used to bind a previously defined function to a key or mouse
9838 button. The following example binds mouse button 1 to a function
9839 called "Move-or-Raise", whose definition was provided as an
9840 example earlier in this man page.  After performing this binding
9841 fvwm executes the "move-or-raise" function whenever button 1 is
9842 pressed in a window's title-bar.
9844 Mouse 1 T A Function Move-or-Raise
9846 The keyword
9847 .B Function
9848 may be omitted if
9849 .I FunctionName
9850 does not coincide with an fvwm command.
9852 Warning:  Please read the comments on executing complex functions
9853 in the section
9854 .BR "SCRIPTING AND COMPLEX FUNCTIONS" .
9857 .BI "Nop"
9858 Does nothing.  This is used to insert a blank line or separator in
9859 a menu.  If the menu item specification is
9861 AddToMenu MyMenu " " Nop
9863 then a blank line is inserted.  If it looks like
9865 + "" Nop
9867 then a separator line is inserted.  Can also be used as the
9868 double-click action for
9869 .BR Menu " or " Popup .
9872 .BI "PipeRead " command " [" quiet "]"
9873 Causes fvwm to read commands from the output of the
9874 .IR command .
9875 This
9876 .I command
9877 is executed by
9878 .I /bin/sh
9879 as if you typed it on the command line.  If the command consists
9880 of more than one word it must be quoted.  Useful for building up
9881 dynamic menu entries based on a directories contents, for
9882 example. If the keyword
9883 .I Quiet
9884 follows the command no message is produced if the
9885 .I command
9886 is not found.
9888 Example:
9890 AddToMenu HomeDirMenu
9891 PipeRead 'for i in $HOME/*; \\
9892   do echo "+ $i Exec xterm -e vi $i"; done'
9895 Note: The
9896 .B PipeRead
9897 changes the pointer to a watch cursor by default during
9898 execution.  However, some commands, for example xwd, need to take
9899 control of the pointer themselves and do not work.  To disable the
9900 watch cursor, use the command prior to
9901 .B PipeRead
9903 BusyCursor Read off
9907 .B PipeRead
9908 command executes synchronously.  If you want to
9909 .B Exec
9910 something, but need the command to run synchronously,
9911 you might do something like:
9913 PipeRead 'command 1>&2'
9915 The redirection causes any output from the program to go to stderr
9916 instead of being read as a sequence of commands by fvwm.
9917 .B PipeRead
9918 returns 1 if the given command could be executed or -1 if not
9919 (see the section
9920 .B CONDITIONAL COMMANDS
9921 for the meaning of return codes).
9924 .BI "Read " filename " [" quiet "]"
9925 Causes fvwm to read commands from the file named
9926 .IR filename .
9927 If the keyword
9928 .I Quiet
9929 follows the command no message is produced if the file is not
9930 found.  If the file name does not begin with a slash ('/'), fvwm
9931 looks in the user's data directory, then the system data
9932 directory.  The user's data directory is by default
9933 .IR $HOME/.fvwm .
9934 It can be overridden by exporting
9935 .I FVWM_USERDIR
9936 set to any other directory.  The
9937 .B Read
9938 command returns 1 if the given file could be read or -1 if not
9939 (see the section
9940 .B CONDITIONAL COMMANDS
9941 for the meaning of return codes).
9945 .BI "SetEnv " "variable value"
9946 Set an environment variable to a new value, similar to the shell's
9947 export or setenv command.  The
9948 .I variable
9949 and its
9950 .I value
9951 are inherited by processes started directly by fvwm.  This can be
9952 especially useful in conjunction with the
9953 .B FvwmM4
9954 module.  For example:
9956 SetEnv height HEIGHT
9958 makes the FvwmM4-set variable
9959 .I HEIGHT
9960 usable by processes started by fvwm as the environment variable
9961 .IR $height .
9963 .I value
9964 includes whitespace, you should enclose it in quotes.  If no
9965 .I value
9966 is given, the variable is deleted.
9969 .BI "Silent " command
9970 A number of commands require a window to operate on.  If
9971 no window was selected when such a function is invoked the user is
9972 asked to select a window.  Sometimes this behavior is unwanted,
9973 for example if the function was called by a module and the window
9974 that was selected at first does not exist anymore.  You can
9975 prevent this by putting
9976 .B Silent
9977 in front of the fvwm
9978 .IR command .
9979 If a function that needs a window is called with
9980 .B Silent
9981 without a window selected, it simply returns without doing
9982 anything. If
9983 .B Silent
9984 is used on a user defined function it affects all function and sub
9985 function calls until the original function exits.
9987 Another usage of
9988 .B Silent
9989 is with binding commands
9990 .BR Key ", " PointerKey " and " Mouse ,
9991 this disables error messages.
9993 .B Silent
9994 also disables the error message for non-existent commands.  Note:
9995 This command is treated as a prefix to its
9996 .IR command .
9997 Expansion of the command line is done as if
9998 .B Silent
9999 was not there.
10001 Examples:
10003 Silent Move 0 0
10004 Silent User_defined_function
10005 # don't complain on keyboards without "Help" key
10006 Silent Key Help R A Popup HelpMenu
10010 .BI "UnsetEnv " "variable"
10011 Unset an environment variable, similar to shell's export or
10012 unsetenv command. The
10013 .I variable
10014 then is removed from the environment array inherited by processes
10015 started directly by fvwm.
10018 .BI "Wait " windowname
10019 This command is intended to be used in fvwm functions only.  It
10020 causes execution of a function to pause until a new window with
10021 the title
10022 .I windowname
10023 appears.  This is particularly useful in the "InitFunction" if you
10024 are trying to start windows on specific desktops:
10026 AddToFunc InitFunction
10027  + I exec xterm -geometry 80x64+0+0
10028  + I Wait xterm
10029  + I Desk 0 2
10030  + I Exec exec xmh -font fixed -geometry \\
10031        507x750+0+0
10032  + I Wait xmh
10033  + I Desk 0 0
10035 The above function starts an xterm on the current desk, waits for
10036 it to map itself, then switches to desk 2 and starts an xmh.
10037 After the xmh window appears control moves to desk 0.
10039 Fvwm remains partially functional during a wait, but any input
10040 from the modules is queued up and processed only after the window
10041 appears or the command is aborted.  For example, windows can not
10042 be focused with FvwmTaskBar or FvwmWinList during a wait.
10044 You can escape from a
10045 .B Wait
10046 pause by pressing
10047 .SM Ctrl-Alt-Escape
10048 (where
10049 .SM Alt
10050 is the first modifier).  To redefine this key sequence see the
10051 .B EscapeFunc
10052 command.
10055 .SS CONDITIONAL COMMANDS
10057 Conditional command are command that are only executed if certain
10058 conditions are met.  Most conditional commands work on windows,
10059 like
10060 .BR Next ", " ThisWindow " or " All .
10061 There is one conditional command
10062 .B Test
10063 that works on global conditions unrelated to windows.  The syntax
10064 of the conditions is described below.  For readability, the list
10065 of conditions is located at the end of this section.
10067 .SS Return Codes
10069 All commands in this section (unless specifically stated for the
10070 command) also have a return code that can be 1 (if the condition
10071 was met) or 0 (if the condition was not met).  Some commands may
10072 return -1 which means that an error occurred and the return code
10073 is useless.  The
10074 .B Break
10075 command returns -2.  Additionally, the return codes of commands
10076 run in a complex functions are passed to the invoking complex
10077 function.  The return code is used by the
10078 .B TestRc
10079 command.  Please refer to the commands' description for examples.
10080 The return code can also be accessed through the variable
10081 .IR $[cond.rc] .
10082 Non conditional commands do not modify the return code of the last
10083 conditional command.  Important note:  return codes are only
10084 defined inside functions created with the
10085 .B AddToFunc
10086 command and are not inherited by sub functions.  To run a command
10087 without altering the return code, the
10088 .B KeepRc
10089 command can be used.
10091 .SS The Ring of Windows
10093 Fvwm stores windows in a ring internally.  Think of the focused
10094 window as a cursor on the current position in the ring.  The
10095 .B Next
10096 command and many other command searche forwards through the ring
10097 for a matching window, and
10098 .B Prev
10099 searches backwards.  The windows in the ring are either ordered by
10100 creation time (if the
10101 .I FPSortWindowlistByFocus
10102 respecively
10103 .IR NeverFocus " or " MouseFocus
10104 styles are used) or by the last time they had the focus.
10106 .SS List of Conditional Commands
10109 .BI "All [(" conditions ")] " command
10110 Execute
10111 .I command
10112 on all windows meeting the conditions.  It returns 1 if any window
10113 matches the condition and 0 otherwise.
10114 .RB "See " Conditions " section below for a list of conditions."
10116 This command implies the conditions
10117 .IR CirculateHit ", " CirculateHitIcon " and " CirculateHitShaded .
10118 They can be turned off by specifying
10119 .I !CirculateHit
10120 etc. explicitly.
10123 .BI "Any [(" conditions ")] " command
10124 Performs
10125 .I command
10126 if any window which satisfies all
10127 .I conditions
10128 exists.  The command is run in the context of the root window.
10129 .RB "See " Conditions " section below for a list of conditions."
10132 .BI "Break [levels]"
10133 If the break command is used in a function, function execution is
10134 terminated immediately.  Further commands of the function are not
10135 processed.  Normally, all nested invocations of complex functions
10136 are left.  An optional integer number
10137 .I levels
10138 may be given to break out of the given number of nested function
10139 and continue execution of a higher level function.
10141 .B Break
10142 command always has the return code -2.  Example:
10144 AddToFunc PickWindowRaiseAndDeiconify
10145 + I Pick
10146 + I TestRc (Error) Break
10147 + I Raise
10148 + I Iconify off
10152 .BI "Current [(" conditions ")] " command
10153 Performs
10154 .I command
10155 on the currently focused window if it satisfies all
10156 .IR conditions .
10157 .RB "See " Conditions " section below for a list of conditions."
10159 This command implies the conditions
10160 .IR CirculateHit ", " CirculateHitIcon " and " CirculateHitShaded .
10161 They can be turned off by specifying
10162 .I !CirculateHit
10163 etc. explicitly.
10166 .B "Direction \
10167 [\fIFromPointer\fP] \
10168 \fIdirection\fP \
10169 [(\fIconditions\fP)] \
10170 \fIcommand\fP"
10171 Performs
10172 .I command
10173 (typically
10174 .BR Focus )
10175 on a window in the given direction which satisfies all
10176 .IR conditions .
10177 Normally, the center of the currently focused window or the
10178 context window in which the command was invoked is taken as the
10179 starting point.  Lacking such a window, or when the
10180 .I FromPointer
10181 option is given, the current position of the pointer is taken as
10182 the starting point.  The
10183 .I direction
10184 may be one of "North", "Northeast", "East", "Southeast", "South",
10185 "Southwest", "West", "Northwest" and "Center".  Which window
10186 .B Direction
10187 selects depends on angle and distance between the center points of
10188 the windows.  Closer windows are considered a better match than
10189 those farther away.  The
10190 .I Center
10191 direction simply selects the window closest to the starting point.
10192 Returns -1 if an invalid direction was given.
10193 .RB "See " Conditions " section below for a list of conditions."
10196 .BI "KeepRc " command
10197 Runs the
10198 .I command
10199 but does not alter the return code of the previous command.  Note:
10200 .B KeepRc
10201 is treated as a prefix to its
10202 .IR command .
10203 Expansion of the command line is done as if
10204 .B KeepRc
10205 was not there.
10208 .BI "Next [(" conditions ")] " command
10209 Performs
10210 .I command
10211 (typically
10212 .BR Focus )
10213 on the next window which satisfies all
10214 .IR conditions .
10215 If the command is running in a window context, it starts looking
10216 for a matching window from there.  Otherwise it starts at the
10217 focused window.
10218 .RB "See " Conditions " section below for a list of conditions."
10221 .BI "None [(" conditions ")] " command
10222 Performs
10223 .I command
10224 if no window which satisfies all
10225 .I conditions
10226 exists.  The command is run in the context of the root window.
10227 Returns 1 if no window matches the conditions and 0 otherwise.
10228 .RB "See " Conditions " section below for a list of conditions."
10230 This command implies the conditions
10231 .IR CirculateHit ", " CirculateHitIcon " and " CirculateHitShaded .
10232 They can be turned off by specifying
10233 .I !CirculateHit
10234 etc. explicitly.
10237 .BI NoWindow " command"
10238 Performs
10239 .IR command ,
10240 but removes the window context if any.  This is not really a
10241 conditional command, but a prefix that may be useful in menu items
10242 that should operate without a window even if such menu is bound to
10243 window decorations.
10246 .BI "Pick [(" conditions ")] " command
10247 .B Pick
10248 works like
10249 .B Function
10250 if invoked in the context of a window.  If invoked in the root
10251 window, it first asks the user to pick a window and then executes
10253 .I command
10254 in the context of that window.  This avoids annoying multiple
10255 selections with complex functions.  The command is executed only
10256 if the given
10257 .I conditions
10258 are met.  Returns -1 if no window was selected.
10259 .RB "See " Conditions " section below for a list of conditions."
10261 This command implies the conditions
10262 .IR CirculateHit ", " CirculateHitIcon " and " CirculateHitShaded .
10263 They can be turned off by specifying
10264 .I !CirculateHit
10265 etc. explicitly.
10268 .BI "PointerWindow [(" conditions ")] " command
10269 Performs
10270 .I command
10271 if the window under the pointer satisfies all
10272 .IR conditions .
10273 Returns -1 if there is no window under the pointer.
10274 .RB "See " Conditions " section below for a list of conditions."
10276 This command implies the conditions
10277 .IR CirculateHit ", " CirculateHitIcon " and " CirculateHitShaded .
10278 They can be turned off by specifying
10279 .I !CirculateHit
10280 etc. explicitly.
10283 .BI "Prev [(" conditions ")] " command
10284 Performs
10285 .I command
10286 (typically
10287 .BR Focus )
10288 on the previous window which satisfies all
10289 .IR conditions .
10290 If the command is running in a window context, it starts looking
10291 for a matching window from there.  Otherwise it starts at the
10292 focused window.
10293 .RB "See " Conditions " section below for a list of conditions."
10296 .B "ScanForWindow \
10297 [\fIFromPointer\fP] \
10298 \fIdirection\fP \
10299 \fIdirection2\fP \
10300 [(\fIconditions\fP)] \
10301 \fIcommand\fP"
10302 Performs
10303 .I command
10304 (typically
10305 .BR Focus )
10306 on a window in the given direction which satisfies all
10307 .IR conditions .
10308 Normally, the center of the currently focused window or the
10309 context window in which the command was invoked is taken as the
10310 starting point.  Lacking such a window, or when the
10311 .I FromPointer
10312 option is given, the current position of the pointer is taken as
10313 the starting point.  The
10314 .I direction
10315 may be one of "North", "NorthEast", "East", "SouthEast", "South",
10316 "SouthWest", "West", and "NorthWest".  Which window
10317 .B ScanForWindow
10318 selects depends first on the position along the primary axis given
10320 .IR direction .
10321 If any windows have the exact same coordinate along the primary
10322 axis, the secondary direction is used to order the windows.  The
10323 .I direction2
10324 may be one of the same set of values as
10325 .IR direction .
10327 .I direction2
10328 is not perfectly perpendicular to
10329 .IR direction ,
10330 ScanForWindow will return a failure.  When using ScanForWindow
10331 repeatedly with the same arguments, it is guaranteed that all
10332 windows matching the conditions will eventually be found.  If the
10333 focus reaches a limit along the primary axis, it will wrap around
10334 to the opposite side.  Returns -1 if an invalid direction was
10335 given.
10336 .RB "See " Conditions " section below for a list of conditions."
10339 .BI "Test [(" test-conditions ")] " command
10340 Performs
10341 .I command
10342 if all
10343 .I test-conditions
10344 are satisfied.  The
10345 .I test-conditions
10346 are keywords with possible arguments from the list below
10347 and are separated by commas or whitespace.  They include
10348 .IR "Version operator x.y.z" ,
10349 .IR Start ,
10350 .IR Init ,
10351 .IR Restart ,
10352 .IR Exit ,
10353 .IR Quit " and"
10354 .IR ToRestart ,
10355 .IR True ,
10356 .IR False ,
10357 .IR F ,
10358 .IR R ,
10359 .IR W ,
10360 .IR X ,
10361 .IR I .
10362 A test-condition prefixed with "!" is reverted.
10365 .I "Version operator x.y.z"
10366 test-condition is fulfilled if the logical condition of the expression is
10367 true. Valid
10368 .I operator
10369 values are:
10370 .IR >= ,
10371 .IR > ,
10372 .IR <= ,
10373 .IR < ,
10374 .I ==
10376 .IR != .
10378 Example:
10380 Test (Version >= 2.5.11) Echo 2.5.11 or later.
10383 .I Start
10384 test-condition is the same as either
10385 .IR Init " or " Restart .
10386 It is only true on startup or restart prior and during
10387 .B StartFunction
10388 execution.
10390 .I Exit
10391 test-condition is the same as either
10392 .IR Quit " or " ToRestart .
10393 It is only valid on shutdown during
10394 .B ExitFunction
10395 function execution.
10398 .I True
10400 .I False
10401 test-conditions are, well, unconditionally true and false.
10403 Additionally, if a test-condition name is not recognized, the Error
10404 return code is set and the command is not executed.
10407 .IR "F file" ,
10408 .IR "R file" ,
10409 .IR "W file" ,
10410 .IR "X file" " and"
10411 .IR "I file"
10412 test-conditions test for existance of the given [F]ile (possibly
10413 with [R]ead/[W]rite permissions), e[X]ecutable (in $PATH),
10414 or the [I]mage (in ImagePath).
10416 Example:
10418 AddToFunc StartFunction I Test (Init) Exec exec xterm
10420 AddToFunc VerifyVersion
10421 + I Test (Version 2.5.*) Echo 2.5.x detected
10422 + I TestRc (NoMatch) Test (!Version 2.6.*) Echo Future version
10423 + I TestRc (NoMatch) Echo 2.6.x is detected
10425 Test (f $[FVWM_USERDIR]/local-config) Read local-config
10426 Test (x xterm-utf16) Exec exec xterm-utf16
10430 .BI "TestRc [([!]" returncode ")] " command
10431 Performs
10432 .I command
10433 if the last conditional command returned the value
10434 .IR returncode .
10435 Instead of the numeric values 0 (no match), 1 (match), -1 (error),
10436 and -2 (break) the symbolic names "NoMatch", "Match", "Error" and
10437 "Break" can be used.  If no
10438 .I returncode
10439 is given, the default 0 is assumed.  If the return code is
10440 prefixed with '!', the command is executed if
10441 .I returncode
10442 does not match the value returned by the conditional command.
10443 .B TestRc
10444 command can only be used inside functions.  If the
10445 .I command
10446 is another conditional command, the previous return code is
10447 replaced by the new one.  Example:
10449 AddToFunc ToggleXterm
10450 + I Any (my_xtermwindow) Close
10451 + I TestRc (NoMatch) Exec xterm -T my_xtermwindow
10455 .BI "ThisWindow [(" conditions ")] " command
10456 .B ThisWindow
10457 executes the specified
10458 .I command
10459 in the context of the current operand window.  If there is no
10460 operand window (it is invoked in the root window), the command is
10461 ignored.
10462 .B ThisWindow
10463 is never interactive.  The command is executed only if the given
10464 .I conditions
10465 are met.  It returns -1 if used outside a window context.
10466 .RB "See " Conditions " section below for a list of conditions."
10468 This command implies the conditions
10469 .IR CirculateHit ", " CirculateHitIcon " and " CirculateHitShaded .
10470 They can be turned off by specifying "!CirculateHit"
10471 etc. explicitly.
10474 .B "WindowId [\fIid\fP\
10475 ] [(\fIconditions\fP\
10476 )] | [\fIroot\fP \
10477 [\fIscreen\fP\
10478 ]] \fIcommand"
10480 .B WindowId
10481 command looks for a specific window
10482 .I id
10483 and runs the specified
10484 .I command
10485 on it.  The second form of syntax retrieves the window id of the
10486 root window of the given
10487 .IR screen .
10488 If no
10489 .I screen
10490 is given, the current screen is assumed.  The window indicated by
10491 .I id
10492 may belong to a window not managed by fvwm or even a window on a
10493 different screen.  Although most commands can not operate on such
10494 windows, there are some exceptions, for example the
10495 .B WarpToWindow
10496 command.
10497 Returns -1 if no window with the given id exists.
10498 .RB "See " Conditions " section below for a list of conditions."
10500 This command implies the conditions
10501 .IR CirculateHit ", " CirculateHitIcon " and " CirculateHitShaded .
10502 They can be turned off by specifying
10503 .I !CirculateHit
10504 etc. explicitly.
10506 Examples:
10508 WindowId 0x34567890 Raise
10509 WindowId root 1 WarpToWindow 50 50
10510 WindowId $0 (Silly_Popup) Delete
10512 In the past this command was mostly useful for functions used with
10514 .B WindowList
10515 command, or for selective processing of
10516 .B FvwmEvent
10517 calls (as in the last example), but currently these handler functions
10518 are called within a window context, so this command is not really
10519 needed in these cases.  Still it may be useful if, for example, the
10520 window id should be stored in the environment variable for a further
10521 proceeding.
10523 Pick SetEnv BOOKMARKED_WINDOW $[w.id]
10524 WindowId $[BOOKMARKED_WINDOW] WarpToWindow
10527 .SS Conditions
10530 .I conditions
10531 that may be given as an argument to any conditional command are a
10532 list of keywords separated by commas or whitespace, enclosed in
10533 parentheses.  Unless stated otherwise, conditional commands accept
10534 all the conditions listed below.  Note that earlier versions of
10535 fvwm required the conditions to be enclosed in brackets instead of
10536 parentheses (this is still supported for backward compatibility).
10538 In addition, the
10539 .I conditions
10540 may include one or more window names to match to.  If more than
10541 one window name is given, all of them must match.  The window
10542 name, icon name, class, and resource are considered when
10543 attempting to find a match. Each name may include the wildcards
10544 '*' and '?', and may consist of two or more alternatives,
10545 separated by the character '|', which acts as an OR operator.  (If
10546 OR operators are used, they must not be separated by spaces from
10547 the names.)  Each window name can begin with '!', which prevents
10548 .I command
10549 if any of the window name, icon name, class or resource match.
10550 However, '!' must not be applied to individual names in a group
10551 separated by OR operators; it may only be applied to the beginning
10552 of the group, and then it operates on the whole group.
10554 Examples:
10556  Next ("Netscape|konqueror|Mozilla*") WarpToWindow 99 90
10558 This goes to the next web browser window, no matter which of the
10559 three named web browsers is being used.
10561  Next ("Mozilla*", "Bookmark*") WarpToWindow 99 90
10563 This goes to Mozilla's bookmark manager window, ignoring other
10564 Mozilla windows and other browsers' bookmark windows.
10566  All ("XTerm|rxvt", !console) Iconify
10568 This iconifies all the xterm and rxvt windows on the current page,
10569 except that the one named "console" (with the -name option to xterm)
10570 is excluded.
10572  Next (!"FvwmPager|FvwmForm*|FvwmButtons") Raise
10573  Next (!FvwmPager, !FvwmForm*, !FvwmButtons) Raise
10575 These two commands are equivalent; either one raises the next window
10576 which is not one of the named fvwm modules.
10578 Any condition can be negated by using a an exclamation mark ('!')
10579 directly in front of its name.
10581 .IR AcceptsFocus ,
10582 .IR AnyScreen ,
10583 .IR CirculateHit ,
10584 .IR CirculateHitIcon ,
10585 .IR CirculateHitShaded ,
10586 .IR Closable ,
10587 .IR CurrentDesk ,
10588 .IR CurrentGlobalPage ,
10589 .IR CurrentGlobalPageAnyDesk ,
10590 .IR CurrentPage ,
10591 .IR CurrentPageAnyDesk ,
10592 .IR CurrentScreen ,
10593 .IR FixedSize ,
10594 .IR Focused ,
10595 .IR HasHandles ,
10596 .IR HasPointer ,
10597 .IR Iconic ,
10598 .IR Iconifiable ,
10599 .IR "Layer [n]" ,
10600 .IR Maximizable ,
10601 .IR Maximized ,
10602 .IR Overlapped ,
10603 .IR PlacedByButton3 ,
10604 .IR PlacedByFvwm ,
10605 .IR Raised ,
10606 .IR Shaded ,
10607 .IR "State n" ,
10608 .IR Sticky ,
10609 .IR StickyAcrossDesks ,
10610 .IR StickyAcrossPages ,
10611 .IR Transient ,
10612 .IR Visible .
10615 .I AcceptsFocus
10616 condition excludes all windows that do not want the input focus
10617 (the application has set the "Input hints" for the window to
10618 False) and do not use the
10619 .I Lenience
10620 option of the
10621 .B Style
10622 command.  Also, all windows using the
10623 .I NeverFocus
10624 style are ignored.
10626 With the
10627 .I AnyScreen
10628 condition used together with any of the
10629 .I Current...
10630 conditions, windows that do not intersect the Xinerama screen
10631 containing the mouse pointer are considered for a match too.  For
10632 example:
10634 # Focus next window on current page,
10635 # regardless of Xinerama screen
10636 Next (CurrentPage, AnyScreen) Focus
10640 .IR CirculateHit " and " CirculateHitIcon
10641 options override the
10642 .I CirculateSkip
10643 .B Style
10644 attribute for normal or iconic windows.  The
10645 .I CirculateHitShaded
10646 option overrides the
10647 .I CirculateSkipShaded
10648 .B Style.
10649 All three options are turned on
10650 by default for the
10651 .B Current
10652 command.  They can be turned off by specifying
10653 .I !CirculateHit
10654 etc. explicitly.
10655 Note:  Do not confuse these conditions with the style options of
10656 the same name.  Specifically,
10658 Style foo CirculateSkip
10659 Next (foo, CirculateHit) ...
10661 is not the same as
10663 Style foo CirculateHit ...
10664 Next (foo)
10666 The prior selects windows with the name foo only in the Next
10667 command.  In the second example, these windows are always matched
10668 in all conditional commands.
10671 .I Closable
10672 condition matches only windows that are allowed to be closed.
10675 .I CurrentDesk
10676 condition matches only windows that are on the current desk.
10679 .I CurrentGlobalPage
10680 condition matches only windows that are on the current page of the
10681 current desk, regardless of whether Xinerama support is enabled or
10682 not.  This conditions implicitly activates the
10683 .I CurrentDesk
10684 condition.
10687 .I CurrentGlobalPageAnyDesk
10688 condition matches only windows that are on the current page of any
10689 desk, regardless of whether Xinerama support is enabled or not.
10692 .I CurrentPage
10693 condition matches only windows that are on the current page of the
10694 current desk.  If Xinerama support is enabled, it only matches
10695 windows that are at least partially on the Xinerama screen
10696 containing the mouse pointer.  This conditions implicitly
10697 activates the
10698 .I CurrentDesk
10699 condition.
10702 .IR CurrentPageAnyDesk " and " CurrentScrene
10703 conditions matche only windows that are on the current page of any
10704 desk.  If Xinerama support is enabled, they only match windows
10705 that are at least partially on the Xinerama screen containing the
10706 mouse pointer.
10709 .I FixedSize
10710 condition excludes all windows that don't have a fixed size,
10711 either set through WM hints or the
10712 .B Style
10713 option
10714 .IR FixedSize .
10717 .I Focused
10718 matches on the the window the currently has the keyboard focus.
10719 This is not useful for the
10720 .B Current
10721 command but can be used with the other conditional commands.
10724 .I HasHandles
10725 condition excludes all windoows that don't have resize handles.
10728 .I HasPointer
10729 condition excludes all windows that do not contain the pointer.
10732 .I Iconic
10733 condition matches only iconic windows.
10736 .I Iconifiable
10737 condition matches only windows that are allowed to be iconified.
10740 .I "Layer [n]"
10741 condition matches only windows on the specified layer.  The
10742 optional argument of the
10743 .I Layer
10744 condition defaults to the layer of the focused window.  The
10745 negation
10746 .I !Layer
10747 switches off the
10748 .I Layer
10749 condition.
10752 .I Maximizable
10753 condition matches only windows that are allowed to be maximized.
10756 .I Maximized
10757 condition matches only maximized windows.
10760 .I Overlapped
10761 condition matches only windows that are overlapped by other windows
10762 on the same layer (or unmanaged windows if the option
10763 .I RaiseOverUnmanaged
10764 of the
10765 .B BugOpts
10766 command is used).  Note that this condition can be slow if you
10767 have many windows or if RaiseOverUnmanaged is used and the
10768 connection to the X server is slow.
10771 .I PlacedByButton3
10772 condition is fulfilled if the last interactive motion of the
10773 window (with the
10774 .B Move
10775 command) was ended by pressing mouse button 3.  This is especially
10776 useful with the
10777 .I ManualPlacement
10778 option of the
10779 .B Style
10780 command.
10783 .I PlacedByFvwm
10784 condition excludes all windows that have been placed manually or
10785 by using the user or program position hint.
10788 .I Raised
10789 conditions matches only windows that are fully visible on the
10790 current viewport and not overlapped by any other window.
10793 .I Shaded
10794 conditions matches only shaded windows (see
10795 .B WindowShade
10796 command).
10799 .IR "State n" " or " "!State n"
10800 conditions match only windows with the specified integer state set
10801 (or unset).  See the
10802 .B State
10803 command for details.  The argument may range from 0 to 31.
10806 .IR Sticky ", " StickyAcrossDesks " and " StickyAcrossPages
10807 match only windows that are currently sticky, sticky across all
10808 desks or sticky across all pages.  Please refer to the
10809 .B Style
10810 options with the same name and the commands
10811 .BR Stick ", " StickAcrossDesks " and " StickAcrossPages
10812 for details.
10815 .I Transient
10816 condition matches only windows that have the "transient"
10817 property set by the application.  This it usually the case for
10818 application popup menus and dialogs.  The
10819 .B FvwmIdent
10820 module can be used to find out whether a specific window is
10821 transient.
10824 .I Visible
10825 conditions matches only windows that are at least partially
10826 visible on the current viewport and not completely overlapped by
10827 other windows.
10829 .SS MODULE COMMANDS
10831 Fvwm maintains a database of module configuration lines in a form
10833 .BI "*" "<ModuleName>" ": " "<Config-Resource>"
10835 where
10836 .I "<ModuleName>"
10837 is either a real module name or an alias.
10839 This database is initially filled from config file (or from
10840 output of
10841 .B \-cmd
10842 config command), and can be later modified either by user (via
10843 .BR FvwmCommand )
10844 or by modules.
10846 When modules are run, they read appropriate portion of database.
10847 (The concept of this database is similar to one used in X resource
10848 database).
10850 Commands for manipulating module configuration database are
10851 described below.
10854 .BI "*" module_config_line
10855 Defines a module configuration.
10856 .I module_config_line
10857 consists of a module name (or a module alias) and a module
10858 resource line. The new syntax allows a delimiter, a colon and
10859 optional spaces, between the module name and the rest of the line,
10860 this is recommended to avoid conflicts.
10862 *FvwmIconBox: MaxIconSize 48x48
10863 *FvwmPager: WindowBorderWidth 1
10864 *FvwmButtons-TopRight: Geometry 100x100-0+0
10865 *FvwmButtons-Bottom: Geometry +0-0
10869 .BI "DestroyModuleConfig " module_config
10870 Deletes module configuration entries, so that new configuration
10871 lines may be entered instead.  This also sometimes the only way to
10872 turn back some module settings, previously defined.  This changes
10873 the way a module runs during a fvwm session without restarting.
10874 Wildcards can be used for portions of the name as well.
10876 The new non-conflicting syntax allows a delimiter, a colon and
10877 optional spaces between the module name and the rest of the line.
10878 In this case a module name (or alias) can't have wildcards.
10880 DestroyModuleConfig FvwmButtons*
10881 DestroyModuleConfig FvwmForm: Fore
10882 DestroyModuleConfig FvwmIconBox: Max*
10886 .BI "KillModule " modulename " [" modulealias ]
10887 Causes the module which was invoked with name
10888 .I modulename
10889 to be killed.  The name may include wildcards. If
10890 .I modulealias
10891 is given, only modules started with the given alias are killed.
10893 KillModule FvwmPager  # kill all pagers
10895 Module FvwmEvent SoundEvent
10896 KillModule FvwmEvent SoundEvent
10900 .BI "Module " modulename " [" moduleparams ]
10901 Specifies a module with its optional parameters which should be
10902 spawned. Currently several modules, including
10903 .BR FvwmButtons ", " FvwmEvent ", " FvwmForm ", " FvwmGtk ", "
10904 .BR FvwmPager ", " FvwmScript
10905 support aliases.  Aliases are useful if more than one instance of
10906 the module should be spawned.  Aliases may be configured
10907 separately using
10908 .B *
10909 syntax described above.  To start a module
10910 .B FvwmForm
10911 using an alias
10912 .IR MyForm ,
10913 the following syntax may be used:
10915 Module FvwmForm MyForm
10918 At the current time the available modules (included with fvwm) are
10919 .B FvwmAnimate
10920 (produces animation effects when a window is iconified or
10921 de-iconified),
10922 .B FvwmAudio
10923 (makes sounds to go with window manager actions),
10924 .B FvwmAuto
10925 (an auto raise module),
10926 .B FvwmBacker
10927 (to change the background when you change desktops),
10928 .B FvwmBanner
10929 (to display a spiffy XPM, XBM or PNG),
10930 .B FvwmButtons
10931 (brings up a customizable tool bar),
10932 .B FvwmCommandS
10933 (a command server to use with shell's FvwmCommand client),
10934 .B FvwmConsole
10935 (to execute fvwm commands directly),
10936 .B FvwmCpp
10937 (to preprocess your
10938 .I config
10939 with cpp),
10940 .B FvwmDebug
10941 (to help debug fvwm),
10942 .B FvwmDragWell
10943 (the place to drag&drop to),
10944 .B FvwmEvent
10945 (trigger various actions by events),
10946 .B FvwmForm
10947 (to bring up dialogs),
10948 .B FvwmGtk
10949 (to bring up GTK menus and dialogs),
10950 .B FvwmIconBox
10951 (like the mwm IconBox),
10952 .B FvwmIconMan
10953 (a flexible icon manager),
10954 .B FvwmIdent
10955 (to get window info),
10956 .B FvwmM4
10957 (to preprocess your
10958 .I config
10959 with m4),
10960 .B FvwmPager
10961 (a mini version of the desktop),
10962 .B FvwmSave
10963 (saves the desktop state in .xinitrc style),
10964 .B FvwmSaveDesk
10965 (saves the desktop state in fvwm commands),
10966 .B FvwmScript
10967 (another powerful dialog toolkit),
10968 .B FvwmScroll
10969 (puts scrollbars on any window),
10970 .B FvwmTaskBar
10971 (a Windows like task bar),
10972 .B FvwmTheme
10973 (managed colorsets, obsolete),
10974 .B FvwmWinList
10975 (a window list),
10976 .B FvwmWharf
10977 (an AfterStep like button bar).  These modules have their own man
10978 pages.  There may be other modules out on there as well.
10981 Modules can be short lived transient programs or, like
10982 .BR FvwmButtons ,
10983 can remain for the duration of the X session.  Modules are
10984 terminated by the window manager prior to restarts and quits, if
10985 possible.  See the introductory section on modules.  The keyword
10986 .B Module
10987 may be omitted if
10988 .I modulename
10989 is distinct from all fvwm commands.
10992 .BI "ModulePath " path
10993 Specifies a colon separated list of directories in which to search
10994 for modules.  To find a module, fvwm searches each directory in
10995 turn and uses the first file found.  Directory names on the list
10996 do not need trailing slashes.
10999 .BI ModulePath
11000 may contain environment variables such as
11001 .IR $HOME " (or " ${HOME} ).
11002 Further, a '+' in the
11003 .I path
11004 is expanded to the previous value of the
11005 .IR path ,
11006 allowing easy appending or prepending to the
11007 .IR path .
11009 For example:
11011 ModulePath ${HOME}/lib/fvwm/modules:+
11013 The directory containing the standard modules is available via the
11014 environment variable
11015 .IR $FVWM_MODULEDIR .
11018 .BI "ModuleSynchronous  [" "Expect string" "] [" "Timeout secs" "] " modulename
11020 .B ModuleSynchronous
11021 command is very similar to
11022 .BI Module .
11023 Fvwm stops processing any commands and user input until the module
11024 sends a string beginning with "NOP FINISHED STARTUP" back to fvwm.
11025 If the optional
11026 .I Timeout
11027 is given fvwm gives up if the module sent no input back to fvwm
11029 .I secs
11030 seconds.  If the
11031 .I Expect
11032 option is given, fvwm waits for the given
11033 .I string
11034 instead.
11035 .B ModuleSynchronous
11036 should only be used during fvwm startup to enforce the order in
11037 which modules are started.  This command is intended for use with
11038 the (currently hypothetical) module that should be in place before
11039 other modules are started.
11041 Warning: It is quite easy to hang fvwm with this command, even if
11042 a timeout is given.  Be extra careful choosing the string to wait
11043 for. Although all modules in the fvwm distribution send back the
11044 "NOP FINISHED STARTUP" string once they have properly started up,
11045 this may not be the case for third party modules.  Moreover, you
11046 can try to escape from a locked
11047 .B ModuleSynchronous
11048 command by using the key sequence
11049 .SM Ctrl-Alt-Escape
11050 (see the
11051 .BR EscapeFunc ).
11054 .BI "ModuleTimeout " timeout
11055 Specifies how many seconds fvwm waits for a module to respond. If
11056 the module does not respond within the time limit then fvwm kills
11058 .I timeout
11059 must be greater than zero, or it is reset to the default value of
11060 30 seconds.
11063 .BI "SendToModule " "modulename string"
11064 Sends an arbitrary string (no quotes required) to all modules,
11065 whose alias or name matching
11066 .IR modulename ,
11067 which may contain wildcards.  This only makes sense if the module
11068 is set up to understand and deal with these strings though. Can be
11069 used for module to module communication, or implementation of more
11070 complex commands in modules.
11073 .SS QUIT, RESTART AND SESSION MANAGEMENT COMMANDS
11076 .BI "Quit"
11077 Exits fvwm, generally causing X to exit too.
11080 .BI "QuitScreen"
11081 Causes fvwm to stop managing the screen on which the command was
11082 issued.
11085 .BI "QuitSession"
11086 Causes a session manager (if any) to shutdown the session.  This
11087 command does not work for xsm, it seems that xsm does not
11088 implement this functionality.  Use Unix signals to manage xsm
11089 remotely.
11092 .BI "Restart [" window_manager " [" params "]]"
11093 Causes fvwm to restart itself if
11094 .I window_manager
11095 is left blank, or to switch to an alternate window manager (or
11096 other fvwm version) if
11097 .I window_manager
11098 is specified.  If the window manager is not in your default search
11099 path, then you should use the full path name for
11100 .IR window_manager .
11102 This command should not have a trailing ampersand.  The command
11103 can have optional parameters with simple shell-like syntax.  You
11104 can use
11105 .I ~
11106 (is expanded to the user home directory) and environmental
11107 variables
11108 .IR $VAR " or " ${VAR} . Here are several examples:
11110 Key F1 R N Restart
11111 Key F1 R N Restart fvwm -s
11112 Key F1 R N Restart ~/bin/fvwm -f $HOME/.fvwm/main
11113 Key F1 R N Restart fvwm1 -s -f .fvwmrc
11114 Key F1 R N Restart xterm -n '"X console"' \\
11115   -T \\"X\\ console\\" -e fvwm1 -s
11117 If you need a native restart, we suggest only to use
11118 .B Restart
11119 command without parameters unless there is a reason not to.  If you
11120 still use an old command 'Restart fvwm2' that was correct in 2.2.x,
11121 all current command line arguments are lost.  On a restart without
11122 parameters or with --pass-args, they are preserved.  Here are some
11123 cases when 'Restart fvwm2' or 'Restart fvwm' cause troubles:
11125 * running fvwm under a session manager
11126 * running fvwm with multi headed displays
11127 * having command line arguments, like
11128   -f themes-rc or -cmd
11129 * if the first fvwm2 in the $PATH is a
11130   different one
11132 This is why we are issuing a warning on an old usage. If you
11133 really want to restart to fvwm with no additional arguments, you
11134 may get rid of this warning by using "Restart fvwm -s" or
11135 "Restart /full/path/fvwm".
11137 Note, currently with multi headed displays, restart of fvwms on
11138 different screens works independently.
11141 .BI "Restart " "--pass-args window_manager"
11142 The same as
11143 .B Restart
11144 without parameters but the name for the current window manager is
11145 replaced with the specified
11146 .I window_manager
11147 and original arguments are preserved.
11149 This command is useful if you use initial arguments like
11151 -cmd FvwmCpp
11153 and want to switch to another fvwm version without losing the
11154 initial arguments.
11157 .BI "Restart " --dont-preserve-state " [" other-params "]"
11158 The same as
11160 .BI "Restart [" other-params "]"
11162 but it does not save any window states over the restart.
11164 Without this option,
11165 .B Restart
11166 preserves most per-window state by writing it to a file named
11167 .I .fs-restart-$HOSTDISPLAY
11168 in the user's home directory.
11171 .BI "SaveSession"
11172 Causes a session manager (if any) to save the session.  This
11173 command does not work for xsm, it seems that xsm does not
11174 implement this functionality.  Use Unix signals to manage xsm
11175 remotely.
11178 .BI "SaveQuitSession"
11179 Causes a session manager (if any) to save and then shutdown the
11180 session. This command does not work for xsm, it seems that xsm
11181 does not implement this functionality.  Use Unix signals to manage
11182 xsm remotely.
11185 .SS COLORSETS
11187 Colorsets are a powerful method to control colors. Colorsets
11188 create appearance resources that are shared by fvwm and its
11189 modules.  When a colorset is modified all parts of fvwm react to
11190 that change. A colorset includes a foreground color, background
11191 color, shadow and highlight color (often based on the background
11192 color), background face (this includes images and all kinds of
11193 gradients).  There is a way to render background face and specify
11194 other color operations.
11196 In the 2.4.x versions a special module
11197 .B FvwmTheme
11198 was introduced to manage colorsets.  Starting with the 2.5.x beta
11199 version, the FvwmTheme functionality was moved to the core fvwm,
11200 so this module became obsolete.
11202 The old syntax:
11204 DestroyModuleConfig FvwmTheme: *
11205 *FvwmTheme: Colorset 0 fg black, bg rgb:b4/aa/94
11206 *FvwmTheme: Colorset 1 fg black, bg rgb:a1/b2/c8
11208 corresponds to the new syntax:
11210 CleanupColorsets
11211 Colorset 0 fg black, bg rgb:b4/aa/94
11212 Colorset 1 fg black, bg rgb:a1/b2/c8
11216 .BI "Colorset " num " [" options "]"
11217 Creates or modifies colorset
11218 .IR num .
11219 Colorsets are identified by this number. The number can start at
11220 zero and can be a very large number.
11222 Warning: The highest colorset number used determines memory
11223 consumption. Thus, if you define 'Colorset 100000', the memory for
11224 100001 colorsets is used.  Keep your colorset numbers as small as
11225 possible.
11227 By convention, colorsets are numbered like this:
11229 # 0 = Default colors
11230 # 1 = Inactive windows
11231 # 2 = Active windows
11232 # 3 = Inactive menu entry and menu background
11233 # 4 = Active menu entry
11234 # 5 = greyed out menu entry (only bg used)
11235 # 6 = module foreground and background
11236 # 7 = hilight colors
11239 If you need to have more colors and do not want to reinvent the
11240 wheel, you may use the convention used in fvwm-themes, it defines
11241 the meaning of the first 40 colorsets for nearly all purposes:
11243 .B http://fvwm-themes.sourceforge.net/doc/colorsets
11245 Each colorset has four colors, an optional pixmap and an optional
11246 shape mask.  The four colors are used by modules as the
11247 foreground, background, highlight and shadow colors.  When a
11248 colorset is created it defaults to a foreground of black and
11249 background of gray.  The background and foreground are marked as
11250 "average" and "contrast" (see later) so that just specifying a
11251 pixmap or gradient gives sensible results.
11253 .I options
11254 is a comma separated list containing some of the keywords:
11255 fg, Fore, Foreground,
11256 bg, Back, Background,
11257 hi, Hilite, Hilight,
11258 sh, Shade, Shadow,
11259 fgsh,
11260 Pixmap, TiledPixmap, AspectPixmap,
11261 Transparent, RootTransparent,
11262 Shape, TiledShape, AspectShape, NoShape,
11263 ?Gradient,
11264 Tint, fgTint, bgTint,
11265 Alpha, fgAlpha,
11266 Dither, NoDither,
11267 IconTint,
11268 IconAlpha,
11269 Plain.
11271 .IR fg ", " Fore " and " Foreground
11272 take a color name as an argument and set the foreground color.
11273 The special name
11274 .I Contrast
11275 may be used to select a color that contrasts well with the
11276 background color.  To reset the foreground color to the default
11277 value you can simply omit the color name.
11279 .IR bg ", " Back " and " Background
11280 take a color name as an argument and set the background color.  It
11281 also sets the highlight and shadow colors to values that give a 3d
11282 effect unless these have been explicitly set with the options
11283 below.  The special name
11284 .I Average
11285 may be used to select a color that is the average color of the
11286 pixmap.  If the pixmap is tinted with the
11287 .I Tint
11288 option, the tint is not taken in account in the computation of the
11289 average color. You should use the
11290 .I bgTint
11291 option to get the "real" average color.  The background color is
11292 reset to the default value if the color name is omitted.
11294 .IR hi ", " Hilite " and " Hilight
11295 take a color name as as argument and set the highlight color.  If
11296 the highlight color is not explicitly set, the default is to
11297 calculate it from the background color.  To switch back to the
11298 default behavior the color name can be omitted.
11300 .I sh ", " Shade " and " Shadow
11301 take a color name as as argument and set the shadow color.  If the
11302 shadow color is not explicitly set, the default is to calculate it
11303 from the background color.  To switch back to the default behavior
11304 the color name can be omitted.
11306 .I fgsh
11307 takes a color name as an argument and sets the color used by the
11308 shadowing font effect. See the
11309 .B FONT SHADOW EFFECTS
11310 section of the fvwm man page.  By default this color is computed
11311 from the foreground and background colors.  To switch back to the
11312 default the color name can be omitted.
11314 .IR Pixmap ", " TiledPixmap " and " AspectPixmap
11315 take a file name as an argument, search the
11316 .B ImagePath
11317 and use it as the background pixmap.  Any transparent parts are
11318 filled with the background color.  Not specifying a file name
11319 removes any existing image from the colorset.
11320 .I TiledPixmap
11321 produces repeated copies of the image with no scaling,
11322 .I Pixmap
11323 causes the image to be stretched to fit whatever object the
11324 colorset is applied to and
11325 .I AspectPixmap
11326 stretches to fit but retains the image aspect ratio.
11328 .I Transparent
11329 creates a transparent background pixmap.  The pixmap is used as a
11330 window background to achieve root transparency.  For this you
11331 should use the
11332 .I ParentalRelativity
11333 option to the
11334 .B Style
11335 command.
11336 A subsequent root background change may be detected or not, this
11337 depends on the program used to set the background.  If you use
11338 fvwm-root, xsetbg (xli), FvwmBacker with solid or colorset colors
11339 or a recent version of Esetroot (>= 9.2) a background change is
11340 detected. If background changes are not detected (e.g., if you use
11341 xv or xsetroot) you can force detection by using the -d option of
11342 fvwm-root:
11344 xv -root -quit mybg.png; fvwm-root -d
11346 Due to the way X implements transparency no guarantees can be made
11347 that the desired effect can be achieved.  The application may even
11348 crash.  If you experience any problems with this option, do not
11349 use it.
11351 Using outline move and resize (see the
11352 .B OpaqueMoveSize
11353 command and the
11354 .I ResizeOpaque
11355 .B Style
11356 option) as well as setting the
11357 .I WindowShadeShrinks
11358 style may help.  The transparency achieved with
11359 .I Transparent
11360 depends on whether the colorset is applied to the foreground or
11361 the background of a window. In the second case the transparency is
11362 relative to the parent window of the window on which the colorset
11363 is defined.  For example:
11365 Colorset 12 VGradient 200 grey30 gery60
11366 Colorset 17 Transparent
11367 *FvwmIconMan: Colorset 10
11368 *FvwmIconMan: PlainColorset 17
11370 gives an IconMan with a vertical grey gradient background and the
11371 buttons use the background (by transparency). To obtain a (root)
11372 transparent IconMan:
11374 Colorset 12 Transparent
11375 Colorset 17 Transparent
11376 Colorset 18 Transparent
11377 Colorset 19 Transparent
11379 *FvwmIconMan: Colorset 12
11380 *FvwmIconMan: PlainColorset 17
11381 *FvwmIconMan: FocusColorset 18
11382 *FvwmIconMan: IconColorset  19
11384 The Colorset IconMan option defines the IconMan window background,
11385 but the PlainColorset and the FocusColorset are drawn on the
11386 foreground. So, the transparency of the IconMan buttons is
11387 achieved by drawing nothing.  Now if this IconMan is swallowed in
11388 an FvwmButtons as:
11390 FvwmButtons:(Colorset 10, Swallow \\
11391   "FvwmIconMan" 'FvwmIconMan')
11393 then,
11394 .B FvwmIconMan
11395 becomes a child of
11396 .B FvwmButtons
11397 and it is transparent relative to
11398 .BR FvwmButtons .
11399 So, in this case
11400 .B FvwmIconMan
11401 uses Colorset 10 as background. If you want root transparency use
11403 .I RootTransparent
11404 option.
11405 .BR FvwmButtons ", " FvwmIconMan ", " FvwmIdent ", " FvwmScroll
11407 .B FvwmTaskBar
11408 are relatively simple. There is one main colorset option which
11409 defines the background of the window and the other colorsets (if
11410 any) are drawn on the foreground. The case of
11411 .BR FvwmWinList " and " FvwmProxy
11412 are simpler. With
11413 .B FvwmWinList
11414 all the colorsets are drawn on the foreground and with
11415 .B FvwmProxy
11416 the two colorsets refer to the window backgrounds.
11417 .B FvwmPager
11418 is more complicated as almost everything in the pager are windows
11419 with some parental relations (the mini windows are the child and
11420 the desktops are the parents and all this is complicated by the
11421 hilighted page). So, the colorsets apply to the background of
11422 these windows. You should experiment. For
11423 .BR FvwmForm " and " FvwmScript
11424 the situation is similar. There is a main window (a child of the
11425 root window) which corresponds to the main colorset and most of
11426 the widgets are windows which are children of the main window.
11427 .I Tint
11428 may work or not with the
11429 .I Transparent
11430 option. When the colorset is drawn on the foreground
11431 .I Tint
11432 should work. In some cases, tinting may be very slow. Tinting may
11433 work with fvwm menu (without animation). Tinting may work better
11434 if your X server has backing store enabled (try xdpyinfo to see if
11435 this the case). There is a chance that the backing store support
11436 of your X server does not work well with the terrible hack used to
11437 Tint the ParentRelative Pixmap. So, to get tinted root
11438 transparency it is more safe to use the
11439 .I RootTransparent
11440 option.
11442 .IR RootTransparent " [ " buffer " ] "
11443 creates a root transparent background. To make this option work,
11444 you must use an Esetroot compatible program, fvwm-root with the
11445 --retain-pixmap option or FvwmBacker with the RetainPixmap option
11446 (and colorset or solid backgrounds).  The
11447 .I buffer
11448 keyword is useful only when the
11449 .I Tint
11450 option is used too. This speeds up creation of windows which use
11451 the colorset (useful for fvwm menus) at the cost of memory
11452 usage. It also speeds up opaque move and resize which can be
11453 unacceptably slow without
11454 .IR buffer .
11455 However, this option may add a lot of memory to your X server
11456 (depending on the size of the image used to set the
11457 background). In summary, using outline move and resize for modules
11458 which use such a colorset may be a good idea.
11460 .IR Shape ", " TiledShape " and " AspectShape
11461 take a file name as an argument, search the
11462 .B ImagePath
11463 and use it as the shape bitmap.
11464 .I TiledShape
11465 produces repeated copies of the bitmap with no scaling,
11466 .I Shape
11467 causes the bitmap to be stretched to fit whatever object the
11468 colorset is applied to and
11469 .I AspectShape
11470 stretches to fit but retains the bitmap aspect ratio.  If the file
11471 is a pixmap in xpm format, the shape mask of the pixmap is used.
11473 Warning: Due to the way X11 implements shapes you cannot take back
11474 making windows shaped. You may have to restart fvwm or the shaped
11475 application.
11477 .I ?Gradient ...
11478 creates a pixmap and stretches it to fit the window.
11479 .I ?Gradient
11480 may be one of HGradient, VGradient, DGradient, BGradient,
11481 SGradient, CGradient, RGradient or YGradient.  The gradient types
11482 are as follows:  H is horizontal; V is vertical; D is diagonal
11483 from top left to bottom right; B is a backwards diagonal from
11484 bottom left to top right; S is concentric squares; C is concentric
11485 circles; R is a radar like pattern and Y is a Yin Yang style (but
11486 without the dots).
11487 Please refer to the
11488 .B COLOR GRADIENTS
11489 section for the syntax of gradients.
11491 .I Tint
11492 takes 2 arguments, a color and a percentage between 0 and 100. It
11493 causes the image defined using
11494 .I ?Pixmap
11496 .I ?Gradient
11497 to be tinted with the specified color using the percentage. If the
11498 image is transparent
11499 .I Tint
11500 tints only the image part. Unfortunately, a colorset background
11501 specified using the
11502 .I Transparent
11503 option can give strange results. See the
11504 .I Transparent
11505 option for details. With no arguments this option removes the
11506 tint.
11508 .I fgTint
11509 takes 2 arguments, a color and a percentage between 0 and 100. It
11510 causes the color defined using
11511 .I fg
11512 to be tinted with the specified color using the percentage. With
11513 no arguments this option removes the tint.
11515 .I bgTint
11516 takes 2 arguments, a color and a percentage between 0 and 100. It
11517 causes the color defined using
11518 .I bg
11519 to be tinted with the specified color using the percentage. If the
11520 .I sh
11522 .I hi
11523 colors are not specified, they are recomputed from the tinted bg
11524 color. With no arguments this option removes the tint.
11526 .I Alpha
11527 takes a percentage between 0 and 100 as an argument. It causes
11528 fvwm to merge the image defined using
11529 .I ?Pixmap
11531 .I ?Gradient
11532 with the
11533 .I bg
11534 color using the percentage. If the percentage is 0 the image is
11535 hidden and if it is 100 the image is displayed as usual (no
11536 merge). The default is 100 and it is restored if no argument is
11537 given.
11539 .I fgAlpha
11540 takes a percentage between 0 and 100 as an argument. It causes
11541 fvwm to merge the text and the colorset background using the
11542 percentage. If the percentage is 0 the text is hidden and if it is
11543 100 the text is displayed as usual (no merge). This option has an
11544 effect only with fonts loaded by Xft, see the
11545 .B FONT NAMES AND FONT LOADING
11546 section. The default is 100 and it is restored if no argument is
11547 given.
11549 .I Dither
11550 causes fvwm to dither the image defined using
11551 .I ?Pixmap
11553 .I ?Gradient.
11554 This is useful only with displays with depth less than or equal to
11555 16 (i.e., on displays which can only display less than 65537
11556 colors at once). The dithering effect lets you simulate having
11557 more colors available that you actually have.
11558 .I NoDither
11559 causes fvwm to do not dither the images.
11560 .I Dither
11561 is the default if the depth is less than or equal to 8 (a screen
11562 with 256 colors or less). In depth 15 (32768 colors) and 16 (65536
11563 colors), the default is
11564 .IR NoDither ,
11565 however this effect can be useful with images which contain a lot
11566 of close colors. For example a fine gradient will look more
11567 smooth.
11569 .I IconTint
11570 takes 2 arguments, a color and a percentage between 0 and 100. It
11571 causes fvwm or a module to tint the "icons" which are rendered
11572 into the colorset background with the specified color using a
11573 percentage. Here "icons" means, fvwm Icons, fvwm menu icons,
11574 MiniIcons which represent applications in various modules, images
11575 loaded by modules (e.g., images specified by the
11576 .I Icon
11577 .B FvwmButtons
11578 button option) ...etc. With no arguments this option removes the
11579 icon tint.
11581 .I IconAlpha
11582 takes a percentage between 0 and 100 as an argument. It causes
11583 fvwm to merge the "icons" which are rendered into the colorset
11584 background using this percentage. The default is 100 and it is
11585 restored if no argument is given.
11587 .IR Note :
11588 It is equivalent to use "Tint a_color rate" and "Alpha a" if a =
11589 100 and the bg color is a_color. This equivalence does not hold
11590 for IconAlpha and IconTint as the background can be an image or a
11591 gradient (and not a uniform color background).
11592 However, in some cases you can achieve (almost) the same effect by
11593 using IconTint in the place of IconAlpha. This is preferable as,
11594 in general, IconAlpha generates more redrawing than IconTint.
11596 .I NoShape
11597 removes the shape mask from the colorset while
11598 .I Plain
11599 removes the background pixmap or gradient.
11601 .SH EXAMPLES
11604 Colorset 3 fg tan, bg navy
11607 If necessary this creates colorsets 0, 1, 2 and 3 and then changes
11608 colorset 3 to have a foreground of tan, a background of navy.
11611 Colorset 3 bg "navy blue"
11614 changes the background color of colorset 3 to navy blue. The
11615 foreground and pixmap are unchanged.
11618 Colorset 3 AspectPixmap large_murky_dungeon.xpm
11621 Causes depression.
11624 Colorset 3 bg Average
11627 Sets the background color and the relief colors to match the
11628 background pixmap. This is the default setting but it must be used
11629 if a background color was specified and is now not required.
11631 Colorset 3 YGradient 200 3 blue 1000 navy 1 blue 1000 navy
11633 Adds a Yin Yang gradient background pixmap to colorset 3.  If the
11634 background is set to average it is recomputed along with the
11635 foreground if that is set to contrast.
11638 #!/bin/sh
11639 FvwmCommand "Colorset 7 fg navy, bg gray"
11640 while true
11642   FvwmCommand "Colorset 7 fg gray"
11643   sleep 1
11644   FvwmCommand "Colorset 7 fg navy"
11645   sleep 1
11646 done
11648 Makes colorset 7 blink.
11650 The color names used in colorsets are saved as fvwm variables can
11651 be substituted in any fvwm command. For example:
11653 AddToFunc InitFunction
11654 + I Exec exec xterm -fg $[fg.cs0] -bg $[bg.cs0]
11656 Where $[fg.cs0] is the foreground color of colorset zero. Please
11657 refer to the
11658 .B COMMAND EXPANSION
11659 section for more information.
11662 .B CleanupColorsets
11663 Resets a definition of all colorsets.
11666 .SS COLOR GRADIENTS
11668 A color gradient is a background that changes its color gradually
11669 from one hue to a different one.  Color gradients can be used by
11670 various commands and modules of fvwm.  There are eight types of
11671 gradients:
11672 .B HGradient
11673 is a horizontal gradient,
11674 .B VGradient
11675 is vertical,
11676 .B DGradient
11677 is diagonal from top left to bottom right,
11678 .B BGradient
11679 is backwards diagonal from bottom left to top right,
11680 .B SGradient
11681 is concentric squares,
11682 .B CGradient
11683 is concentric circles,
11684 .B RGradient
11685 is a radar like pattern and
11686 .B YGradient
11687 is a Yin Yang style (but without the dots).
11689 The color gradient syntax has two forms:
11692 .BI "?Gradient " "colors start-color end-color"
11693 This form specifies a linear gradient.  The arguments denote the
11694 total number of
11695 .I colors
11696 to allocate (between 2 and 1000), the initial color and the final
11697 color.
11699 Example:
11701 TitleStyle VGradient 20 \\
11702 rgb:b8/ce/bc rgb:5b/85/d0
11706 .BI "?Gradient " "colors segments color length color" " [" "length color" "] ..."
11707 The second form specifies a nonlinear gradient.  The arguments are:
11708 the total number of
11709 .I colors
11710 to allocate (between 2 and 1000), then the number of
11711 .IR segments .
11712 For each segment, specify the starting
11713 .IR color ,
11714 a relative
11715 .IR length ,
11716 then the ending color.  Each subsequent segment begins with the
11717 second color of the last segment.  The lengths may be any
11718 non-negative integers.  The length of one segment divided by the
11719 sum of all segments lengths is the fraction of the colors that
11720 are used for the segment.
11721 .in -2
11723 Examples:
11725 MenuStyle * MenuFace DGradient \\
11726   128 2 lightgrey 50 blue 50 white
11728 # 20% gradient from red to blue,
11729 # 30% from blue to black,
11730 # 50% from black to grey
11731 MenuStyle * DGradient 100 3 Red 20 Blue 30 \\
11732   Black 50 Grey
11734 # 50% from blue to green, then
11735 # 50% from yellow to red
11736 Colorset 0 Blue Red HGradient \\
11737   128 3 Blue 1000 Green 1 Yellow 1000 Red
11740 .SH ENVIRONMENT
11743 .I DISPLAY
11744 Fvwm starts on this display unless the
11745 .I -display
11746 option is given.
11748 .I FVWM_MODULEDIR
11749 Set by fvwm to the directory containing the standard fvwm modules.
11751 .I FVWM_USERDIR
11752 Used to determine the user's data directory for reading and
11753 sometimes writing personal files. If this variable is not already
11754 set, it is set by fvwm to $HOME/.fvwm, which is the default user's
11755 data directory.
11757 .I SESSION_MANAGER
11758 Fvwm tries to contact this session manager.
11760 .I SESSION_MANAGER_NAME
11761 This is used mainly to determine xsm running to work around its
11762 bug. If this variable is set to "xsm", DiscardCommand is set as
11763 xsm expects it and not as XSMP requires.  If you run fvwm under
11764 xsm, you should set this variable to "xsm", otherwise old state
11765 files are not removed.
11767 .I SM_SAVE_DIR
11768 If this is set, fvwm saves its session data in this
11769 directory. Otherwise it uses
11770 .IR $HOME .
11771 Note, the state files are named
11772 .I .fs-??????
11773 and normally are removed automatically when not used anymore.
11775 .SH AUTHORS
11777 Robert Nation with help from many people, based on twm code, which
11778 was written by Tom LaStrange.  After Robert Nation came Charles
11779 Hines, followed by Brady Montz. Currently fvwm is developed by a
11780 number of people on the fvwm-workers mailing list.
11782 .SH COPYRIGHT
11784 Fvwm and all the modules, scripts and other files coming with the
11785 distribution are subject to the GNU General Public License
11786 (GPL). Please refer to the
11787 .I COPYING
11788 file that came with fvwm for details.
11790 .SH BUGS
11792 As of fvwm version 2.4.0 there were exactly 71.8 unidentified
11793 bugs. Since then 22.825 bugs have been fixed.  Assuming that there
11794 are at least 10 unidentified bugs for every identified one, that
11795 leaves us with 71.8 - 22.825 + 10 * 22.825 = 277.225 unidentified
11796 bugs. If we follow this to its logical conclusion we will have an
11797 infinite number of unidentified bugs before the number of bugs can
11798 start to diminish, at which point the program will be bug-free.
11799 Since this is a computer program infinity = 3.4028e+38 if you
11800 don't insist on double-precision.  At the current rate of bug
11801 discovery we should expect to achieve this point in 4.27e+27
11802 years.  I guess we better plan on passing this thing on to our
11803 children...
11805 Known bugs can be found in the fvwm bug tracking system
11806 (accessible from the fvwm home page).
11808 Bug reports can be sent to the fvwm-workers mailing list at
11809 @FVWMWORKERSLIST@ (see the
11810 .IR FAQ )
11811 or reported through the bug tracking system.
11813 The official fvwm homepage is
11814 .BR @FVWMHOMEPAGE@ .