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