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