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