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