12 .\" Formatting instructions for the fvwm man page:
14 .\" - Do not use \f... formatting instructions
15 .\" unless you have to, see below.
16 .\" - Avoid single and double quotes wherever possible.
18 .\" For further details, please refer to the Linux Man-Page how-to.
20 .\" context typeface example
21 .\" ---------------------------------- -------------- -----------------
22 .\" filenames: italics (.I) .I .fvwm/config
23 .\" command line options of fvwm cmd: bold (.B) .B \-cmd
24 .\" arguments of command line options: italics (.I) .BI "\-cmd " command
25 .\" fvwm commands: bold (.B) .B Move
26 .\" references to commands: bold (.B) .RB "See " Move
27 .\" references to man page sections: bold (.B) .RB "See " SYNOPSIS
28 .\" references to style options: italics (.I) .RI "See " Lenience
29 .\" command options: italics (.I) .BI "Move " "0 0"
30 .\" command syntax: bold/ita. (.BI) .BI "Move [" "x y" "]"
31 .\" environment variables: italics (.I) .I $DISPLAY
32 .\" key names: small (.SM) .SM Tab
33 .\" style names and strings: double quotes "stylename", "x"
34 .\" single characters: single quotes '@'
35 .\" module names: bold (.B) .B FvwmPager
36 .\" links to web pages: bold (.B) .B @FVWMHOMEPAGE@
37 .\" acronyms: small (.SM) .SM ICCCM
40 .\" The name fvwm is written in lower case throughout this man
41 .\" page. Fvwm is written without a version number, i.e. fvwm,
42 .\" not fvwm2. The latter is currently used only in the .fvwm2rc
43 .\" file name; if there is a need to specify this old name, place
44 .\" it as an accompaniment to the preferred ~/.fvwm/config name.
46 .\" Note that the word "will" is rarely correct in a man page or
47 .\" any document. Describe what fvwm does, not what it will do,
48 .\" even if you haven't written the feature yet. dje 2/3/01
51 .\" A note to everyone who needs to write dates. Don't use 2/3/01
52 .\" notation, a non-american person simply can't parse such
53 .\" sequence of digits. Please use 3-Feb-2001 or 2001-02-03 forms.
56 .\" A note about the rule against \f... formatting. On Solaris,
57 .\" AIX, and HPUX the ".BI" type commands are limited to 6
58 .\" arguments. use \f... formatting in that case. See the lines
59 .\" formatted with ".IP".
61 .\" Note: .IP does not work very well as it sometimes indents
62 .\" from the right too. Instead, begin these paragraphs with
65 .\" This even saves the \fB...\fP pairs.
68 .\" @(#)@PACKAGE@-@VERSION@ @RELDATELONG@
69 .de EX \"Begin example
82 .ta .3i .6i .9i 1.2i 1.5i 1.8i
83 .TH FVWM 1 "@RELDATELONG@" FVWM "FVWM @VERSION@@VERSIONINFO@"
87 fvwm \- @FVWMNAMELONG@ for X11
117 .RB [ \-\-debug-stack-ring ]
121 Fvwm is a window manager for X11. It is designed to minimize
122 memory consumption, provide a 3D look to window frames, and a
125 Note that there are several window managers around that have
126 "fvwm" in their name. In the past, version 2.x of fvwm was
127 commonly called fvwm2 to distinguish it from the former version
128 1.x (fvwm or even fvwm1). Since version 1.x has been replaced by
129 version 2.x a long time ago we simply call version 2.x and all
130 versions to come, fvwm, throughout this document, and the
131 executable program is named fvwm. There is an fvwm offspring
132 called fvwm95, it is mostly a patched version of fvwm-2.0.43. The
133 main goal of fvwm95 was to supply a Windows 95 like look and
134 feel. Since then, fvwm has been greatly enhanced and practically
135 all fvwm95 features can be achieved by fvwm.
137 Fvwm provides both, a large
140 .I multiple disjoint desktops
141 which can be used separately or together. The virtual desktop
142 allows you to pretend that your video screen is really quite
143 large, and you can scroll around within the desktop. The multiple
144 disjoint desktops allow you to pretend that you really have
145 several screens to work at, but each screen is completely
146 unrelated to the others.
149 .I keyboard accelerators
150 which allow you to perform most window manager functions,
151 including moving and resizing windows, and operating the menus,
152 using keyboard shortcuts.
154 Fvwm has also overcome the distinction between configuration
155 commands and action commands that most window managers
156 make. Configuration commands typically set fonts, colors, menu
157 contents, key and mouse function bindings, while action commands
158 do things like raise and lower windows. Fvwm makes no such
159 distinction, and allows anything to be changed at any time.
161 Other noteworthy differences between fvwm and other X11 window
162 managers are the introduction of the
163 .IR SloppyFocus " and " NeverFocus
164 focus methods. Focus policy can be separately specified for
165 different window groups. Windows using
167 acquire focus when the pointer moves into them and retain focus
168 until some other window acquires it. Such windows do not lose
169 focus when the pointer moves into the root window. The
171 policy is provided for use with windows into which one never types
172 (e.g. xclock, oclock, xbiff, xeyes, tuxeyes) - for example, if a
173 SloppyFocus terminal window has focus, moving the pointer over a
175 decoration window does not deprive the terminal of focus.
179 These are the command line options that are recognized by fvwm:
181 .BR "-i" " | " "--clientid"
183 This option is used when fvwm is started by a session
184 manager. Should not be used by a user.
186 .BR "-c" " | " "--cmd "
195 as its initialization command. (Note that up to 10
197 parameters can be given, and they are executed in the order
200 Any module started by command line arguments is assumed to be a
201 module that sends back config commands. All command line modules
202 have to quit before fvwm proceeds on to the StartFunction and
203 setting border decorations and styles. There is a potential
204 deadlock if you start a module other than FvwmCpp/FvwmM4/FvwmPerl
205 but there is a timeout so fvwm will eventually get going.
207 As an example, starting the pager this way hangs fvwm until
208 the timeout, but the following should work well:
210 fvwm -c "AddToFunc StartFunction I Module FvwmPager"
213 .BR "-d" " | " "--display "
215 Manage the display called
217 instead of the name obtained from the environment variable
220 .BR "-D" " | " "--debug"
221 Puts X transactions in synchronous mode, which dramatically slows
222 things down, but guarantees that fvwm's internal error messages
223 are correct. Also causes fvwm to output debug messages while
226 .BI "-f " config-file
231 as its initialization file. This is equivalent to
235 .BR "-h" " | " "--help"
236 A short usage description is printed.
238 .BR "-r" " | " "--replace"
239 Try to take over from a previously running wm. This does not work
240 unless the other wm is
244 .BR "-F" " | " "--restore "
246 This option is used when fvwm is started by a session manager.
247 Should not be used by a user.
249 .BR "-s" " | " "--single-screen"
250 .RI "[" screen_num "]"
251 On a multi-screen display, run fvwm only on the screen named in
254 environment variable or provided through the
256 option. The optional argument
258 should be positive or null and override the screen number.
259 Normally, fvwm attempts to start up on all screens of a
260 multi-screen display.
262 .BR "-V" " | " "--version"
263 Prints the version of fvwm to
265 Also prints an information about the compiled in support for
266 readline, rplay, stroke, xpm, png, gnome hints, EWMH hints,
267 session management, bidirectional text, multibyte characters,
268 xinerama and Xft aa font rendering.
270 .BR "-C" " | " "--visual "
274 for the window borders and menus.
276 can be "StaticGray", "GrayScale", "StaticColor", "PseudoColor",
277 "TrueColor" or "DirectColor".
279 .BR "-I" " | " "--visualid "
283 as the visual id for the window borders and menus.
285 can be specified as N for decimal or 0xN for hexadecimal. See man
286 page of xdpyinfo for a list of supported visuals.
288 .BR "-l" " | " "--color-limit "
292 on the colors used in image, gradient and possibly simple colors
293 used by fvwm. In fact, fvwm (and all the modules) uses a palette
296 colors. This option is only useful with screens that display 256
297 colors (or less) with a dynamic visual (PseudoColor, GrayScale or
298 DirectColor). The default depends on your X server and how you run
299 fvwm. In most case this default is reasonable. The
301 option should be used only if you encounter problems with colors.
302 By default, fvwm tries to detect "large" pre-allocated
303 palettes. If such a palette is detected fvwm uses it and a priori
306 must not be used. Moreover, in this case the
307 .BR "-A" " and " "-S"
308 options are forced. Note that XFree-4.2 pre-allocate 244 colors
309 (if you use a driver with Render support) leaving only a few free
310 colors. This may leads to some colors problems (and nothing can be
311 done). XFree-4.3 or better pre-allocate only 85 colors. If no
312 pre-allocated palette is auto detected the defaults are as follow:
314 | depth 8 (256 colors)| depth 4 (16 colors)
315 ------------|---------------------|--------------------
316 PseudoColor | 68 (4 cc + 4 grey) | 10 (2 cc + 2 grey)
317 ------------|---------------------|--------------------
318 GrayScale | 64 regular grey | 8 regular grey
319 ----------- |---------------------|--------------------
320 DirectColor | 32 (3 cc + 5 grey) | 10 (2 cc + 2 grey)
321 ------------|------------------------------------------
322 where "I cc" means a "IxIxI color cube"
324 These defaults may change before version 2.6. Note that if you use a
325 private color map (i.e., fvwm is started with the
326 .BR "-C" " or the " "-I"
327 options), then others defaults are used.
329 Now what to do if you encounter problems with colors? The first
330 thing to do is to check if you really cannot run your X server
331 with depth 15, 16 or better. Check your X server
332 documentation. Note that some hardware can support two different
333 depths on the same screen (typically depth 8 and depth 24). If
334 depth 8 is the default, you can force fvwm to use the best depth
339 as argument. So now we assume that you are forced to run in depth
340 8 with a dynamic visual because your hardware/driver cannot do
341 better or because you need to use an application which needs to
342 run under this mode (e.g., because this application needs
343 read-write colors). What it should be understand is that you have
344 only 256 colors and that all the applications which uses the
345 default color map must share these colors. The main problem is
346 that there are applications which use a lot or even all the
347 colors. If you use such application you will have no more free
348 colors and some applications (which used only a few colors) may
349 fail to start or are unusable. There are three things that can be
350 done (and fvwm does not really play a particular role, all
351 applications are concerned). The first is to run the applications
352 which waste your (default) color map with a private color map. For
353 example, run netscape with the -install option, run KDE/QT
354 applications with the --cmap option, use the
356 option for fvwm. The disadvantage of this method is that it is
357 visually disturbing (see the
359 command for a better control of the color maps switching). The
360 second method is to limit the number of colors that the
361 applications used. Again, some applications have options to
362 specify a given color limit. With fvwm you may try various values,
363 61 (a special "visual" palette), 56 (a 4x4x3 color cubes plus 6
364 grey), 29 (a 3x3x3 color cube plus 2 grey), 10 or 9. Also, you may
367 option. However, limiting the number of colors is not the
368 definitive solution. The definitive solution is to try cause
369 applications which use a lot of colors use the same colors. This
370 is a difficult task as there are no formal standards for this
371 goal. However, some toolkits as QT and GTK use color cubes as
372 palettes. So, the idea is to configure your applications/toolkits
373 to all use the same color cube. Moreover, you can use the colors
374 in this color cube in your X resources configuration files and/or
375 as arguments to colors options.
376 Fvwm can use any color cube of the form RxGxB with 2 <= R <= 6, R
377 = G, R-1 =< B <= R and B >= 2. To get an RxGxB color cube give an
380 an integer c >= R*G*B and < (R+1)*(G+1)*B if B=R and < R*G*(B+1)
381 if B < R (and different from 61). If c > R*G*B, then some grey may
382 be added to the color cube. You can use the
383 .BI "PrintInfo " Colors " " [1]
384 command to get information on your fvwm colors setting. In
385 particular, this command prints the palette used by fvwm in rgb
386 format (the last integer gives the number of times fvwm has
387 allocated the colors).
389 .BR "-L" " | " "--strict-color-limit"
390 If the screens display 256 colors (or less) and has a dynamic visual,
391 causes fvwm to use its palette for all the colors. By default, the
392 palette is used only for images and gradients.
394 .BR "-P" " | " "--visual-palette"
395 If the screen displays 256 colors (or less) and has a dynamic
396 visual, this option causes fvwm to use a palette designed for
397 limiting the "visual" color distance between the points of the
398 palette. Moreover, for better color sharing, if possible colors
399 with a name in the X rgb data base are used for defining the
400 colors (with the hope that applications and images will prefer to
401 use named colors). If the
403 option is not used this palette has 61 colors. This palette is
404 also automatically selected if 61 or 9 is used as argument to the
408 .BR "-A" " | " "--allocate-palette"
409 If the screen displays 256 colors (or less) and has a dynamic
410 visual this option causes fvwm to allocate all the colors of its
411 palette at start up for reserving these colors for future
412 use. This option forces the .B -static-palette option. By default,
413 fvwm allocates (reserves) a color in its palette only if it needs
416 .BR "-S" " | " "--static-palette"
417 If the screen displays 256 colors (or less) and has a dynamic
418 visual this option causes fvwm to never free the colors in its
419 palette. By default, when fvwm does not need a color any more it
420 frees this color so that a new color can be used. This option may
421 speed up image loading and save a few bits of memory.
424 This option is provided for backward compatibility only. Blacking
425 out the screen during startup is not necessary anymore.
427 .BI "--debug-stack-ring"
428 Enables stack ring debugging. This option is only intended for
429 internal debugging and should only be used by developers.
431 .SH ANATOMY OF A WINDOW
433 Fvwm puts a decorative border around most windows. This border
434 consists of a bar on each side and a small L-shaped section on
435 each corner. There is an additional top bar called the title-bar
436 which is used to display the name of the window. In addition,
437 there are up to 10 title-bar buttons. The top, side, and bottom
438 bars are collectively known as the side-bars. The corner pieces
439 are called the frame.
441 With the built-in minimal configuration, dragging mouse button 1
442 in the frame or side-bars begins a resize operation on the window.
443 Dragging mouse button 2 in the frame or side-bars begins a move
444 operation. There are raise/lower operations bound to a single
445 clicking on borders. Similarly for the window title.
447 Up to ten title-bar buttons may exist. Their use is completely
448 user definable. One popular configuration uses one button on the
449 left that is used to bring up a list of window options and two
450 buttons on the right used to iconify and maximize the window.
451 Another popular configuration adds a close button to the right.
452 The number of title-bar buttons used depends on which ones have
453 mouse actions bound to them. See the section on the
457 .SH THE VIRTUAL DESKTOP
459 Fvwm provides multiple virtual desktops for users who wish to use
460 them. The screen is a viewport onto a
462 which may be larger than the screen. Several distinct desktops
463 can be accessed (concept: one desktop for each project, or one
464 desktop for each application, when view applications are
465 distinct). Since each desktop can be larger than the physical
466 screen, divided into m by n
468 which are each the size of the physical screen, windows which are
469 larger than the screen or large groups of related windows can
472 The (m by n) size (i.e. number of pages) of the virtual desktops
473 can be changed any time, by using the
475 command. All virtual desktops must be (are) the same
476 size. The total number of distinct desktops does not need to be
477 specified, but is limited to approximately 4 billion total. All
478 windows on a range of desktops can be viewed in the
480 a miniature view of the desktops. The pager is an accessory
481 program, called a module, which is not essential for the window
482 manager to operate. Windows may also be listed, along with their
483 geometries, in a window list, accessible as a pop-up menu, or as a
484 separate window, called the
488 Fvwm keeps the windows on the desktop in a layered stacking order;
489 a window in a lower layer never obscures a window in a higher
490 layer. The layer of a window can be changed by using the
492 command. The concept of layers is a generalization of the
494 flag of older fvwm versions. The
495 .IR StaysOnTop " and " StaysPut
497 options are now implemented by putting the windows in suitable
498 layers and the previously missing
499 .IB "StaysOnBottom " Style
500 option has been added.
503 windows are windows which transcend the virtual desktop by
504 "Sticking to the screen's glass". They always stay put on the
505 screen. This is convenient for things like clocks and xbiff's, so
506 you only need to run one such gadget and it always stays with you.
507 Icons can also be made to stick to the glass, if desired.
509 Window geometries are specified relative to the current viewport.
514 creates a window in the upper left hand corner of the visible
515 portion of the screen. It is permissible to specify geometries
516 which place windows on the virtual desktop, but off the screen.
517 For example, if the visible screen is 1000 by 1000 pixels, and the
518 desktop size is 3x3, and the current viewport is at the upper left
519 hand corner of the desktop, invoking:
521 xterm -geometry +1000+1000
523 places a window just off of the lower right hand corner of the
524 screen. It can be found by moving the mouse to the lower right
525 hand corner of the screen and waiting for it to scroll into view.
526 A geometry specified as something like:
530 places the window's lower right hand corner 5 pixels from the
531 lower right corner of the visible portion of the screen. Not all
532 applications support window geometries with negative offsets.
533 Some applications place the window's upper right hand corner 5
534 pixels above and to the left of the upper left hand corner of the
535 screen; others may do just plain bizarre things.
537 There are several ways to cause a window to map onto a desktop or
538 page other than the currently active one. The geometry technique
539 mentioned above (specifying x,y coordinates larger than the
540 physical screen size), however, suffers from the limitation of
541 being interpreted relative to the current viewport: the window may
542 not consistently appear on a specific page, unless you always
543 invoke the application from the same page.
545 A better way to place windows on a different page, screen or desk
546 from the currently mapped viewport is to use the
547 .IR StartsOnPage " or " StartsOnScreen
548 style specification (the successors to the older
552 file. The placement is consistent: it does
553 not depend on your current location on the virtual desktop.
555 Some applications that understand standard Xt command line
556 arguments and X resources, like xterm and xfontsel, allow the user
557 to specify the start-up desk or page on the command line:
561 starts an xterm on desk number 1;
563 xterm -xrm "*Page:3 2 1"
565 starts an xterm two pages to the right and one down from the upper
566 left hand page of desk number 3. Not all applications understand
567 the use of these options, however. You could achieve the same
568 results with the following lines in your
580 .SH USE ON MULTI-SCREEN DISPLAYS
584 command line argument is not given, fvwm automatically starts up
585 on every screen on the specified display. After fvwm starts each
586 screen is treated independently. Restarts of fvwm need to be
587 performed separately on each screen. The use of
591 is strongly recommended for multi-screen displays. You may need
592 to quit on each screen to quit from the X session completely.
593 This is not to be confused with Xinerama support.
597 Fvwm supports the Xinerama extension of newer X servers which
598 is similar to multi head support (multiple screens) but allows for
599 move windows between screens. If Xinerama support has been
600 compiled into fvwm, it is used whenever fvwm runs on an X server
601 that supports and uses multiple screens via Xinerama. Without
602 this option, the whole desktop is treated as one big screen. For
603 example, menus might pop up right between two screens. The
605 command allows for specifying an explicit resistance value for moving
606 windows over the screen edge between two Xinerama screens.
607 Xinerama support can be enabled or disabled on the fly or from the
608 configuration file with the
610 command. Many modules and commands work nicely with Xinerama
613 Everywhere where a geometry in the usual X format can be supplied,
614 fvwm's Xinerama extension allows for specifying a screen in addition
615 to the geometry (or even the screen alone). To do this, a '@' is
616 added to the end of the geometry string followed by either the
617 screen number or a letter. A number is taken as the number of the
618 Xinerama screen to be used (as configured in the X server). The
619 letter can be one of 'g' for the global screen (the rectangle that
620 encloses all Xinerama screens), 'p' for the primary screen (see
621 below), 'c' for the current screen (the one that currently
622 contains the pointer). If the X server does not support Xinerama
623 or only one screen is used, the screen bit is ignored.
626 Style * IconBox 64x300-0-0@p
629 Xinerama support can be configured to use a primary screen. Fvwm
630 can be configured to place new windows and icons on this screen.
631 The primary screen is screen 0 by default but can be changed with
633 .B XineramaPrimaryScreen
636 Xinerama support was designed to work out of the box with the same
637 configurations file that would work on a single screen. It may
638 not work too well if the involved screens use different screen
639 resolutions. In this situation, windows may get stuck in the
640 portion of the whole desktop that belongs to neither screen. If
641 this happens, the windows or icons can be retrieved with the
648 that can be entered in an FvwmConsole window or with FvwmCommand.
650 For multi-screen implementations other than Xinerama, such as
651 Single Logical Screen, it is possible to simulate a Xinerama
652 configuration if the total screen seen by fvwm is made up of
653 equal sized monitors in a rectangular grid. The commands
654 .BR XineramaSls ", " XineramaSlsSize " and " XineramaSlsScreens
655 are used to configure this feature.
659 During initialization, fvwm searches for a configuration file
660 which describes key and button bindings, and many other
661 things. The format of these files is described later. Fvwm first
662 searches for configuration files using the command
667 .IR config " in " "$FVWM_USERDIR" " and " "$FVWM_DATADIR"
668 directories, as described in
670 below. If this fails more files are queried for backward
671 compatibility. Here is the complete list of all file locations
672 queried in the default installation (only the first found file
676 /usr/local/share/fvwm/config
680 /usr/local/share/fvwm/.fvwm2rc
681 /usr/local/share/fvwm/system.fvwm2rc
684 Please note, the last 5 locations are not guarranteed to be
685 supported in the future.
687 If a configuration file is not found, the left mouse button, or
691 keys on the root window bring up menus and forms that can create
692 a starting configuration file.
694 Fvwm sets two environment variables which are inherited by its
697 which describes the display on which fvwm is running.
703 which doesn't work too well when passed through rsh to another
706 is set to a network-ready description of the display.
708 always uses the TCP/IP transport protocol (even for a local
711 should be used for local connections, as it may use Unix-domain
712 sockets, which are faster.
714 If you want to start some applications or modules with fvwm, you
725 but it is not recommended; do this only if you know what you are
726 doing. It is usually critical to start applications or modules
727 after the entire config is read, because it contains styles or
728 module configurations which can affect window appearance and
731 The standard way to start applications or modules on fvwm's start
732 up is to add them to an initialization function (usually
733 .BR StartFunction " or " InitFunction ).
734 This way they are only started after fvwm finishes to read and
739 Fvwm has three special functions for initialization:
741 which is executed on startups and restarts;
742 .BR InitFunction " and " RestartFunction ,
743 which are executed during initialization and restarts
744 (respectively) just after StartFunction. These functions may be
745 customized in a user's
749 command (described later) to start up modules, xterms, or whatever
750 you'd like to have started by fvwm.
752 Fvwm has also a special exit function:
754 executed when exiting or restarting before actually quitting.
755 It could be used to explicitly kill modules, etc.
757 If fvwm is run under a session manager, functions
758 .BR SessionInitFunction " and " SessionRestartFunction
759 are executed instead of InitFunction and RestartFunction.
760 This helps to define the user's
762 file to be good for both running under a session manager and
763 without it. Generally it is a bad idea to start xterms or other
764 applications in "Session*" functions. Also someone can decide to
765 start different modules while running under a session manager or
766 not. For the similar purposes
767 .B SessionExitFunction
768 is used instead of ExitFunction.
770 DestroyFunc StartFunction
771 AddToFunc StartFunction
772 + I Module FvwmPager * *
773 + I Module FvwmButtons
775 DestroyFunc InitFunction
776 AddToFunc InitFunction
777 + I Module FvwmBanner
778 + I Module FvwmTaskBar
779 + I xsetroot -solid cyan
783 DestroyFunc RestartFunction
784 AddToFunc RestartFunction
785 + I Module FvwmTaskBar
787 DestroyFunc SessionInitFunction
788 AddToFunc SessionInitFunction
789 + I Module FvwmBanner
791 DestroyFunc SessionRestartFunction
792 AddToFunc SessionRestartFunction
795 You don't need to define all special functions if some are empty.
796 Also note, all these special functions may be emulated now using
797 .BR StartFunction " and " ExitFunction,
800 DestroyFunc StartFunction
801 AddToFunc StartFunction
802 + I Test (Init) Module FvwmBanner
803 + I Module FvwmPager * *
804 + I Test (Restart) Beep
806 DestroyFunc ExitFunction
807 AddToFunc ExitFunction
808 + I Test (Quit) Echo Bye-bye
809 + I KillModule MyBuggyModule
810 + I Test (ToRestart) Beep
813 .SH COMPILATION OPTIONS
815 Fvwm has a number of compile-time options. If you have trouble
816 using a certain command or feature, check to see if support for it
817 was included at compile time. Optional features are described in
820 file that is generated during compilation.
831 images are monochrome. Fvwm can always display
837 formats are color images.
839 options determine whether fvwm can display
846 file for more information.
850 compile-time option can make fvwm display spiffy
855 A module is a separate program which runs as a separate Unix
856 process but transmits commands to fvwm to execute. Users can
857 write their own modules to do any weird or bizarre manipulations
858 without bloating or affecting the integrity of fvwm itself.
860 Modules must be spawned by fvwm so that it can set up two pipes
861 for fvwm and the module to communicate with. The pipes are
862 already open for the module when it starts and the file
863 descriptors for the pipes are provided as command line arguments.
865 Modules can be spawned during fvwm at any time during the X
866 session by use of the
868 command. Modules can exist for the duration of the X
869 session, or can perform a single task and exit. If the module is
870 still active when fvwm is told to quit, then fvwm closes the
871 communication pipes and waits to receive a SIGCHLD from the
872 module, indicating that it has detected the pipe closure and has
873 exited. If modules fail to detect the pipe closure fvwm exits
874 after approximately 30 seconds anyway. The number of
875 simultaneously executing modules is limited by the operating
876 system's maximum number of simultaneously open files, usually
879 Modules simply transmit commands to the fvwm command
880 engine. Commands are formatted just as in the case of a
883 setup file. Certain auxiliary information is also transmitted, as
888 module is documented in its own man page.
898 2.0 compliant. In addition,
900 states that it should be possible for applications to receive any
901 keystroke, which is not consistent with the keyboard shortcut
902 approach used in fvwm and most other window managers. In
903 particular you cannot have the same keyboard shortcuts working
904 with your fvwm and another fvwm running within Xnest (a nested X
905 server running in a window). The same problem exists with mouse
910 states that windows possessing the property
913 Client accepts input or input focus: False
915 should not be given the keyboard input focus by the window
916 manager. These windows can take the input focus by themselves,
917 however. A number of applications set this property, and yet
918 expect the window manager to give them the keyboard focus anyway,
919 so fvwm provides a window style,
921 which allows fvwm to overlook this
923 rule. Even with this window style it is not guaranteed that the
924 application accepts focus.
926 The differences between
928 1.1 and 2.0 include the ability to take over from a running
930 2.0 compliant window manager; thus
932 fvwm; vi ~/.fvwm/config; fvwm -replace
936 command. It is not exactly the same, since killing the previously
937 running wm may terminate your X session, if the wm was started as
938 the last client in your
939 .IR .Xclients " or " .Xsession
942 Further additions are support for client-side colormap
943 installation (see the .SM ICCCM for details) and the urgency hint.
944 Clients can set this hint in the WM_HINTS property of their window
945 and expect the window manager to attract the users attention to
946 the window. Fvwm has two re-definable functions for this purpose,
947 "UrgencyFunc" and "UrgencyDoneFunc", which are executed when the
948 flag is set/cleared. Their default definitions are:
950 AddToFunc UrgencyFunc
954 + I WarpToWindow 5p 5p
955 AddToFunc UrgencyDoneFunc
963 (version 1) compliant. Check
964 .B http://www.gnome.org
965 for what that may mean. To disable GNOME hints for some or all
970 .SH EXTENDED WINDOW MANAGER HINTS
972 Fvwm attempts to respect the extended window manager hints (ewmh
973 or EWMH for short) specification:
974 .BR http://www.freedesktop.org/standards/wm-spec.html
975 and some extensions of this specification. This allows fvwm to
980 version 2 and other applications which respect this specification
981 (any application based on
983 version 2). Applications which respect this specification are
984 called ewmh compliant applications.
986 This support is configurable with styles and commands.
987 These styles and commands have
989 as the prefix (so you can find them easily in this man page).
991 There is a new Context 'D' for the
992 .BR Key ", " PointerKey ", " Mouse " and " Stroke
993 commands. This context is for desktop applications (such as
994 kdesktop and Nautilus desktop).
996 When a compliant taskbar asks fvwm to activate a window (typically
997 when you click on a button which represents a window in such a
998 taskbar), then fvwm calls the complex function
999 .B EWMHActivateWindowFunc
1000 which by default is Iconify Off, Focus and Raise. You can redefine
1001 this function. For example:
1003 DestroyFunc EWMHActivateWindowFunc
1004 AddToFunc EWMHActivateWindowFunc I Iconify Off
1007 + I WarpToWindow 50 50
1009 additionally warps the pointer to the center of the window.
1013 specification introduces the notion of Working Area. Without ewmh
1014 support the Working Area is the full visible screen (or all your
1015 screens if you have a multi head setup and you use Xinerama).
1016 However, compliant applications (such as a panel) can ask to
1017 reserve space at the edge of the screen. If this is the case, the
1018 Working Area is your full visible screen minus these reserved
1019 spaces. If a panel can be hidden by clicking on a button the
1020 Working Area does not change (as you can unhide the panel at any
1021 time), but the Dynamic Working Area is updated: the space reserved
1022 by the panel is removed (and added again if you pop up the
1023 panel). The Dynamic Working Area may be used when fvwm places or
1024 maximizes a window. To know if an application reserves space you
1025 can type "xprop | grep _NET_WM_STRUT" in a terminal and select the
1026 application. If four numbers appear then these numbers define the
1027 reserved space as explained in the
1031 .SH MWM COMPATIBILITY
1033 Fvwm provides options to emulate Motif Window Manager (Mwm) as
1034 well as possible. Please refer to the
1036 command as well as to the Mwm specific options of the
1037 .BR Style " and " MenuStyle
1038 commands for details.
1040 .SH OPEN LOOK and XVIEW COMPATIBILITY
1041 Fvwm supports all the Open Look decoration hints (except
1042 pushpins). Should you use any such application, please add the
1043 following line to your config:
1047 Most (perhaps all) Open Look applications have a strange notion of
1048 keyboard focus handling. Although a lot of work went into fvwm to
1049 work well with these, you may still encounter problems. It is
1050 recommended to use the NeverFocus focus policy and the NoLenience
1051 style for all such applications (the windows will still get the
1054 Style <application name> NeverFocus, NoLenience
1056 But in case you can not live with that focus policy, you can try
1057 using one of the other focus policies in combination with the
1060 Style <application name> MouseFocus, Lenience
1061 Style <application name> SloppyFocus, Lenience
1062 Style <application name> ClickToFocus, Lenience
1065 .SH M4 PREPROCESSING
1068 M4 pre-processing is handled by a module in fvwm. To get more
1071 In short, if you want fvwm to parse your files with m4, then
1078 file (if it appears at all), and start fvwm with the command
1080 fvwm -cmd "FvwmM4 config"
1083 .SH CPP PREPROCESSING
1086 Cpp is the C-language pre-processor. fvwm offers cpp processing
1087 which mirrors the m4 pre-processing. To find out about it,
1088 re-read the M4 section above, but replace "m4" with "cpp".
1093 Windows can be automatically raised when it receives focus, or
1094 some number of milliseconds after it receives focus, by using the
1098 .SH CONFIGURATION FILES
1100 The configuration file is used to describe mouse and button
1101 bindings, colors, the virtual display size, and related items.
1102 The initialization configuration file is typically called
1103 .IR config " (or " .fvwm2rc ")."
1106 command, it is easy to read in new configuration files as you go.
1108 Lines beginning with '#' are ignored by fvwm. Lines starting with
1109 \'*' are expected to contain module configuration commands (rather
1110 than configuration commands for fvwm itself). Like in shell
1111 scripts embedded newlines in a configuration file line can be
1112 quoted by preceding them with a backslash. All lines linked in
1113 this fashion are treated as a single line. The newline itself is
1116 Fvwm makes no distinction between configuration commands and
1117 action commands, so anything mentioned in the fvwm commands
1118 section can be placed on a line by itself for fvwm to execute as
1119 it reads the configuration file, or it can be placed as an
1120 executable command in a menu or bound to a mouse button or a
1121 keyboard key. It is left as an exercise for the user to decide
1122 which function make sense for initialization and which ones make
1125 .SH SUPPLIED CONFIGURATION
1127 A sample configuration file,
1128 .IR system.fvwm2rc ,
1129 is supplied with the fvwm distribution. It is well commented and
1130 can be used as a source of examples for fvwm configuration.
1131 It may be copied to /usr/local/share/fvwm/config file.
1133 Alternativelly, the built-in menu (accessible when no
1134 configuration file is found) has options to create an initial
1135 config file for the user.
1138 .IR fvwm ", try " fvwm-themes
1139 package demonstrating the powerful fvwm functionality.
1141 .\" .SH INTERNATIONALIZATION
1142 .\" Internationalized fvwm enables to display not only LATIN-1
1143 .\" characters but also multi byte characters such as Japanese,
1144 .\" Korean, etc. You should set up your environment variable
1145 .\" .IR LC_TYPE " or " LANG ,
1146 .\" to enable this feature. Also, you should specify proper
1150 .\" Note that no catalog-file or input-methods are implemented.
1152 .SH FONT NAMES AND FONT LOADING
1154 The fonts used for the text of a window title, icon titles, menus
1155 and geometry window can be specified by using the Font and
1156 IconFont Style, the Font MenuStyle and the DefaultFont
1157 command. Also, all the Modules which use text have configuration
1158 command(s) to specify font(s). All these styles and commands take
1159 a font name as an argument. This section explains what is a font
1160 name for fvwm and which fonts fvwm loads.
1162 First, you can use what we can call a usual font name, for
1165 -adobe-courier-bold-r-normal--10-100-75-75-m-60-ISO8859-1
1166 -adobe-courier-bold-r-normal--10-*
1167 -*-fixed-medium-o-normal--14-*-ISO8859-15
1169 That is, you can use an X Logical Font Description (XLFD for
1170 short). Then the "first" font which matches the description is
1171 loaded and used. This "first" font depends of your font path and
1172 also of your locale. Fonts which match the locale charset are
1173 loaded in priority order. For example with
1175 -adobe-courier-bold-r-normal--10-*
1177 if the locale charset is ISO8859-1, then fvwm tries to load a
1180 -adobe-courier-bold-r-normal--10-*-ISO8859-1
1182 with the locale charset ISO8859-15 fvwm tries to load
1184 -adobe-courier-bold-r-normal--10-*-ISO8859-15.
1187 A font name can be given as an extended XLFD. This
1188 is a comma separated list of (simple) XLFD font names, for example:
1190 -adobe-courier-bold-r-normal--14-*,-*-courier-medium-r-normal--14-*
1192 Each simple font name is tried until a matching font with the
1193 locale charset is found and if this fails each simple font name is
1194 tried without constraint on the charset.
1196 More details on the XLFD can be found in the X manual page, the X
1197 Logical Font Description Conventions document (called xlfd) and
1198 the XLoadFont and XCreateFontSet manual pages. Some useful font
1199 utilities are: xlsfonts, xfontsel, xfd and xset.
1201 If you have Xft support you can specify an Xft font name
1202 (description) of a true type (or Type1) font prefixed by "xft:",
1206 "xft:Luxi Mono:Medium:Roman:size=14:encoding=iso8859-1"
1208 The "first" font which matches the description is loaded. This
1209 first font depends on the XftConfig configuration file with Xft1
1210 and on the /etc/fonts/fonts.conf file with Xft2.
1211 One may read the Xft manual page and the fontconfig man page with
1212 Xft2. The first string which follows "xft:" is always considered
1213 as the family. With the second example Luxi Mono is the Family
1214 (Other XFree TTF families: "Luxi Serif", "Luxi Sans"), Medium is
1215 the Weight (other possible weights: Light, DemiBold, Bold, Black),
1216 Roman is the slant or the style (other possibility: Regular,
1217 Oblique, Italic) size specifies the point size (for a pixel size
1218 use pixelsize=), encoding allows for enforce a charset (iso8859-1
1219 or iso10646-1 only; if no encoding is given the locale charset is
1221 An important parameter is "minspace=bool" where bool is True or
1222 False. If bool is False (the default?) Xft gives a greater font
1223 height to fvwm than if bool is True. This may modify text
1224 placement, icon and window title height, line spacing in menus and
1225 FvwmIdent, button height in some fvwm modules ...etc. With a LCD
1226 monitor you may try to add "rgba=mode" where mode is either rgb,
1227 bgr, vrgb or vbgr to enable subpixel rendering. The best mode
1228 depends on the way your LCD cells are arranged. You can pass other
1229 specifications in between ":", as "foundry=foundry_name",
1230 "spacing=type" where type can be monospace, proportional or
1231 charcell, "charwidth=integer", "charheight=integer" or
1232 "antialias=bool" where bool is True or False. It seems that these
1233 parameters are not always taken in account.
1234 To determine which Xft fonts are really loaded you can export
1235 XFT_DEBUG=1 before starting fvwm and take a look to the error
1236 log. With Xft2 you may use fc-list to list the available
1237 fonts. Anyway, Xft support is experimental (from the X and the
1238 fvwm point of view) and the quality of the rendering depends on
1239 number of parameters (the XFree and the freetype versions and your
1242 After an Xft font name you can add after a ";" an XLFD
1243 font name (simple or extended) as:
1245 xft:Verdana:pixelsize=14;-adobe-courier-bold-r-normal--14-*
1247 then, if either loading the Xft font fails or fvwm has no Xft
1248 support, fvwm loads the font
1249 "-adobe-courier-bold-r-normal--14-*". This allows for writing
1250 portable configuration files.
1252 .SH FONT AND STRING ENCODING
1254 Once a font is loaded, fvwm finds its encoding (or charset) using
1255 its name (the last two fields of the name). fvwm assumes that the
1256 strings which are displayed with this font use this encoding (an
1257 exception is that if an iso10646-1 font is loaded, then UTF-8 is
1258 assumed for string encoding).
1259 In a normal situation,
1260 (i) a font is loaded by giving a font name without specifying the
1262 (ii) the encoding of the loaded font is the locale encoding, and
1264 (iii) the strings in the fvwm configuration files should use the
1265 locale encoding as well as the window and icon name. With Xft the
1266 situation is bit different as Xft supports only iso10646-1 and
1267 iso8859-1. If you do not specify one of these encodings in the Xft
1268 font name, then fvwm does strings conversion using (iii). Note
1269 that with multibyte fonts (and in particular with "CJK" fonts) for
1270 good text rendering, the locale encoding should be the charset of
1273 To override the previous rules, it is possible to specify the
1274 string encoding in the beginning of a font description as follow:
1276 StringEncoding=enc:_full_font_name_
1280 is an encoding supported by fvwm (usually font name charset plus some
1281 unicode encodings: UTF-8, USC-2, USC-4 and UTF-16).
1283 For example, you may use an iso8859-1 locale charset and have an
1284 FvwmForm in Russian using koi8-r encoding. In this case, you just
1285 have to ask FvwmForm to load a koi8-r font by specifying the
1286 encoding in the font name. With a multibyte language, (as
1287 multibyte font works well only if the locale encoding is the
1288 charset of the font), you should use an iso10646-1 font:
1290 StringEncoding=jisx0208.1983-0:-*-fixed-medium-r-*-ja-*-iso10646-1
1294 "StringEncoding=jisx0208.1983-0:xft:Bitstream Cyberbit"
1298 configuration uses jisx0208.1983-0 encoding. Another possibility
1299 is to use UTF-8 encoding for your FvwmForm configuration and use
1302 -*-fixed-medium-r-*-ja-*-iso10646-1
1306 "StringEncoding=UTF-8:xft:Bitstream Cyberbit"
1310 "xft:Bitstream Cyberbit:encoding=iso10646-1"
1312 In general iso10646-1 fonts together with UTF-8 string encoding
1313 allows the display of any characters in a given menu, FvwmForm
1316 More and more, unicode is used and text files use UTF-8
1317 encoding. However, in practice the characters used range over your
1318 locale charset (this is the case when you generate a menu with
1319 fvwm-menu-desktop with recent versions of KDE and GNOME). For
1320 saving memory (an iso10646-1 font may have a very large number of
1321 characters) or because you have a pretty font without an
1322 iso10646-1 charset, you can specify the string encoding to be
1323 UTF-8 and use a font in the locale charset:
1325 StringEncoding=UTF-8:-*-pretty_font-*-12-*
1328 In most cases, fvwm correctly determines the encoding of the
1329 font. However, some fonts don't end with valid encoding
1330 names. When the font name isn't normal, for example:
1332 -misc-fixed-*--20-*-my_utf8-36
1334 you need to add the encoding after the font name using a slash as
1335 a delimiter. For example:
1337 MenuStyle * Font -misc-fixed-*--20-*-my_utf8-36/iso10646-1
1339 If fvwm finds an encoding, fvwm uses the iconv system functions to
1340 do conversion between encodings. Unfortunately, there are no
1341 standards. For conversion between iso8859-1 and UTF-8: a GNU
1342 system uses "ISO-8859-1" and other systems use "iso881" to define
1343 the converters (these two names are supported by fvwm). Moreover,
1344 in some cases it may be necessary to use machine specific
1345 converters. So, if you experience problems you can try to get
1346 information on your iconv implementation ("man iconv" may help)
1347 and put the name which defines the converter between the font
1348 encoding and UTF-8 at the end of the font name after the encoding
1349 hint and a / (another possible solution is to use GNU
1350 libiconv). For example use:
1352 Style * Font -misc-fixed-*--14-*-iso8859-1/*/latin1
1354 to use latin1 for defining the converter for the iso8859-1 encoding.
1355 The "*" in between the "/" says to fvwm to determine the
1356 encoding from the end of the font name. Use:
1358 Style * Font -misc-fixed-*--14-*-local8859-6/iso8859-6/local_iso8859_6_iconv
1360 to force fvwm to use the font with iso8859-6 as the encoding
1361 (this is useful for bi-directionality)
1362 and to use local_iso8859_6_iconv for defining the converters.
1364 .SH FONT SHADOW EFFECTS
1366 Fonts can be given 3d effects. At the beginning of the font name
1367 (or just after a possible StringEncoding specification) add
1369 Shadow=size [offset] [directions]:
1372 is a positive integer which specifies the number of pixels of shadow.
1374 is an optional positive integer which defines the number of pixels
1375 to offset the shadow from the edge of the character. The default
1378 is an optional set of directions the shadow emanates from the
1381 are a space separated list of fvwm directions:
1383 .IR N ", " North ", " Top ", " t ", " Up ", " u ", " "-"
1385 .IR E ", " East ", " Right ", " r ", " Right ", " r ", " "]"
1387 .IR S ", " South ", " Bottom ", " b ", " Down ", " d ", " "_"
1389 .IR W ", " West ", " Left ", " l ", " Left ", " l ", " "["
1391 .IR NE ", " NorthEast ", " TopRight ", " tr ", " UpRight ", " ur ", " "^"
1393 .IR SE ", " SouthEast ", " BottomRight ", " br ", " DownRight ", " dr ", " ">"
1395 .IR SW ", " SouthWest ", " BottomLeft ", " bl ", " DownLeft ", " dl ", " "v"
1397 .IR NW ", " NorthWest ", " TopLeft ", " tl ", " UpLeft ", " ul ", " "<"
1399 .IR C ", " Center ", " Centre ", " .
1401 A shadow is displayed in each given direction.
1403 is equivalent to all the directions. The default
1409 direction, the shadow surrounds the whole string. Since this is a
1410 super set of all other directions, it is a waste of time to
1411 specify this along with any other directions.
1413 The shadow effect only works with colorsets. The color of the
1414 shadow is defined by using the
1418 command. Please refer to the
1420 section for details about colorsets.
1422 Note: It can be difficult to find the font,
1423 .IR fg ", " fgsh " and " bg
1424 colors to make this effect look good, but it can look quite good.
1426 .SH BI-DIRECTIONAL TEXT
1428 Arabic and Hebrew text require bi-directional text support to be
1429 displayed correctly, this means that logical strings should be
1430 converted before their visual presentation, so left-to-right and
1431 right-to-left sub-strings are determined and reshuffled.
1432 In fvwm this is done automatically in window titles, menus,
1433 module labels and other places if the fonts used for displaying the
1434 text are of one of the charsets that require
1436 (bi-directional) support. For example, this includes iso8859-6,
1437 iso8859-8 and iso10646-1 (unicode), but not other iso8859-* fonts.
1439 This bi-directional text support is done using the
1441 library compile time option, see
1444 .SH KEYBOARD SHORTCUTS
1446 Almost all window manager operations can be performed from the
1447 keyboard so mouse-less operation should be possible. In addition
1448 to scrolling around the virtual desktop by binding the
1450 command to appropriate keys,
1451 .BR Popup ", " Move ", " Resize ", "
1452 and any other command can be bound to keys. Once a command
1453 is started the pointer is moved by using the up, down,
1454 left, and right arrows, and the action is terminated by pressing
1455 return. Holding down the
1457 key causes the pointer movement to go in larger steps and holding
1460 key causes the pointer movement to go in smaller steps. Standard
1461 emacs and vi cursor movement controls (
1471 ) can be used instead of the arrow keys.
1473 .SH SESSION MANAGEMENT
1475 Fvwm supports session management according to the X Session
1476 Management Protocol. It saves and restores window position, size,
1477 stacking order, desk, stickiness, shadedness, maximizedness,
1478 iconifiedness for all windows. Furthermore, some global state is
1481 Fvwm doesn't save any information regarding styles, decors,
1482 functions or menus. If you change any on these resources during a
1483 session (e.g. by issuing
1485 commands or by using various modules), these changes are lost
1486 after saving and restarting the session. To become permanent,
1487 such changes have to be added to the configuration file.
1489 Note further that the current implementation has the following
1490 anomaly when used on a multi-screen display: Starting fvwm for the
1491 first time, fvwm manages all screens by forking a copy of itself
1492 for each screen. Every copy knows its parent and issuing a
1494 command to any instance of fvwm kills the master and thus all
1495 copies of fvwm. When you save and restart the session, the
1496 session manager brings up a copy of fvwm on each screen, but this
1497 time they are started as individual instances managing one screen
1500 kills only the copy it was sent to. This is probably not a very
1501 serious problem, since with session management, you are supposed
1502 to quit a session through the session manager anyway. If it is
1505 Exec exec killall fvwm
1507 still kills all copies of fvwm. Your system must have the
1511 .SH BOOLEAN ARGUMENTS
1513 A number of commands take one or several boolean arguments. These
1514 take a few equivalent inputs: "yes", "on", "true", "t" and "y" all
1515 evaluate to true while "no", "off", "false", "f" and "n" evaluate
1516 to false. Some commands allow "toggle" too which means that the
1517 feature is disabled if it is currently enabled and vice versa.
1519 .SH CONDITIONAL COMMANDS AND RETURN CODES
1521 Fvwm recognizes a number of commands that are executed only if
1522 certain conditions are met. For a complete description, please
1523 refer to the section
1524 .B CONDITIONAL COMMANDS
1527 .SH BUILT-IN KEY AND MOUSE BINDINGS
1529 The following commands are built-in to fvwm:
1531 Key Help R A Popup MenuFvwmRoot
1532 Key F1 R A Popup MenuFvwmRoot
1533 Key Tab A M WindowList Root c c NoDeskSort
1534 Key Escape A MC EscapeFunc
1535 Mouse 1 R A Menu MenuFvwmRoot
1536 Mouse 1 T A FuncFvwmRaiseLowerX Move
1537 Mouse 1 FS A FuncFvwmRaiseLowerX Resize
1538 Mouse 2 FST A FuncFvwmRaiseLowerX Move
1539 AddToFunc FuncFvwmRaiseLowerX
1548 keys invoke a built-in menu that fvwm creates. This is primarily
1549 for new users that have not created their own configuration
1550 file. Either key on the root (background) window pops up an menu
1551 to help you get started.
1555 key pressed anywhere with the
1559 key on PC keyboards) held down pop-ups a window list.
1561 Mouse button 1 on the title-bar or side frame can move, raise or
1564 Mouse button 1 on the window corners can resize, raise or lower a
1567 You can override or remove these bindings. To remove the window
1568 list binding, use this:
1573 .SH MODULE AND FUNCTION COMMANDS
1575 If fvwm encounters a command that it doesn't recognize,
1576 it checks to see if the
1577 specified command should have been
1579 Function (rest of command)
1583 Module (rest of command)
1585 This allows complex functions or modules to be invoked in a manner
1586 which is fairly transparent to the configuration file.
1590 file contains the line
1594 Fvwm looks for an fvwm command called "HelpMe", and fails.
1595 Next it looks for a user-defined complex function called "HelpMe".
1596 If no such function exists, fvwm tries to execute a
1597 module called "HelpMe".
1599 .SH DELAYED EXECUTION OF COMMANDS
1601 Note: There are many commands that affect look and feel of
1602 specific, some or all windows, like
1603 .BR Style ", " Mouse ", " Colorset ", " TitleStyle
1604 and many others. For performance reasons such changes are
1605 not applied immediately but only when fvwm is idle, i.e. no user
1606 interaction or module input is pending. Specifically, new
1608 options that are set in a function are not applied until after the
1609 function has completed. This can sometimes lead to unwanted
1612 To force that all pending changes are applied immediately, use the
1613 .BR UpdateStyles ", " Refresh " or " RefreshWindow
1618 Quotes are required only when needed to make fvwm consider two or
1619 more words to be a single argument. Unnecessary quoting is
1620 allowed. If you want a quote character in your text, you must
1621 escape it by using the backslash character. For example, if you
1622 have a pop-up menu called "Window-Ops", then you don't need
1627 but if you replace the dash with a space, then you need
1632 The supported quoting characters are double quotes, single quotes
1633 and reverse single quotes. All three kinds of quotes are treated
1634 in the same way. Single characters can be quoted with a preceding
1635 backslash. Quoting single characters works even inside other
1638 .SH COMMAND EXPANSION
1640 Whenever an fvwm command line is executed, fvwm performs parameter
1641 expansion. A parameter is a '$' followed by a word enclosed in
1642 brackets ($[...]) or a single special character. If fvwm
1643 encounters an unquoted parameter on the command line it expands it
1644 to a string indicated by the parameter name. Unknown parameters
1645 are left untouched. Parameter expansion is performed before
1646 quoting. To get a literal '$' use "$$".
1648 In the past, some single letter variables were supported. It is
1649 deprecated now, since they cause a number of problems. You should
1650 use the longer substitutes instead.
1655 # Print the current desk number, horizontal page number
1656 # and the window's class (unexpanded here, no window).
1657 Echo $[desk.n] $[page.nx] $[w.class]
1660 Note: If the command is called outside a window context, it will
1661 print "$[w.class]" instead of the class name. It is usually not
1662 enough to have the pointer over a window to have a context window.
1663 To force using the window with the focus, the
1665 command can be used:
1667 Current Echo $[desk.n] $[page.nx] $[w.class]
1670 The parameters known by fvwm are:
1682 The absolute directory of the currently Read file. Intended for
1683 creating relative and relocatable configuration trees. If used
1684 outside of any read file, the returned value is '.'.
1691 The positional parameters given to a complex function (a function
1692 that has been defined with the
1694 command). "$0" is replaced with the first parameter, "$1" with
1695 the second parameter and so on. If the corresponding parameter is
1696 undefined, the "$..." is deleted from the command line.
1703 All positional parameters given to a complex function. This
1704 includes parameters that follow after "$9".
1711 The version number, like "2.6.0".
1718 The version info, like " (from cvs)", empty for the official
1726 The first line printed by the --version command line option.
1736 Either coordinate or the width or height of the current viewport.
1743 The current desk number.
1750 These parameters are replaced with the name of the desktop
1751 number <n> that is defined with the
1753 command. If no name is defined, then the default name is returned.
1761 The width or height of the whole desktop, i.e. the width or height
1762 multiplied by the number of pages in x or y direction.
1770 The number of total pages in a desk in x or y direction.
1771 This is the same as the values set by
1780 The current page numbers, by X and Y axes, starting from 0.
1781 .IR page " is equivalent to " area " in the GNOME terminology."
1788 The window-id (expressed in hex, e.g. 0x10023c) of the window the
1789 command was called for or "$[w.id]" if no window is associated
1802 The window's name, icon name, file name of its icon or mini icon
1804 .IR Icon " or " MiniIcon
1805 style including the path information if the file was found on
1806 disk, resource class or resource name respectivelly, or unexpanded
1807 "$[w.<attribute>]" string if no window is associated with the
1819 Either coordinate or the width or height of the current window if
1820 it is not iconified. If no window is associated with the command
1821 or the window is iconified, the string is left as is.
1828 The number of the desk on which the window is shown. If the
1829 window is sticky the current desk number is used.
1836 The layer of the window.
1846 These work like $[w....] but return the geometry of the client
1847 part of the window. In other words: the border and title of the
1848 window is not taken into account.
1853 $[i.x], $[it.x], $[ip.x]
1854 $[i.y], $[it.y], $[ip.y]
1855 $[i.width], $[it.width], $[ip.width]
1856 $[i.height], $[it.height], $[ip.height]
1858 These work like $[w....] but return the geometry of the icon
1859 ($[i....]), the icon title ($[it....]) or the icon picture
1868 These return the position of the pointer on the screen. If the
1869 pointer is not on the screen, these variables are not expanded.
1877 These return the position of the pointer in the selected window.
1878 If the pointer is not on the screen, the window is iconified or
1879 no window is selected, these variables are not expanded.
1887 These return the position of the pointer in the client portion of
1888 the selected window. If the pointer is not on the screen, the
1889 window is shaded or iconified or no window is selected, these
1890 variables are not expanded.
1898 The screen number fvwm is running on. Useful for setups with
1915 These parameters are replaced with the name of the foreground
1916 (fg), background (bg), hilight (hilight) or shadow (shadow) color
1917 that is defined in colorset <n> (replace <n> with zero or a
1918 positive integer). For example "$[fg.cs3]" is expanded to the
1919 name of the foreground color of colorset 3 (in rgb:rrrr/gggg/bbbb
1920 form). Please refer to the
1922 section for details about colorsets.
1929 This is replaced by the id of the last command that was scheduled
1932 command, even if this command was already executed.
1939 This is replaced by the id the next command used with
1941 will get (unless a different id is specified explicitly).
1948 The return code of the last conditional command. This variable is
1949 only valid inside a function and can not be used in a conditional
1950 command. Please refer to the section
1951 .B CONDITIONAL COMMANDS
1952 in the command list.
1959 The context character of the running command as used in the
1960 .BS Mouse ", " Key " or " PointerKey
1961 command. This is useful for example with:
1963 Mouse 3 FS N WindowShade $$[func.context]
1971 return the translation of
1973 by looking in the current locale catalog(s). If no translation is
1976 is returned as is. See the
1985 If the string within the braces is neither of the above, fvwm
1986 tries to find an environment variable with this name and replaces
1987 its value if one is found (e.g. "$[PAGER]" could be replaced by
1988 "more"). Otherwise the string is left as is.
1992 Some examples can be found in the description of the
1996 .SH SCRIPTING AND COMPLEX FUNCTIONS
1998 To achieve the more complex effects, fvwm has a number of
1999 commands that improve its scripting abilities. Scripts can be
2000 read from a file with
2002 from the output of a command with
2004 or written as a complex function with the
2006 command. For the curious, section 7 of the fvwm FAQ shows some
2007 real life applications of scripting. Please refer to the sections
2008 .B COMMANDS FOR USER FUNCTIONS AND SHELL COMMANDS
2010 .B CONDITIONAL COMMANDS
2011 for details. A word of warning: during execution of complex
2012 functions, fvwm needs to take all input from the mouse pointer
2013 (the pointer is "grabbed" in the slang of X). No other programs
2014 can receive any input from the pointer while a function is run.
2015 This can confuse some programs. For example, the xwd program
2016 refuses to make screen shots when run from a complex function. To
2017 achieve the same functionality you can use the
2018 .BR Read " or " PipeRead
2021 .SH THE LIST OF FVWM COMMANDS
2023 The command descriptions below are grouped together in the
2024 following sections. The sections are hopefully sorted in order of
2025 usefulness to the newcomer.
2028 - Miscellaneous commands
2029 - Commands affecting window movement and placement
2030 - Commands for focus and mouse movement
2031 - Commands controlling window state
2032 - Commands for mouse, key and stroke bindings
2033 - The Style command (controlling window styles)
2034 - Other commands controlling window styles
2035 - Commands controlling the virtual desktop
2036 - Commands for user functions and shell commands
2037 - Conditional commands
2039 - Quit, restart and session management commands
2045 Before a menu can be opened, it has to be populated with menu
2048 command and bound to a key or mouse button with the
2049 .BR Key ", " PointerKey " or " Mouse
2050 command (there are many other ways to invoke a menu too). This is
2051 usually done in the configuration file.
2053 Fvwm menus are extremely configurable in look and feel. Even the
2054 slightest nuances can be changed to the user's liking, including
2055 the menu item fonts, the background, delays before popping up sub
2056 menus, generating menus dynamically and many other features.
2059 command to learn more.
2064 In fvwm there are four slightly different types of menus:
2067 can appear everywhere on the screen on their own or attached to a
2068 part of a window. The
2070 command opens popup menus. If the popup menu was invoked with a
2071 mouse button held down, it is closed when the button is released.
2072 THe item under the pointer is then activated and the associated
2076 is a very similar command, but the menus it opens are slightly less
2077 transient. When invoked by clicking a mouse button, it stays open
2078 and can be navigated with no button held. But if it is invoked by
2079 a button press followed by mouse motion, it behaves exactly like a
2082 .IR "Tear off menus" " or " "Pin up menus"
2083 are menus from either of the above two commands that have been
2084 "torn off" their original context and pinned on the desktop like a
2085 normal window. They are created from other menus by certain key
2086 presses or mouse sequences or with the
2088 command from inside a menu.
2091 are menus inside menus. When a menu item that has the
2093 command as its action is selected, the named menu is opened as an
2094 inferior menu to the parent. Any type of menu can have sub menus.
2099 Menus consist of any number of titles which are inactive menu
2100 items that usually appear at the top of the menu, normal items
2101 triggering various actions when selected, separator lines between
2102 the items, tear off bars (a horizontal broken line) that tear off
2103 the menu when selected, and sub menu items indicated with a
2104 triangle pointing left or right, depending on the direction in
2105 which the sub menu appears. All the above menu items are
2108 Additionally, if the menu is too long to fit on the screen, the
2109 excess menu items are put in a continuation menu and a sub menu
2110 with the string "More..." is placed at the bottom of the menu.
2111 Finally, there may be a picture running up either side of the menu
2117 Menus can be navigated either with the keyboard or with the
2118 mouse. Many people prefer to use the mouse, but it can be rather
2119 tedious. Once you get the hang of it, keyboard navigation can be
2120 much faster. While fvwm displays a menu, it can do nothing else.
2121 For example, new windows do not appear before the menu is closed.
2122 However, this is not exactly true for tear off menus. See the
2124 section for details.
2129 Moving the pointer over a menu selects the item below it.
2130 Normally this is indicated by a 3d border around the item, but not
2131 all parts of a menu can be selected. Pressing any mouse button
2132 while a menu is open activates the item below it. Items of a
2133 popup menu are also activated by releasing a held mouse button.
2134 In case of an item that hides a sub menu, the sub menu is
2135 displayed if the pointer hovers over the item long enough or moves
2136 close to the triangle indicating the sub menu. This behaviour can
2137 be tuned with menu styles.
2139 Clicking on a selected item activates it - what happens exactly
2140 depends on the type of the item.
2142 Clicking on a title, a separator, the side bar, or outside the
2143 menu closes the menu (exception: tear off menus can not be closed
2144 this way). Pressing mouse button 2 over a menu title or
2145 activating a tear off bar creates a tear off menu from the current
2146 menu. Clicking on a normal menu item invokes the command that is
2147 bound to it, and clicking on a sub menu item either closes all
2148 open menus and replaces them with the sub menu or posts the menu
2151 Posting menus is meant to ease mouse navigation. Once a sub menu
2152 is posted, only items from that sub menu can be selected. This
2153 can be very useful to navigate the menu if the pointer tends to
2154 stray off the menu. To unpost the menu and revert back to normal
2155 operation, either click on the same sub menu item or press any
2159 .B Keyboard Navigation
2161 Just like with mouse navigation, the item below the pointer is
2162 selected. This is achieved by warping the pointer to the menu
2163 items when necessary. While a menu is open, all key presses are
2164 intercepted by the menu. No other application can get keyboard
2165 input (although this is not the case for tear off menus).
2167 Items can be selected directly by pressing a hotkey that can be
2168 configured individually for each menu item. The hotkey is
2169 indicated by underlining it in the menu item label. With the
2171 menu style fvwm automatically assigns hotkeys to all menu items.
2173 The most basic keys to navigate through menus are the cursor keys
2174 (move up or down one item, enter or leave a sub menu),
2178 (close menu). Numerous other keys can be used to navigate through
2184 activate the current item.
2189 exit the current sequence of menus or destroy a tear off menu.
2193 .SM \fICursor-Down\fP,
2197 move to the next item.
2201 .SM \fICursor-Up\fP,
2202 .SM \fIShift-Tab\fP,
2203 .SM \fIShift-Meta-Tab\fP,
2205 move to the prior item.
2208 .SM \fICursor-Right\fP,
2213 .SM \fICursor-Left\fP,
2215 return to the prior menu.
2217 .SM \fICtrl-Cursor-Up\fP,
2220 .SM \fIShift-Ctrl-Meta-Tab\fP,
2224 .SM \fICtrl-Cursor-Down\fP,
2227 .SM \fICtrl-Meta-Tab\,P,
2229 move down five items.
2232 .SM \fIShift-Cursor-Up\fP,
2234 move to the first item.
2237 .SM \fIShift-Cursor-Down\fP,
2239 move to the last item.
2241 .SM \fIMeta-Cursor-Up\fP,
2242 .SM \fICtrl-Cursor-Left\fP,
2243 .SM \fIShift-Ctrl-Tab\fP
2244 move up just below the next separator.
2246 .SM \fIMeta-Cursor-Down\fP,
2247 .SM \fICtrl-Cursor-Right\fP,
2249 move down just below the next separator.
2252 opens the "More..." sub menu if any.
2260 A tear off menu is any menu that has been "torn off" the window it
2261 was attached to and pinned to the root window. There are three
2262 ways to tear off a menu: click on the menu title with mouse
2265 in the menu or activate its tear off bar (a horizontal bar with a
2266 broken line). Tear off bars must be added to the menu as any
2267 other item by assigning them the command
2270 The action taken with the backspace key cannot be overridden
2271 but the action of mouse button 2 on the title can.
2272 To remove the builtin mouse button 2 binding, use:
2276 ("M" is for "Menu" context)
2278 To assign some other button for tearoff, use:
2282 Note that the Modifier, must be "N" (none) and that the
2283 notation "Mouse 0" (for any mouse button cannot be used.)
2285 The window containing the menu is placed as any other window would
2286 be. If you find it confusing to have your tear off menus appear
2287 at random positions on the screen, put this line in your
2290 Style fvwm_menu UsePPosition
2293 A tear off menu is a cross breeding between a window and a menu.
2294 The menu is swallowed by a window and its title is stripped off
2295 and displayed in the window title. The main advantage is that the
2296 menu becomes permanent - activating an item does not close the
2297 menu. Therefore, it can be used multiple times without reopening
2298 it. To destroy such a menu, close its window or press the
2302 Tear off menus behave somewhat differently than normal menus and
2303 windows. They do not take the keyboard focus, but while the
2304 pointer is over one of them, all key presses are sent to the
2305 menu. Other fvwm key bindings are disabled as long as the pointer
2306 is inside the tear off menu or one of its sub menus. When the
2307 pointer leaves this area, all sub menus are closed immediately.
2308 Note that the window containing a tear off menu is never hilighted
2309 as if it had the focus.
2311 A tear off menu is an independent copy of the menu it originated
2312 from. As such, it is not affected by adding items to that menu or
2313 changing its menu style.
2315 To create a tear off menu without opening the normal menu first,
2317 .I TearOffImmediately
2319 .BR Menu " or " Popup
2323 .BI "AddToMenu " menu-name " [" menu-label " " action "]"
2325 Begins or adds to a menu definition. Typically a menu definition
2328 AddToMenu Utilities Utilities Title
2329 + Xterm Exec exec xterm -e tcsh
2330 + Rxvt Exec exec rxvt
2331 + "Remote Logins" Popup Remote-Logins
2332 + Top Exec exec rxvt -T Top -n \\
2334 + Calculator Exec exec xcalc
2335 + Xman Exec exec xman
2336 + Xmag Exec exec xmag
2337 + emacs Exec exec xemacs
2338 + Mail MailFunction \\
2341 + Modules Popup Module-Popup
2343 + Exit Fvwm Popup Quit-Verify
2345 The menu could be invoked via
2347 Mouse 1 R A Menu Utilities Nop
2351 Mouse 1 R A Popup Utilities
2353 There is no end-of-menu symbol. Menus do not have to be defined
2354 in a contiguous region of the
2356 file. The quoted (or first word)
2357 portion in the above examples is the menu label,
2358 which appears in the menu when the user pops it up. The remaining
2359 portion is an fvwm command which is executed if the user
2360 selects that menu item. An empty menu-label ("") and the
2362 function are used to insert a separator into the menu.
2365 .IR DynamicPopUpAction " and " DynamicPopDownAction
2366 have a special meaning when used as the name of a menu item. The
2367 action following the keyword is executed whenever the menu is
2368 popped up or down. This way you can implement dynamic menus. It
2369 is even possible to destroy itself with
2371 and the rebuild from scratch. When the menu has been destroyed
2372 (unless you used the
2374 option when destroying the menu), do not forget to add the dynamic
2377 Note: Do not trigger actions that require user interaction. They
2378 will probably fail and may screw up your menus. See the
2382 Warning: Do not issue
2384 commands as dynamic menu actions. Chances are good that this will
2387 There are several configurable scripts installed together with fvwm
2388 for automatical menu generation. They have their own man pages.
2389 Some of them, specifically
2390 .BR fvwm-menu-directory " and " fvwm-menu-desktop ,
2392 .I DynamicPopupAction
2393 to create a directory listing or GNOME/KDE application listing.
2395 Example (File browser):
2397 # You can find the shell script fvwm_make_browse_menu.sh
2398 # in the utils/ directory of the distribution.
2399 AddToMenu BrowseMenu
2400 + DynamicPopupAction Piperead \\
2401 'fvwm_make_browse_menu.sh BrowseMenu'
2403 Example (Picture menu):
2405 # Build a menu of all .jpg files in
2407 AddToMenu JpgMenu foo title
2408 + DynamicPopupAction Function MakeJpgMenu
2410 AddToFunc MakeJpgMenu
2411 + I DestroyMenu recreate JpgMenu
2412 + I AddToMenu JpgMenu Pictures Title
2413 + I PipeRead 'for i in $HOME/Pictures/*.jpg; \\
2414 do echo AddToMenu JpgMenu "`basename $i`" Exec xv $i; done'
2417 .I MissingSubmenuFunction
2418 has a similar meaning. It is executed whenever you try to pop up
2419 a sub menu that does not exist. With this function you can define
2420 and destroy menus on the fly. You can use any command after the
2421 keyword, but the name of an item (that is a submenu) defined with
2423 follows it, fvwm executes this command:
2425 Function <function-name> <submenu-name>
2427 I.e. the name is passed to the function as its first argument and
2428 can be referred to with "$0".
2431 .B fvwm-menu-directory
2432 script mentioned above may be used with
2433 .I MissingSubmenuFunction
2434 to create an up to date recursive directory listing.
2438 # There is another shell script fvwm_make_directory_menu.sh
2439 # in the utils/ directory of the distribution. To use it,
2440 # define this function in your configuration file:
2442 DestroyFunc MakeMissingDirectoryMenu
2443 AddToFunc MakeMissingDirectoryMenu
2444 + I PipeRead fvwm_make_directory_menu.sh $0
2446 DestroyMenu SomeMenu
2448 + MissingSubmenuFunction MakeMissingDirectoryMenu
2449 + "Root directory" Popup /
2451 This is another implementation of the file browser that uses
2452 sub menus for subdirectories.
2454 Titles can be used within the menu. If you add the option
2458 the title is added to the top of the menu. If there was a title
2459 already, it is overwritten.
2461 AddToMenu Utilities Tools Title top
2463 All text up to the first
2465 in the menu label is aligned to the left side of the menu, all
2466 text right of the first
2468 is aligned to the left in a second column and all text thereafter
2469 is placed right aligned in the third column. All other
2471 are replaced by spaces. Note that you can change this format with
2478 If the menu-label contains an ampersand ('&'), the next character
2479 is taken as a hot-key for the menu item. Hot-keys are underlined
2480 in the label. To get a literal '&', insert "&&". Pressing the
2481 hot-key moves through the list of menu items with this hot-key or
2482 selects an item that is the only one with this hot-key.
2484 If the menu-label contains a sub-string which is set off by stars,
2485 then the text between the stars is expected to be the name of an
2486 image file to insert in the menu. To get a literal
2487 \'*', insert "**". For example
2489 + Calculator*xcalc.xpm* Exec exec xcalc
2491 inserts a menu item labeled "Calculator" with a picture of a
2492 calculator above it. The following:
2494 + *xcalc.xpm* Exec exec xcalc
2496 Omits the "Calculator" label, but leaves the picture.
2498 If the menu-label contains a sub-string which is set off by
2499 percent signs, then the text between the percent signs is expected
2500 to be the name of image file (a so called mini
2501 icon to insert to the left of the menu label. A second mini icon
2502 that is drawn at the right side of the menu can be given in the
2503 same way. To get a literal '%', insert "%%". For example
2505 + Calculator%xcalc.xpm% Exec exec xcalc
2507 inserts a menu item labeled "Calculator" with a picture of a
2508 calculator to the left. The following:
2510 + %xcalc.xpm% Exec exec xcalc
2512 Omits the "Calculator" label, but leaves the picture. The
2513 pictures used with this feature should be small (perhaps 16x16).
2514 If the menu-name (not the label) contains a sub-string which is
2515 set off by at signs ('@'), then the text between them is expected
2516 to be the name of an xpm or bitmap file to draw along the left
2517 side of the menu (a side pixmap). You may want to use the
2521 command instead. To get a literal '@', insert "@@". For example
2523 AddToMenu StartMenu@linux-menu.xpm@
2525 creates a menu with a picture in its bottom left corner.
2527 If the menu-name also contains a sub-string surrounded by '^'s, then
2528 the text between '^'s is expected to be the name of an X11 color
2529 and the column containing the side picture is colored with that
2530 color. You can set this color for a menu style using the
2534 command. To get a literal '^', insert "^^". Example:
2536 AddToMenu StartMenu@linux-menu.xpm@^blue^
2538 creates a menu with a picture in its bottom left corner and
2539 colors with blue the region of the menu containing the picture.
2541 In all the above cases, the name of the resulting menu is name
2542 specified, stripped of the substrings between the various
2546 .BI "ChangeMenuStyle " "menustyle menu ..."
2547 Changes the menu style of
2548 .IR menu " to " menustyle .
2549 You may specified more than one menu in each call of
2550 .BR ChangeMenuStyle .
2552 ChangeMenuStyle pixmap1 \\
2553 ScreenSaverMenu ScreenLockMenu
2557 .BI "CopyMenuStyle " "orig-menustyle dest-menustyle"
2559 .IR orig-menustyle " to " dest-menustyle ,
2562 is an existing menu style. If the menu style
2564 does not exist, then it is created.
2567 .BI "DestroyMenu [" recreate "] " menu
2568 Deletes a menu, so that subsequent references to it are no longer
2569 valid. You can use this to change the contents of a menu during
2570 an fvwm session. The menu can be rebuilt using
2572 The optional parameter
2574 tells fvwm not to throw away the menu completely but to throw away
2575 all the menu items (including the title).
2577 DestroyMenu Utilities
2581 .BI "DestroyMenuStyle " menustyle
2582 Deletes the menu style named
2584 and changes all menus using this style to the default style, you
2585 cannot destroy the default menu style.
2587 DestroyMenuStyle pixamp1
2591 .B "Menu \fImenu-name\fP \
2593 ] [\fIdouble-click-action\fP\
2595 Causes a previously defined menu to be popped up in a sticky
2596 manner. That is, if the user invokes the menu with a click action
2597 instead of a drag action, the menu stays up. The command
2598 .I double-click-action
2599 is invoked if the user double-clicks a button (or hits the key
2600 rapidly twice if the menu is bound to a key) when bringing up the
2601 menu. If the double click action is not specified, double
2602 clicking on the menu does nothing. However, if the menu begins
2603 with a menu item (i.e. not with a title or a separator) and the
2604 double click action is not given, double clicking invokes the
2605 first item of the menu (but only if the pointer really was over
2608 The pointer is warped to where it was when the menu was invoked if
2609 it was both invoked and closed with a keystroke.
2613 arguments allow placement of the menu somewhere on the screen, for
2614 example centered on the visible screen or above a title bar.
2615 Basically it works like this: you specify a
2616 .I context-rectangle
2617 and an offset to this rectangle by which the upper left corner of
2618 the menu is moved from the upper left corner of the rectangle.
2621 arguments consist of several parts:
2623 .BI "[" context-rectangle "] " "x y" " [" special-options "]"
2626 .I context-rectangle
2632 the root window of the current screen.
2636 the root window of the whole Xinerama screen. Equivalent to
2637 "root" when Xinerama is not used.
2641 a 1x1 rectangle at the mouse position.
2645 the frame of the context window.
2649 the inside of the context window.
2653 the title of the context window or icon.
2657 button #n of the context window.
2661 the icon of the context window.
2669 the current menu item.
2673 the current window, menu or icon.
2677 whatever widget the pointer is on (e.g. a corner of a window or
2680 .BI "Rectangle <" geometry ">"
2682 the rectangle defined by
2684 in X geometry format. Width and height default to 1 if omitted.
2688 If the context-rectangle is omitted or illegal (e.g. "item" on a
2689 window), "Mouse" is the default. Note that not all of these make
2690 sense under all circumstances (e.g. "Icon" if the pointer is on a
2697 specify how far the menu is moved from it's default position. By
2698 default, the numeric value given is interpreted as a percentage of
2699 the context rectangle's width (height), but with a trailing
2701 the menu's width (height) is used instead. Furthermore a trailing
2703 changes the interpretation to mean pixels.
2705 Instead of a single value you can use a list of values. All
2706 additional numbers after the first one are separated from their
2707 predecessor by their sign. Do not use any other separators.
2711 are prefixed with "o<number>" where <number> is an integer, the
2712 menu and the rectangle are moved to overlap at the specified
2713 position before any other offsets are applied. The menu and the
2714 rectangle are placed so that the pixel at <number> percent of the
2715 rectangle's width/height is right over the pixel at <number>
2716 percent of the menu's width/height. So "o0" means that the
2717 top/left borders of the menu and the rectangle overlap, with
2718 "o100" it's the bottom/right borders and if you use "o50" they are
2719 centered upon each other (try it and you will see it is much
2720 simpler than this description). The default is "o0". The prefix
2721 "o<number>" is an abbreviation for "+<number>-<number>m".
2725 is equivalent to "o50". Examples:
2727 # window list in the middle of the screen
2730 # menu to the left of a window
2731 Menu name window -100m c+0
2733 # popup menu 8 pixels above the mouse pointer
2734 Popup name mouse c -100m-8p
2736 # somewhere on the screen
2737 Menu name rectangle 512x384+1+1 +0 +0
2739 # centered vertically around a menu item
2740 AddToMenu foobar-menu
2742 + "special item" Popup "another menu" item \\
2746 # above the first menu item
2747 AddToMenu foobar-menu
2748 + "first item" Popup "another menu" item \\
2751 Note that you can put a sub menu far off the current menu so you
2752 could not reach it with the mouse without leaving the menu. If
2753 the pointer leaves the current menu in the general direction of
2754 the sub menu the menu stays up.
2757 .IR special-options :
2760 To create a tear off menu without opening the normal menu, add the
2762 .IR TearOffImmediately .
2763 Normally the menu opens in normal state for a split second before
2764 being torn off. As tearing off places the menu like any other
2765 window, a position should be specified explicitly:
2767 # Forbid fvwm to place the menu window
2768 Style <name of menu> UsePPosition
2769 # Menu at top left corner of screen
2770 Menu Root 0p 0p TearOffImmediately
2774 .IR animated " and " Mwm " or " Win
2775 menu styles may move a menu somewhere else on the screen. If you
2776 do not want this you can add
2778 as an option. This might happen for example if you want the menu
2779 always in the top right corner of the screen.
2781 Where do you want a menu to appear when you click on it's menu
2782 item? The default is to place the title under the cursor, but if
2783 you want it where the position arguments say, use the
2785 option. If you want the pointer on the title of the menu, use
2787 too. Note that these options apply only if the
2788 .IB "PopupAsRootMenu " MenuStyle
2791 The pointer is warped to the title of a sub menu whenever the
2792 pointer would be on an item when the sub menu is popped up
2794 menu style) or never warped to the title at all
2795 .RI ( Mwm " or " Win
2796 menu styles). You can force (forbid) warping whenever the
2797 sub menu is opened with the
2798 .IR WarpTitle " (" NoWarp ") option."
2802 do work with a normal menu that has no other position arguments.
2806 .BI "MenuStyle " "stylename options"
2807 Sets a new menu style or changes a previously defined style. The
2809 is the style name; if it contains spaces or tabs it has to be
2810 quoted. The name "*" is reserved for the default menu style. The
2811 default menu style is used for every menu-like object (e.g. the
2812 window created by the
2814 command) that had not be assigned a style using the
2815 .BR ChangeMenuStyle .
2817 .BR DestroyMenuStyle .
2818 When using monochrome color options are ignored.
2821 is a comma separated list containing some of the keywords
2827 HilightBack / HilightBackOff,
2828 ActiveFore / ActiveForeOff,
2832 Hilight3DThick / Hilight3DThin / Hilight3DOff,
2834 Animation / AnimationOff,
2839 TitleWarp / TitleWarpOff,
2840 TitleUnderlines0 / TitleUnderlines1 / TitleUnderlines2,
2841 SeparatorsLong / SeparatorsShort,
2842 TrianglesSolid / TrianglesRelief,
2843 PopupImmediately / PopupDelayed,
2844 PopdownImmediately / PopdownDelayed,
2849 PopupAsRootMenu / PopupAsSubmenu / PopupIgnore / PopupClose,
2850 RemoveSubmenus / HoldSubmenus,
2851 SubmenusRight / SubmenusLeft,
2854 VerticalItemSpacing,
2855 VerticalTitleSpacing,
2856 AutomaticHotkeys / AutomaticHotkeysOff.
2858 In the above list some options are listed as option pairs or
2859 triples with a '/' in between. These options exclude each other.
2861 .IR Fvwm ", " Mwm ", " Win
2862 reset all options to the style with the same name in former
2863 versions of fvwm. The default for new menu styles is
2865 style. These options override all others except
2866 .IR Foreground ", " Background ", " Greyed ", " HilightBack ", "
2867 .IR ActiveFore " and " PopupDelay ,
2868 so they should be used only as the first option specified for a
2869 menu style or to reset the style to defined behavior. The same
2870 effect can be created by setting all the other options one by one.
2873 style menus popup sub menus automatically.
2875 menus indicate the current menu item by changing the background to
2878 sub menus overlap the parent menu,
2880 style menus never overlap the parent menu.
2883 style is equivalent to HilightBackOff, Hilight3DThin,
2884 ActiveForeOff, ActiveBackOff,
2885 AnimationOff, Font, MenuFace, PopupOffset 0 67,
2886 TitleWarp, TitleUnderlines1, SeparatorsShort, TrianglesRelief,
2887 PopupDelayed, PopdownDelayed, PopupDelay 150, PopdownDelay 150,
2888 PopupAsSubmenu, HoldSubmenus,
2889 SubmenusRight, BorderWidth 2, AutomaticHotkeysOff,
2893 style is equivalent to HilightBackOff, Hilight3DThick,
2894 ActiveForeOff, ActiveBackOff,
2895 AnimationOff, Font, MenuFace, PopupOffset -3 100,
2896 TitleWarpOff, TitleUnderlines2, SeparatorsLong, TrianglesRelief,
2897 PopupImmediately, PopdownDelayed, PopdownDelay 150,
2898 PopupAsSubmenu, HoldSubmenus, SubmenusRight, BorderWidth 2,
2899 AutomaticHotkeysOff, PopupActiveArea 75.
2902 style is equivalent to HilightBack, Hilight3DOff, ActiveFore,
2904 AnimationOff, Font, MenuFace, PopupOffset -5 100, TitleWarpOff,
2905 TitleUnderlines1, SeparatorsShort, TrianglesSolid,
2906 PopupImmediately, PopdownDelayed, PopdownDelay 150,
2907 PopupAsSubmenu, RemoveSubmenus, SubmenusRight, BorderWidth 2,
2908 AutomaticHotkeysOff, PopupActiveArea 75.
2911 takes the thickness of the border around the menus in pixels. It
2912 may be zero to 50 pixels. The default is 2. Using an illegal
2913 value reverts the border width to the default.
2915 .IR Foreground " and " Background
2916 may have a color name as an argument. This color is used for menu
2917 text or the menu's background. You can omit the color name to
2918 reset these colors to the built-in default.
2921 may have a color name as an argument. This color is the one used
2922 to draw a menu-selection which is prohibited (or not recommended)
2923 by the Mwm hints which an application has specified. If the color
2924 is omitted the color of greyed menu entries is based on the
2925 background color of the menu.
2927 .IR HilightBack " and " HilightBackOff
2928 switch hilighting the background of the selected menu item on and
2929 off. A specific background color may be used by providing the
2930 color name as an argument to
2932 If you use this option without an argument the color is based on
2933 the menu's background color. The
2935 option overrides the specified color.
2937 .I ActiveFore " and " ActiveForeOff
2938 switch hilighting the foreground of the selected menu item on and
2939 off. A specific foreground color may be used by providing the
2940 color name as an argument to
2942 Omitting the color turns hilighting on when an
2946 turns off hilighting the foreground completely. The
2948 option overrides the specified color.
2951 controls if a colorset is used instead of the
2952 .IR Foreground ", " Background " and " MenuFace
2955 keyword is followed by a number equal to zero or greater, this
2956 number is taken as the number of the colorset to use. If the
2957 number is omitted, the colorset is switched off and the regular
2958 menu styles are used again. The foreground and background colors
2959 of the menu items are replaced by the colors from the colorset. If
2960 the colorset has a pixmap defined, this pixmap is used as the
2961 background of the menu. Note that the
2963 menu style has been optimized for memory consumption and may use
2964 less memory than the background from a colorset. The shape mask
2965 from the colorset is used to shape the menu. Please refer to the
2967 section for details about colorsets.
2972 but the foreground from the colorset replaces the color given with
2975 menu style and the colorset's background color replaces the color
2978 command (to turn on background hilighting you have to use the
2980 menu style too). If specified, the hilight and shadow colors
2981 from the colorset are used too. The pixmap and shape mask from
2982 the colorset are not used. Hilighting the background or
2983 foreground can be turned off individually with the
2984 .IR ActiveForeOff " or " HilightBackOff
2990 but the foreground from the colorset replaces the color given with
2993 menu style. No other parts of the colorset are used.
2995 .IR Hilight3DThick ", " Hilight3DThin " and " Hilight3DOff
2996 determine if the selected menu item is hilighted with a 3D
2997 relief. Thick reliefs are two pixels wide, thin reliefs are one
3000 .I Hilight3DThickness
3001 takes one numeric argument that may be between -50 and +50
3002 pixels. With negative values the menu item gets a pressed in look.
3003 The above three commands are equivalent to a thickness of 2, 1 and
3006 .IR Animation " and " AnimationOff
3007 turn menu animation on or off. When animation is on, sub menus
3008 that don't fit on the screen cause the parent menu to be shifted
3009 to the left so the sub menu can be seen.
3012 takes a font name as an argument. If a font by this name exists
3013 it is used for the text of all menu items. If it does not exist
3014 or if the name is left blank the built-in default is used.
3017 enforces a fancy background upon the menus. You can use the same
3026 sections for more information. If you use
3028 without arguments the style is reverted back to normal.
3030 Some examples of MenuFaces are:
3032 MenuFace DGradient 128 2 lightgrey 50 blue 50 \\
3034 MenuFace TiledPixmap texture10.xpm
3035 MenuFace HGradient 128 2 Red 40 Maroon 60 \\
3037 MenuFace Solid Maroon
3039 Note: The gradient styles H, V, B and D are optimized for high
3040 speed and low memory consumption in menus. This is not the case
3041 for all the other gradient styles. They may be slow and consume
3042 huge amounts of memory, so if you encounter performance problems
3043 with them you may be better off by not using them. To improve
3044 performance you can try one or all of the following:
3046 Turn hilighting of the active menu item other than foreground
3049 MenuStyle <style> Hilight3DOff, HilightBackOff
3050 MenuStyle <style> ActiveFore <preferred color>
3052 Make sure sub menus do not overlap the parent menu. This can
3053 prevent menus being redrawn every time a sub menu pops up or down.
3055 MenuStyle <style> PopupOffset 1 100
3057 Run your X server with backing storage. If your X Server is
3058 started with the -bs option, turn it off. If not try the -wm
3063 You may have to adapt this example to your system (e.g. if you use
3067 requires one numeric argument. This value is the delay in
3068 milliseconds before a sub menu is popped up when the pointer moves
3069 over a menu item that has a sub menu. If the value is zero no
3070 automatic pop up is done. If the argument is omitted the built-in
3071 default is used. Note that the popup delay has no effect if the
3073 option is used since sub menus pop up immediately then.
3076 makes menu items with sub menus pop up it up as soon as the
3077 pointer enters the item. The
3078 .I PopupDelay option
3081 is used fvwm looks at the
3083 option if or when this automatic popup happens.
3088 but determines the timeout of the
3092 .I PopdownImmediately
3093 makes sub menus vanish as soon as the pointer leaves the sub menu
3094 and the correspondent item in the parent menu. With the opposite
3097 the sub menu only pops down after the time specified with the
3099 option. This comes handy when the pointer often strays off the
3100 menu item when trying to move into the sub menu. Whenever there
3101 is a conflict between the
3102 .IR PopupImmediately ", " PopupDelayed ", " PopupDelay
3104 .IR PopdownImmediately ", " PopdownDelayed ", " PopdownDelay
3107 styles win when using mouse navigation and the
3109 styles win when navigating with the keyboard.
3112 requires two integer arguments. Both values affect where sub
3113 menus are placed relative to the parent menu. If both values are
3114 zero, the left edge of the sub menu overlaps the left edge of the
3115 parent menu. If the first value is non-zero the sub menu is
3116 shifted that many pixels to the right (or left if negative). If
3117 the second value is non-zero the menu is moved by that many
3118 percent of the parent menu's width to the right or left.
3121 requires an integer value between 51 and 100. Normally, when the
3122 pointer is over a menu item with a sub menu and the pointer enters
3123 the area that starts at 75% of the menu width, the sub menu is
3124 shown immediately. This percentage can be changed with
3125 .IR PopupActiveArea .
3126 Setting this value to 100 disables this kind of automatic popups
3127 altogether. The default value is restored if no or an illegal
3130 .IR TitleWarp " and " TitleWarpOff
3131 affect if the pointer warps to the menu title when a sub menu is
3132 opened or not. Note that regardless of this setting the pointer is
3133 not warped if the menu does not pop up under the pointer.
3135 .IR TitleUnderlines0 ", " TitleUnderlines1 " and " TitleUnderlines2
3136 specify how many lines are drawn below a menu title.
3138 .IR SeparatorsLong " and " SeparatorsShort
3139 set the length of menu separators. Long separators run from the
3140 left edge all the way to the right edge. Short separators leave a
3141 few pixels to the edges of the menu.
3143 .IR TrianglesSolid " and " TrianglesRelief
3144 affect how the small triangles for sub menus is drawn. Solid
3145 triangles are filled with a color while relief triangles are
3149 requires one numeric argument. This value is the time in
3150 milliseconds between two mouse clicks in a menu to be considered
3151 as a double click. The default is 450 milliseconds. If the
3152 argument is omitted the double click time is reset to this
3156 takes the name of an image file as an argument. The
3157 picture is drawn along the left side of the menu. The
3159 option can be overridden by a menu specific side pixmap (see
3161 If the file name is omitted an existing side pixmap is remove from
3165 takes the name of an X11 color as an argument. This color is used
3166 to color the column containing the side picture (see
3167 above). The SideColor option can be overridden by a menu specific
3170 If the color name is omitted the side color option is switched off.
3172 .IR PopupAsRootMenu ", " PopupAsSubmenu ", " PopupIgnore " and " PopupClose
3173 change the behavior when you click on a menu item that opens a
3176 the original menu is closed before the sub menu appears, with
3178 it is not, so you can navigate back into the
3179 parent menu. Furthermore, with
3181 the sub menu is held open (posted) regardless of where you move
3182 the mouse. Depending on your menu style this may simplify
3183 navigating through the menu. Any keystroke while a menu is posted
3184 reverts the menu back to the normal behavior. With
3186 the menu is cloed when a sub menu item is activated, and the menu
3189 is used (even if the menu was invoked with the
3196 instructs fvwm to remove sub menus when you move back into the
3199 the sub menu remains visible. You probably want to use
3201 if you are using the
3205 affects menu navigation with the keyboard.
3208 takes an optional key name as an argument. If the given key is
3209 release in a menu using this style, the current menu item is
3210 selected. This is intended for
3214 The key name is a standard X11 key name as defined in
3215 .IR /usr/include/X11/keysymdef.h ,
3218 prefix), or the keysym database
3219 .IR /usr/X11R6/lib/X11/XKeysymDB .
3220 To disable this behavior, omit
3223 Note: Some X servers do not support KeyRelease events.
3225 does not work on such a machine.
3228 takes a special string as its argument that determines the layout
3229 of the menu items. Think of the format string as if it were a
3230 menu item. All you have to do is tell fvwm where to place the
3231 different parts of the menu item (i.e. the labels, the triangle
3232 denoting a sub menu, the mini icons and the side pic) in the blank
3233 area. The string consists of spaces,
3235 characters and formatting directives beginning with '%'. Any
3236 illegal characters and formatting directives are silently ignored:
3239 .BR %l ", " %c " and " %r
3241 Insert the next item label. Up to three labels can be used. The
3242 item column is left-aligned
3251 Inserts the mini icon.
3255 Insert the sub menu triangle pointing either to the right
3264 denotes the beginning of the area that is highlighted either with
3265 a background color or a relief (or both). The second
3267 marks the end of this area.
3269 can be used up to twice in the string. If you don't add one or
3270 both of them, fvwm sets the margins to the margins of the whole
3271 item (not counting the side picture).
3275 Places the side picture either at the beginning or the end of the
3276 menu. This directive may be used only once and only as the first
3277 or last in the format string. If the
3279 is not at the beginning of the string, all characters to the right
3280 of it are silently ignored.
3282 .BR Space ", " Tab ", " %Space " and " %Tab
3284 Add gap of one space, or a tab, using the width of the menu font.
3285 When using a tab, the size of the gap can be one to 8 spaces
3286 since the tab position is a multiple of 8 from the edge of the menu.
3287 The whole string must be quoted if spaces or tabs are used.
3296 inserts an empty area into the item, but with better control of
3297 its size (see below).
3301 You can define an additional space before and after each of the
3304 .BI % left . right p
3306 This means: if the object is defined in the menu (e.g. if it is
3308 and you use a side picture, or it is
3310 for the third column and there are items defined that actually
3311 have a third column), then add
3313 pixels before the object and
3315 pixels after it. You may leave out the
3319 parts if you don't need them. All values up to the screen width
3320 are allowed. Even negative values can be used with care. The
3322 may be replaced with any other formatting directives described
3325 Note: Only items defined in the format string are visible in the
3326 menus. So if you do not put a
3328 in there you do not see a side picture, even if one is specified.
3332 style changes the default
3334 string, but if it was set manually it is not modified.
3336 Note: If any unformatted title of the menu is wider than the
3337 widest menu item, the spaces between the different parts of the
3338 menu items are enlarged to match the width of the title. Leading
3339 left aligned objects in the format string
3340 .RB ( %l ", " %i ", "%< ", first " %| )
3341 stick to the left edge of the menu and trailing right aligned
3343 .RB ( %r ", " %i ", "%> ", second " %| )
3344 stick to the right edge. The gaps between the remaining items are
3349 MenuStyle * ItemFormat \\
3350 "%.4s%.1|%.5i%.5l%.5l%.5r%.5i%2.3>%1|"
3352 Is the default string used by fvwm: (side picture + 4 pixels gap)
3353 (beginning of the hilighted area + 1 pixel gap) (mini icon + 5p)
3354 (first column left aligned + 5p) (second column left aligned + 5p)
3355 (third column right aligned + 5p) (second mini icon + 5p) (2p +
3356 sub menu triangle + 3p) (1p + end of hilighted area).
3358 MenuStyle * ItemFormat \\
3359 "%.1|%3.2<%5i%5l%5l%5r%5i%1|%4s"
3361 Is used by fvwm with the
3365 .IR VerticalItemSpacing " and " VerticalTitleSpacing
3366 control the vertical spacing of menu items and titles like
3368 controls the horizontal spacing. Both take two numeric arguments
3369 that may range from -100 to +100. The first is the gap in pixels
3370 above a normal menu item (or a menu title), the second is the gap
3371 in pixels below it. Negative numbers do not make much sense and
3372 may screw up the menu completely. If no arguments are given or
3373 the given arguments are invalid, the built-in defaults are used:
3374 one pixel above the item or title and two below.
3377 mirrors the menu layout and behavior. Sub menus pop up to the
3378 left, the sub menu triangle is drawn left and the mini icon and
3379 side picture are drawn at the right side of the menu. The default
3382 The position hints of a menu are also affected by this setting,
3383 i.e. position hints using
3384 .IR item " or " menu
3385 as context rectangle and position hints using
3389 .IR AutomaticHotkeys " and " AutomaticHotkeysOff
3390 control the menu's ability to automatically provide hot-keys on
3391 the first character of each menu item's label. This behavior is
3392 always overridden if an explicit hot-key is assigned in the
3399 MenuStyle * Foreground Black, Background gray40
3400 MenuStyle * Greyed gray70, ActiveFore White
3401 MenuStyle * HilightBackOff, Hilight3DOff
3402 MenuStyle * Font lucidasanstypewriter-14
3403 MenuStyle * MenuFace DGradient 64 darkgray \\
3407 MenuStyle red Foreground Yellow
3408 MenuStyle red Background Maroon
3409 MenuStyle red Greyed Red, ActiveFore Red
3410 MenuStyle red HilightBackOff, Hilight3DOff
3411 MenuStyle red Font lucidasanstypewriter-12
3412 MenuStyle red MenuFace DGradient 64 Red Black
3414 Note that all style options could be placed on a single line for
3418 .BI "MenuStyle " "forecolor backcolor shadecolor font style" " [" anim "]"
3419 This is the old syntax of the
3421 command. It is obsolete and may be removed in the future. Please
3422 use the new syntax as described above.
3424 Sets the menu style. When using monochrome the colors are
3427 is the one used to draw a menu-selection which is prohibited (or
3428 not recommended) by the Mwm hints which an application has
3429 specified. The style option is either
3430 .IR Fvwm ", " Mwm " or " Win ,
3431 which changes the appearance and operation of the menus.
3434 style menus popup sub menus automatically.
3436 menus indicate the current menu item by changing the background to
3439 sub menus overlap the parent menu,
3441 style menus never overlap the parent menu.
3445 option is given, sub menus that don't fit on the screen cause the
3446 parent menu to be shifted to the left so the sub menu can be
3452 .BI "Popup " PopupName " [" position "] [" default-action "]"
3453 This command has two purposes: to bind a menu to a key or mouse
3454 button, and to bind a sub menu into a menu. The formats for the
3455 two purposes differ slightly. The
3457 arguments are the same as for
3461 is invoked if the user clicks a button to invoke the menu and
3462 releases it immediately again (or hits the key rapidly twice if
3463 the menu is bound to a key). If the default action is not
3464 specified, double clicking on the menu does nothing. However, if
3465 the menu begins with a menu item (i.e. not with a title or a
3466 separator) and the default action is not given, double clicking
3467 invokes the first item of the menu (but only if the pointer really
3470 To bind a previously defined pop-up menu to a key or mouse button:
3473 The following example binds mouse buttons 2 and 3 to a pop-up
3474 called "Window Ops". The menu pops up if the buttons 2 or 3 are
3475 pressed in the window frame, side-bar, or title-bar, with no
3476 modifiers (none of shift, control, or meta).
3478 Mouse 2 FST N Popup "Window Ops"
3479 Mouse 3 FST N Popup "Window Ops"
3481 Pop-ups can be bound to keys through the use of the
3483 command. Pop-ups can be operated without using the mouse by
3484 binding to keys and operating via the up arrow, down arrow, and
3488 To bind a previously defined pop-up menu to another menu, for use
3492 The following example defines a sub menu "Quit-Verify" and binds
3493 it into a main menu, called "RootMenu":
3495 AddToMenu Quit-Verify
3496 + "Really Quit Fvwm?" Title
3497 + "Yes, Really Quit" Quit
3498 + "Restart Fvwm" Restart
3499 + "Restart Fvwm 1.xx" Restart fvwm1 -s
3501 + "No, Don't Quit" Nop
3503 AddToMenu RootMenu "Root Menu" Title
3504 + "Open XTerm Window" Popup NewWindowMenu
3505 + "Login as Root" Exec exec xterm \\
3506 -fg green -T Root \\
3508 + "Login as Anyone" Popup AnyoneMenu
3509 + "Remote Hosts" Popup HostMenu
3511 + "X utilities" Popup Xutils
3513 + "Fvwm Modules" Popup Module-Popup
3514 + "Fvwm Window Ops" Popup Window-Ops
3516 + "Previous Focus" Prev (AcceptsFocus) Focus
3517 + "Next Focus" Next (AcceptsFocus) Focus
3519 + "Refresh screen" Refresh
3521 + "Reset X defaults" Exec xrdb -load \\
3525 + Quit Popup Quit-Verify
3532 in that pop-ups do not stay up if the user simply clicks. These
3533 are popup-menus, which are a little hard on the wrist.
3535 menus stay up on a click action. See the
3537 command for an explanation of the interactive behavior of menus. A
3538 menu can be open up to ten times at once, so a menu may even use
3539 itself or any of its predecessors as a sub menu.
3543 When assigned to a menu item, it inserts a tear off bar into the
3544 menu (a horizontal broken line). Activating that item tears off
3545 the menu. If the menu item has a label, it is shown instead of
3546 the broken line. If used outside menus, this command does
3549 AddToMenu WindowMenu
3553 + I "click here to tear me off" TearMenuOff
3558 Does nothing. This is used to insert a title line in a popup or
3561 .SS MISCELLANEOUS COMMANDS
3564 .BI "BugOpts [" option " [" bool "]], " ...
3565 This command controls several workarounds for bugs in third party
3566 programs. The individual options are separated by commas. The
3569 is a boolean argument and controls if the bug workaround is
3570 enabled or not. It can either be "True" or "False" to turn the
3571 option on or off, or "toggle" to switch is back and forth. If
3573 is omitted, the default setting is restored.
3575 .I FlickeringMoveWorkaround
3576 disables ConfigureNotify events that are usually sent to an
3577 application while it is moved. If some windows flicker annoyingly
3578 while being moved, this option may help you. Note that if this
3579 problem occurs it is not an fvwm bug, it is a problem of the
3582 .I MixedVisualWorkaround
3583 makes fvwm install the root colormap before it does some
3584 operations using the root window visuals. This is only useful
3587 option is used to start fvwm and then only with some
3588 configurations of some servers (e.g. Exceed 6.0 with an 8 bit
3589 PseudoColor root and fvwm using a 24 bit TrueColor visual).
3593 option controls whether Motif applications have the ability to
3594 have modal dialogs (dialogs that force you to close them first
3595 before you can do anything else). The default is to not allow
3596 applications to have modal dialogs. Use this option with
3597 care. Once this option is turned on, you have to restart fvwm to
3600 .I RaiseOverNativeWindows
3601 makes fvwm try to raise the windows it manages over native windows
3602 of the X servers host system. This is needed for some X servers
3603 running under Windows or Windows NT. Fvwm tries to detect if it
3604 is running under such an X server and initializes the flag
3607 .I RaiseOverUnmanaged
3608 makes fvwm try to raise the windows it manages over
3609 override_redirect windows. This is used to cope with ill-mannered
3610 applications that use long-lived windows of this sort, contrary to
3612 conventions. It is usefull with the
3616 .I FlickeringQtDialogsWorkaround
3617 suppresses flickering of the focused window in some modules when
3618 using KDE or Qt applications with application modal dialog
3619 windows. By default this option is turned on. This option may be
3620 visually disturbing for other applications using windows not
3621 managed by fvwm. Since these applications are rare it is most
3622 likely safe to leave this option at its default.
3624 .I EWMHIconicStateWorkaround
3625 is needed by EWMH compliant pagers or taskbars which represent
3626 windows which are on a different desktops as iconified. These
3627 pagers and taskbars use a version of the EWMH specification before
3628 version 1.2 (the current KDE2 & 3 versions). These pagers and
3629 taskbars use the IconicState WM_STATE state to determine if an
3630 application is iconified. This state, according to the
3632 does not imply that a window is iconified (in the usual sense).
3633 Turning on this option forces fvwm to establish an equivalence
3634 between the IconicState WM_STATE state and the iconified window.
3637 compliance but should not cause big problems.
3638 By default this option is off.
3641 .I DisplayNewWindowNames
3642 enabled, fvwm prints the name, icon name (if available), resource
3643 and class of new windows to the console. This can help in finding
3644 the correct strings to use in the
3649 .I ExplainWindowPlacement
3650 option is enabled, fvwm prints a message to the console whenever a
3651 new window is placed or one of the commands
3652 .BR PlaceAgain ", " Recapture " or " RecaptureWindow
3653 is used. The message explains on which desk, page, Xinerama
3654 screen and position it was placed and why. This option can be
3655 used to figure out why a specific window does not appear where you
3659 .I DebugCRMotionMethod
3660 option enables some debugging code in the ConfigureRequest
3661 handling routines of fvwm. It is not helpful for the user, but if
3662 you report a bug to the fvwm team we may ask you to enable this
3666 .BI "BusyCursor [" "Option bool" "], " ...
3667 This command controls the cursor during the execution of certain
3671 .IR DynamicMenu ", " ModuleSynchronous ", " Read ", " Wait ", " * .
3672 An option must be followed by a boolean argument
3674 You can use commas to separate individual options. If you set an
3675 option to "True", then when the corresponding command is run, fvwm
3676 displays the cursor of the
3680 command. "False" forces to not display the cursor. The default is:
3682 BusyCursor DynamicMenu False, \\
3683 ModuleSynchronous False, Read False, \\
3684 Recapture True, Wait False
3688 refers to all available options.
3692 option also controls the
3699 .I DynamicPopupAction
3701 .I MissingSubmenuFunction
3704 command. If this option is set to "False", then the busy cursor
3705 is not displayed during a dynamic menu command even if this
3707 .BR Read " or " PipeRead
3710 option is set to "True".
3714 option affects only the root cursor. During a wait pause the root
3715 cursor is replaced by the busy cursor and fvwm is still fully
3716 functional (you can escape from the pause, see the
3718 command). If you want to use this option and if you do not use
3719 the default root cursor, you must set your root cursor with the
3724 .BI "ClickTime [" delay "]"
3725 Specifies the maximum delay in milliseconds between a button press
3726 and a button release for the
3728 command to consider the action a mouse click. The default delay
3729 is 150 milliseconds. Omitting the delay value resets the
3734 .BI "ColorLimit " limit
3735 This command is obsolete. See the
3740 .\"on the colors used in pixmaps used by fvwm. Zero (the default)
3741 .\"sets no limit. Fvwm uses pixmaps for icons, mini-icons, and
3742 .\"pixmap borders, menu backgrounds and titles. This command limits
3743 .\"pixmap colors to a set of colors that starts out with common
3744 .\"colors. The current list contains about 60 colors and starts with
3745 .\"white, black, grey, green, blue, red, cyan, yellow, and magenta.
3750 .\"would limit pixmaps to these 9 colors.
3752 .\"It makes the most sense to put this command at the front of the
3754 .\"file. This command should occur before any menu definitions that
3755 .\"contain mini-icons.
3757 .\"Solid frame and title colors (including shadows and gradients) are
3758 .\"not controlled by this command.
3760 .\"This command only makes sense on screens that display a limited
3761 .\"number of colors at once. If your display can display more than
3762 .\"2 million colors at once, this command is ignored. Screens that
3763 .\"only display 256 colors at once are known as 8 bit displays. The 2
3764 .\"million color cutoff point corresponds to 21 bit color, the most
3765 .\"common screen that exceeds this limit would be 24 bit.
3767 .\"On 8 bit displays, the default color limit is set to the size of
3768 .\"the built-in table (about 60). We recommend that you start with
3769 .\"the default value, and not include this command in your
3770 .\".IR config " file."
3773 .BI "ColormapFocus " FollowsMouse | FollowsFocus
3774 By default, fvwm installs the colormap of the window that the
3775 cursor is in. If you use
3777 ColormapFocus FollowsFocus
3779 then the installed colormap is the one for the window that
3780 currently has the keyboard focus.
3783 .B "CursorStyle \fIcontext\fP [\fInumber\fP\
3790 Defines a new cursor for the specified context. Note that this
3791 command can not control the shapes an applications uses, for
3792 example, to indicate that it is busy. The various contexts are:
3795 .BR "POSITION " (top_left_corner)
3797 used when initially placing windows
3800 .BR "TITLE " (top_left_arrow)
3802 used in a window title-bar
3805 .BR "DEFAULT " (top_left_arrow)
3807 used in windows that don't set their cursor
3812 used in one of the title-bar buttons
3817 used when moving or resizing windows
3820 .BR "RESIZE " (sizing)
3822 used when moving or resizing windows
3827 used during certain fvwm commands (see
3832 .BR "MENU " (top_left_arrow)
3837 .BR "SELECT " (crosshair)
3839 used when the user is required to select a window
3842 .BR "DESTROY " (pirate)
3844 used for DESTROY, CLOSE, and DELETE commands
3847 .BR "TOP " (top_side)
3849 used in the top side-bar of a window
3852 .BR "RIGHT " (right_side)
3854 used in the right side-bar of a window
3857 .BR "BOTTOM " (bottom_side)
3859 used in the bottom side-bar of a window
3862 .BR "LEFT " (left_side)
3864 used in the left side-bar of a window
3867 .BR "TOP_LEFT " (top_left_corner)
3869 used in the top left corner of a window
3872 .BR "TOP_RIGHT " (top_right_corner)
3874 used in the top right corner of a window
3877 .BR "BOTTOM_LEFT " (bottom_left_corner)
3879 used in the bottom left corner of a window
3882 .BR "BOTTOM_RIGHT " (bottom_right_corner)
3884 used in the bottom right corner of a window
3887 .BR "TOP_EDGE " (top_side)
3889 used at the top edge of the screen.
3892 .BR "RIGHT_EDGE " (right_side)
3894 used at the right edge of the screen.
3897 .BR "BOTTOM_EDGE " (bottom_side)
3899 used at the bottom edge of the screen.
3902 .BR "LEFT_EDGE " (left_side)
3904 used at the left edge of the screen.
3907 .BR "ROOT " (left_ptr)
3909 used as the root cursor.
3912 .BR "STROKE " (plus)
3920 The defaults are shown in parentheses above. If you ever want to
3921 restore the default cursor for a specific context you can omit the
3924 The second is either the numeric value of the cursor as defined in
3927 or its name (without the XC_ prefix). Alternativelly the xpm file
3928 name may be specified. This xpm file should contain a pixmap
3929 using 3 colors (None, black, white) and an optional hot-spot. If
3930 no hot-spot is defined, the hot-spot is placed in the center of
3931 the image. Furthermore the name can be
3935 (a single pixel as the cursor). For example:
3937 # make the kill cursor be XC_gumby (both forms work):
3938 CursorStyle DESTROY 56
3939 CursorStyle DESTROY gumby
3941 CursorStyle TOP_LEFT topl.xpm
3942 CursorStyle ROOT nice_arrow.xpm yellow black
3946 arguments specify the foreground and background colors for the
3947 cursor, defaulting to black and white.
3949 Here is an example pixmap file
3950 .IR nice_arrow.xpm :
3953 static char *nice_arrow_xpm[] = {
3954 /* width height num_colors chars_per_pixel hot-spot */
3977 The hot-spot coordinates are relative to zero, in the above
3978 example, the hot-spot is in the second row, and second column.
3981 .BI "DefaultColors [" "foreground background" "]"
3983 sets the default foreground and background colors used in
3984 miscellaneous windows created by fvwm, for example in the geometry
3985 feedback windows during a move or resize operation. If you don't
3986 want to change one color or the other, use - as its color name. To
3987 revert to the built-in default colors omit both color names. Note
3988 that the default colors are not used in menus, window titles or
3992 .BI "DefaultColorset [" num "]"
3994 sets the colorset used by the windows controlled by the
3996 command. To revert back to the
4002 or any variant of the
4007 .BI "DefaultFont [" fontname "]"
4009 sets the default font to font
4011 The default font is used by fvwm whenever no other font has been
4012 specified. To reset the default font to the built-in default,
4013 omit the argument. The default font is used for menus, window
4014 titles, icon titles as well as the geometry feedback windows
4015 during a move or resize operation. To override the default font
4016 in a specific context, use the
4017 .BR "Style * Font" ", " "Style * IconFont" ", or " MenuStyle
4021 .BI "DefaultIcon " filename
4022 sets the default icon which is used if a window has neither an
4023 client-supplied icon nor an icon supplied via the
4030 .BI "DefaultLayers " "bottom put top"
4031 changes the layers that are used for the
4032 .IR StaysOnBottom ", " StaysPut ", " StaysOnTop
4034 options. Initially, the layers 2, 4 and 6 are used.
4037 .BI "Deschedule " "[command_id]"
4038 Removes all commands that were scheduled with the id
4042 command from the list of commands to be executed unless they were
4043 already executed. If the
4045 is omitted, the value of the variable $[schedule.last] is used as
4049 .BI "Emulate " Fvwm | Mwm | Win
4050 This command is a catch all for how miscellaneous things are done
4051 by fvwm. Right now this command affects where the move/resize
4052 feedback window appears and how window placement is aborted. To
4053 have more Mwm- or Win-like behavior you can call
4057 as its argument. With
4059 resize and move feedback windows are in the center of the screen,
4060 instead of the upper left corner.
4061 This also affects how manual placement is aborted.
4062 See the ManualPlacement description.
4066 By default the key sequence
4068 allows for escaping from a
4070 pause and from a locked
4071 .B ModuleSynchronous
4074 command used with the
4076 command allows for configuring this key sequence. An example:
4079 Key Escape A S EscapeFunc
4088 .B ModuleSynchronous
4093 command does nothing.
4096 .BI "FakeClick [" "command value" "] ..."
4097 This command is mainly intended for debugging fvwm and no
4098 guarantees are made that it works for you.
4100 can simulate mouse button press and release events and pass them
4101 to fvwm or the applications. The parameters are a list of
4102 commands which consist of pairs of
4107 .IR press " and " release
4108 commands are followed by the appropriate mouse button number and
4109 generate a button press or release event on the window below the
4112 commands pauses fvwm for the given number of milliseconds. The
4114 command simulates pressing or releasing modifier keys. The values
4115 1 to 5 are mapped to
4119 while 6, 7 and 8 are mapped to
4124 The modifier is set for any further button events. To release a
4125 modifier key, use the corresponding negative number. The
4127 command determines to which window the button events are
4128 sent. With a depth of 1, all events go to the root window,
4129 regardless of the pointer's position. With 2, the event is passed
4130 to the top level window under the pointer which is usually the
4131 frame window. With 3, events go to the client window. Higher
4132 numbers go to successive sub windows. Zero (0) goes to the
4133 smallest window that contains the pointer. Note that events
4136 FakeClick depth 2 press 1 wait 250 release 1
4138 This simulates a click with button 1 in the parent window (depth
4139 2) with a delay of 250 milliseconds between the press and the
4141 Note: all command names can be abbreviated with their first letter.
4145 .BI "FakeKeypress [" "command value" "] ..."
4146 This command is mainly intended for debugging fvwm and no
4147 guarantees are made that it works for you.
4149 can simulate key press and release events and pass them
4150 to fvwm or applications. The parameters are a list of
4151 commands which consist of pairs of command tokens and values.
4153 .IR press " and " release
4154 commands are followed by a key name.
4155 The key name is a standard X11 key name as defined in
4156 .IR /usr/include/X11/keysymdef.h ,
4159 prefix), or the keysym database
4160 .IR /usr/X11R6/lib/X11/XKeysymDB .
4162 .IR wait ", " modifiers " and " depth
4163 commands are the same as those used by
4166 Save all GVim sessions with: "Esc:w\\n"
4168 All (gvim) FakeKeypress press Escape \\
4173 Save & exit all GVim sessions with: "Esc:wq\\n"
4175 All (gvim) FakeKeypress press Escape \\
4181 Send A to a specific window:
4183 WindowId 0x3800002 FakeKeypress press A
4185 Note: all command names can be abbreviated with their first letter.
4189 .BI "GlobalOpts [" options "]"
4190 As announced in the past, this command has been removed. Please
4191 replace the global options in your configuration file according to
4192 the following table:
4194 GlobalOpts WindowShadeShrinks
4196 Style * WindowShadeShrinks
4198 GlobalOpts WindowShadeScrolls
4200 Style * WindowShadeScrolls
4202 GlobalOpts SmartPlacementIsReallySmart
4204 Style * MinOverlapPlacement
4206 GlobalOpts SmartPlacementIsNormal
4208 Style * TileCascadePlacement
4210 GlobalOpts ClickToFocusDoesntPassClick
4212 Style * ClickToFocusPassesClickOff
4214 GlobalOpts ClickToFocusPassesClick
4216 Style * ClickToFocusPassesClick
4218 GlobalOpts ClickToFocusDoesntRaise
4220 Style * ClickToFocusRaisesOff
4222 GlobalOpts ClickToFocusRaises
4224 Style * ClickToFocusRaises
4226 GlobalOpts MouseFocusClickDoesntRaise
4228 Style * MouseFocusClickRaisesOff
4230 GlobalOpts MouseFocusClickRaises
4232 Style * MouseFocusClickRaises
4234 GlobalOpts NoStipledTitles
4236 Style * StippledTitleOff
4238 GlobalOpts StipledTitles
4240 Style * StippledTitle
4242 GlobalOpts CaptureHonorsStartsOnPage
4244 Style * CaptureHonorsStartsOnPage
4246 GlobalOpts CaptureIgnoresStartsOnPage
4248 Style * CaptureIgnoresStartsOnPage
4250 GlobalOpts RecaptureHonorsStartsOnPage
4252 Style * RecaptureHonorsStartsOnPage
4254 GlobalOpts RecaptureIgnoresStartsOnPage
4256 Style * RecaptureIgnoresStartsOnPage
4258 GlobalOpts ActivePlacementHonorsStartsOnPage
4260 Style * ManualPlacementHonorsStartsOnPage
4262 GlobalOpts ActivePlacementIgnoresStartsOnPage
4264 Style * ManualPlacementIgnoresStartsOnPage
4266 GlobalOpts RaiseOverNativeWindows
4268 BugOpts RaiseOverNativeWindows on
4270 GlobalOpts IgnoreNativeWindows
4272 BugOpts RaiseOverNativeWindows off
4277 .BI "HilightColor " "textcolor backgroundcolor"
4278 This command is obsoleted by the
4281 .IR HilightFore " and " HilightBack .
4284 Style * HilightFore textcolor, \\
4285 HilightBack backgroundcolor
4290 .BI "HilightColorset [" num "]"
4291 This command is obsoleted by the
4294 .IR HilightColorset .
4297 Style * HilightColorset num
4302 .BI "IconFont [" fontname "]"
4303 This command is obsoleted by the
4309 Style * IconFont fontname
4314 .BI "IconPath " path
4315 This command is obsolete. Please use
4320 .BI "ImagePath " path
4321 Specifies a colon separated list of directories in which to search
4322 for images (both monochrome and pixmap). To find an image given
4323 by a relative pathname, fvwm looks into each directory listed in
4324 turn, and uses the first file found.
4326 If a directory is given in the form "/some/dir;.ext", this means
4327 all images in this directory have the extension ".ext" that should
4328 be forced. The original image name (that may contain another
4329 extension or no extension at all) is not probed, instead ".ext" is
4330 added or replaces the original extension. This is useful, for
4331 example, if a user has some image directories with ".xpm" images
4332 and other image directories with the same names, but ".png"
4337 may contain environment variables such as
4338 .IR $HOME " (or " ${HOME} ).
4339 Further, a '+' in the
4341 is expanded to the previous value of the path, allowing appending
4342 or prepending to the path easily.
4346 ImagePath $HOME/icons:+:/usr/include/X11/bitmaps
4350 module is used to parse your
4352 files, then m4 may want to mangle the word "include" which
4353 frequently shows up in the
4355 command. To fix this one may add
4361 command, or better: use the
4365 directives to have a prefix of "m4_" (see the
4370 .BI "LocalePath " path
4371 Specifies a colon separated list of "locale path" in which to
4372 search for string translations. A locale path is constituted by a
4373 directory path and a text domain separated by a semicolon
4374 (';'). As an example the default locale path is:
4376 /install_prefix/share/locale;fvwm
4378 where install_prefix is the fvwm installation directory. With such
4379 a locale path translations are searched for in
4381 /install_prefix/share/locale/lang/LC_MESSAGES/fvwm.mo
4385 depends on the locale. If no directory is given the default
4386 directory path is assumed. If no text domain is given,
4388 is assumed. Without argument the default locale path is restored.
4394 may contain environment variables and a '+' to append or prepend
4395 the locale path easily.
4397 For example, the fvwm-themes package uses
4399 LocalePath ";fvwm-themes:+"
4401 to add locale catalogs.
4403 The default fvwm catalog contains a few strings used by the fvwm
4404 executable itself (Desk and Geometry) and strings used in some
4405 default configuration files and
4407 configuration. You can take a look at the po/ subdirectory of the
4408 fvwm source to get the list of the strings with a possible
4409 translation in various languages. At present, very few languages
4412 The main use of locale catalogs is via the "$[gt.string]"
4415 DestroyMenu MenuFvwmWindowOps
4416 AddToMenu MenuFvwmWindowOps "$[gt.Window Ops]" Title
4417 + "$[gt.&Move]" Move
4418 + "$[gt.&Resize]" Resize
4419 + "$[gt.R&aise]" Raise
4420 + "$[gt.&Lower]" Lower
4421 + "$[gt.(De)&Iconify]" Iconify
4422 + "$[gt.(Un)&Stick]" Stick
4423 + "$[gt.(Un)Ma&ximize]" Maximize
4425 + "$[gt.&Close]" Close
4426 + "$[gt.&Destroy]" Destroy
4428 gives a menu in the locale languages if translations are
4433 module has its own catalog and that the
4435 module has a set of special instructions for string
4436 translation. It is out of the scope of this discussion to explain
4437 how to build locale catalogs. Please refer to the GNU gettext
4441 .BI "PixmapPath " path
4442 This command is obsolete. Please use
4447 .BI "PrintInfo " "subject [verbose]"
4448 Print information on
4450 on stderr. An optional integer argument
4452 defines the level of information which is given.
4453 The current valid subjects are:
4456 which prints information about the colors used by fvwm. This useful
4457 on screens which can only display 256 (or less) colors at once.
4460 is one or greater the palette used by fvwm is printed.
4461 If you have a limited color palette, and you run out of colors,
4462 this command might be helpful.
4465 which prints information on your locale and the fonts that fvwm
4471 which prints information on the locale catalogs that fvwm used
4474 which prints information on fvwm styles.
4482 command is invoked, the last command that was executed by fvwm is
4483 executed again. This happens regardless of whether it was
4484 triggered by user interaction, a module or by an X event.
4485 Commands that are executed from a function defined with the
4488 .BR Read " or " PipeRead
4489 commands or by a menu are not repeated. Instead, the function,
4491 .B Read " or " PipeRead
4492 command is executed again.
4495 .BI "Schedule " "delay_ms [command_id] command"
4498 is executed after about
4500 milliseconds. This may be useful in some tricky setups. The
4502 is executed in the same context window as the
4504 command. An optional integer argument
4506 may be given in decimal, hexadecimal or octal format. This id can
4509 command to remove the scheduled command before it is executed. If
4510 no id is given, fvwm uses negative id numbers, starting with -1
4511 and decreasing by one with each use of the
4516 command and its arguments undergo the usual command line
4517 expansion, and, when
4519 is finally executed, it is expanded again. It may therefore be
4520 necessary to quote the parts of the command that must not be
4523 Note: A window's id as it is returned with $[w.id] can be used as
4528 Current Schedule 1000 $[w.id] WindowShade
4532 .BI "State " state " [" bool "]"
4533 Sets, clears or toggles one of the 32 user defined states which
4534 are associated with each window. The
4536 is a number ranging from 0 to 31. The states have no meaning in
4537 fvwm, but they can be checked in conditional commands like
4541 condition. The optional argument
4543 is a boolean argument. "True" sets the given state, while "False"
4544 clears it. Using "toggle" switches to the opposite state. If the
4546 argument is not given, the state is toggled.
4549 .BI "WindowFont [" fontname "]"
4550 This command is obsoleted by the
4556 Style * Font fontname
4561 .B "WindowList [(\fIconditions\fP\
4564 ] [\fIdouble-click-action\fP\
4566 Generates a pop-up menu (and pops it up) in which the title and
4567 geometry of each of the windows currently on the desktop are
4570 The format of the geometry part is:
4571 . IR desk "(" layer "): " "x-geometry sticky" ,
4573 .IR desk " and " layer
4574 are the corresponding numbers and
4576 is empty or a capital S. The geometry of iconified windows is
4577 shown in parentheses. Selecting an item from the window list
4578 pop-up menu causes the interpreted function "WindowListFunc" to be
4579 run with the window id of that window passed in as $0. The default
4580 "WindowListFunc" looks like this:
4582 AddToFunc WindowListFunc
4586 + I WarpToWindow 5p 5p
4588 You can destroy the built-in "WindowListFunc" and create your own
4589 if these defaults do not suit you.
4591 The window list menu uses the "WindowList" menu style if it is
4594 command). Otherwise the default menu style is used. To switch
4595 back to the default menu style, issue the command
4597 DestroyMenuStyle WindowList
4601 MenuStyle WindowList SelectOnRelease Meta_L
4605 can be used to exclude certain windows from the window
4606 list. Please refer to the
4608 command for details. Only windows that match the given conditions
4609 are displayed in the window list. The
4611 below work vice versa: windows that would otherwise not be
4612 included in the window list can be selected with them. The
4620 arguments are the same as for
4623 .I double-click-action
4624 is invoked if the user double-clicks (or hits the key rapidly
4625 twice if the menu is bound to a key) when bringing the window
4627 .I double-click-action
4628 must be quoted if it consists of more than one word.
4631 .I double-click-action
4632 is useful to define a default window if you have bound the window
4633 list to a key (or button) like this:
4635 # Here we call an existing function, but
4636 # it may be different. See the default
4637 # WindowListFunc definition earlier in this
4639 AddToFunc SwitchToWindow
4642 Key Tab A M WindowList "Prev SwitchToWindow"
4646 once it brings up the window list, if you hit it twice the focus
4647 is flipped between the current and the last focused window. With
4650 menu style (see example above) a window is selected as soon as you
4657 passed to WindowList are separated by commas and can be
4658 .IR Geometry " / " NoGeometry " / " NoGeometryWithInfo ,
4660 .IR NoNumInDeskTitle ,
4661 .IR NoCurrentDeskTitle ,
4662 .IR "MaxLabelWidth width",
4663 .IR TitleForAllDesks ,
4664 .IR "Function funcname" ,
4665 .IR "Desk desknum" ,
4667 .IR NoIcons " / " Icons " / " OnlyIcons ,
4668 .IR NoNormal " / " Normal " / " OnlyNormal ,
4669 .IR NoSticky " / " Sticky " / " OnlySticky ,
4670 .IR NoStickyAcrossPages " / " StickyAcrossPages " / " OnlyStickyAcrossPages ,
4671 .IR NoStickyAcrossDesks " / " StickyAcrossDesks " / " OnlyStickyAcrossDesks ,
4672 .IR NoOnTop " / " OnTop " / " OnlyOnTop ,
4673 .IR NoOnBottom " / " OnBottom " / " OnlyOnBottom ,
4675 .IR UseListSkip " / " OnlyListSkip ,
4679 .IR IconifiedAtEnd ,
4681 .IR Alphabetic " / " NotAlphabetic ,
4682 .IR SortByResource ,
4685 .IR SelectOnRelease .
4687 (Note - normal means not iconic, sticky, or on top)
4691 option windows are alphabetically sorted first by resource class,
4692 then by resource name and then by window name (or icon name if
4696 also works in the expected manner.
4700 option windows are sorted just like with
4701 .IR SortByResource ,
4702 but the resource name is not taken into account, only the resource
4707 option works exactly like the
4709 option with the same name, but overrides the option given in a
4710 menu style. By default, this option is set to the left
4712 key. To switch it off, use
4716 If you pass in a function via
4717 .IR "Function funcname" ,
4718 it is called within a window context of the selected window:
4720 AddToFunc IFunc I Iconify toggle
4721 WindowList Function IFunc, NoSticky, \\
4722 CurrentDesk, NoIcons
4725 .IB "Layer m " [ "n" ]
4726 option, only windows in layers between m and n are displayed. n
4727 defaults to m. With the
4729 option the order of the windows in the list is reversed.
4733 option the currently focused window (if any) is shown at the
4734 bottom of the list. This is mostly intended for simulating the
4735 Alt-Tab behavior in another GUI.
4738 makes iconified windows be moved to the end of the list. This is
4739 also from another GUI.
4743 option causes fvwm to not display the geometries as well as
4744 the separators which indicate the different desktops.
4745 .I NoGeometryWithInfo
4746 removes the geometries, but keep the desktop information
4747 and indicates iconic windows.
4749 causes fvwm to not display the desktop number in the geometry
4750 or before the window title with the
4751 .I NoGeometryWithInfo
4754 is only useful if a desktop name is defined with the
4756 command. It causes fvwm to not display the desktop number before
4757 the desktop name. By default, the WindowList menu have a title
4758 which indicates the current desk or the selected desktop if the .I
4759 Desk condition is used. The
4760 .I NoCurrentDeskTitle
4761 option removes this title.
4763 causes fvwm to add a menu title with the desk name and/or number
4764 before each group of windows on the same desk.
4767 the layer of the window is not diplayed. The options
4768 .IR ShowPage ", " ShowPageX " and " ShowPageY
4769 enable displaying the page of the window rounded multiples of the
4773 the window's Xinerama screen number is displayed.
4777 option takes the number of characters to print as its argument.
4778 No more than that many characters of the window name are visible.
4780 If you wanted to use the
4782 as an icon manager, you could invoke the following:
4784 WindowList OnlyIcons, Sticky, OnTop, Geometry
4788 options essentially wipe out all other ones... but the
4790 option which just causes
4792 to only consider the windows with
4800 is called, the X function with the same name is used to send all
4801 pending X requests to the server. This command is intended for
4805 .BI "XSynchronize [" bool "]"
4808 command controls wether X requests are sent to the X server
4809 immediately or not. Normally, requests are sent in larger batches
4810 to save unnecessary communication. To send requests immediately,
4811 use "True" as the argument, to disable this use "False" or to
4812 toggle between both methods use "Toggle" or omit the
4814 argument. Fvwm defaults to synchronized requests when started
4817 option. This command is intended for debugging only.
4821 Used to continue adding to the last specified decor, function or
4822 menu. See the discussion for
4823 .BR AddToDecor ", " AddToFunc ", and " AddToMenu .
4826 .SS COMMANDS AFFECTING WINDOW MOVEMENT AND PLACEMENT
4829 .BI "AnimatedMove " "x y" " [" Warp "]"
4830 Move a window in an animated fashion. Similar to
4832 command below. The options are the same, except they are required,
4833 since it doesn't make sense to have a user move the window
4834 interactively and animatedly. If the optional argument
4836 is specified the pointer is warped with the window.
4839 .BI "HideGeometryWindow [" Never " | " Move " | " Resize "]"
4840 Hides the position or size window that is usually shown when a
4841 window is moved or resized interactively. To switch it off only
4842 for move or resize operations the optional parameters
4843 .IR Move " and " Resize
4844 can be used respectively. To switch both on again use the
4849 .BI "Layer [" "arg1 arg2" "] | [" default "]"
4850 Puts the current window in a new layer. If
4852 is non zero then the next layer is the current layer number plus
4856 is zero then the new layer is
4861 puts the window in its default layer, i.e. the layer it was
4862 initially in. The same happens if no or invalid arguments are
4867 Allows the user to lower a window. Note that this lowers a window
4868 only in its layer. To bring a window to the absolute bottom, use
4870 AddToFunc lower-to-bottom
4885 ]] | [\fIpointer\fP\
4887 Allows the user to move a window. If called from somewhere in a
4888 window or its border, then that window is moved. If called from
4889 the root window then the user is allowed to select the target
4890 window. If the optional argument
4892 is specified the pointer is warped with the window. If the single
4895 is given, the top left corner of the window window is moved to the
4896 pointer position before starting the operation; this is mainly
4897 intended for internal use by modules like
4900 The operation can be aborted with Escape or by pressing mouse
4901 button 2. Pressing button 3 sets the
4907 If the optional arguments
4909 are provided, then the window is moved immediately without user
4910 interaction. Each argument can specify an absolute or relative
4911 position from either the left/top or right/bottom of the screen.
4912 By default, the numeric value given is interpreted as a percentage
4913 of the screen width/height, but a trailing
4915 changes the interpretation to mean pixels. To move the window
4916 relative to its current position, add the
4918 (for "window") prefix before the
4920 value. To move the window to a position relative to the current
4921 location of the pointer, add the
4923 (for "mouse") prefix. To leave either coordinate unchanged,
4924 "keep" can be specified in place of
4931 # Move window to top left is at (10%,10%)
4932 Mouse 2 T A Move 10 10
4933 # Move top left to (10pixels,10pixels)
4934 Mouse 3 T A Move 10p 10p
4936 More complex examples (these can be bound as actions to
4937 keystrokes, etc.; only the command is shown, though):
4939 # Move window so bottom right is at bottom
4943 # Move window so top left corner is 10 pixels
4944 # off the top left screen edge
4947 # Move window 5% to the right, and to the
4951 # Move window up 10 pixels, and so left edge
4955 # Move window to the mouse pointer location
4963 .BI "MoveToDesk [" prev " | " arg1 " [" arg2 "] [" "min max" "]]"
4964 Moves the selected window to another desktop. The arguments are
4967 command. Without any arguments, the window is moved to the
4970 is a replacement for the old
4972 command, which can no longer be used.
4975 .BI "MoveThreshold [" pixels "]"
4976 When the user presses a mouse button upon an object fvwm waits to
4977 see if the action is a click or a drag. If the mouse moves by
4980 pixels it is assumed to be a drag.
4982 Previous versions of fvwm hardwired
4984 to 3, which is now the default value. If
4986 is negative or omitted the default value (which might be increased
4987 when 16000x9000 pixel displays become affordable) is restored.
4990 .B "MoveToPage [\fIoptions\fP
4997 Moves the selected window to another page (x,y). The upper left
4998 page is (0,0), the upper right is (M,0), where M is one less than
4999 the current number of horizontal pages specified in the
5001 command. Similarly the lower left page is (0,N), and the lower
5002 right page is (M,N). Negative page numbers refer to pages from
5003 the rightmost/lowest page. If
5005 are not given, the window is moved to the current page (a window
5006 that has the focus but is off-screen can be retrieved with this).
5007 Moving windows to a page relative to the current page can be
5008 achieved by adding a trailing
5010 after any or both numerical arguments. To move the window
5011 relative to its current location, add a trailing
5013 To move a window to the previous page use
5015 as the single argument.
5017 Windows are usually not moved beyond desk boundaries.
5022 .IR wrapx " and " wrapy
5023 to wrap around the x or y coordinate when the window is moved
5024 beyond the border of the desktop. For example, with
5026 when the window moves past the right edge of the desktop, it
5027 reappears on the left edge. The options
5028 .IR nodesklimitx " and " nodesklimit
5029 allow moving windows beyond the desk boundaries in x and y
5030 direction (disabling the
5031 .IR wrapx " and " wrapy
5036 # Move window to page (2,3)
5039 # Move window to lowest and rightmost page
5042 # Move window to last page visited
5045 # Move window two pages to the right and one
5046 # page up, wrap at desk boundaries
5047 MoveToPage wrapx wrapy +2p -1p
5051 .BI "MoveToScreen [" screen "]"
5052 Moves the selected window to another Xinerama screen. The
5054 argument can be 'p' for the primary screen, 'c' for the current
5055 screen (containing the mouse pointer), 'g' for the global screen
5056 or the screen number itself (counting from zero).
5059 .BI "OpaqueMoveSize [" percentage "]"
5060 Tells fvwm the maximum size window with which opaque window
5061 movement should be used. The percentage is percent of the total
5062 screen area (may be greater than 100). With
5066 all windows are moved using the traditional rubber-band
5069 OpaqueMoveSize unlimited
5071 or if a negative percentage is given
5072 all windows are moved as solid windows. The default is
5076 which allows small windows to be moved in an opaque manner but
5077 large windows are moved as rubber-bands. If
5079 is omitted or invalid the default value is set. To resize windows
5080 in an opaque manner you can use the
5087 .BI "PlaceAgain [" Anim "] [" "Icon" "]"
5088 Causes the current window's position to be re-computed using the
5089 initial window placement logic. The window is moved to where it
5090 would have been if it were a new window that had just appeared.
5092 .IR Smart " or " Clever " (" ReallySmart ")"
5093 placement. With the optional argument
5095 an animated move is used to place the window in its new position.
5096 With the additional option
5098 the icon is placed again instead.
5102 Allows the user to raise a window. Note that this raises a window
5103 only in its layer. To bring a window to the absolute top, use
5105 AddToFunc raise-to-top
5109 where ontop is the highest layer used in your setup.
5113 Alternately raises and lowers a window. The window is raised if
5114 it is obscured by any window (except for its own transients when
5118 command) otherwise it is lowered.
5121 .B "Resize [[\fIframe\fP] [direction \fIdir\fP [\fIwarptoborder\fP]] \
5122 [\fIfixeddirection\fP] \
5129 ]] | [\fIbottomright\fP \
5132 Allows for resizing a window. If called from somewhere in a window
5133 or its border, then that window is resized. If called from the
5134 root window then the user is allowed to select the target window.
5136 The operation can be aborted with Escape or by pressing any mouse
5137 button (except button 1 which confirms it).
5139 If the optional arguments
5140 .IR width " and " height
5141 are provided, then the window is resized so that its dimensions
5143 .IR width " by " height .
5145 .IR width " and " height
5146 are percent-of-screen, unless a letter
5148 is appended to one or both coordinates, in which case the location
5149 is specified in pixels. With a
5151 suffix the unit defined by the client application (hence the c) is
5152 used. So you can say
5156 to make a terminal window just big enough for 80x24
5158 .IR width " and " height
5159 can be negative. In this case the new size is the screen size
5160 minus the given value. If either value is "keep", the
5161 corresponding dimension of the window is left untouched. The new
5162 size is the size of the client window, thus
5166 may make the window bigger than the screen. To base the new size
5167 on the size of the whole fvwm window, add the
5169 option after the command. The options
5170 .IR fixeddirection ", " direction " and " warptoborder
5171 are only used in interactive move operations. With
5173 the same border is moved even if the pointer moves past the
5174 opposite border. The
5176 option must be followed by a direction name such as "NorthWest",
5177 "South" or "East" (you get the idea). Resizing is started
5178 immediately, even if the pointer is not on a border. The
5180 option changes the behaviour of the
5182 option so that the pointer is automatically warped to the border
5183 in the given direction before starting to resize. Also, if
5184 resizing is started by clicking on the window border, the pointer
5185 is warped to the outer edge of the border.
5187 AddToFunc ResizeSE I Resize Direction SE
5188 Mouse 3 A M ResizeSE
5191 An alternate syntax is used if the keyword
5192 .IR bottomright " or in short " br
5193 follows the command name. In this case, the arguments
5195 specify the desired position of the bottom right corner of the
5196 window. They are interpreted exactly like the
5203 .BI "ResizeMaximize [" resize-arguments "]"
5204 Combines the effects of
5205 .BR Resize " and " Maximize
5206 in a single command. When used on a maximized window, the window
5207 is resized and is still in the maximized state afterwards. When
5208 used on an unmaximized window, the window is resized and put into
5209 the maximized state afterwards. This is useful if the user wants
5210 to resize the window temporarily and then return to the original
5213 are the same as for the
5218 .BI "ResizeMove " "resize-arguments move-arguments"
5219 This command does the same as the
5220 .BR Resize " and " Move
5221 commands, but in a single call which is less visually
5224 are exactly the same arguments as for the
5228 are exactly the same arguments as for the
5232 option which is not supported by the
5238 # Move the window to the top left corner
5239 ResizeMove w+0 -10p 0 -20p
5243 .BI "ResizeMoveMaximize " "resize-arguments move-arguments"
5244 Combines the effects of
5245 .BR ResizeMove " and " Maximize
5246 in a single command. When used on a maximized window, the window
5247 is resized and moved and is still in the maximized state
5248 afterwards. When used on an unmaximized window, the window is
5249 resized and put into the maximized state afterwards. This is
5250 useful if the user wants to resize the window temporarily and then
5251 return to the original geometry. The
5252 .IR resize-arguments " and " move-arguments
5253 are the same as for the
5258 .BI "RestackTransients"
5259 This command regroups the transients of a window close to it in
5260 the stacking order as if the window had just been lowered and then
5261 raised. The position of the window itself is not altered. Only
5262 windows that use either the
5263 .I RaiseTransient " or " LowerTransient
5264 style are affected at all. When
5265 .B RestackTransients
5266 is used on a transient window with the
5267 .I StackTransientParent
5268 style set, it is redirected to the parent window.
5271 .BI "SetAnimation " milliseconds-delay " [" fractions-to-move-list "]"
5272 Sets the time between frames and the list of fractional offsets to
5273 customize the animated moves of the
5275 command and the animation of menus (if the menu style is set to
5279 .I fractions-to-move-list
5280 is omitted, only the time between frames is altered. The
5281 .I fractions-to-move-list
5282 specifies how far the window should be offset at each successive
5283 frame as a fraction of the difference between the starting
5284 location and the ending location. e.g.:
5286 SetAnimation 10 -.01 0 .01 .03 .08 .18 .3 \\
5287 .45 .6 .75 .85 .90 .94 .97 .99 1.0
5289 Sets the delay between frames to 10 milliseconds, and sets the
5290 positions of the 16 frames of the animation motion. Negative
5291 values are allowed, and in particular can be used to make the
5292 motion appear more cartoonish, by briefly moving slightly in the
5293 opposite direction of the main motion. The above settings are the
5297 .B "SnapAttraction [\fIproximity\fP \
5301 If during an interactive move the window or icon comes within
5303 pixels of another the window or icon, it is moved to make the
5304 borders adjoin. The default of 0 means that no snapping happens.
5305 Calling this command without arguments turns off snap attraction
5306 and restores the default behavior. Please refer also to the
5312 argument is optional and may be set to one of the four following
5315 both icons and windows snap to other windows and other icons.
5317 lets snap windows only to other windows and icons only to other
5320 windows snap only to other windows. Icons do not snap. Similarly
5323 icons snap to only other icons and windows do not snap.
5327 option is not given, the snapping behavior is not changed. The
5333 option is present windows and or icons are snapped to the screen
5337 .BI "SnapGrid [" "x-grid-size y-grid-size" "]"
5338 During an interactive move a window or icon is positioned such
5339 that its location (top left corner) is coincident with the nearest
5340 grid point. The default
5341 .IR x-grid-size " and " y-grid-size
5342 setting are both 1, which is effectively no grid all. An
5343 interactive move with both
5344 .BR SnapGrid " and " SnapAttraction
5345 results in the window being moved to be adjacent to the nearest
5346 window border (if within snap proximity) or grid position. In
5347 other words, the window moves the shortest distance possible to
5349 .BR SnapGrid " and " SnapAttraction .
5350 Note that the x and y coordinates are not coupled. For example, a
5351 window may snap to another window on the x axis while snapping to
5352 a grid point on the y axis. Calling this command without
5353 arguments reinstates the default settings.
5356 .BI "WindowsDesk " arg1 " [" arg2 "]"
5357 Moves the selected window to another desktop.
5359 This command has been removed and must be replaced by
5361 the arguments for which are the same as for the
5365 You cannot simply change the name of the command: the syntax has
5366 changed. If you used
5370 to move a window to desk n, you have to change it to
5376 .BI "XorPixmap [" pixmap "]"
5377 Selects the pixmap with which bits are xor'ed when doing
5378 rubber-band window moving or resizing. This has a better chance
5379 of making the rubber-band visible if
5381 does not give good results. An example pixmap
5382 .I resize.rainbow.xpm
5383 is provided with the icon distribution. To turn the
5392 .BI "XorValue [" number "]"
5393 Changes the value with which bits are xor'ed when doing
5394 rubber-band window moving or resizing.
5395 Valid values range from zero to the maximum value of an
5396 unsigned long integer on your system.
5397 Setting this value is a trial-and-error process.
5398 The default value 0 tries to find a
5399 value that gives a good contrast to black and white.
5400 The default value is used if the given
5402 is omitted or invalid.
5405 .SS COMMANDS FOR FOCUS AND MOUSE MOVEMENT
5408 .BI "CursorMove " horizontal "[" p "] " vertical "[" p "]"
5409 Moves the mouse pointer by
5411 pages in the X direction and
5413 pages in the Y direction. Either or both entries may be
5414 negative. Both horizontal and vertical values are expressed in
5415 percent of pages, so
5419 means to move down and right by one full page.
5423 means to move right half a page and down a quarter of a
5424 page. Alternatively, the distance can be specified in pixels by
5427 to the horizontal and/or vertical specification. For example
5429 CursorMove -10p -10p
5431 means move ten pixels up and ten pixels left. The CursorMove
5432 function should not be called from pop-up menus.
5435 .BI "FlipFocus [" NoWarp "]"
5438 command as if the user had used the pointer to select the
5439 window. This command alters the order of the WindowList in the
5440 same way as clicking in a window to focus, i.e. the target window
5443 and placed at the start. This command is recommended for use with
5446 command and in the function invoked from
5450 .BI "Focus [" NoWarp "]"
5451 Sets the keyboard focus to the selected window. If the
5453 argument is given, this is all it does. Otherwise it also moves
5454 the viewport or window as needed to make the selected window
5455 visible. This command does not automatically raise the
5456 window. Does not warp the pointer into the selected window (see
5458 function). Does not de-iconify. This command does not alter the
5463 around so that the target window is at the start.
5467 argument is given, Focus cannot transfer the keyboard focus to
5468 windows on other desks.
5470 To raise and/or warp a pointer to a window together with
5471 .BR Focus " or " FlipFocus ,
5472 use a function, like:
5474 AddToFunc SelectWindow
5478 + I WarpToWindow 50 8p
5482 .BI "WarpToWindow " x "[" p "] " y "[" p "]"
5483 Warps the cursor to the associated window. The parameters
5485 default to percentage of window down and in from the upper left
5486 hand corner (or number of pixels down and in if
5488 is appended to the numbers). If a number is negative the opposite
5489 edge is used and the direction reversed. This command works also
5490 with windows that are not managed by fvwm. In this case fvwm does
5491 not bring the window onto the screen if it is not visible. For
5492 example it is possible to warp the pointer to the center of the
5493 root window on screen 1:
5495 WindowId root 1 WarpToWindow 50 50
5499 .SS COMMANDS CONTROLLING WINDOW STATE
5503 If the window accepts the delete window protocol a message is sent
5504 to the window asking it to gracefully remove itself. If the
5505 window does not understand the delete window protocol then the
5506 window is destroyed as with the
5508 command. Note: if the window accepts the delete window protocol
5509 but does not close itself in response, the window is not deleted.
5513 Sends a message to a window asking that it remove itself,
5514 frequently causing the application to exit.
5518 Destroys an application window, which usually causes the
5519 application to crash and burn.
5522 .BI "Iconify [" bool "]"
5523 Iconifies a window if it is not already iconified or de-iconifies
5524 it if it is already iconified. The optional argument
5526 is a boolean argument. "True" means only iconification is
5527 allowed, while "False" forces de-iconification. Using "toggle"
5528 switches between iconified and de-iconified states.
5530 There are a number of
5532 options which influence the appearance and behavior of icons (e.g.
5533 .IR StickyIcon ", " NoIcon ).
5535 For backward compatibility, the optional argument may also be a
5536 positive number instead of "True", or a negative number instead
5537 of "False". Note that this syntax is obsolete, and will be removed
5541 .B "Maximize [\fIflags\fP\
5543 ] [\fIhorizontal\fP\
5545 ]] [\fIvertical\fP \
5548 Without its optional arguments (or if the
5550 bit has the value "toggle")
5552 causes the window to alternately switch from a full-screen size to
5553 its normal size. To force a window into maximized (normal) state
5554 you can use a "True" or "False" value for the
5558 With the optional arguments
5559 .IR horizontal " and " vertical ,
5560 which are expressed as percentage of a full screen, the user can
5561 control the new size of the window. An optional suffix
5563 can be used to indicate pixels instead of percents of the screen
5564 size. If horizontal is greater than 0 then the horizontal
5565 dimension of the window is set to
5566 .IR horizontal *screen_width/100.
5567 If the value is smaller than 0 the size is subtracted from the
5568 screen width, i.e. -25 is the same as 75. If
5570 is "grow", it is maximized to current available space until
5571 finding any obstacle. The vertical resizing is similar. If both
5572 horizontal and vertical values are "grow", it expands vertically
5573 first, then horizontally to find space. Instead of the horizontal
5574 "grow" argument, "growleft" or "growright" can be used
5575 respectively "growup" and "growdown".
5578 argument is a space separated list containing the following
5580 .IR ewmhiwa ", " growonwindowlayer ", " growonlayers " and " screen .
5582 causes fvwm to ignore the EWMH working area.
5583 .I Growonwindowlayer
5584 causes the various grow methods to ignore windows with a layer
5585 other than the current layer of the window which is maximized.
5588 option must have two integer arguments. The first one is the
5589 minimum layer and the second one the maximum layer to use.
5590 Windows that are outside of this range of layers are ignored by
5591 the grow methods. A negative value as the first or second
5592 argument means to assume no minimum or maximum layer.
5594 must have an argument which specifies the Xinerama screen on which
5596 It can be 'p' for the primary screen, 'c' for the current
5597 screen (containing the mouse pointer), 'g' for the global screen
5598 or the screen number itself (counting from zero). This option is
5599 only useful with multiple Xinerama screens.
5601 Here are some examples. The following adds a title-bar button to
5602 switch a window to the full vertical size of the screen:
5604 Mouse 0 4 A Maximize 0 100
5606 The following causes windows to be stretched to the full width:
5608 Mouse 0 4 A Maximize 100 0
5610 This makes a window that is half the screen size in each
5613 Mouse 0 4 A Maximize 50 50
5615 To expand a window horizontally until any other window is found:
5617 Mouse 0 4 A Maximize 0 grow
5619 To expand a window until any other window on the same or a higher
5622 Mouse 0 4 A Maximize growonlayers $[w.layer] -1 grow grow
5624 To expand a window but leave the lower 60 pixels of the screen
5627 Mouse 0 4 A Maximize 100 -60p
5629 Values larger than 100 can be used with caution.
5633 This command is obsolete and should not be used anymore. Should
5634 you want to do something specific that you cannot do without it,
5635 please report this to the fvwm-workers mailing list
5636 (@FVWMWORKERSLIST@). This command will be removed at some point
5637 in the future. Please read the note at the end of the section
5638 .B "DELAYED EXECUTION OF COMMANDS"
5639 to learn about how to avoid the
5643 Causes fvwm to recapture all of its windows. This ensures that
5644 the latest style parameters are used. The recapture operation is
5645 visually disturbing.
5647 Since fvwm version 2.4 only a very few
5651 to take effect (e.g.
5655 .BI "RecaptureWindow"
5656 This command is obsolete and should not be used anymore. See
5660 Causes fvwm to recapture the chosen window.
5664 Causes all windows on the screen to redraw themselves. All pending
5665 updates of all windows' styles and looks are applied immediately.
5667 .BR Style " or " TitleStyle
5668 commands were issued inside a fvwm function.
5672 Causes the chosen window to redraw itself. All pending updates of
5673 the window's style and looks are applied immediately. E.g. if
5674 .BR Style " or " TitleStyle
5675 commands were issued inside a fvwm function.
5678 .BI "Stick [" bool "]"
5681 argument is empty or "toggle", the
5683 command makes a window sticky if it is not already sticky, or
5684 non-sticky if it is already sticky. To make a window sticky
5685 regardless of its current state the
5687 argument must be "True". To make it non-sticky use "False".
5690 .BI "StickAcrossPages [" bool "]"
5693 but only sticks a window across pages, not across desks.
5696 .BI "StickAcrossDesks [" bool "]"
5699 but only sticks a window across desks, not across pages.
5702 .BI "WindowShade [" bool "] | [[" ShadeAgain "] " direction "]"
5703 Toggles the window shade feature for titled windows. Windows in
5704 the shaded state only display a title-bar. If
5706 is not given or "toggle", the window shade state is toggled. If
5708 is "True", the window is forced to the shaded state. If
5710 is "False", then the window is forced to the non-shaded
5711 state. To force shading in a certain direction, the
5713 argument can be used. Any of the strings "North", "South",
5714 "West", "East", "NorthWest", "NorthEast", "SouthWest" or
5715 "SouthEast" can be given. The direction can be abbreviated with
5716 the usual one or two letters "N", "NW", etc. Using a direction on
5717 a window that was already shaded unshades the window. To shade it
5718 in a different direction, use the
5720 option. Windows without titles can be shaded too. Please refer
5722 .IR WindowShadeSteps ", " WindowShadeShrinks ,
5723 .IR WindowShadeScrolls ", " WindowShadeLazy ,
5724 .IR WindowShadeAlwaysLazy " and " WindowShadeBusy .
5729 Style * WindowShadeShrinks, \\
5730 WindowShadeSteps 20, WindowShadeLazy
5731 Mouse 1 S - WindowShade North
5732 Mouse 1 S [ WindowShade West
5733 Mouse 1 S ] WindowShade E
5734 Mouse 1 S _ WindowShade S
5737 Note: When a window that has been shaded with a
5739 argument changes the direction of the window title (see
5742 option), the shading direction does not change. This may look
5743 very strange. Windows that were shaded without a
5745 argument stay shaded in the direction of the title bar.
5747 For backward compatibility, the optional argument may also be 1 to
5748 signify "on", and 2 to signify "off". Note that this syntax is
5749 obsolete, and will be removed in the future.
5752 .BI "WindowShadeAnimate [" steps "[" p "]]"
5753 This command is obsolete. Please use the
5760 .SS COMMANDS FOR MOUSE, KEY AND STROKE BINDINGS
5763 .BI "IgnoreModifiers [" Modifiers "]"
5764 Tells fvwm which modifiers to ignore when matching Mouse or Key
5769 style too. This command belongs into your
5771 If you issue it when your fvwm session is already up and running
5772 the results are unpredictable. The should appear before any
5773 applications or modules are started in your
5780 has the same syntax as in the
5781 .BR Mouse " or " Key
5782 bindings, with the addition of 'L' meaning the
5784 key. The default is "L".
5786 can be omitted, meaning no modifiers are ignored. This command
5787 comes in handy if the
5791 keys interfere with your shortcuts. With XFree86 '2' usually is
5794 modifier and '5' refers to the
5796 key. To turn all these pesky modifiers off you can use this
5803 argument is the string "default", fvwm reverts back to the
5807 This command creates a lot of extra network traffic, depending on
5808 your CPU, network connection, the number of
5809 .BR Key " or " Mouse
5810 commands in your configuration file and the number of modifiers
5811 you want to ignore. If you do not have a lightning fast machine
5812 or very few bindings you should not ignore more than two
5813 modifiers. I.e. do not ignore
5815 if you have no problem with it. In the
5817 you can find a better solution of this problem.
5820 .BI "EdgeCommand [" direction " [" Function "]]"
5821 Binds a specified fvwm command
5823 to an edge of the screen. Direction may be one of
5824 "North", "Top", "West", "Left", "South", "Bottom", "Right"
5827 is omitted the binding for this edge is removed. If EdgeCommand is
5828 called without any arguments all edge bindings are removed.
5831 is executed when the mouse pointer
5832 enters the invisible pan frames that surround the visible screen.
5833 The binding works only if
5835 is set to a value greater than 0.
5836 If a function is bound to an edge, scrolling specified by
5838 is disabled for this edge.
5839 It is possible to bind a function only to some edges
5840 and use the other edges for scrolling.
5841 This command is intended to raise or lower certain windows
5842 when the mouse pointer enters an edge.
5844 can be used get a delay when raising or lowering windows.
5845 The following example raises
5847 if the mouse pointer enters the top edge of the screen.
5849 # Disable EdgeScrolling but make it possible
5850 # to move windows over the screen edge
5851 EdgeResistance 10000 20
5853 # Set thickness of the edge of the screen to 1
5856 # Give focus to FvwmButtons if the mouse
5858 EdgeCommand Top Next (FvwmButtons) Focus
5859 # Make sure the Next command matches the window
5860 Style FvwmButtons CirculateHit
5863 Module FvwmAuto 100 \\
5864 "Silent AutoRaiseFunction" \\
5865 "Silent AutoLowerFunction"
5867 # If any window except FvwmButtons has
5868 # focus when calling this function
5869 # FvwmButtons are lowered
5870 DestroyFunc AutoLowerFunction
5871 AddToFunc AutoLowerFunction
5872 + I Current (!FvwmButtons) \\
5873 All (FvwmButtons) Lower
5875 # If FvwmButtons has focus when calling \\
5876 # this function raise it
5877 DestroyFunc AutoRaiseFunction
5878 AddToFunc AutoRaiseFunction
5879 + I Current (FvwmButtons) Raise
5881 Normally, the invisible pan frames are only on the screen edges
5882 that border virtual pages. If a screen edge has a command bound
5883 to it, the pan frame is always created on that edge.
5886 .BI "EdgeLeaveCommand [" direction " [" Function "]]"
5887 Binds a specified fvwm command
5889 to an edge of the screen. Direction may be one of
5890 "North", "Top", "West", "Left", "South", "Bottom", "Right"
5893 is omitted the binding for this edge is removed. If
5894 EdgeLeaveCommand is called without any arguments all edge bindings
5898 is executed when the mouse pointer
5899 leaves the invisible pan frames that surround the visible screen.
5900 The binding works only if
5902 is set to a value greater than 0.
5903 If a function is bound to an edge, scrolling specified by
5905 is disabled for this edge.
5906 It is possible to bind a function only to some edges
5907 and use the other edges for scrolling.
5908 This command is intended to raise or lower certain windows
5909 when the mouse pointer leaves an edge.
5911 can be used get a delay when raising or lowering windows.
5915 Normally, the invisible pan frames are only on the screen edges
5916 that border virtual pages. If a screen edge has a command bound
5917 to it, the pan frame is always created on that edge.
5921 Used in conjunction with
5923 to pass mouse button presses on the root window to a
5925 program (such as GMC). The following example passes presses of
5926 mouse buttons 1 and 3 to such a program.
5928 Mouse 1 R A GnomeButton
5929 Mouse 3 R A GnomeButton
5933 .BI "Key [(" window ")] " "Keyname Context Modifiers Function"
5934 Binds a keyboard key to a specified fvwm command, or
5935 removes the binding if
5937 is '-'. The syntax is the same as for a
5939 binding except that the mouse button number is replaced with a
5941 Normally, the key binding is activated when the key is pressed.
5943 is a standard X11 key name as defined in
5944 .IR /usr/include/X11/keysymdef.h ,
5947 prefix), or the keysym database
5948 .IR /usr/X11R6/lib/X11/XKeysymDB .
5949 Only key names that are
5950 generated with no modifier keys or with just the
5952 key held are guaranteed to work. The
5953 .IR Context " and " Modifiers
5954 fields are defined as in the
5956 binding. However, when you press a key the context window is the
5957 window that has the keyboard focus. That is not necessarily the
5958 same as the window the pointer is over (with
5959 .IR SloppyFocus " or " ClickToFocus ).
5960 Note that key bindings with the 'R' (root window) context do not
5962 .IR SloppyFocus " and " ClickToFocus .
5963 If you encounter problems, use the
5965 command instead. If you want to bind keys to a window with
5966 .IR SloppyFocus " or " ClickToFocus
5967 that are supposed to work when the pointer is not over the window,
5968 fvwm assumes the pointer is over the client window (i.e. you have
5969 to use the 'W' modifier).
5971 The following example binds the built-in window list to pop up
5973 .SM Alt-Ctrl-Shift-F11
5974 is hit, no matter where the mouse pointer is:
5976 Key F11 A SCM WindowList
5978 Binding a key to a title-bar button causes that button to appear.
5981 command for details.
5984 .BI "Mouse [(" window ")] " "Button Context Modifiers Function"
5985 Defines a mouse binding, or removes the binding if
5989 is the mouse button number. If
5991 is zero then any button performs the specified function. Note
5992 that only mouse buttons 1 to 5 are fully supported by X11. Any
5993 number above this works only partially. Complex functions can not
5994 be used with these buttons and neither any operation that requires
5995 dragging the pointer with the button held. This is due to
5996 limitations of X11. By default, the highest allowed button number
6000 describes where the binding applies. Valid contexts are 'R' for
6001 the root window, 'W' for an application window, 'D' for a desktop
6002 application (as kdesktop or Nautilus desktop), 'T' for a window
6003 title-bar, 'S' for a window side, top, or bottom bar, '[', ']',
6004 \'-' and '_' for the left, right, top or bottom side only, 'F' for
6005 a window frame (the corners), '<', '^', '>' and 'v' for the top
6006 left, top right, bottom right or bottom left corner, 'I' for an
6007 icon window, or '0' through '9' for title-bar buttons, or any
6008 combination of these letters. 'A' is for any context. For
6009 instance, a context of "FST" applies when the mouse is anywhere in
6010 a window's border except the title-bar buttons. Only 'S' and 'W'
6011 are valid for an undecorated window.
6013 The special context 'M' for menus can only be used to control
6014 which mouse button is used to tear off menus. See the section
6015 "Tear Off Menus" for details.
6017 By default, the binding applies to all windows. You can specify
6018 that a binding only applies to specific windows by specifying the
6019 window name in brackets. The window name is a wildcard pattern
6020 specifying the class, resource or name of the window you want the
6021 binding to apply to.
6023 The following example shows how the same key-binding can be used to
6024 perform different functions depending on the window that is focussed:
6026 Key (rxvt) V A C Echo ctrl-V-in-RXVT
6027 Key (*term) V A C Echo ctrl-V-in-Term
6029 Key V A C Echo ctrl-V-elsewhere
6032 A '--' action indicates that the event should be propagated to the specified
6033 window to handle. This is only a valid action for window-specific bindings.
6035 This example shows how to display the WindowList when Button 3 is
6036 pressed on an rxvt window:
6038 Mouse (rxvt) 3 A A WindowList
6041 Note that Fvwm actually intercepts all events for a window-specific
6042 binding and (if the focussed window doesn't match any of the bindings)
6043 sends a synthetic copy of the event to the window. This should be
6044 transparent to most applications, however (for security reasons) some programs
6045 ignore these synthetic events by default - xterm is one of them. To enable
6046 handling of these events, add the following line to your ~/.Xdefaults file:
6049 XTerm*allowSendEvents: true
6053 is any combination of 'N' for no modifiers, 'C' for control, 'S'
6054 for shift, 'M' for Meta, 'L' for Caps-Lock or 'A' for any
6055 modifier. For example, a modifier of "SM" applies when both the
6059 keys are down. X11 modifiers mod1 through mod5 are represented as
6060 the digits '1' through '5'. The modifier 'L' is ignored by
6061 default. To turn it on, use the
6066 is one of fvwm's commands.
6068 The title-bar buttons are numbered with odd numbered buttons on
6069 the left side of the title-bar and even numbers on the
6070 right. Smaller-numbered buttons are displayed toward the outside
6071 of the window while larger-numbered buttons appear toward the
6072 middle of the window (0 is short for 10). In summary, the buttons
6077 The highest odd numbered button which has an action bound to it
6078 determines the number of buttons drawn on the left side of the
6079 title bar. The highest even number determines the number or right
6080 side buttons which are drawn. Actions can be bound to either
6081 mouse buttons or keyboard keys.
6084 .BI "PointerKey [(" window ")] " "Keyname Context Modifiers Function"
6085 This command works exactly like the
6087 command. The only difference is that the binding operates on the
6088 window under the pointer. Normal key bindings operate on the
6089 focused window instead. The
6091 command can for example be used to bind keys to the root window if
6093 .IR SloppyFocus " or " ClickToFocus .
6094 However, some applications (xterm is one example) are unable to
6095 handle this key anymore, even if the pointer is over the xterm
6096 window. It is recommended to use the
6098 command only for key combinations that are not needed in any
6104 PointerKey f1 a m Menu MainMenu
6108 .BI "Stroke [(" window ")] " "Sequence Button Context Modifiers Function"
6109 Binds a mouse stroke sequence to a specified fvwm command,
6110 or removes the binding if
6112 is '-'. The syntax is the same as for a
6116 is inserted in front of the button number and a value of 0 for
6121 .IR Context " and " Modifiers
6122 fields are defined as in the
6124 binding. However, only the 'R' Context really works (if you want
6125 to use other contexts you need to use the
6129 Strokes sequences are defined in a telephone grid like this:
6137 or in a numeric pad grid like this:
6145 The telephone grid is used by default, to use the numeric pad grid
6146 you should begin the sequence with a 'N'. Note that a complex
6147 motion may gives several different sequences (see the "netscape"
6148 example below to handle such motion). Moreover, sequence are
6149 limited to 20 elements (with the present version of
6151 however, in practice it is preferable to use sequence with less
6154 Because of the default button menu in fvwm, you may need to remove
6155 a mouse button binding (using an empty action) before using the
6160 Also, you can still use the stroke "sequence 0" to simulate a
6163 Stroke 0 3 R N Menu WindowList Nop
6165 The following example starts xterm when the mouse drags an 'I' on
6166 the root window with button 3 pressed down:
6168 Stroke 258 3 R N Exec exec xterm
6170 An example for Netscape:
6172 Stroke 7415963 3 R N Exec exec netscape
6173 Stroke 74148963 3 R N Exec exec netscape
6174 Stroke 74158963 3 R N Exec exec netscape
6175 Stroke 7418963 3 R N Exec exec netscape
6176 Stroke 415963 3 R N Exec exec netscape
6178 You may prefer to use the numeric pad grid since you have such a
6179 grid on your machine. Here an example:
6181 Stroke N78963214 3 R N FvwmForm FvwmForm-QuitVerify
6182 Stroke N789632147 3 R N FvwmForm FvwmForm-QuitVerify
6184 This example starts the "QuitVerify" form if you draw a box that
6185 begins in the top left corner.
6189 installed and fvwm compiled with stroke support.
6193 .B http://www.etla.net/~willey/projects/libstroke/
6197 .BI "StrokeFunc [" Options "]"
6198 Causes fvwm to record a mouse stroke sequence and to execute the
6199 corresponding action as defined in a
6201 command. The cursor is modified to the
6205 command during recording. When the stroke is finished
6207 looks for a stroke binding of the form
6209 Stroke sequence 0 Context Modifiers action
6211 and executes the corresponding action (Note the 0). Normal use of
6212 this function is via a
6213 .BR Mouse " or " Key
6216 Mouse 3 A M StrokeFunc
6217 Key x R N StrokeFunc
6219 If you press mouse button 3 and
6221 anywhere (respectively, press the key x when the cursor is on the
6222 root window), then fvwm records the mouse motions until the mouse
6223 button 3 (respectively, the x key) is released and then check if
6226 corresponds to a stroke binding of the form
6228 .RI """Stroke " sequence " 0 A M " action """ \""
6229 .RI """Stroke " sequence " 0 R N " action """ \""
6232 .IR Context " and " Modifiers
6233 are taken at the beginning of the execution of the
6235 command (so you can release the modifiers before the end of the
6236 stroke recording in the case of a mouse binding and if you used,
6237 say, a title-bar context the mouse motion can go through an
6238 application window). The keys
6242 allow you to abort the command.
6246 command has five options:
6247 .IR NotStayPressed ", " EchoSequence ", " DrawMotion ", "
6248 .IR FeedBack " and " StrokeWidth .
6249 These options are disabled by default.
6251 causes fvwm to Echo the recorded stroke sequence.
6253 causes fvwm to draw the mouse motion on the screen.
6255 causes fvwm to display during a fraction of second the cursor of
6260 command if the recorded stroke sequence corresponds to a stroke
6263 takes an integer argument, which must be >= 0 and <= 100 and which
6264 defines the width of the line for the
6265 .I DrawMotion option.
6274 command. This option removes the need to have a button or the key
6275 pressed during the stroke, but you have to do a mouse click or
6280 key to finish the mouse motion recording (these keys also work
6287 "alone". In this case it works as above with the
6289 option enabled. However,
6291 in general, may not work as expected (i.e., in this case use 'A'
6294 in the stroke bindings).
6296 Note that some computers do not support key release events. If
6297 that is the case the
6301 command works as if the
6306 .SS THE STYLE COMMAND (CONTROLLING WINDOW STYLES)
6308 For readability, the commands in this section are not sorted
6309 alphabetically. The description of the
6311 command can be found at the end of this section.
6314 .BI "FocusStyle " "stylename options"
6315 works exactly like the
6317 command, but accepts only the focus policy related styles
6318 beginning with "FP". The prefix can be removed, but at the cost
6319 of a little bit of time.
6321 is meant to make the configuration file more readable. Example:
6323 FocusStyle * EnterToFocus, !LeaveToUnfocus
6327 Style * FPEnterToFocus, !FPLeaveToUnfocus
6331 .BI "DestroyStyle " style
6332 deletes the style named
6334 The changes take effect immediately. Note that
6336 is not a wild-carded search string, but rather a case-sensitive
6337 string that should exactly match the original
6341 Destroying style "*" can be done, but isn't really to be
6342 recommended. For example:
6344 DestroyStyle Application*
6346 This removes all settings for the style named "Application*", NOT
6347 all styles starting with "Application".
6350 .B "DestroyWindowStyle"
6351 deletes the styles set by the
6353 command on the selected window. The changes take effect immediately.
6357 All pending updates of all windows' styles and looks are applied
6358 immediately. E.g. if
6359 .BR Style ", " WindowStyle " or " TitleStyle
6360 commands were issued inside a fvwm function.
6363 .BI "Style " "stylename options"
6364 This command is intended to replace the old fvwm 1.xx global
6365 commands NoBorder, NoTitle, StartsOnDesk, Sticky, StaysOnTop,
6366 Icon, WindowListSkip, CirculateSkip, SuppressIcons, BoundaryWidth,
6367 NoBoundaryWidth, StdForeColor, and StdBackColor with a single
6368 flexible and comprehensive window specific command. This command
6369 is used to set attributes of a window to values other than the
6370 default or to set the window manager default styles.
6373 can be a window's name, class, or resource string. It may contain
6374 the wildcards '*' and '?', which are matched in the usual Unix
6375 filename manner. They are searched in the reverse order stated.
6376 When two conflicting styles apply to the same window, the style
6377 that was changed last wins.
6379 Note: windows that have no name (WM_NAME) are given a name of
6380 "Untitled", and windows that don't have a class (WM_CLASS,
6381 res_class) are given class "NoClass" and those that don't have a
6382 resource (WM_CLASS, res_name) are given resource "NoResource".
6384 .I options is a comma separated list containing one or more of the
6385 following keywords. Each group of style names is separated by
6386 slashes ('/'). The last style in these groups is the default.
6387 .IR BorderWidth ", " HandleWidth ,
6388 .IR NoIcon " / " Icon ", " MiniIcon ,
6389 .IR IconBox ", " IconGrid ", " IconFill ", " IconSize ,
6390 .IR NoTitle " / " Title ,
6391 .IR TitleAtBottom " / " TitleAtLeft " / " TitleAtRight " / " TitleAtTop ,
6392 .IR LeftTitleRotatedCW " / " LeftTitleRotatedCCW,
6393 .IR RightTitleRotatedCCW " / " RightTitleRotatedCW,
6394 .IR TopTitleRotated " / " TopTitleNotRotated,
6395 .IR BottomTitleRotated " / " BottomTitleNotRotated,
6396 .IR !UseTitleDecorRotation " / " UseTitleDecorRotation,
6397 .IR StippledTitle " / " StippledTitleOff ,
6398 .IR IndexedWindowName " / " ExactWindowName ,
6399 .IR IndexedIconName " / " ExactIconName ,
6400 .IR !Borders " / " Borders ,
6401 .IR NoHandles " / " Handles ,
6402 .IR WindowListSkip " / " WindowListHit ,
6403 .IR CirculateSkip " / " CirculateHit ,
6404 .IR CirculateSkipShaded " / " CirculateHitShaded ,
6406 .IR StaysOnTop " / " StaysOnBottom " / " StaysPut ,
6407 .IR Sticky " / " Slippery ,
6408 .IR StickyAcrossPages " / " !StickyAcrossPages ,
6409 .IR StickyAcrossDesks " / " !StickyAcrossDesks ,
6410 .IR StartIconic " / " StartNormal ,
6411 .IR Color ", " ForeColor ", " BackColor ", " Colorset ,
6412 .IR HilightFore ", " HilightBack ", " HilightColorset ,
6413 .IR BorderColorset ", " HilightBorderColorset ,
6414 .IR IconTitleColorset ", " HilightIconTitleColorset ,
6415 .IR IconBackgroundColorset ,
6416 .IR IconTitleRelief ", " IconBackgroundRelief ", " IconBackgroundPadding ,
6419 .IR StartsOnDesk " / " StartsOnPage " / " StartsAnyWhere ,
6420 .IR StartsOnScreen ,
6421 .IR ManualPlacementHonorsStartsOnPage " / " ManualPlacementIgnoresStartsOnPage ,
6422 .IR CaptureHonorsStartsOnPage " / " CaptureIgnoresStartsOnPage ,
6423 .IR RecaptureHonorsStartsOnPage " / " RecaptureIgnoresStartsOnPage ,
6424 .IR StartsOnPageIncludesTransients " / " StartsOnPageIgnoresTransients ,
6425 .IR IconTitle " / " NoIconTitle ,
6426 .IR MwmButtons " / " FvwmButtons ,
6427 .IR MwmBorder " / " FvwmBorder ,
6428 .IR MwmDecor " / " NoDecorHint ,
6429 .IR MwmFunctions " / " NoFuncHint ,
6430 .IR HintOverride " / " NoOverride ,
6431 .IR NoButton " / " Button ,
6432 .IR ResizeHintOverride " / " NoResizeOverride ,
6433 .IR OLDecor " / " NoOLDecor ,
6434 .IR GNOMEUseHints " / " GNOMEIgnoreHints ,
6435 .IR StickyIcon " / " SlipperyIcon ,
6436 .IR StickyAcrossPagesIcon " / " !StickyAcrossPagesIcon ,
6437 .IR StickyAcrossDesksIcon " / " !StickyAcrossDesksIcon ,
6438 .IR ManualPlacement " / " CascadePlacement " / " MinOverlapPlacement " / "
6439 .IR MinOverlapPercentPlacement " / " TileManualPlacement " / "
6440 .IR TileCascadePlacement , " / " CenterPlacement ,
6441 .IR MinOverlapPlacementPenalties ,
6442 .IR MinOverlapPercentPlacementPenalties ,
6443 .IR DecorateTransient " / " NakedTransient ,
6444 .IR DontRaiseTransient " / " RaiseTransient ,
6445 .IR DontLowerTransient " / " LowerTransient ,
6446 .IR DontStackTransientParent " / " StackTransientParent ,
6447 .IR SkipMapping " / " ShowMapping ,
6448 .IR ScatterWindowGroups " / " KeepWindowGroupsOnDesk ,
6451 .IR NoPPosition " / " UsePPosition ,
6452 .IR NoUSPosition " / " UseUSPosition ,
6453 .IR NoTransientPPosition " / " UseTransientPPosition ,
6454 .IR NoTransientUSPosition " / " UseTransientUSPosition ,
6455 .IR NoIconPosition " / " UseIconPosition ,
6456 .IR Lenience " / " NoLenience ,
6457 .IR ClickToFocus " / " SloppyFocus " /"
6458 .IR MouseFocus | FocusFollowsMouse " / " NeverFocus ,
6459 .IR ClickToFocusPassesClickOff " / " ClickToFocusPassesClick ,
6460 .IR ClickToFocusRaisesOff " / " ClickToFocusRaises ,
6461 .IR MouseFocusClickRaises " / " MouseFocusClickRaisesOff ,
6462 .IR GrabFocus " / " GrabFocusOff ,
6463 .IR GrabFocusTransientOff " / " GrabFocusTransient ,
6464 .IR FPFocusClickButtons ,
6465 .IR FPFocusClickModifiers ,
6466 .IR !FPSortWindowlistByFocus " / " FPSortWindowlistByFocus,
6467 .IR FPClickRaisesFocused " / " !FPClickRaisesFocused,
6468 .IR FPClickDecorRaisesFocused " / " !FPClickDecorRaisesFocused,
6469 .IR FPClickIconRaisesFocused " / " !FPClickIconRaisesFocused,
6470 .IR !FPClickRaisesUnfocused " / " FPClickRaisesUnfocused,
6471 .IR FPClickDecorRaisesUnfocused " / " !FPClickDecorRaisesUnfocused,
6472 .IR FPClickIconRaisesUnfocused " / " !FPClickIconRaisesUnfocused,
6473 .IR FPClickToFocus " / " !FPClickToFocus,
6474 .IR FPClickDecorToFocus " / " !FPClickDecorToFocus,
6475 .IR FPClickIconToFocus " / " !FPClickIconToFocus,
6476 .IR !FPEnterToFocus " / " FPEnterToFocus,
6477 .IR !FPLeaveToUnfocus " / " FPLeaveToUnfocus,
6478 .IR !FPFocusByProgram " / " FPFocusByProgram,
6479 .IR !FPFocusByFunction " / " FPFocusByFunction,
6480 .IR FPFocusByFunctionWarpPointer " / " !FPFocusByFunctionWarpPointer,
6481 .IR FPLenient " / " !FPLenient,
6482 .IR !FPPassFocusClick " / " FPPassFocusClick,
6483 .IR !FPPassRaiseClick " / " FPPassRaiseClick,
6484 .IR FPIgnoreFocusClickMotion " / " !FPIgnoreFocusClickMotion,
6485 .IR FPIgnoreRaiseClickMotion " / " !FPIgnoreRaiseClickMotion,
6486 .IR !FPAllowFocusClickFunction " / " FPAllowFocusClickFunction,
6487 .IR !FPAllowRaiseClickFunction " / " FPAllowRaiseClickFunction,
6488 .IR FPGrabFocus " / " !FPGrabFocus,
6489 .IR !FPGrabFocusTransient " / " FPGrabFocusTransient,
6490 .IR FPOverrideGrabFocus " / " !FPOverrideGrabFocus,
6491 .IR FPReleaseFocus " / " !FPReleaseFocus,
6492 .IR !FPReleaseFocusTransient " / " FPReleaseFocusTransient,
6493 .IR FPOverrideReleaseFocus " / " !FPOverrideReleaseFocus,
6494 .IR StartsLowered " / " StartsRaised ,
6495 .IR IgnoreRestack " / " AllowRestack ,
6496 .IR FixedPosition " / " VariablePosition ,
6497 .IR FixedUSPosition " / " VariableUSPosition ,
6498 .IR FixedPPosition " / " VariablePPosition ,
6499 .IR FixedSize " / " VariableSize ,
6500 .IR FixedUSSize " / " VariableUSSize ,
6501 .IR FixedPSize " / " VariablePSize ,
6502 .IR !Closable " / " Closable ,
6503 .IR !Iconifiable " / " Iconifiable ,
6504 .IR !Maximizable " / " Maximizable ,
6505 .IR !AllowMaximizeFixedSize " / " AllowMaximizeFixedSize ,
6506 .IR IconOverride " / " NoIconOverride " / " NoActiveIconOverride ,
6507 .IR DepressableBorder " / " FirmBorder ,
6509 .IR IconifyWindowGroups " / " IconifyWindowGroupsOff ,
6510 .IR ResizeOpaque " / " ResizeOutline ,
6511 .IR BackingStore " / " BackingStoreOff " / " BackingStoreWindowDefault ,
6512 .IR Opacity " / " ParentalRelativity ,
6513 .IR SaveUnder " / " SaveUnderOff ,
6514 .IR WindowShadeShrinks " / " WindowShadeScrolls ,
6515 .IR WindowShadeSteps ,
6516 .IR WindowShadeAlwaysLazy " / " WindowShadeBusy " / " WindowShadeLazy,
6517 .IR EWMHDonateIcon " / " EWMHDontDonateIcon ,
6518 .IR EWMHDonateMiniIcon " / " EWMHDontDonateMiniIcon ,
6519 .IR EWMHMiniIconOverride " / " EWMHNoMiniIconOverride ,
6520 .IR EWMHUseStackingOrderHints " / " EWMHIgnoreStackingOrderHints ,
6521 .IR EWMHIgnoreStateHints " / " EWMHUseStateHints ,
6522 .IR EWMHIgnoreStrutHints " / " EWMHUseStrutHints ,
6523 .IR EWMHMaximizeIgnoreWorkingArea " / " EWMHMaximizeUseWorkingArea " / "
6524 .IR EWMHMaximizeUseDynamicWorkingArea ,
6525 .IR EWMHPlacementIgnoreWorkingArea " / " EWMHPlacementUseWorkingArea
6526 .IR EWMHPlacementUseDynamicWorkingArea ,
6527 .IR MoveByProgramMethod ,
6531 .\" +++++++++++++++ general notes
6532 In the above list some options are listed as
6533 style-option/opposite-style-option. The opposite-style-option for
6534 entries that have them describes the fvwm default behavior and can
6535 be used if you want to change the fvwm default behavior.
6537 .\" +++++++++++++++ focus policy
6541 instructs fvwm to give the focus to a window when it is clicked
6545 .IR FocusFollowsMouse )
6546 tells fvwm to give a window the focus as soon as the pointer
6547 enters the window, and take it away when the pointer leaves the
6550 is similar, but doesn't give up the focus if the pointer leaves
6551 the window to pass over the root window or a ClickToFocus window
6552 (unless you click on it, that is), which makes it possible to move
6553 the mouse out of the way without losing focus. A window with the
6556 never receives the focus. This is useful for modules like
6559 Note: Once any of the "FP..." styles has been used, the defaults
6560 that come with the basic focus policies are not restored when the
6561 latter are used again. For example, once !FPGrabFocus has been
6562 used, using ClickToFocus does not restore FPGrabFocus.
6564 The focus model can be augmented with several additional options.
6565 In fvwm-2.5.3 and later, there are a large number of advanced
6566 options beginning with "FP" or "!FP". These options shall replace
6567 the older options one day and are described first. Using any of
6568 these new options may limit compatibility with older releases. In
6569 general, options beginning with "FP" turn a feature on, while
6570 those beginning with "!FP" turn it off.
6572 .B Focusing the window
6575 .IR FPEnterToFocus ,
6576 when the pointer enters a window it receives focus.
6579 .IR FPLeaveToUnfocus
6580 a window loses focus when the pointer leaves it.
6583 .IR FPClickToFocus ", " FPClickDecorToFocus " or "
6584 .IR FPClickIconToFocus ,
6585 a window receives focus when the inside of the window or the
6586 decorations or its icon is clicked.
6589 .IR FPFocusByProgram
6590 style allows windows to take the focus themselves.
6593 .IR !FPFocusByFunction
6594 style forbids that a window receives the focus via the
6595 .BR Focus " and " FlipFocus
6599 .IR FPFocusByFunctionWarpPointer
6600 style controls if the pointer is warped to a selected window
6606 allows focus on windows that do not want it, like
6611 .IR FPFocusClickButtons
6612 style takes a list of mouse buttons that can be clicked to focus
6613 or raise a window when the appropriate style is used. The default
6614 is to use the first three buttons ("123").
6617 .IR FPFocusClickModifiers
6618 style takes a list of modifier keys just like the
6620 command. The exact combination of modifier keys must be pressed
6621 for the click to focus or raise a window to work. The default is
6622 to use no modifiers ("N").
6625 .IR FPPassFocusClick
6626 style, the click that was used to focus a window is passed to
6630 .IR FPAllowFocusClickFunction
6631 style, the click that was used to focus a window can also
6632 trigger a normal action that was bound to the window with the
6637 .IR FPIgnoreFocusClickMotion
6638 style is used, clicking in a window and then dragging the pointer
6639 with the button held down does not count as the click to focus the
6640 window. Instead, the application processes these events
6641 normally. This is useful to select text in a terminal window with
6642 the mouse without raising the window. However, mouse bindings on
6643 the client window are not guaranteed to work anymore (see
6645 command). This style forces the initial click to be
6646 passed to the application. The distance that the pointer must be
6647 moved to trigger this is controlled by the
6652 .IR FPSortWindowlistByFocus " and " !FPSortWindowlistByFocus
6653 styles control whether the internal window list is sorted in the
6654 order the windows were focused or in the order they were created.
6655 The latter is the default for
6656 .IR ClickToFocus " and " SloppyFocus .
6659 .B Clicking the window to raise
6662 .IR FPClickRaisesFocused ", " FPClickDecorRaisesFocused " and "
6663 .IR FPClickIconRaisesFocused
6664 allow to raise the window when the interior or the decorations or
6665 the icon of the window is clicked while the window is already
6669 .IR FPClickRaisesUnfocused ", " FPClickDecorRaisesUnfocused " and "
6670 .IR FPClickIconRaisesUnfocused
6671 allow to raise the window when the interior or the decorations or
6672 the icon of the window is clicked while the window is not yet
6676 .IR FPPassRaiseClick
6677 style, the click that was used to raise the window is passed to
6681 .IR FPAllowRaiseClickFunction
6682 style, the click that was used to raise the window can also
6683 trigger a normal action that was bound to the window with the
6687 .IR FPIgnoreRaiseClickMotion
6688 style is used, clicking in a window and then dragging the pointer
6689 with the button held down does not count as the click to raise the
6690 window. Instead, the application processes these events
6691 normally. This is useful to select text in a terminal window with
6692 the mouse without raising the window. However, mouse bindings on
6693 the client window are not guaranteed to work anymore (see
6695 command. Note that this style forces that the initial click is
6696 passed to the application. The distance that the pointer must be
6697 moved to trigger this is controlled by the
6701 .B Grabbing the focus when a new window is created
6703 New normal or transient windows with the
6704 .IR FPGrabFocus " or " FPGrabFocusTransient
6705 style automatically receive the focus when they are created.
6707 is the default for windows with the
6712 .I OverrideGrabFocus
6713 style instructs fvwm to never take away the focus from such a
6715 .IR GrabFocus " or " GrabFocusTransient
6716 styles. This can be useful if you like to have transient windows
6717 receive the focus immediately, for example in a web browser, but
6718 not while you are working in a terminal window or a text
6721 The above three styles are accompanied by
6722 .IR FPReleaseFocus ", " FPReleaseFocusTransient " and "
6723 .IR FPOverrideReleaseFocus .
6724 These control if the focus is returned to another window when the
6725 window is closed. Otherwise no window or the window under the
6726 pointer will receive the focus.
6728 .IR ClickToFocusPassesClickOff " and " ClickToFocusPassesClick
6729 controls whether a mouse click to focus a window is sent to the
6730 application or not. Similarly,
6731 .I ClickToFocusRaisesOff/MouseFocusClickRaisesOff
6733 .I ClickToFocusRaises/MouseFocusClickRaises
6734 control if the window is raised (but depending on the focus
6737 Note: in fvwm versions prior to
6738 2.5.3, the "Click..." options applied only to windows with
6740 while the "Mouse..." options applied to windows with a different
6741 focus policy. This is no longer the case.
6745 style is equivalent to using
6746 .IR FPGrabFocus " + " FPReleaseFocus .
6749 .I GrabFocusTransient
6750 style is equivalent to using
6751 .IR FPGrabFocusTransient " + " FPReleaseFocusTransient .
6754 is equivalent to the new style
6757 .\" +++++++++++++++ styles affecting the window title
6761 .IR Title " and " NoTitle
6762 options determine if the window has a title-bar or not. By
6763 default all windows have a title-bar.
6766 .IR TitleAtBottom ", " TitleAtLeft " or " TitleAtRight
6767 style have a title-bar below, to the left or to the right of the
6768 window instead of above as usual. The
6770 style restores the default placement. Even if the window has the
6772 style set, this affects the
6774 command. Please check the
6776 command for interactions between that command and these styles.
6777 Titles on the left or right side of the windows are augmented by
6778 the following styles:
6780 Normally, the text in titles on the left side of a window is
6781 rotated counterclockwise by 90 degrees from the normal upright
6782 position and 90 degrees clockwise for titles on the right side.
6783 It can also be rotated in the opposite directions with
6784 .IR LeftTitleRotatedCW " if " TitleAtLeft
6786 .IR RightTitleRotatedCCW " if " TitleAtRight
6787 is used. The defaults can be restored with
6788 .IR LeftTitleRotatedCCW " and " RightTitleRotatedCW .
6789 A normal horizontal text may be rotated as well with
6790 .IR TopTitleRotated " if " TitleAtTop
6792 .IR BottomTitleRotated " if " TitleAtBottom
6793 is used. The defaults can be restored with
6794 .IR TopTitleNotRotated " and " BottomTitleNotRotated .
6796 By default the title bar decoration defined using the
6798 command is rotated following the title text rotation (see the
6799 previous paragraph). This can be disabled by using the
6800 .I !UseTitleDecorRotation
6802 .I UseTitleDecorRotation
6803 reverts back to the default.
6807 style, titles are drawn with the same effect that is usually
6808 reserved for windows with the
6809 .IR Sticky ", " StickyAcrossPages " or " StickyAcrossDesks
6812 reverts back to normal titles.
6815 takes two arguments. The first is the window-label text color and
6816 the second is the window decorations normal background color. The
6817 two colors are separated with a slash. If the use of a slash
6818 causes problems then the separate
6819 .IR ForeColor " and " BackColor
6820 options can be used.
6823 takes the colorset number as its sole argument and overrides the
6826 Instead, the corresponding colors from the given colorset are
6827 used. Note that all other features of a colorset are not used.
6830 decoration style in the
6831 .BR TitleStyle " and " ButtonStyle
6833 To stop using the colorset, the colorset number is omitted.
6836 .IR HilightFore ", " HilightBack " and " HilightColorset
6837 style options work exactly like
6838 .IR ForeColor ", " BackColor " and " Colorset
6839 but are used only if the window has the focus. These styles
6840 replace the old commands
6841 .BR HilightColor " and " HilightColorset .
6844 takes the colorset number as its sole argument and overrides the
6846 .IR Color " or " Colorset .
6847 for the window border. To stop using a colorset, the argument is
6851 .IR HilightBorderColorset
6852 style option works similarly to
6854 but is used when the window has the focus.
6857 disables displaying icon labels while the opposite style
6859 enables icon labels (default behaviour).
6861 .IR IconTitleColorset
6862 takes the colorset number as its sole argument and overrides the
6864 .IR Color " or " Colorset .
6865 To stop using this colorset, the argument is omitted.
6867 .IR HilightIconTitleColorset
6868 takes the colorset number as its sole argument and overrides the
6870 .IR HilightColor " or " HilightColorset .
6871 To stop using this colorset, the argument is omitted.
6873 .IR IconBackgroundColorset
6874 takes the colorset number as its sole argument and uses it to set
6875 a background for the icon picture. By default the icon picture is
6876 not drawn onto a background image. To restore the default, the
6877 argument is omitted.
6880 takes one numeric argument that may be between -50 and +50 pixels
6881 and defines the thickness of the 3D relief drawn around the icon
6882 title. With negative values the icon title gets a pressed in
6883 look. The default is 2 and it is restored if the argument is
6886 .IR IconBackgroundRelief
6887 takes one numeric argument that may be between -50 and +50 pixels
6888 and defines the thickness of the 3D relief drawn around the icon
6889 picture background (if any). With negative values the icon
6890 background gets a pressed in look. The default is 2 and it is
6891 restored if the argument is omitted.
6893 .IR IconBackgroundPadding
6894 takes one numeric argument that may be between 0 and 50 pixels and
6895 defines the amount of free space between the relief of the icon
6896 background picture (if any) and the icon picture. The default is 2
6897 and it is restored if the argument is omitted.
6900 .IR Font " and " IconFont
6901 options take the name of a font as their sole argument. This font
6902 is used in the window or icon title. By default the font given in
6905 command is used. To revert back to the default, use the style
6906 without the name argument. These styles replace the older
6907 .BR WindowFont " and " IconFont
6911 .I IndexedWindowName
6912 style causes fvwm to use window titles in the form
6914 .IR name " (" i ") "
6918 is the exact window name and
6920 is an integer which represents the
6926 restores the default which is to use the exact window name.
6931 .I IndexedWindowName
6934 styles but for the icon titles.
6936 .\" +++++++++++++++ styles affecting title buttons
6939 .IR Button " and " NoButton
6940 take a numeric argument which is the number of the title-bar
6941 button which is to be included/omitted.
6946 button look pressed-in when the window is maximized. See the
6950 for more information. To switch this style off again, use the
6954 .\" +++++++++++++++ styles affecting borders
6959 suppresses the window border (but not the title) completely. The
6961 style enables them again. Without borders, all other styles
6962 affecting window borders are meaningless.
6965 makes the 3-D bevel more closely match Mwm's.
6967 turns off the previous option.
6971 style, the window does not get the handles in the window corners
6972 that are commonly used to resize it. With
6976 style is used. By default, or if
6978 is is specified, the width from the
6983 takes a numeric argument which is the width of the border to place
6984 the window if it does have resize-handles.
6987 takes a numeric argument which is the width of the border to place
6988 the window if it does not have resize-handles. It is used only if
6991 style is specified too.
6993 .I DepressableBorder
6994 makes the border parts of the window decoration look sunken in
6995 when a button is pressed over them. This can be disabled again
7000 .\" +++++++++++++++ icons, shading, maximizing, movement, resizing
7002 .B Icons, shading, maximizing, movement, resizing
7004 takes an (optional) unquoted string argument which is the icon
7005 bitmap or pixmap to use. Icons specified this way override pixmap
7006 icons, but not icon windows or the ewmh icon, provided by the
7007 client in the application (with the WM_HINTS property or with the
7008 ewmh _NET_WM_ICON property). The
7010 style changes the behavior to override any client-provided icons;
7013 style changes the behavior to not override any client-provided
7014 icons; the default overriding behavior can be activated with the
7015 .I NoActiveIconOverride
7016 style. With this style, fvwm uses application provided icons if
7017 the icon is changed but uses the icon provided in the
7018 configuration file until then.
7020 There is one exception to these rules, namely
7022 Style * Icon unknown.xpm
7024 doesn't force the unknown.xpm icon on every window, it just sets
7025 the default icon like the DefaultIcon command. If you really want
7026 all windows to have the same icon, you can use
7028 Style ** Icon unknown.xpm
7032 attribute is set then the specified window simply disappears when
7033 it is iconified. The window can be recovered through the
7036 is set without an argument then the
7038 attribute is cleared but no icon is specified. An example which
7041 module icon to exist:
7044 Style FvwmPager Icon
7048 takes no argument, four numeric arguments (plus optionally a
7049 screen specification), an X11 geometry string or the string
7052 .RI IconBox " [" "screen scr-spec" "] " "l t r b"
7060 is the left coordinate,
7066 is bottom. Negative coordinates indicate distance from the right
7067 or bottom of the screen.
7068 If the first argument is the word
7072 argument specifies the Xinerama screen on which the IconBox is
7073 defined. It can be the usual screen Xinerama specification, 'p',
7074 \'c', 'g', a screen number or the additional 'w' for the screen
7075 where the window center is located. This is only useful with
7076 multiple Xinerama screens.
7077 The "l t r b" specification is more flexible than an X11 geometry.
7080 IconBox -80 240 -1 -1
7082 defines a box that is 80 pixels wide from the right edge,
7083 240 pixels down from the top, and continues to the bottom of
7086 Perhaps it is easier to use is an X11
7087 geometry string though:
7091 places an 1000 by 70 pixel icon box on the bottom of the screen
7092 starting in the lower right hand corner of the screen.
7093 One way to figure out a geometry like this is to use a window
7094 that resizes in pixel increments, for example, xv.
7095 Then resize and place the xv window where you want the iconbox.
7096 Then use FvwmIdent to read the windows geometry.
7097 The icon box is a region of the screen
7098 where fvwm attempts to put icons for any matching window, as long
7099 as they do not overlap other icons.
7100 Multiple icon boxes can be
7101 defined as overflow areas. When the first icon box is full, the
7102 second one is filled. All the icon boxes for one style must be
7105 command. For example:
7107 Style * IconBox -80 240 -1 -1, \\
7110 A Style command with the IconBox option replaces any icon box
7111 defined previously by another Style command for the same style.
7112 Thats why the backslash in the previous example is required.
7114 Note: The geometry for the icon box command takes the additional
7115 screen specifier "@w" in case a Xinerama setup is used. This
7116 designates the screen where the window center is located. The
7117 additional screen specifier is not allowed anywhere else.
7119 If you never define an icon box, or you fill all the icon boxes,
7120 fvwm has a default icon box that covers the screen, it fills top
7121 to bottom, then left to right, and has an 80x80 pixel grid. To
7122 disable all but the default icon box you can use IconBox without
7123 arguments in a separate
7125 command. To disable all icon boxes including the default icon
7126 box, the argument "none" can be specified.
7128 Hint: You can auto arrange your icons in the icon box with a
7129 simple fvwm function. Put the "DeiconifyAndRearrange" function
7130 below in your configuration file:
7132 AddToFunc DeiconifyAndRearrange
7134 + C All (CurrentPage, Iconic) PlaceAgain Icon
7136 And then replace all places where you call the
7138 command to de-iconify an icon with a call to the new
7139 function. For example replace
7147 Mouse 1 I A Iconify off
7152 + C DeiconifyAndRearrange
7155 + D DeiconifyAndRearrange
7157 Mouse 1 I A DeiconifyAndRearrange
7160 takes 2 numeric arguments greater than zero.
7164 Icons are placed in an icon box by stepping through the icon box
7167 values for the icon grid, looking for a free space. The default
7168 grid is 3 by 3 pixels which gives a tightly packed appearance. To
7169 get a more regular appearance use a grid larger than your largest
7172 definition to clip an icon to a maximum size. An
7174 definition must follow the
7176 definition that it applies to:
7178 Style * IconBox -80x240-1-1, IconGrid 90 90
7183 .RI "IconFill " "Bottom Right"
7185 Icons are placed in an icon box by stepping through the icon box
7186 using these arguments to control the direction the box is filled
7187 in. By default the direction is left to right, then top to bottom.
7188 This would be expressed as:
7192 To fill an icon box in columns instead of rows, specify the
7193 vertical direction (top or bottom) first. The directions can be
7194 abbreviated or spelled out as follows: "t", "top", "b", "bot",
7195 "bottom", "l", "lft", "left", "r", "rgt", "right". An
7197 definition must follow the
7199 definition that it applies to:
7201 Style * IconBox -80x240-1-1, IconFill b r
7204 sets limits on the size of an icon image. Both user-provided
7205 and application-provided icon images are affected.
7207 .RI IconSize " [ " width " " height " [ " maxwidth " " maxheight " ] ]"
7209 All arguments are measured in pixels. When all four arguments are
7215 represent the minimum size of an icon, and
7219 represent the maximum size of an icon. Icon images that are smaller
7220 than the minimum size are padded. Icon images that are bigger than
7221 the maximum size are clipped.
7223 If only two arguments are passed to
7228 represent the absolute size of an icon. Icons covered by this style
7229 will be padded or clipped to achieve the given size.
7231 If no arguments are specified, the default values are used for each
7232 dimension. This effectively places no limits on the size of an icon.
7234 The value of "-1" can be used in place of any of the arguments to
7235 specify the default value for that dimension.
7237 Note that application-provided icon windows are not affected.
7240 specifies a pixmap to use as the miniature icon for the
7241 window. This miniature icon can be drawn in a title-bar button
7244 and can be used by various fvwm modules
7245 .RB ( FvwmWinList ", " FvwmIconMan " and " FvwmTaskBar ).
7246 It takes the name of a pixmap as an argument.
7248 .IR WindowShadeShrinks " and " WindowShadeScrolls
7249 control if the contents of a window that is being shaded with the
7251 command are scrolled (default) or if they stay in place. The
7252 shrinking mode is a bit faster
7256 option selects the number of steps for animation when shading a
7259 It takes one number as its argument. If the number has a trailing
7261 it sets the number of pixels to use as the step size instead of
7262 a fixed number of steps. 0 disables the animation. This happens
7263 too if the argument is omitted or invalid.
7267 command has two modes of operation: busy and lazy shading. Busy
7268 shading can be 50% slower than lazy shading, but the latter can
7269 look strange under some conditions, for example, if the window
7270 borders, buttons or the title are filled with a tiled pixmap.
7271 Also, the window handles are not drawn in lazy mode and the border
7272 relief may only be draw partially right before the window reaches
7273 the shaded state or tight after leaves the unshaded state. By
7274 default, fvwm uses lazy mode if there are no bad visual effects
7275 (not counting the window handles) and busy mode otherwise. Use
7277 .I WindowShadeAlwaysLazy " or " WindowShadeBusy
7278 to force using the lazy or busy mode. The default setting is
7280 .IR WindowShadeLazy .
7283 instructs fvwm to resize the corresponding windows with their
7284 contents visible instead of using an outline. Since this causes
7285 the application to redraw frequently it can be quite slow and make
7286 the window flicker excessively, depending on the amount of
7287 graphics the application redraws. The
7289 style (default) negates the
7291 style. Many applications do not like their windows being resized
7292 opaque, e.g. XEmacs, Netscape or terminals with a pixmap
7293 background. If you do not like the result, don't use the
7295 style for these windows. To exempt certain windows from opaque
7296 resizing you could use these lines in your configuration file:
7298 Style * ResizeOpaque
7299 Style rxvt ResizeOutline
7300 Style emacs ResizeOutline
7303 makes the window sticky, i.e. it is always visible on each page
7304 and each desk. The opposite style,
7306 reverts back to the default.
7308 .IR StickyAcrossPages " and " StickyAcrossPagesIcon
7310 .IR Sticky " and " StickyIcon ,
7311 but stick the window only across pages, not desks while
7312 .I StickyAcrossDesks " and " StickyAcrossDesksIcon
7313 works the other way round.
7317 style are shown as icons initially. Note that some applications
7318 counteract that by deiconifying themselves. The default is to not
7319 iconify windows and can be set with the
7324 makes the window sticky when its iconified. It de-iconifies on
7325 top the active desktop.
7327 reverts back to the default.
7332 but sticks the icon only across pages, not desks while
7334 works the other way round.
7337 makes fvwm ignore attempts of clients to raise or lower their own
7338 windows. By default, the opposite style,
7342 .IR FixedPosition " and " FixedUSPosition
7343 make fvwm ignore attempts of the user to move the window. It is
7344 still possible to move the window by resizing is. To allow the
7345 user to move windows, use the
7346 .IR VariablePosition or VariableUSPosition
7349 .IR FixedSize " and " FixedUSSize
7350 make fvwm ignore attempts of the user to resize the window. To
7351 allow the user to resize windows, use the
7352 .IR VariableSize " or " VariableUSSize
7355 .IR FixedPPosition " and " FixedPSize
7356 make fvwm ignore attempts of the program to move or resize its
7357 windows. To allow this kind of actions, use the
7358 .IR VariablePPosition " or " VariablePSize
7359 style. These styles may sometimes affect the initial placement
7360 and dimensions of new windows (depending on the application). If
7361 windows are created at strange places, try either the
7362 .IR VariablePPosition " or " NoPPosition
7365 style may screw up window dimensions for some applications. Don't
7366 use this style in this case.
7368 .IR MoveByProgramMethod
7369 affects how fvwm reacts to requests by the application to move its
7370 windows. By default, fvwm tries to detect which method to use,
7371 but it sometimes detects the wrong method. You may come across a
7372 window that travels across the screen by a few pixels when the
7373 application resizes it, moves to a screen border with the frame
7374 decorations off screen, that remembers its position for the next
7375 time it starts but appears in a slighly shifted position, or that
7376 attepmts to become full screen but has the. Try out both options,
7377 .IR UseGravity " and " IgnoreGravity
7378 on the window (and that window only) and see if that helps. By
7379 default, fvwm uses the
7381 method. Once the method was detected, it is never changed again.
7382 As long as fvwm can not detect the proper method, it uses
7384 To force fvwm to retry the detection, use one of the other two
7385 options first and then use
7389 Note: This option was introduced to alleviate a problem with the
7390 ICCCM2 specification. The ICCCM2 clearly states that the
7392 option should be used, but traditionally applications ignored this
7396 enables the functions
7401 to be performed on the windows. This is on by default.
7404 inhibits the window to be closed.
7407 enables the function
7409 to be performed on the windows.
7410 This is on by default.
7413 inhibits the window from being iconified.
7416 enables the function
7418 to be performed on the windows.
7419 This is on by default.
7422 inhibits the window from being maximized.
7424 .IR AllowMaximizeFixedSize
7425 enables the function
7427 to be performed on windows that are not resizable, unless maximisation
7428 has been disabled either using the style
7430 or throuth WM hints,
7433 .IR !AllowMaximizeFixedSize ,
7434 inibits all windows that are not resizable from being maximized.
7436 .I ResizeHintOverride
7437 instructs fvwm to ignore the program supplied minimum and maximum
7438 size. This can be handy for broken applications that refuse to be
7439 resized. Don't use it if you don't need it. The default
7441 .I NoResizeOverride.
7443 .I MaxWindowSize " [ width [ p ] height [ p ] ]"
7444 Tells fvwm the maximum width and height of a window. The values
7445 are the percentage of the total screen area. If the letter
7447 is appended to either of the values, the numbers are interpreted
7448 as pixels. This command is useful to force large application
7449 windows to be fully visible. Neither
7450 .IR height " nor " width
7451 may be less than 100 pixels. If you omit the parameters or their
7452 values are invalid, both limits are set to 32767 pixels (which is
7456 .I IconifyWindowGroups
7457 all windows in the same window group are iconified at once when
7458 group leader is iconified. The default is
7459 .IR IconifyWindowGroupsOff ,
7460 which disables this behavior. Although a number of applications
7461 use the window group hint, it is rarely used in a proper way, so
7462 it is probably best to use
7463 .I IconifyWindowGroups
7464 only for selected applications.
7466 .\" +++++++++++++++ Window Manager placement
7468 .B Window Manager placement
7469 Applications can place windows at a particular spot on the screen
7470 either by window manager hints or a geometry specification. When
7471 they do neither, then the window manager steps in to find a place
7472 for the window. Fvwm knows six ways to deal with this
7473 situation. The default is
7474 .IR TileCascadePlacement .
7477 automatically places new windows in the center of the display.
7480 automatically place new windows in a cascading fashion.
7482 .I TileCascadePlacement
7483 automatically places new windows in a smart location - a location
7484 in which they do not overlap any other windows on the screen. If
7485 no such position can be found
7486 .IR CascadePlacement
7487 is used as a fall-back method.
7489 .I TileManualPlacement
7491 .IR TileCascadePlacement ,
7494 as the fall-back method.
7496 .I MinOverlapPlacement
7497 automatically places new windows in a location in which the
7498 overlapping area in pixels of other windows is minimized.
7499 By default this placement policy tries to avoid
7500 overlapping icons and windows on higher layers.
7501 This can be configured with the
7502 .IR MinOverlapPlacementPenalties
7505 .I MinOverlapPercentPlacement
7507 .IR MinOverlapPlacement
7508 but tries to minimize the overlapped percentages of other windows
7509 instead of the overlapped area in pixels. This placement policy
7510 tries to avoid covering other windows completely and tries even
7511 harder not to cover small windows.
7512 This can be configured with the
7513 .I MinOverlapPlacementPenalties
7515 .I MinOverlapPercentPlacementPenalties
7518 .I MinOverlapPlacementPenalties
7519 takes at most 6 positive or null decimal arguments:
7521 .I normal ontop icon sticky below strut
7523 if trailing arguments are missing
7524 the default is used which is:
7528 This style configures the
7529 .IR MinOverlapPlacement " and " MinOverlapPercentPlacement
7533 factor affects normal windows, the
7535 factor affects windows with a greater layer than the window being
7538 factor affects icons, the
7540 factor affects sticky windows, the
7542 factor affects windows with a smaller layer than the window being
7545 factor affects the complement of the EWMH working area if the
7546 window being placed has the
7547 .I EWMHPlacementUseWorkingArea
7548 style and windows with an EWMH strut hint (i.e., a "please don't
7549 not cover me" hint) if the window being placed has the
7550 .I EWMHPlacementUseDynamicWorkingArea
7551 style. These factors represent the amount of area that these
7552 types of windows (or area) are counted as, when a new window is
7553 placed. For example, by default the area of ontop windows is
7554 counted 5 times as much as normal windows. So
7555 .IR MinOverlapPlacement " and " MinOverlapPercentPlacement
7556 will cover 5 times as much area of another window before it will
7557 cover an ontop window. To treat ontop windows the same as other
7558 windows, set this to 1. To really, really avoid putting windows
7559 under ontop windows, set this to a high value, say 1000. This
7560 style affects the window already mapped and not the window which
7561 is currently placed. There is one exception to this rule: in the
7562 case of the window being placed has the
7563 .I EWMHPlacementUseWorkingArea
7566 factor affects the placed window.
7568 .I MinOverlapPercentPlacementPenalties
7569 takes at most 4 positive or null integer arguments:
7571 .I cover_100 cover_95 cover_85 cover_75
7573 if trailing arguments are missing the defaults are used
7578 This style affects the
7579 .I MinOverlapPercentPlacement
7580 placement policy and is similar to the
7581 .I MinOverlapPlacementPenalties
7584 factor is used when the window being placed covers at least
7586 percent of the window. This factor is added to the factor
7588 .IR MinOverlapPlacementPenalties
7592 (aka active placement). The user is required to place every new
7593 window manually. The window only shows as a rubber band until a
7594 place is selected manually. The window is placed when a mouse
7595 button or any key except
7597 is pressed. Escape aborts manual placement which places the
7598 window in the top left corner of the screen. If mouse button 2 is
7599 pressed during the initial placement of a window (respectively
7601 and mouse button 1 in case Mwm emulation has been enabled with the
7603 command), the user is asked to resize the window too. Pressing
7612 Style * ManualPlacement
7615 *FvwmEvent: add_window GrowDownFunc
7616 AddToFunc StartFunction
7619 AddToFunc GrowDownFunc
7620 + I windowid $0 (PlacedByButton3) \\
7621 Resize bottomright keep -0p
7624 Now, whenever a window is created and the user presses button 3 to
7625 finish initial placement, the window is automatically enlarged
7626 until it hits the bottom screen border.
7628 .I Old placement styles
7629 DumbPlacement / SmartPlacement / SmartPlacementOff,
7630 ActivePlacement / RandomPlacement,
7631 ActivePlacementsHonorsStartsOnPage /
7632 ActivePlacementsHonorsStartsOnPageOff, GlobalOpts
7633 SmartPlacementIsReallySmart / GlobalOpts SmartPlacementIsNormal
7634 are still supported but will be removed in the future. The old and
7635 new styles can be translated according to the following table:
7637 GlobalOpts SmartPlacementIsReallySmart
7638 Style * SmartPlacement
7640 Style * SmartPlacement, CleverPlacement
7642 GlobalOpts SmartPlacementIsNormal
7643 Style * SmartPlacement
7645 Style * SmartPlacement, CleverPlacementOff
7647 Style * DumbPlacement, RandomPlacement
7649 Style * CascadePlacement
7651 Style * DumbPlacement, ActivePlacement
7653 Style * ManualPlacement
7655 Style * SmartPlacement, \\
7656 RandomPlacement, CleverPlacementOff
7658 Style * TileCascadePlacement
7660 Style * SmartPlacement, \\
7661 ActivePlacement, CleverPlacementOff
7663 Style * TileManualPlacement
7665 Style * SmartPlacement, CleverPlacement
7667 Style * MinOverlapPlacement
7669 Style * SmartPlacement, \\
7670 ActivePlacement, CleverPlacement
7672 Style * MinOverlapPercentPlacement
7674 Style * ActivePlacementsHonorsStartsOnPage
7676 Style * ManualPlacementsHonorsStartsOnPage
7678 Style * ActivePlacementsHonorsStartsOnPageOff
7680 Style * ManualPlacementsHonorsStartsOnPageOff
7683 .\" +++++++++++++++ placement options and stacking policy
7685 .B Placement policy options and window stacking
7687 instructs fvwm to ignore the program specified position (PPosition
7688 hint) when adding new windows. Using PPosition is required for
7689 some applications, but if you don't have one of those its a real
7690 headache. Many programs set PPosition to something obnoxious like
7691 0,0 (upper left corner).
7696 but applies suppresses using the user specified position indicated
7697 by the program (USPosition hint). It is generally a bad thing to
7698 override the user's choice, but some applications misuse the
7699 USPosition hint to force their windows to a certain spot on the
7700 screen without the user's consent.
7702 .IR NoTransientPPosition " and " UseTransientPPosition
7704 .IR NoPPosition " and " UsePPosition
7705 but apply only to transient windows.
7708 instructs fvwm to ignore the program specified icon position
7709 (IconPosition hint) when iconifying the window.
7712 takes a numeric argument which is the desktop number on which the
7713 window should be initially placed. Note that standard Xt programs
7714 can also specify this via a resource (e.g. "-xrm '*Desk: 1'").
7717 takes 1, 2, or 3 numeric arguments. If one or three arguments are
7718 given, the first (or only) argument is the desktop number. If
7719 three arguments are given, the 2nd and 3rd arguments identify the
7720 x,y page position on the virtual window. If two arguments are
7721 given, they specify the page position, and indicate no desk
7722 preference. If only one argument is given,
7724 functions exactly like
7726 For those standard Xt programs which understand this usage, the
7727 starting desk/page can also be specified via a resource (e.g.,
7728 "-xrm '*page: 1 0 2'").
7732 is a useful technique when you want to start an app on some other
7733 page and continue with what you were doing, rather than waiting
7737 takes one argument. It can be 'p' for the primary screen, 'c' for
7738 the current screen (containing the mouse pointer), 'g' for the
7739 global screen or the screen number itself (counting from zero). A
7740 new window is placed on the specified Xinerama screen. The
7741 default is to place windows on the screen that contains the mouse
7742 pointer at the time the window is created. However, those windows
7743 which are not placed by fvwm (i.e., those with a USPosition hint
7744 from a user specified geometry) are normally placed in a position
7745 relative to the global screen. The
7747 style is also useful to cause these windows to be placed relative
7748 to a specific Xinerama screen. For example:
7750 Style * StartsOnScreen c
7752 Would cause all windows, including those with their own geometry
7753 to be placed relative to the current Xinerama screen rather than
7754 the global screen. For those standard Xt programs which
7755 understand this usage, the starting desk/page can also be
7756 specified via a resource (e.g., "-xrm '*fvwmscreen: c'").
7757 ('fvwmscreen' was chosen because some applications already use
7758 \'.screen' for other purposes.)
7760 .I StartsOnPageIncludesTransients
7763 style to be applied even for transient windows. This is not
7764 usually useful, since transients are usually pop ups that you want
7765 to appear in your visible viewport; but occasionally an
7766 application uses a transient for something like a startup window
7767 that needs to be coerced into place.
7769 .I ManualPlacementIgnoresStartsOnPage
7771 .IR StartsOnPage " or " StartsOnDesk
7772 placement in the event that both
7773 .IR ManualPlacement " and " SkipMapping
7774 are in effect when a window is created. This prevents you from
7775 interactively placing a window and then wondering where it
7776 disappeared to, because it got placed on a different desk or page.
7777 .I ManualPlacementHonorsStartsOnPage
7778 allows this to happen anyway. The option has no effect if
7780 is not in effect, because fvwm switches to the proper desk/page to
7781 perform interactive placement. The default is
7782 .IR ManualPlacementIgnoresStartsOnPage "; "
7783 .I ManualPlacementHonorsStartsOnPage
7784 matches the way the old
7786 style used to handle the situation.
7788 .I CaptureHonorsStartsOnPage
7789 causes the initial capture (of an already existing window) at
7790 startup to place the window according to the
7791 .IR StartsOnPage " and " StartsOnScreen
7792 desk, page and Xinerama screen specification.
7793 .I CaptureIgnoresStartsOnPage
7794 causes fvwm to ignore these settings (including
7796 on initial capture. The default is
7797 .IR CaptureIgnoresStartsOnPage .
7799 .I RecaptureHonorsStartsOnPage
7800 causes a window to be placed according to, or revert to, the
7801 .IR StartsOnPage " and " StartsOnScreen
7802 desk, page and Xinerama screen specification on
7803 .BR Restart " or " Recapture .
7804 .I RecaptureIgnoresStartsOnPage
7805 causes fvwm to respect the current window position on
7806 .BR Restart " or " Recapture .
7808 .IR RecaptureIgnoresStartsOnPage .
7811 accepts one optional argument: a non-negative integer. This is
7812 the layer the window is put in. If no argument is given, any
7813 previously set value is deleted and the default layer is implied.
7816 puts the window in the top layer. This layer can be changed by
7822 puts the window in the put layer. This layer can be changed by
7828 puts the window in the bottom layer. This layer can be changed by
7834 instructs fvwm to put the window initially at the bottom of its
7835 layer rather than the default
7839 tells fvwm not to switch to the desk the window is on when it gets
7840 mapped initially (useful with
7841 .IR StartsOnDesk " or " StartsOnPage ).
7843 .I KeepWindowGroupsOnDesk
7844 makes new windows that have the window group hint set appear on
7845 the same desk as the other windows of the same group. Since this
7846 behavior may be confusing, the default setting is
7847 .IR ScatterWindowGroups .
7848 The window group hint is ignored when placing windows in this
7851 .\" +++++++++++++++ transient windows
7853 .B Transient windows
7854 .I DecorateTransient
7855 causes transient windows, which are normally left undecorated, to
7856 be given the usual fvwm decorations (title bar, buttons,
7857 etc.). Note that some pop-up windows, such as the xterm menus, are
7858 not managed by the window manager and still do not receive
7861 (the default) causes transient windows not to be given the
7862 standard decorations. You can only bind keys or mouse buttons to
7863 the sides and the client window of an undecorated window ('S' and
7864 \'W' contexts in bindings, see
7865 .BR Mouse " and " Key
7870 style that has transient windows raises all its transients when it
7872 .I DontRaiseTransient
7873 style disables this behavior. All windows are then treated as if
7874 they had no transients.
7878 style that has transient windows lowers all its transients when it
7880 .I DontLowerTransient
7881 style disables this behavior. All windows are then treated as if
7882 they had no transients.
7885 .I StackTransientParent
7887 .IR RaiseTransient " and " LowerTransient
7888 styles. Raising a window with
7889 .I StackTransientParent
7890 style transfers the raise action to the main window if the window
7891 being raised is a transient and its main window has
7893 style; this effect makes raise on a transient act just like raise
7894 on its main - the whole group is raised. Similar behavior holds
7895 for lowering a whole group of transients when the main has
7898 .I DontStackTransientParent
7899 turns this behavior off.
7900 .I (Dont)StackTransientParent
7902 .IR RaiseTransient " and " LowerTransient
7905 A reasonable emulation of Motif raise/lower on transients is
7908 Style * RaiseTransient
7909 Style * LowerTransient
7910 Style * StackTransientParent
7913 .\" +++++++++++++++ Extended WM Hints styles
7915 .B Extended Window Manager Hints styles
7916 To understand the used terminology in this sub section, please
7918 .BR "EXTENDED WINDOW MANAGER HINTS" .
7921 instructs fvwm to set the application ewmh icon hint with the icon
7922 that is used by fvwm if the application does not provide such hint
7923 (and if the icon used by fvwm is not an icon window).
7924 .I EWMHDonateMiniIcon
7925 does the same thing for mini icons. This allows compliant pager,
7926 taskbar, iconbox ...etc to display the same (mini) icons as
7927 fvwm. Note that on some hardware (e.g., 8-bit displays) these
7928 styles can slow down window mapping and that in general only one
7929 of these styles is needed by a compliant application.
7930 .I EWMHDontDonateIcon
7932 .I EWMHDontDonateMiniIcon
7933 restore the defaults which are to not set any ewmh (mini) icons
7936 By default, if an application provides an ewmh icon hint of small
7937 size (i.e., height and width less than or equal to 22), then fvwm
7938 uses this icon as its mini icon.
7939 .I EWMHMiniIconOverride
7940 instructs fvwm to ignore ewmh icons and to use the mini icon
7944 .I EWMHNoMiniIconOverride
7945 restores the default.
7947 .I EWMHUseStackingOrderHints
7948 causes fvwm to use EWMH hints and respect EWMH hints which change
7950 .I EWMHIgnoreStackingOrderHints
7951 causes fvwm to ignore EWMH layer hints.
7953 An application can ask for some reserved space on the desktop by a
7954 hint. In the EWMH terminology such a hint is called a strut and
7955 it is used to compute the working area and may be used for window
7956 placement and in the maximize command.
7957 .I EWMHIgnoreStrutHints
7958 causes fvwm to ignore such hints, as
7959 .IR EWMHUseStrutHints ,
7960 causes fvwm to use it which is the default.
7962 .I EWMHIgnoreStateHints
7963 causes fvwm to ignore initial EWMH state hints when a new window
7964 is mapped. The default
7965 .I EWMHUseStateHints
7966 causes fvwm to accept such hints.
7968 .I EWMHMaximizeIgnoreWorkingArea
7969 causes fvwm to ignore the EWMH working area when it executes a
7972 .I EWMHMaximizeUseWorkingArea
7973 the EWMH working area is used as with
7974 .I EWMHMaximizeUseDynamicWorkingArea
7975 the EWMH dynamic working area is used (the default).
7977 .I EWMHPlacementIgnoreWorkingArea
7978 causes fvwm to ignore the EWMH working area when it places (or
7979 places again) a window. With
7980 .I EWMHPlacementUseWorkingArea
7981 the EWMH working area is taken in account as with
7982 .I EWMHPlacementUseDynamicWorkingArea
7983 the EWMH dynamic working area is taken in account (the default).
7985 .IR MinOverlapPlacement " and " MinOverlapPercentPlacement
7986 placement policy, the way the EWMH (dynamic) working area is taken
7987 in account is configurable with the
7988 .I MinOverlapPlacementPenalties
7991 .\" +++++++++++++++ miscellaneous
7995 .IR BackingStore ", " BackingStoreOff " and " BackingStoreWindowDefault
7996 determine if the X server uses backing store for the window or
7999 means that the X server tries to keep the obscured parts of a
8000 window in memory. This is usually slower if the client runs on
8001 the same machine as the X server, but can be much faster if the
8002 connection is slow (see also
8006 tells disables backing store for the window. By default, fvwm
8007 does not enable or disable backing store itself but leaves is as
8008 the window requested it. To revert back to the application's
8010 .I BackingStoreWindowDefault
8013 Note: This style is useless if the X server does not allow backing
8017 enables the corresponding window attribute in the X server. For a
8018 window using this style, the X server tries to store the graphics
8019 below it in memory which is usually slower if the client runs on
8020 the same machine as the X server.
8022 may speed up fvwm if the connection to the X server is slow
8023 (e.g. over a modem link). To disable backing store, use the
8025 style. This is the default. See also
8029 Note: This style is useless if the X server does not allow save
8032 .I ParentalRelativity
8033 enables clients that use a background pixmap of type
8035 to achieve transparency. Fvwm modules that support transparent
8036 colorsets require this setting.
8038 is the default and should be used for all non-transparent clients
8039 for better performance.
8042 makes fvwm attempt to recognize and respect the mwm decoration
8043 hints that applications occasionally use. To switch this style
8049 makes fvwm attempt to recognize and respect the mwm prohibited
8050 operations hints that applications occasionally use.
8052 makes fvwm shade out operations that mwm would prohibit, but it
8053 lets you perform the operation anyway.
8055 allows turns off the mwm hints completely.
8058 makes fvwm attempt to recognize and respect the olwm and olvwm
8059 hints that many older XView and OLIT applications use. Switch
8060 this option off with
8065 fvwm ignores all GNOME hints for the window, even if GNOME
8066 compliance is compiled in. This is useful for those pesky
8067 applications that try to be more clever than the user and use
8068 GNOME hints to force the window manager to ignore the user's
8071 style switches back to the default behavior.
8074 This style is deprecated and will be removed in the future. There
8075 are plans to replace it with a more flexible solution in fvwm-3.0.
8078 accepts one argument: the name of a decor created with
8080 If no decor name is specified, the "Default" decor is
8081 used. Windows do not actually contain decors, but are always
8082 assigned to one. If the decor is later modified with
8084 the changes are visible for all windows which are assigned to it.
8085 The decor for a window can be reassigned with
8089 This style is deprecated and will be removed in the future. There
8090 are plans to replace it with a more flexible solution in fvwm-3.0.
8093 takes one arg, which is the name of another style. That way you
8094 can have unrelated window names easily inherit similar traits
8095 without retyping. For example:
8097 Style rxvt UseStyle XTerm
8099 Warning: If a style is built from one or more parent styles and
8100 the parent styles are changed, the derived style is not
8101 modified. To achieve this you have to issue the
8108 style option are ignored by fvwm. They are not decorated, can not
8109 be moved or resized, etc. You probably want to use
8110 .B Bugopts RaiseOverUnmanaged
8111 too. This option can be turned off with the
8112 .IR !Unmanaged style .
8113 However, windows that are already ignored at the time when the
8114 option is set must be recaptured with the
8116 command in order to become managed.
8119 sets the initial value of of one of the 32 user defined states
8120 which are associated with each window. The state number ranges
8121 from 0 to 31 and must be given as an argument. The states have no
8122 meaning in fvwm, but they can be checked in conditional commands
8127 condition and manipulated with the
8131 # turn on state 11 for xterms ...
8132 Style xterm State 11
8133 # ... but not for rxvts.
8134 Style rxvt !State 11
8137 .\" +++++++++++++++ styles affecting window selection
8141 styles do not appear in the menu that is created with the
8143 command or the lists shown in several modules like
8144 .BR FvwmIconMan " or " FvwmWinList .
8145 In the modules, the style can usually be ignored with an option.
8146 Please refer to the man pages of the module in question for
8147 further information. To disable this feature, use the default
8152 .IR CirculateSkip " and " CirculateHit
8153 control wheter the window is considered by conditional commands,
8155 .BR Next ", " Prev " or " All .
8158 are never selected by conditional commands. However, the styles
8159 can be overridden explicitly in the condition with the
8160 .IR CirculateHit ", " CirculateHitIcon " or " CirculateHitShaded
8161 conditions, and some conditional commands, e.g.
8162 .B Current " and " All ,
8165 .IR CirculateSkipIcon ", " CirculateHitIcon ,
8166 .IR CirculateSkipShaded " and " CirculateHitShaded
8168 .IR CirculateSkip " and " CirculateHit
8169 but apply only to iconic or shaded windows.
8170 Note: if multiple ...Skip... options are combined, windows are
8171 only selected if they match none of the given conditions. So,
8174 Style * CirculateSkipIcon, CirculateSkipShaded
8176 only windows that are neither iconic nor shaded are selecte.
8177 Note: For historical reasons, the conditional commands understand
8178 the names of these styles as condition names. Take care no to
8181 .\" +++++++++++++++ examples
8185 # Change default fvwm behavior to no title-
8186 # bars on windows! Also define a default icon.
8188 Icon unknown1.xpm, \\
8192 # now, window specific changes:
8193 Style Fvwm* NoHandles, Sticky, \\
8196 Style FvwmPager StaysOnTop, BorderWidth 0
8197 Style *lock NoHandles, Sticky, \\
8198 StaysOnTop, WindowListSkip
8199 Style xbiff Sticky, WindowListSkip
8200 Style FvwmButtons NoHandles, Sticky, \\
8202 Style sxpm NoHandles
8204 # Put title-bars back on xterms only!
8205 Style xterm Title, Color black/grey
8207 Style rxvt Icon term.xpm
8208 Style xterm Icon rterm.xpm
8209 Style xcalc Icon xcalc.xpm
8210 Style xbiff Icon mail1.xpm
8211 Style xmh Icon mail1.xpm, \\
8213 Style xman Icon xman.xpm
8214 Style matlab Icon math4.xpm, \\
8216 Style xmag Icon magnifying_glass2.xpm
8217 Style xgraph Icon graphs.xpm
8218 Style FvwmButtons Icon toolbox.xpm
8219 Style Maker StartsOnDesk 1
8220 Style signal StartsOnDesk 3
8222 # Fire up Netscape on the second desk, in the
8223 # middle of my 3x3 virtual desktop, and don't
8224 # bother me with it...
8225 Style Netscape* SkipMapping, \\
8228 Note that all properties for a window are or'ed together. In the
8229 above example "FvwmPager" gets the property
8231 via an exact window name match but also gets
8232 .IR NoHandles ", " Sticky " and " WindowListSkip
8233 by a match to "Fvwm*". It gets
8235 by virtue of a match to "*". If conflicting styles are specified
8236 for a window, then the last style specified are used.
8240 attribute is set then the specified window simply disappears when
8241 it is iconified. The window can be recovered through the
8244 is set without an argument then the
8246 attribute is cleared but no icon is specified. An example which
8247 allows only the FvwmPager module icon to exist:
8250 Style FvwmPager Icon
8254 .BI "WindowStyle " "options"
8255 sets attributes (styles) on the selected window. The
8257 are exactly the same as for the
8261 .SS OTHER COMMANDS CONTROLLING WINDOW STYLES
8264 .B "AddButtonStyle \fIbutton\fP \
8267 ] [-- [!] \fIflag\fP \
8270 Adds a button style to
8273 can be a button number, or one of "All", "Left" or "Right".
8275 can be "ActiveUp", "ActiveDown", "InactiveUp" or "InactiveDown",
8276 or "Active" (the same as both "ActiveUp" and "ActiveDown")
8277 or "Inactive" (the same as both "InactiveUp" and "InactiveDown")
8278 or any of these 6 with "Toggled" prepended.
8279 The "Active" states apply to the focussed window, the "Inactive"
8280 ones apply to all other windows. The "Up" states apply to the
8281 non pressed buttons, the "Down" ones apply to pressed buttons.
8282 The "Toggled" prefix refers to maximized, shaded or sticky windows
8283 that have the corresponding
8286 Additionally, the following shotcuts may be used: "AllNormal",
8287 "AllToggled", "AllActive", "AllInactive", "AllUp", "AllDown".
8288 They are actually different masks for 4 individual states from
8289 8 total. These are supported too: "AllActiveUp", "AllActiveDown",
8290 "AllInactiveUp", "AllInactiveDown".
8294 is omitted, then the style is added to every state. If the
8295 .IR style " and " flags
8296 are enclosed in parentheses, then multiple
8298 definitions can be placed on a single line.
8300 for additional button styles cannot be changed after definition.
8302 Buttons are drawn in the order of definition, beginning with the
8303 most recent button style, followed by those added with
8304 .BR AddButtonStyle .
8305 To clear the button style stack, change style flags, or for
8306 descriptions of available styles and flags, see the
8310 ButtonStyle 1 Pixmap led.xpm -- Top Left
8311 ButtonStyle 1 ActiveDown HGradient 8 grey \\
8313 ButtonStyle All -- UseTitleStyle
8314 AddButtonStyle 1 ActiveUp (Pixmap a.xpm) \\
8315 ActiveDown (Pixmap b.xpm -- Top)
8316 AddButtonStyle 1 Vector 4 50x30@1 70x70@0 \\
8319 Initially for this example all button states are set to a pixmap.
8320 The second line replaces the "ActiveDown" state with a gradient
8321 (it overrides the pixmap assigned to it in the line before, which
8322 assigned the same style to every state). Then, the
8324 flag is set for all buttons, which causes fvwm to draw any styles
8327 before drawing the buttons. Finally,
8329 is used to place additional pixmaps for both "ActiveUp" and
8330 "ActiveDown" states and a vector button style is drawn on top of
8334 .B "AddTitleStyle [\fIstate\fP\
8336 ] [-- [!] \fIflag\fP \
8338 Adds a title style to the title-bar.
8340 can be "ActiveUp", "ActiveDown", "InactiveUp" or "InactiveDown",
8341 or "Active" (the same as both "ActiveUp" and "ActiveDown")
8342 or "Inactive" (the same as both "InactiveUp" and "InactiveDown")
8343 or any of these 6 with "Toggled" prepended. If
8345 is omitted, then the style is added to every state. If the
8346 .IR style " and " flags
8347 are enclosed in parentheses, then multiple
8349 definitions can be placed on a single line. This command is quite
8352 command (see above).
8354 Title-bars are drawn in the order of definition, beginning with
8357 followed by those added with
8359 To clear the title style stack, change style flags, or for the
8360 descriptions of available styles and flags, see the
8361 .BR TitleStyle " and " ButtonStyle
8365 .BI "AddToDecor " decor
8366 This command is deprecated and will be removed in the future. There
8367 are plans to replace it with a more flexible solution in fvwm-3.0.
8369 Add or divert commands to the decor named
8371 A decor is a name given to the set of commands which affect button
8372 styles, title-bar styles and border styles. If
8374 does not exist it is created; otherwise the existing
8376 is modified. Note: Earlier versions allowed to use the
8377 .BR HilightColor ", " HilightColorset " and " WindowFont
8378 commands in decors. This is no longer possible. Please use the
8381 .IR Hilight... " and " Font
8384 New decors start out exactly like the "default" decor without any
8385 style definitions. A given decor may be applied to a set of
8390 command. Modifying an existing decor affects all windows which
8391 are currently assigned to it.
8394 is similar in usage to the
8395 .BR AddToMenu " and " AddToFunc
8396 commands, except that menus and functions are replaced by
8397 .BR ButtonStyle ", " AddButtonStyle ", " TitleStyle ,
8398 .BR AddTitleStyle " and " BorderStyle
8399 commands. Decors created with
8401 can be manipulated with
8402 .BR ChangeDecor ", " DestroyDecor ", " UpdateDecor
8404 .IB "UseDecor " Style
8407 The following example creates a decor "FlatDecor" and style
8408 "FlatStyle". They are distinct entities:
8410 AddToDecor FlatDecor
8411 + ButtonStyle All \\
8414 + TitleStyle -- flat
8415 + BorderStyle -- HiddenHandles NoInset
8418 UseDecor FlatDecor, HandleWidth 4, \\
8419 ForeColor white, BackColor grey40, \\
8420 HilightFore black, HilightBack grey70
8422 Style xterm UseStyle FlatStyle
8424 An existing window's decor may be reassigned with
8426 A decor can be destroyed with
8429 DestroyDecor FlatDecor
8430 AddToDecor FlatDecor ...
8432 Style FlatStyle UseDecor FlatDecor
8434 and now apply the style again:
8436 Style xterm UseStyle FlatStyle
8440 .B "BorderStyle [\fIstate\fP\
8442 ] [-- [!] \fIflag\fP \
8444 Defines a border style for windows.
8446 can be either "Active" or "Inactive". If
8448 is omitted, then the style is set for both states. If the
8449 .IR style " and " flags
8450 are enclosed in parentheses, then multiple
8452 definitions can be specified per line.
8455 is a subset of the available button styles, and can only be
8457 (uniform pixmaps which match the bevel colors work best this
8458 way) or Colorset. If a
8462 the behavior is negated. If
8464 is not specified, then one can change flags without resetting the
8469 flag hides the corner handle dividing lines on windows with
8470 handles (this option has no effect for NoHandle windows). By
8479 If given, the inner bevel around the window frame is not drawn.
8482 is not specified, the frame looks a little strange.
8485 causes a raised relief pattern to be drawn (default).
8487 causes a sunken relief pattern to be drawn.
8489 inhibits the relief pattern from being drawn.
8491 To decorate the active and inactive window borders with a textured
8492 pixmap, one might specify:
8494 BorderStyle Active TiledPixmap marble.xpm
8495 BorderStyle Inactive TiledPixmap granite.xpm
8496 BorderStyle Active -- HiddenHandles NoInset
8498 To clear the style for both states:
8502 To clear for a single state:
8504 BorderStyle Active Simple
8506 To unset a flag for a given state:
8508 BorderStyle Inactive -- !NoInset
8510 title-bar buttons can inherit the border style with the
8516 .B "ButtonState [\fIActiveDown\fP bool]\
8517 [\fIInactive\fP bool]\
8518 [\fIInactiveDown\fP bool]"
8521 command controls which states of the window titles and title
8522 buttons are used. The default is to use all four states:
8523 "ActiveUp", "ActiveDown", "InactiveUp" and "InactiveDown" (see
8524 .BR ButtonStyle " and " TitleStyle
8527 argument after the key word controls if the designated state is
8528 used ("True") or not ("False"). The "ActiveUp" state cannot be
8529 deactivated. If no arguments are provided or the given arguments
8530 are illegal, the default is restored.
8534 argument is "False", no different button style
8535 for the pressed down buttons used, instead "ActiveUp" state is
8536 used even when button is pressed.
8540 argument is "False", focused and unfocused windows
8541 look similarly, the corresponding "Active" states are always used.
8545 argument is "False" (only applied when
8547 is "True"), the pressed titles and title buttons in non-focussed
8548 windows are drawn using "InactiveUp" or "ActiveUp" states
8549 depending on the values of the other key words.
8552 .B "ButtonStyle \fIbutton\fP \
8555 ] [-- [!] \fIflag\fP \
8557 Sets the button style for a title-bar button.
8559 is the title-bar button number between 0 and 9, or one of "All",
8560 "Left", "Right", or "Reset". Button numbering is described in the
8562 command section. If the
8563 .IR style " and " flags
8564 are enclosed in parentheses, then multiple
8566 definitions can be specified per line.
8569 refers to which button state should be set. Button states are
8570 defined as follows: "ActiveUp" and "ActiveDown" refer to the
8571 un-pressed and pressed states for buttons on active windows; while
8572 the "InactiveUp" and "InactiveDown" states denote buttons on
8573 inactive windows. The shortcut "Active" denotes both "ActiveUp" and
8574 "ActiveDown" states. Shortcut "Inactive" denotes both "InactiveUp"
8575 and "InactiveDown" states.
8576 The similar state names like just described, but with the "Toggled"
8577 prefix are used instead for title buttons which have one of the
8578 .IR MwmDecorMax ", " MwmDecorShade ", " MwmDecorStick " or " MwmDecorLayer
8579 hints, if the window is maximized, shaded or sticky, respectively.
8583 Vector 4 50x25@1 85x75@0 15x75@0 50x25@1
8584 + ButtonStyle 6 ToggledActiveUp \\
8585 Vector 4 50x75@0 85x25@1 15x25@0 50x75@0
8586 + ButtonStyle 6 ToggledActiveDown \\
8587 Vector 4 50x75@0 85x25@1 15x25@0 50x75@0
8588 + ButtonStyle 6 ToggledInactive \\
8589 Vector 4 50x75@0 85x25@1 15x25@0 50x75@0
8590 + ButtonStyle 6 - MwmDecorShade
8591 Mouse 0 6 N WindowShade
8593 Additionally, the following shotcuts may be used: "AllNormal",
8594 "AllToggled", "AllActive", "AllInactive", "AllUp", "AllDown".
8595 They are actually different masks for 4 individual states from
8596 8 total. These are supported too: "AllActiveUp", "AllActiveDown",
8597 "AllInactiveUp", "AllInactiveDown".
8602 that particular button state is set. If
8604 is omitted, every state is set. Specifying a style destroys the
8611 is omitted, then state-dependent flags can be set for the primary
8612 button style without destroying the current style. Examples (each
8613 line should be considered independent):
8615 ButtonStyle Left -- flat
8616 ButtonStyle All ActiveUp (-- flat) \\
8619 The first line sets every state of the left buttons to flat, while
8620 the second sets only the "ActiveUp" and "Inactive" states of every
8621 button to flat (only flags are changed; the buttons' individual
8622 styles are not changed).
8624 If you want to reset all buttons to their defaults:
8628 To reset the "ActiveUp" button state of button 1 to the default:
8630 ButtonStyle 1 ActiveUp Default
8632 To reset all button states of button 1 to the default of
8635 ButtonStyle 1 Default 2
8637 For any button, multiple
8639 definitions can be given on one line by enclosing the
8640 .IR style " and " flags
8641 in parentheses. If only one definition per line is given the
8642 parentheses can be omitted.
8645 affect the specified
8651 its behavior is negated. The available state-dependent flags for
8652 all styles are described here (the
8654 entry deals with state-independent flags).
8657 causes a raised relief pattern to be drawn.
8660 causes a sunken relief pattern to be drawn.
8663 inhibits the relief pattern from being drawn.
8666 causes the given button state to render the current title style
8667 before rendering the buttons own styles. The
8668 .IR Raised ", " Flat " and " Sunk
8670 flags are ignored since they are redundant in this context.
8673 causes the button to inherit the decorated
8677 .IR Raised ", " Sunk " and " Flat
8678 are mutually exclusive, and can be specified for the initial
8681 .IR UseTitleStyle " and " UseBorderStyle
8682 are also mutually exclusive (both can be off however). The
8686 .I UseBorderStyle " and " UseTitleStyle
8690 for the "ActiveDown" and "InactiveDown" states: When a button is
8691 pressed, the relief is inverted. Because of this, to obtain the
8692 raised look in "ActiveDown" or "InactiveDown" states you must
8693 specify the opposite of the desired relief (i.e.
8695 for "ActiveDown" or "InactiveDown"). This behavior is consistent,
8696 but may seem confusing at first. The same applies to the
8699 Button styles are classified as non-destructive, partially
8700 destructive, or fully destructive. Non-destructive styles do not
8701 affect the image. Partially destructive styles can obscure some or
8702 all parts of the underlying image (i.e.
8704 Fully destructive styles obscure the entire underlying image (i.e.
8708 styles). Thus, if stacking styles with
8709 .BR AddButtonStyle " (or " AddTitleStyle
8710 for title-bars), use care in sequencing styles to minimize redraw.
8712 The available styles are:
8714 .IR Simple ", " Default ", " Solid ", " Colorset ", " Vector ,
8715 .IR ?Gradient ", " Pixmap ", " AdjustedPixmap ,
8716 .IR ShrunkPixmap ", " StretchedPixmap ", " TiledPixmap ", " MiniIcon
8718 The description of these styles and their arguments follow:
8722 style does nothing. There are no arguments, and this style is an
8723 example of a non-destructive button style.
8727 style conditionally accepts one argument: a number which specifies
8728 the default button number to load. If the style command given is
8729 .BR ButtonStyle " or " AddButtonStyle ,
8730 the argument is optional (if given, it overrides the current button).
8731 If a command other than
8732 .BR ButtonStyle " or " AddButtonStyle
8733 is used, the number must be specified.
8737 style fills the button with a solid color. The relief border
8738 color is not affected. The color is specified as a single
8739 argument. This style is fully destructive.
8742 .IR Colorset " " cs " [" alpha "]"
8743 style fills the button with the Colorset
8747 argument is a percentage between 0 and 100. It causes fvwm to
8748 merge the colorset background onto the button using this
8749 percentage. If the percentage is 0 the colorset background is
8750 hidden and if it is 100 the colorset background is fully
8751 applied. The default is 100. So, the destructivity depends on the
8757 .IB X [ offset p]x Y [ offset p]@ C " ..."
8758 style draws a line pattern. Since this is a standard button style,
8763 is a number of point specifications of the form
8764 .IB X [ offset p]x Y [ offset p]@ C " ..."
8766 are point coordinates inside the button, given in percents
8767 (from 0 to 100). An optional absolute
8769 in pixels, can be given as "+<offset>p" for a positive or
8770 "-<offset>p" for a negative offset.
8773 specifies a line color (0 - the shadow color, 1 - the highlight
8774 color, 2 - the background color, 3 - the foreground color, 4 -
8775 only move the point, do not draw). The first point color is not
8776 used. You can use up to 10000 points in a line pattern. This
8777 style is partially destructive.
8779 The specification is a little cumbersome:
8781 ButtonStyle 2 Vector 4 50x30@1 70x70@0 \\
8784 then the button 2 decoration uses a 4-point pattern consisting of
8785 a line from (x=50,y=30) to (70,70) in the shadow color (@0), and
8786 then to (30,70) in the shadow color, and finally to (50,30) in the
8787 highlight color (@1). Is that too confusing? See the fvwm web
8788 pages for some examples with screenshots.
8790 A more complex example of
8793 ButtonStyle 8 Vector 10 45x65@2 45x75@3 \\
8794 20x75@3 20x50@3 35x50@3 35x65@1 35x25@1 \\
8795 75x25@1 75x65@0 35x65@0
8796 ButtonStyle 0 Vector 10 45x65@2 45x75@0 \\
8797 20x75@0 20x50@1 45x50@1 45x65@0 75x65@3 \\
8798 75x25@3 35x25@3 35x47@3
8802 styles denote color gradients. Fill in the question mark with any
8803 one of the defined gradient types. Please refer to the
8805 section for a description of the gradient syntax. The gradient
8806 styles are fully destructive.
8810 style displays a pixmap. A pixmap should be specified as an
8811 argument. For example, the following would give button number 2
8812 the same pixmap for all 4 states (2 active and 2 inactive), and
8813 button number 4 all different pixmaps.
8815 ButtonStyle 2 Pixmap my_pixmap.xpm
8817 ActiveUp (Pixmap activeup.xpm) \\
8818 ActiveDown (Pixmap activedown.xpm) \\
8819 Inactive (Pixmap inactiveup.xpm)
8821 InactiveDown Pixmap inactivedown.xpm
8823 The pixmap specification can be given as an absolute or relative
8826 If the pixmap cannot be found, the button style reverts to
8828 Flags specific to the
8831 .IR Left ", " Right ", "
8832 .IR Top ", and " Bottom .
8833 These can be used to justify the pixmap (default is centered for
8834 both directions). Pixmap transparency is used for the color
8835 "None." This style is partially destructive.
8839 style is similar to the
8841 style. But the image is resized to exactly fit the button.
8845 style is similar to the
8847 style. But if the image is bigger than the button the image is
8848 resized to fit into the button.
8852 style is similar to the
8854 style. But if the image is smaller than the button the image is
8855 resized to cover the button.
8859 style accepts a pixmap to be tiled as the button background. One
8860 pixmap is specified as an argument. Pixmap transparency is not
8861 used. This style is fully destructive.
8865 style draws the window's miniature icon in the button, which is
8870 command. This button style accepts no arguments. Example:
8872 Style * MiniIcon mini-bx2.xpm
8873 Style xterm MiniIcon mini-term.xpm
8874 Style Emacs MiniIcon mini-doc.xpm
8876 ButtonStyle 1 MiniIcon
8881 .BI "ButtonStyle " button " - [!]" flag " ..."
8882 Sets state-independent flags for the specified
8884 State-independent flags affect button behavior. Each
8886 is separated by a space. If a
8888 is prefixed to the flag then the behavior is negated. The special
8891 clears any existing flags.
8893 The following flags are usually used to tell fvwm which buttons
8894 should be affected by mwm function hints (see
8898 command. This is not done automatically since you might have
8899 buttons bound to complex functions, for instance.
8902 should be assigned to title-bar buttons which display a menu. The
8903 default assignment is the leftmost button. When a window with the
8906 option requests not to show this button, it is hidden.
8909 should be assigned to title-bar buttons which minimize or iconify
8910 the window. The default assignment is the second button over from
8911 the rightmost button. When a window with the
8914 option requests not to show this button, it is hidden.
8917 should be assigned to title-bar buttons which maximize the
8918 window. The default assignment is the rightmost button. When a
8922 option requests not to show this button, it is hidden. When the
8923 window is maximized, the vector pattern on the button looks
8927 should be assigned to title-bar buttons which shade the window
8930 command). When the window is shaded, the vector pattern on the
8931 button looks pressed in.
8934 should be assigned to title-bar buttons which make the window
8935 sticky. When the window is sticky, the vector pattern on the
8936 button looks pressed in.
8939 .IB "MwmDecorLayer " layer
8940 should be assigned to title-bar buttons which place the window in
8943 When the window is on that specific layer, the vector pattern on
8944 the button looks pressed in.
8947 .BI "ChangeDecor " decor
8948 This command is deprecated and will be removed in the future. There
8949 are plans to replace it with a more flexible solution in fvwm-3.0.
8951 Changes the decor of a window to
8954 is "Default" or the name of a decor defined with
8958 is invalid, nothing occurs. If called from somewhere in a window
8959 or its border, then that window is affected. If called from the
8960 root window the user is allowed to select the target window.
8962 only affects attributes which can be set using the
8966 ChangeDecor CustomDecor1
8970 .BI "DestroyDecor [" recreate "] " decor
8971 This command is deprecated and will be removed in the future. There
8972 are plans to replace it with a more flexible solution in fvwm-3.0.
8978 so that subsequent references to it are no longer valid. Windows
8981 revert to the "Default" decor. The optional parameter
8983 tells fvwm not to throw away the decor completely but to throw
8984 away only its contents. If the decor is created again later,
8985 windows do not use it before the
8987 style is applied again unless the decor was destroyed with the
8989 option. The decor named "Default" cannot be destroyed.
8991 DestroyDecor CustomDecor1
8995 .BI "TitleStyle [" justification "] [" Height " [" num "]] [" MinHeight " [" num "]]"
8996 Sets attributes for the title-bar. Justifications can be
8997 .IR Centered ", " RightJustified " or " LeftJustified .
8999 sets the title bar's height to an amount in pixels.
9001 sets the minimal height in pixels of the title bar's.
9004 the window's font height and no minimal height.
9005 To reset the font height to the
9006 default value, omit the
9012 height is reseted by
9014 or if given with no argument.
9017 TitleStyle LeftJustified Height 24
9021 .B "TitleStyle [\fIstate\fP\
9023 ] [-- [!] \fIflag\fP \
9025 Sets the style for the title-bar.
9027 .BR AddTitleStyle " and " ButtonStyle .
9029 can be one of "ActiveUp", "ActiveDown", "InactiveUp",
9030 or "InactiveDown". Shortcuts like "Active" and "Inactive" are
9031 allowed. The states with the "Toggled" prefix are allowed too,
9032 the title itself does not use "Toggled" states, but these states
9033 are used for the buttons with
9038 is omitted, then the
9040 is added to every state. If parentheses are placed around the
9041 .IR style " and " flags ,
9042 then multiple state definitions can be given per line.
9044 can be omitted so that flags can be set while not destroying the
9051 its behavior is negated. Valid flags for each state include
9052 .IR Raised ", " Flat " and " Sunk
9053 (these are mutually exclusive). The default is
9057 regarding the "ActiveDown" state. Examples:
9059 TitleStyle ActiveUp HGradient 16 navy black
9060 TitleStyle ActiveDown (Solid red -- flat) \\
9061 Inactive (TiledPixmap wood.xpm)
9062 TitleStyle ActiveUp (-- Flat) ActiveDown \\
9063 (-- Raised) InactiveUp (-- Flat) \\
9064 InactiveDown (-- Sunk)
9066 This sets the "ActiveUp" state to a horizontal gradient, the
9067 "ActiveDown" state to solid red, and the "Inactive" states to a
9068 tiled wood pixmap. Finally, "ActiveUp" and "InactiveUp" are set
9069 to look flat, while "ActiveDown" set to be sunk (the
9071 flag for the "ActiveDown" state causes it to appear sunk due to
9072 relief inversion), and "InactiveDown" is set to look raised. An
9073 example which sets flags for all states:
9077 For a flattened look:
9080 ButtonStyle All Active (-- flat) Inactive (-- flat)
9086 styles and arguments:
9088 .IR Simple ", " Default ", " Solid ", " Colorset ", " Vector ,
9089 .IR ?Gradient ", " Pixmap ", " AdjustedPixmap ,
9090 .IR ShrunkPixmap ", " StretchedPixmap ", " TiledPixmap ", " MiniIcon .
9094 command for a description of all these styles and their arguments.
9096 In addition to these styles
9100 option. This allows you to specify different pixmaps, colorsets or
9101 colors for different parts of the titlebar. Some of them are tiled or
9102 stretched to fit a particular space; others are discrete "transition"
9103 images. The definable
9114 Underneath title text
9116 just to the left of the title text
9118 just to the right of the title text
9120 at the far left end of the titlebar
9121 (just after left buttons if any)
9123 at the far right end of the titlebar
9124 (just before right buttons if any)
9126 under buttons in case of UseTitleStyle
9128 under left buttons in case of UseTitleStyle
9130 under right buttons in case of UseTitleStyle
9132 None of these are mandatory except for
9134 (or, if you don't define
9136 you must define both
9137 .IR LeftMain " and " RightMain ")."
9140 pixmaps are defined and
9142 is specified for one or more buttons,
9143 .IR Main ", " LeftMain ", or " RightMain
9144 are used as appropriate.
9146 The syntax for this style type is:
9148 MultiPixmap section style arg, ...
9150 continuing for whatever you want to define. The
9153 .IR TiledPixmap ", " AdjustedPixmap ", " Colorset " or " Solid .
9156 command for the description of these styles.
9157 In the case of a transition section,
9158 .IR LeftEnd ", " LeftOfText ", " RightOfText " or " RightEnd ","
9160 only resize the pixmap in the "y" direction. For the
9161 .IR Colorset " and " Solid
9162 styles a width of the half of the title bar height is assumed
9163 for the transition sections.
9167 MultiPixmap Main AdjustedPixmap foo.xpm, \\
9168 UnderText TiledPixmap bar.xpm, \\
9171 Note that the old syntax is still supported: if the style is omitted,
9173 is assumed and adding "(stretched)" between the section and the
9175 .IR AdjustedPixmap .
9178 .BI "UpdateDecor " [ "decor" ]
9179 This command is deprecated and will be removed in the future. There
9180 are plans to replace it with a more flexible solution in fvwm-3.0.
9182 This command is kept mainly for backward compatibility. Since
9183 all elements of a decor are updated immediately when they are
9184 changed, this command is mostly useless.
9186 Updates window decorations.
9188 is an optional argument which specifies the
9190 to update. If given, only windows which are assigned to that
9193 are updated. This command is useful, for instance, after a
9194 .BR ButtonStyle ", " TitleStyle " or " BorderStyle
9195 (possibly used in conjunction with
9197 Specifying an invalid decor results in all windows being
9198 updated. This command is less disturbing than
9200 but does not affect window style options as
9205 .SS COMMANDS CONTROLLING THE VIRTUAL DESKTOP
9208 .B "Desk \fIarg1\fP \
9212 This command has been renamed. Please see
9217 .BI "DesktopName " desk name
9218 Defines the name of the desktop number
9222 This name is used in the
9226 where it override the
9228 configuration option. Moreover, if consecutive names starting from
9229 desktop 0 are defined, then these names can be used by any EWMH
9230 compliant application (as a pager).
9233 .BI "DeskTopSize " Horizontal x Vertical
9234 Defines the virtual desktop size in units of the physical screen
9238 .BI "EdgeResistance " "scrolling moving " [ "xinerama-moving" ]
9239 Tells how hard it should be to change the desktop viewport by
9240 moving the mouse over the edge of the screen and how hard it
9241 should be to move a window over the edge of the screen.
9243 The first parameter tells how many milliseconds the pointer must
9244 spend on the screen edge before fvwm moves the viewport. This is
9245 intended for people who use
9249 but find themselves accidentally flipping pages when they don't
9252 The second parameter tells how many pixels over the edge of the
9253 screen a window's edge must move before it actually moves
9254 partially off the screen. By default the viewport is moved a full
9255 page in the requested direction, but if you used
9257 and set any values other than zero they is used instead.
9263 it is still possible to move or resize windows across the edge of
9264 the current screen. By making the first parameter to
9266 10000 this type of motion is impossible. With
9268 less than 10000 but greater than 0 moving over pages becomes
9269 difficult but not impossible. See also
9272 The optional third parameter does the same as the second, but for
9273 individual Xinerama screens. If omitted,
9275 will be set to the value of
9279 to zero to ignore individual screen edges. Note that the center of
9280 the window being moved determines the xinarema screen on which the
9281 window should be kept.
9284 .BI "EdgeScroll " horizontal "[" p "] " vertical "[" p "]"
9285 Specifies the percentage of a page to scroll when the cursor hits
9286 the edge of a page. A trailing
9288 changes the interpretation to mean pixels. If you don't want any
9289 paging or scrolling when you hit the edge of a page include
9295 file, or possibly better, set the
9299 command. If you want whole pages, use
9304 .IR horizontal " and " vertical
9305 should be positive numbers.
9308 .IR horizontal " and " vertical
9309 percentages are multiplied by 1000 then scrolling wraps around at
9310 the edge of the desktop. If
9312 EdgeScroll 100000 100000
9314 is used fvwm scrolls by whole pages, wrapping around at the edge
9318 .BI "EdgeThickness " 0 | 1 | 2
9319 This is the width or height of the invisible window that fvwm
9320 creates on the edges of the screen that are used for the edge
9323 In order to enable page scrolling via the mouse, four windows
9324 called the "pan frames" are placed at the very edge of the
9325 screen. This is how fvwm detects the mouse's presence at the
9326 window edge. Because of the way this works, they need to be at the
9327 top of the stack and eat mouse events, so if you have any kind of
9328 error along the lines of: "mouse clicks at the edge of the screen
9329 do the wrong thing" you're having trouble with the pan frames and
9330 (assuming you don't use the mouse to flip between pages) should
9331 set the EdgeThickness to 0.
9335 completely disables mouse edge scrolling, even while dragging a
9338 gives the smallest pan frames, which seem to work best except on
9346 pixels can sometimes be confusing, for example, if you drag a
9347 window over the edge of the screen, so that it straddles a pan
9348 frame, clicks on the window, near the edge of the screen are
9349 treated as clicks on the root window.
9352 .BI "EwmhBaseStruts " left " " right " " top " " bottom
9353 Where left, right, top and bottom are positive or null integers
9354 which define bands at the edge of the screen.
9356 defines a band on the left of your screen of width
9359 defines a band on the right of your screen of width
9362 defines a band on the top of your screen of height
9366 defines a band on the bottom of your screen of height
9368 The unit is the pixel and the default is 0 0 0 0. These areas
9369 define additional reserved space to the reserved space defined by
9370 some ewmh compliant applications. This is used to compute the
9371 Working Area. See the
9372 .B EXTENDED WINDOW MANAGER HINTS
9373 section for a definition of the Working Area.
9376 .BI "EWMHNumberOfDesktops " num " [" max "]"
9377 This command is useful only for an ewmh compliant pager or taskbar
9378 (as kpager or kicker taskbar) and not for fvwm modules (FvwmPager
9379 or FvwmIconMan). It causes a compliant application to consider at
9382 desktops (desktop 0 to desktop
9384 The optional argument
9386 causes a compliant application to never consider more than
9390 is 0 (the default) there is no limitation. The actual number of
9391 desktops is determined dynamically. It is at least
9393 but it can be d if there is a window on desktop d-1 (or if the
9394 current desktop is desktop d-1) and d is less or equal to
9399 Moreover, a compliant pager can ask to change
9402 This is accepted by fvwm only if this number is
9403 less than or equal to
9407 is null. Note that negative desktops are not supported by the
9408 ewmh specification. The default is 4 0.
9411 .B "GotoDesk \fIprev\fP \
9416 Switches the current viewport to another desktop (workspace,
9419 The command takes 1, 2, 3, or 4 arguments. A single argument is
9420 interpreted as a relative desk number. Two arguments are
9421 understood as a relative and an absolute desk number. Three
9422 arguments specify a relative desk and the minimum and maximum of
9423 the allowable range. Four arguments specify the relative,
9424 absolute, minimum and maximum values. (Desktop numbers can be
9425 negative). If a literal
9427 is given as the single argument, the last visited desk number is
9432 is non zero then the next desktop number is the current desktop
9438 is zero then the new desktop number is
9442 is not present, then the command has no effect.)
9446 are given, the new desktop number is no smaller than
9450 Values out of this range are truncated (if you gave an absolute
9451 desk number) or wrapped around (if you gave a relative desk
9454 The syntax is the same as for
9456 which moves a window to a different desktop.
9458 The number of active desktops is determined dynamically. Only
9459 desktops which contain windows or are currently being displayed
9460 are active. Desktop numbers must be between 2147483647 and
9461 -2147483648 (is that enough?).
9464 .BI "GotoDeskAndPage " prev " | " "desk xpage ypage"
9465 Switches the current viewport to another desktop and page, similar
9467 .BR GotoDesk " and " GotoPage
9468 commands. The new desk is
9471 .RI ( xpage , ypage ).
9474 .B "GotoPage \fIprev\fP \
9481 Moves the desktop viewport to page (x,y). The upper left page is
9482 (0,0), the upper right is (M,0), where M is one less than the
9483 current number of horizontal pages specified in the
9485 command. The lower left page is (0,N), and the lower right page
9486 is (M,N), where N is the desktop's vertical size as specified in
9489 command. To switch to a page relative to the current one add a
9492 after any or both numerical arguments.
9497 .IR wrapx " and " wrapy
9498 to wrap around the x or y coordinate when the viewport is moved
9499 beyond the border of the desktop.
9501 To go to the last visited page use
9503 as the first argument. The
9505 function should not be used in a pop-up menu.
9512 # Go to lowest and rightmost page
9515 # Go to last page visited
9518 # Go two pages to the right and one page up
9523 .B "Scroll \fIhorizonal\fP \
9528 Scrolls the virtual desktop's viewport by
9530 pages in the x-direction and
9532 pages in the y-direction. Either or both entries may be negative.
9534 .IR horizontal " and " vertical
9535 values are expressed in percent of pages, so
9539 means to scroll down and left by one full page.
9543 means to scroll left half a page and down a quarter of a page.
9546 function should not be called from pop-up menus. Normally,
9547 scrolling stops at the edge of the desktop.
9550 .IR horizontal " and " vertical
9551 percentages are multiplied by 1000 then scrolling wraps around at
9552 the edge of the desktop. If
9556 is executed over and over fvwm moves to the next desktop page on
9557 each execution and wraps around at the edge of the desktop, so
9558 that every page is hit in turn.
9562 is appended to each coordinate
9563 .RI ( horizontal " and/or " vertical ),
9564 then the scroll amount is measured in pixels.
9567 .BI "Xinerama " bool
9568 Enables Xinerama support if the boolean argument is true and
9569 disables it if the argument is false. Calling this command
9570 without arguments turns on Xinerama support it was disabled before
9571 and turns it off if it was enabled. For example:
9573 # Turn Xinerama support on, use primary screen 2
9574 XineramaPrimaryScreen 2
9581 .BI "XineramaPrimaryScreen [" primary-screen "]"
9582 Takes an integer number or 'g' or 'c' as its argument. A number
9583 is taken as the number of the Xinerama screen that is to be used
9584 as the primary screen. The primary screen can be used as the
9585 preferred screen to place windows with
9587 XineramaPrimaryScreen <screen number>
9588 Style * StartsOnScreen p
9590 The primary screen is used in some of the modules and for the
9591 default icon box too. Any number that is zero or more is taken as
9592 the primary screen's number. Instead, the letter 'c' indicates to
9593 use the current screen (containing the pointer) whenever the
9594 primary screen is used. This may be very confusing under some
9595 circumstances. With \'g', the global screen is used as the primary
9596 screen, effectively disabling the primary screen. Calling this
9597 function with any other argument (including none) resets the
9598 primary screen to 0.
9601 .BI "XineramaSls [" bool "]"
9602 For multi-screen implementations other than Xinerama, such as
9603 Single Logical Screen, it is possible to simulate a Xinerama
9604 configuration if the total screen seen by fvwm is made up of
9605 equal sized monitors in a rectangular grid. The
9607 command turns SLS support on or off or toggles it to the opposite
9608 state, depending on if the boolean argument is "True", "False" or
9609 "toggle". If no argument is given, this is treated like "toggle".
9610 The default layout uses 1 by one screens. To configure the
9612 .BR XineramaSlsSize " or " XineramaSlsScreens
9616 .BI "XineramaSlsSize " Horizontal x Vertical
9617 This command configures the layout of the Single Logical screen
9618 feature. It takes two arguments,
9619 .IR Horizontal " and " Vertical
9620 which must be an integer value dividing evenly into the total
9621 desktop width, and height height. For an example with two
9622 monitors side by side which appear as one screen through the
9623 X-Server with the right screen as the primary screen, use:
9627 XineramaPrimaryScreen 1
9632 .BI "XineramaSlsScreens " "number-of-screens screen-spec ..."
9633 This command configures the layout of the Single Logical screen
9634 feature. Its first argument is the number of screens to use. It
9635 must be followed by exactly this number of
9637 arguments. Each of these can be written either in standard X
9638 geometry format: "<width>x<height>+<x>+<y>" or as a space separated
9639 list of numbers: "x y width height". Both ways of describing
9640 screens can be mixed in a single command. All four numbers must
9643 values specify the origin of the screen in relation to the global
9644 screen's origin while
9645 .IR width and height
9646 specify the size of the screen in pixels. No checks are done if
9647 the geometries make sense, so it is possible to define overlapping
9648 screens (with random results) or screens that are not visible at
9651 XineramaSlsScreens 3 \\
9652 512x768+0+0 512x300+512+0 512 300 512 468
9654 XineramaPrimaryScreen 1
9659 .SS COMMANDS FOR USER FUNCTIONS AND SHELL COMMANDS
9662 .B "AddToFunc [\fIname\fP \
9669 Begins or adds to a function definition. Here is an example:
9671 AddToFunc Move-or-Raise I Raise
9675 The function name is "Move-or-Raise", and could be invoked from a
9676 menu or a mouse binding or key binding:
9678 Mouse 1 TS A Move-or-Raise
9682 must not contain embedded whitespace. No guarantees are made
9683 whether function names with embedded whitespace work or not. This
9684 behavior may also change in the future without further notice.
9685 The letter before the
9687 tells what kind of action triggers the command which follows it.
9689 stands for "Immediate", and is executed as soon as the function is
9692 stands for "Motion", i.e. if the user starts moving the mouse.
9694 stands for "Click", i.e., if the user presses and releases the
9697 stands for "Hold", i.e. if the user presses a mouse button and
9698 holds it down for more than
9702 stands for "Double-click". The action
9704 causes an action to be performed on the button-press, if the
9705 function is invoked with prior knowledge of which window to act
9708 There is a number of predefined symbols that are replaced by
9709 certain values if they appear on the command line. Please refer
9711 .B COMMAND EXPANSION
9712 section for details.
9714 Warning: Please read the comments on executing complex functions
9716 .BR "SCRIPTING AND COMPLEX FUNCTIONS" .
9722 Key F10 R A Function MailFunction \\
9725 and "MailFunction" is
9727 AddToFunc MailFunction
9728 + I Next ($0) Iconify off
9729 + I Next (AcceptsFocus, $0) focus
9730 + I None ($0) Exec exec $0 $1
9732 Then the last line of the function becomes
9734 + I None (xmh) Exec exec xmh -font fixed
9736 The expansion is performed as the function is executed, so you can
9737 use the same function with all sorts of different arguments. You
9740 Key F11 R A Function MailFunction \\
9745 if you wanted. An example of using "$[w.id]" is:
9747 AddToFunc PrintFunction
9749 + I Exec xdpr -id $[w.id]
9751 Note that "$$" is expanded to '$'.
9753 Another example: bind right mouse button within the window button
9754 number 6 (this is a minimize button for the win95 theme) to
9755 iconify all windows of the same resource:
9757 AddToFunc FuncIconifySameResource "I" \\
9759 Mouse 3 6 A FuncIconifySameResource
9764 As might be expected, this makes the terminal beep.
9767 .BI "DestroyFunc " function
9768 Deletes a function, so that subsequent references to it are no
9769 longer valid. You can use this to change the contents of a
9770 function during a fvwm session. The function can be rebuilt using
9773 DestroyFunc PrintFunction
9780 Potentially useful for debugging things in your
9783 Echo Beginning style definitions...
9790 You should not use an ampersand '&' at the end of the command. You
9791 probably want to use an additional "exec" at the beginning of
9793 Without that, the shell that fvwm invokes to run your command
9794 stays until the command exits. In effect, you'll have twice as
9795 many processes running as you need. Note that some shells are
9796 smart enough to avoid this, but it never hurts to include the
9799 The following example binds function key
9801 in the root window, with no modifiers, to the exec function. The
9802 program rxvt is started with an assortment of options.
9805 Key F1 R N Exec exec rxvt -fg yellow -bg blue \\
9808 Note that this function doesn't wait for
9810 to complete, so things like:
9812 Exec "echo AddToMenu ... > /tmp/file"
9815 do not work reliably
9822 .BI "ExecUseShell [" shell "]"
9825 command use the specified shell, or the value of the
9827 environment variable if no shell is specified, instead of the
9828 default Bourne shell
9832 ExecUseShell /usr/local/bin/tcsh
9836 .BI "Function " FunctionName
9837 Used to bind a previously defined function to a key or mouse
9838 button. The following example binds mouse button 1 to a function
9839 called "Move-or-Raise", whose definition was provided as an
9840 example earlier in this man page. After performing this binding
9841 fvwm executes the "move-or-raise" function whenever button 1 is
9842 pressed in a window's title-bar.
9844 Mouse 1 T A Function Move-or-Raise
9850 does not coincide with an fvwm command.
9852 Warning: Please read the comments on executing complex functions
9854 .BR "SCRIPTING AND COMPLEX FUNCTIONS" .
9858 Does nothing. This is used to insert a blank line or separator in
9859 a menu. If the menu item specification is
9861 AddToMenu MyMenu " " Nop
9863 then a blank line is inserted. If it looks like
9867 then a separator line is inserted. Can also be used as the
9868 double-click action for
9869 .BR Menu " or " Popup .
9872 .BI "PipeRead " command " [" quiet "]"
9873 Causes fvwm to read commands from the output of the
9879 as if you typed it on the command line. If the command consists
9880 of more than one word it must be quoted. Useful for building up
9881 dynamic menu entries based on a directories contents, for
9882 example. If the keyword
9884 follows the command no message is produced if the
9890 AddToMenu HomeDirMenu
9891 PipeRead 'for i in $HOME/*; \\
9892 do echo "+ $i Exec xterm -e vi $i"; done'
9897 changes the pointer to a watch cursor by default during
9898 execution. However, some commands, for example xwd, need to take
9899 control of the pointer themselves and do not work. To disable the
9900 watch cursor, use the command prior to
9908 command executes synchronously. If you want to
9910 something, but need the command to run synchronously,
9911 you might do something like:
9913 PipeRead 'command 1>&2'
9915 The redirection causes any output from the program to go to stderr
9916 instead of being read as a sequence of commands by fvwm.
9918 returns 1 if the given command could be executed or -1 if not
9920 .B CONDITIONAL COMMANDS
9921 for the meaning of return codes).
9924 .BI "Read " filename " [" quiet "]"
9925 Causes fvwm to read commands from the file named
9929 follows the command no message is produced if the file is not
9930 found. If the file name does not begin with a slash ('/'), fvwm
9931 looks in the user's data directory, then the system data
9932 directory. The user's data directory is by default
9934 It can be overridden by exporting
9936 set to any other directory. The
9938 command returns 1 if the given file could be read or -1 if not
9940 .B CONDITIONAL COMMANDS
9941 for the meaning of return codes).
9945 .BI "SetEnv " "variable value"
9946 Set an environment variable to a new value, similar to the shell's
9947 export or setenv command. The
9951 are inherited by processes started directly by fvwm. This can be
9952 especially useful in conjunction with the
9954 module. For example:
9956 SetEnv height HEIGHT
9958 makes the FvwmM4-set variable
9960 usable by processes started by fvwm as the environment variable
9964 includes whitespace, you should enclose it in quotes. If no
9966 is given, the variable is deleted.
9969 .BI "Silent " command
9970 A number of commands require a window to operate on. If
9971 no window was selected when such a function is invoked the user is
9972 asked to select a window. Sometimes this behavior is unwanted,
9973 for example if the function was called by a module and the window
9974 that was selected at first does not exist anymore. You can
9975 prevent this by putting
9977 in front of the fvwm
9979 If a function that needs a window is called with
9981 without a window selected, it simply returns without doing
9984 is used on a user defined function it affects all function and sub
9985 function calls until the original function exits.
9989 is with binding commands
9990 .BR Key ", " PointerKey " and " Mouse ,
9991 this disables error messages.
9994 also disables the error message for non-existent commands. Note:
9995 This command is treated as a prefix to its
9997 Expansion of the command line is done as if
10004 Silent User_defined_function
10005 # don't complain on keyboards without "Help" key
10006 Silent Key Help R A Popup HelpMenu
10010 .BI "UnsetEnv " "variable"
10011 Unset an environment variable, similar to shell's export or
10012 unsetenv command. The
10014 then is removed from the environment array inherited by processes
10015 started directly by fvwm.
10018 .BI "Wait " windowname
10019 This command is intended to be used in fvwm functions only. It
10020 causes execution of a function to pause until a new window with
10023 appears. This is particularly useful in the "InitFunction" if you
10024 are trying to start windows on specific desktops:
10026 AddToFunc InitFunction
10027 + I exec xterm -geometry 80x64+0+0
10030 + I Exec exec xmh -font fixed -geometry \\
10035 The above function starts an xterm on the current desk, waits for
10036 it to map itself, then switches to desk 2 and starts an xmh.
10037 After the xmh window appears control moves to desk 0.
10039 Fvwm remains partially functional during a wait, but any input
10040 from the modules is queued up and processed only after the window
10041 appears or the command is aborted. For example, windows can not
10042 be focused with FvwmTaskBar or FvwmWinList during a wait.
10044 You can escape from a
10047 .SM Ctrl-Alt-Escape
10050 is the first modifier). To redefine this key sequence see the
10055 .SS CONDITIONAL COMMANDS
10057 Conditional command are command that are only executed if certain
10058 conditions are met. Most conditional commands work on windows,
10060 .BR Next ", " ThisWindow " or " All .
10061 There is one conditional command
10063 that works on global conditions unrelated to windows. The syntax
10064 of the conditions is described below. For readability, the list
10065 of conditions is located at the end of this section.
10069 All commands in this section (unless specifically stated for the
10070 command) also have a return code that can be 1 (if the condition
10071 was met) or 0 (if the condition was not met). Some commands may
10072 return -1 which means that an error occurred and the return code
10075 command returns -2. Additionally, the return codes of commands
10076 run in a complex functions are passed to the invoking complex
10077 function. The return code is used by the
10079 command. Please refer to the commands' description for examples.
10080 The return code can also be accessed through the variable
10082 Non conditional commands do not modify the return code of the last
10083 conditional command. Important note: return codes are only
10084 defined inside functions created with the
10086 command and are not inherited by sub functions. To run a command
10087 without altering the return code, the
10089 command can be used.
10091 .SS The Ring of Windows
10093 Fvwm stores windows in a ring internally. Think of the focused
10094 window as a cursor on the current position in the ring. The
10096 command and many other command searche forwards through the ring
10097 for a matching window, and
10099 searches backwards. The windows in the ring are either ordered by
10100 creation time (if the
10101 .I FPSortWindowlistByFocus
10103 .IR NeverFocus " or " MouseFocus
10104 styles are used) or by the last time they had the focus.
10106 .SS List of Conditional Commands
10109 .BI "All [(" conditions ")] " command
10112 on all windows meeting the conditions. It returns 1 if any window
10113 matches the condition and 0 otherwise.
10114 .RB "See " Conditions " section below for a list of conditions."
10116 This command implies the conditions
10117 .IR CirculateHit ", " CirculateHitIcon " and " CirculateHitShaded .
10118 They can be turned off by specifying
10123 .BI "Any [(" conditions ")] " command
10126 if any window which satisfies all
10128 exists. The command is run in the context of the root window.
10129 .RB "See " Conditions " section below for a list of conditions."
10132 .BI "Break [levels]"
10133 If the break command is used in a function, function execution is
10134 terminated immediately. Further commands of the function are not
10135 processed. Normally, all nested invocations of complex functions
10136 are left. An optional integer number
10138 may be given to break out of the given number of nested function
10139 and continue execution of a higher level function.
10142 command always has the return code -2. Example:
10144 AddToFunc PickWindowRaiseAndDeiconify
10146 + I TestRc (Error) Break
10152 .BI "Current [(" conditions ")] " command
10155 on the currently focused window if it satisfies all
10157 .RB "See " Conditions " section below for a list of conditions."
10159 This command implies the conditions
10160 .IR CirculateHit ", " CirculateHitIcon " and " CirculateHitShaded .
10161 They can be turned off by specifying
10167 [\fIFromPointer\fP] \
10169 [(\fIconditions\fP)] \
10175 on a window in the given direction which satisfies all
10177 Normally, the center of the currently focused window or the
10178 context window in which the command was invoked is taken as the
10179 starting point. Lacking such a window, or when the
10181 option is given, the current position of the pointer is taken as
10182 the starting point. The
10184 may be one of "North", "Northeast", "East", "Southeast", "South",
10185 "Southwest", "West", "Northwest" and "Center". Which window
10187 selects depends on angle and distance between the center points of
10188 the windows. Closer windows are considered a better match than
10189 those farther away. The
10191 direction simply selects the window closest to the starting point.
10192 Returns -1 if an invalid direction was given.
10193 .RB "See " Conditions " section below for a list of conditions."
10196 .BI "KeepRc " command
10199 but does not alter the return code of the previous command. Note:
10201 is treated as a prefix to its
10203 Expansion of the command line is done as if
10208 .BI "Next [(" conditions ")] " command
10213 on the next window which satisfies all
10215 If the command is running in a window context, it starts looking
10216 for a matching window from there. Otherwise it starts at the
10218 .RB "See " Conditions " section below for a list of conditions."
10221 .BI "None [(" conditions ")] " command
10224 if no window which satisfies all
10226 exists. The command is run in the context of the root window.
10227 Returns 1 if no window matches the conditions and 0 otherwise.
10228 .RB "See " Conditions " section below for a list of conditions."
10230 This command implies the conditions
10231 .IR CirculateHit ", " CirculateHitIcon " and " CirculateHitShaded .
10232 They can be turned off by specifying
10237 .BI NoWindow " command"
10240 but removes the window context if any. This is not really a
10241 conditional command, but a prefix that may be useful in menu items
10242 that should operate without a window even if such menu is bound to
10243 window decorations.
10246 .BI "Pick [(" conditions ")] " command
10250 if invoked in the context of a window. If invoked in the root
10251 window, it first asks the user to pick a window and then executes
10254 in the context of that window. This avoids annoying multiple
10255 selections with complex functions. The command is executed only
10258 are met. Returns -1 if no window was selected.
10259 .RB "See " Conditions " section below for a list of conditions."
10261 This command implies the conditions
10262 .IR CirculateHit ", " CirculateHitIcon " and " CirculateHitShaded .
10263 They can be turned off by specifying
10268 .BI "PointerWindow [(" conditions ")] " command
10271 if the window under the pointer satisfies all
10273 Returns -1 if there is no window under the pointer.
10274 .RB "See " Conditions " section below for a list of conditions."
10276 This command implies the conditions
10277 .IR CirculateHit ", " CirculateHitIcon " and " CirculateHitShaded .
10278 They can be turned off by specifying
10283 .BI "Prev [(" conditions ")] " command
10288 on the previous window which satisfies all
10290 If the command is running in a window context, it starts looking
10291 for a matching window from there. Otherwise it starts at the
10293 .RB "See " Conditions " section below for a list of conditions."
10296 .B "ScanForWindow \
10297 [\fIFromPointer\fP] \
10300 [(\fIconditions\fP)] \
10306 on a window in the given direction which satisfies all
10308 Normally, the center of the currently focused window or the
10309 context window in which the command was invoked is taken as the
10310 starting point. Lacking such a window, or when the
10312 option is given, the current position of the pointer is taken as
10313 the starting point. The
10315 may be one of "North", "NorthEast", "East", "SouthEast", "South",
10316 "SouthWest", "West", and "NorthWest". Which window
10318 selects depends first on the position along the primary axis given
10321 If any windows have the exact same coordinate along the primary
10322 axis, the secondary direction is used to order the windows. The
10324 may be one of the same set of values as
10328 is not perfectly perpendicular to
10330 ScanForWindow will return a failure. When using ScanForWindow
10331 repeatedly with the same arguments, it is guaranteed that all
10332 windows matching the conditions will eventually be found. If the
10333 focus reaches a limit along the primary axis, it will wrap around
10334 to the opposite side. Returns -1 if an invalid direction was
10336 .RB "See " Conditions " section below for a list of conditions."
10339 .BI "Test [(" test-conditions ")] " command
10346 are keywords with possible arguments from the list below
10347 and are separated by commas or whitespace. They include
10348 .IR "Version operator x.y.z" ,
10362 A test-condition prefixed with "!" is reverted.
10365 .I "Version operator x.y.z"
10366 test-condition is fulfilled if the logical condition of the expression is
10380 Test (Version >= 2.5.11) Echo 2.5.11 or later.
10384 test-condition is the same as either
10385 .IR Init " or " Restart .
10386 It is only true on startup or restart prior and during
10391 test-condition is the same as either
10392 .IR Quit " or " ToRestart .
10393 It is only valid on shutdown during
10395 function execution.
10401 test-conditions are, well, unconditionally true and false.
10403 Additionally, if a test-condition name is not recognized, the Error
10404 return code is set and the command is not executed.
10410 .IR "X file" " and"
10412 test-conditions test for existance of the given [F]ile (possibly
10413 with [R]ead/[W]rite permissions), e[X]ecutable (in $PATH),
10414 or the [I]mage (in ImagePath).
10418 AddToFunc StartFunction I Test (Init) Exec exec xterm
10420 AddToFunc VerifyVersion
10421 + I Test (Version 2.5.*) Echo 2.5.x detected
10422 + I TestRc (NoMatch) Test (!Version 2.6.*) Echo Future version
10423 + I TestRc (NoMatch) Echo 2.6.x is detected
10425 Test (f $[FVWM_USERDIR]/local-config) Read local-config
10426 Test (x xterm-utf16) Exec exec xterm-utf16
10430 .BI "TestRc [([!]" returncode ")] " command
10433 if the last conditional command returned the value
10435 Instead of the numeric values 0 (no match), 1 (match), -1 (error),
10436 and -2 (break) the symbolic names "NoMatch", "Match", "Error" and
10437 "Break" can be used. If no
10439 is given, the default 0 is assumed. If the return code is
10440 prefixed with '!', the command is executed if
10442 does not match the value returned by the conditional command.
10444 command can only be used inside functions. If the
10446 is another conditional command, the previous return code is
10447 replaced by the new one. Example:
10449 AddToFunc ToggleXterm
10450 + I Any (my_xtermwindow) Close
10451 + I TestRc (NoMatch) Exec xterm -T my_xtermwindow
10455 .BI "ThisWindow [(" conditions ")] " command
10457 executes the specified
10459 in the context of the current operand window. If there is no
10460 operand window (it is invoked in the root window), the command is
10463 is never interactive. The command is executed only if the given
10465 are met. It returns -1 if used outside a window context.
10466 .RB "See " Conditions " section below for a list of conditions."
10468 This command implies the conditions
10469 .IR CirculateHit ", " CirculateHitIcon " and " CirculateHitShaded .
10470 They can be turned off by specifying "!CirculateHit"
10474 .B "WindowId [\fIid\fP\
10475 ] [(\fIconditions\fP\
10481 command looks for a specific window
10483 and runs the specified
10485 on it. The second form of syntax retrieves the window id of the
10486 root window of the given
10490 is given, the current screen is assumed. The window indicated by
10492 may belong to a window not managed by fvwm or even a window on a
10493 different screen. Although most commands can not operate on such
10494 windows, there are some exceptions, for example the
10497 Returns -1 if no window with the given id exists.
10498 .RB "See " Conditions " section below for a list of conditions."
10500 This command implies the conditions
10501 .IR CirculateHit ", " CirculateHitIcon " and " CirculateHitShaded .
10502 They can be turned off by specifying
10508 WindowId 0x34567890 Raise
10509 WindowId root 1 WarpToWindow 50 50
10510 WindowId $0 (Silly_Popup) Delete
10512 In the past this command was mostly useful for functions used with
10515 command, or for selective processing of
10517 calls (as in the last example), but currently these handler functions
10518 are called within a window context, so this command is not really
10519 needed in these cases. Still it may be useful if, for example, the
10520 window id should be stored in the environment variable for a further
10523 Pick SetEnv BOOKMARKED_WINDOW $[w.id]
10524 WindowId $[BOOKMARKED_WINDOW] WarpToWindow
10531 that may be given as an argument to any conditional command are a
10532 list of keywords separated by commas or whitespace, enclosed in
10533 parentheses. Unless stated otherwise, conditional commands accept
10534 all the conditions listed below. Note that earlier versions of
10535 fvwm required the conditions to be enclosed in brackets instead of
10536 parentheses (this is still supported for backward compatibility).
10540 may include one or more window names to match to. If more than
10541 one window name is given, all of them must match. The window
10542 name, icon name, class, and resource are considered when
10543 attempting to find a match. Each name may include the wildcards
10544 '*' and '?', and may consist of two or more alternatives,
10545 separated by the character '|', which acts as an OR operator. (If
10546 OR operators are used, they must not be separated by spaces from
10547 the names.) Each window name can begin with '!', which prevents
10549 if any of the window name, icon name, class or resource match.
10550 However, '!' must not be applied to individual names in a group
10551 separated by OR operators; it may only be applied to the beginning
10552 of the group, and then it operates on the whole group.
10556 Next ("Netscape|konqueror|Mozilla*") WarpToWindow 99 90
10558 This goes to the next web browser window, no matter which of the
10559 three named web browsers is being used.
10561 Next ("Mozilla*", "Bookmark*") WarpToWindow 99 90
10563 This goes to Mozilla's bookmark manager window, ignoring other
10564 Mozilla windows and other browsers' bookmark windows.
10566 All ("XTerm|rxvt", !console) Iconify
10568 This iconifies all the xterm and rxvt windows on the current page,
10569 except that the one named "console" (with the -name option to xterm)
10572 Next (!"FvwmPager|FvwmForm*|FvwmButtons") Raise
10573 Next (!FvwmPager, !FvwmForm*, !FvwmButtons) Raise
10575 These two commands are equivalent; either one raises the next window
10576 which is not one of the named fvwm modules.
10578 Any condition can be negated by using a an exclamation mark ('!')
10579 directly in front of its name.
10584 .IR CirculateHitIcon ,
10585 .IR CirculateHitShaded ,
10588 .IR CurrentGlobalPage ,
10589 .IR CurrentGlobalPageAnyDesk ,
10591 .IR CurrentPageAnyDesk ,
10592 .IR CurrentScreen ,
10603 .IR PlacedByButton3 ,
10609 .IR StickyAcrossDesks ,
10610 .IR StickyAcrossPages ,
10616 condition excludes all windows that do not want the input focus
10617 (the application has set the "Input hints" for the window to
10618 False) and do not use the
10622 command. Also, all windows using the
10628 condition used together with any of the
10630 conditions, windows that do not intersect the Xinerama screen
10631 containing the mouse pointer are considered for a match too. For
10634 # Focus next window on current page,
10635 # regardless of Xinerama screen
10636 Next (CurrentPage, AnyScreen) Focus
10640 .IR CirculateHit " and " CirculateHitIcon
10641 options override the
10644 attribute for normal or iconic windows. The
10645 .I CirculateHitShaded
10646 option overrides the
10647 .I CirculateSkipShaded
10649 All three options are turned on
10652 command. They can be turned off by specifying
10655 Note: Do not confuse these conditions with the style options of
10656 the same name. Specifically,
10658 Style foo CirculateSkip
10659 Next (foo, CirculateHit) ...
10663 Style foo CirculateHit ...
10666 The prior selects windows with the name foo only in the Next
10667 command. In the second example, these windows are always matched
10668 in all conditional commands.
10672 condition matches only windows that are allowed to be closed.
10676 condition matches only windows that are on the current desk.
10679 .I CurrentGlobalPage
10680 condition matches only windows that are on the current page of the
10681 current desk, regardless of whether Xinerama support is enabled or
10682 not. This conditions implicitly activates the
10687 .I CurrentGlobalPageAnyDesk
10688 condition matches only windows that are on the current page of any
10689 desk, regardless of whether Xinerama support is enabled or not.
10693 condition matches only windows that are on the current page of the
10694 current desk. If Xinerama support is enabled, it only matches
10695 windows that are at least partially on the Xinerama screen
10696 containing the mouse pointer. This conditions implicitly
10702 .IR CurrentPageAnyDesk " and " CurrentScrene
10703 conditions matche only windows that are on the current page of any
10704 desk. If Xinerama support is enabled, they only match windows
10705 that are at least partially on the Xinerama screen containing the
10710 condition excludes all windows that don't have a fixed size,
10711 either set through WM hints or the
10718 matches on the the window the currently has the keyboard focus.
10719 This is not useful for the
10721 command but can be used with the other conditional commands.
10725 condition excludes all windoows that don't have resize handles.
10729 condition excludes all windows that do not contain the pointer.
10733 condition matches only iconic windows.
10737 condition matches only windows that are allowed to be iconified.
10741 condition matches only windows on the specified layer. The
10742 optional argument of the
10744 condition defaults to the layer of the focused window. The
10753 condition matches only windows that are allowed to be maximized.
10757 condition matches only maximized windows.
10761 condition matches only windows that are overlapped by other windows
10762 on the same layer (or unmanaged windows if the option
10763 .I RaiseOverUnmanaged
10766 command is used). Note that this condition can be slow if you
10767 have many windows or if RaiseOverUnmanaged is used and the
10768 connection to the X server is slow.
10772 condition is fulfilled if the last interactive motion of the
10775 command) was ended by pressing mouse button 3. This is especially
10784 condition excludes all windows that have been placed manually or
10785 by using the user or program position hint.
10789 conditions matches only windows that are fully visible on the
10790 current viewport and not overlapped by any other window.
10794 conditions matches only shaded windows (see
10799 .IR "State n" " or " "!State n"
10800 conditions match only windows with the specified integer state set
10801 (or unset). See the
10803 command for details. The argument may range from 0 to 31.
10806 .IR Sticky ", " StickyAcrossDesks " and " StickyAcrossPages
10807 match only windows that are currently sticky, sticky across all
10808 desks or sticky across all pages. Please refer to the
10810 options with the same name and the commands
10811 .BR Stick ", " StickAcrossDesks " and " StickAcrossPages
10816 condition matches only windows that have the "transient"
10817 property set by the application. This it usually the case for
10818 application popup menus and dialogs. The
10820 module can be used to find out whether a specific window is
10825 conditions matches only windows that are at least partially
10826 visible on the current viewport and not completely overlapped by
10829 .SS MODULE COMMANDS
10831 Fvwm maintains a database of module configuration lines in a form
10833 .BI "*" "<ModuleName>" ": " "<Config-Resource>"
10837 is either a real module name or an alias.
10839 This database is initially filled from config file (or from
10842 config command), and can be later modified either by user (via
10846 When modules are run, they read appropriate portion of database.
10847 (The concept of this database is similar to one used in X resource
10850 Commands for manipulating module configuration database are
10854 .BI "*" module_config_line
10855 Defines a module configuration.
10856 .I module_config_line
10857 consists of a module name (or a module alias) and a module
10858 resource line. The new syntax allows a delimiter, a colon and
10859 optional spaces, between the module name and the rest of the line,
10860 this is recommended to avoid conflicts.
10862 *FvwmIconBox: MaxIconSize 48x48
10863 *FvwmPager: WindowBorderWidth 1
10864 *FvwmButtons-TopRight: Geometry 100x100-0+0
10865 *FvwmButtons-Bottom: Geometry +0-0
10869 .BI "DestroyModuleConfig " module_config
10870 Deletes module configuration entries, so that new configuration
10871 lines may be entered instead. This also sometimes the only way to
10872 turn back some module settings, previously defined. This changes
10873 the way a module runs during a fvwm session without restarting.
10874 Wildcards can be used for portions of the name as well.
10876 The new non-conflicting syntax allows a delimiter, a colon and
10877 optional spaces between the module name and the rest of the line.
10878 In this case a module name (or alias) can't have wildcards.
10880 DestroyModuleConfig FvwmButtons*
10881 DestroyModuleConfig FvwmForm: Fore
10882 DestroyModuleConfig FvwmIconBox: Max*
10886 .BI "KillModule " modulename " [" modulealias ]
10887 Causes the module which was invoked with name
10889 to be killed. The name may include wildcards. If
10891 is given, only modules started with the given alias are killed.
10893 KillModule FvwmPager # kill all pagers
10895 Module FvwmEvent SoundEvent
10896 KillModule FvwmEvent SoundEvent
10900 .BI "Module " modulename " [" moduleparams ]
10901 Specifies a module with its optional parameters which should be
10902 spawned. Currently several modules, including
10903 .BR FvwmButtons ", " FvwmEvent ", " FvwmForm ", " FvwmGtk ", "
10904 .BR FvwmPager ", " FvwmScript
10905 support aliases. Aliases are useful if more than one instance of
10906 the module should be spawned. Aliases may be configured
10909 syntax described above. To start a module
10913 the following syntax may be used:
10915 Module FvwmForm MyForm
10918 At the current time the available modules (included with fvwm) are
10920 (produces animation effects when a window is iconified or
10923 (makes sounds to go with window manager actions),
10925 (an auto raise module),
10927 (to change the background when you change desktops),
10929 (to display a spiffy XPM, XBM or PNG),
10931 (brings up a customizable tool bar),
10933 (a command server to use with shell's FvwmCommand client),
10935 (to execute fvwm commands directly),
10937 (to preprocess your
10941 (to help debug fvwm),
10943 (the place to drag&drop to),
10945 (trigger various actions by events),
10947 (to bring up dialogs),
10949 (to bring up GTK menus and dialogs),
10951 (like the mwm IconBox),
10953 (a flexible icon manager),
10955 (to get window info),
10957 (to preprocess your
10961 (a mini version of the desktop),
10963 (saves the desktop state in .xinitrc style),
10965 (saves the desktop state in fvwm commands),
10967 (another powerful dialog toolkit),
10969 (puts scrollbars on any window),
10971 (a Windows like task bar),
10973 (managed colorsets, obsolete),
10977 (an AfterStep like button bar). These modules have their own man
10978 pages. There may be other modules out on there as well.
10981 Modules can be short lived transient programs or, like
10983 can remain for the duration of the X session. Modules are
10984 terminated by the window manager prior to restarts and quits, if
10985 possible. See the introductory section on modules. The keyword
10989 is distinct from all fvwm commands.
10992 .BI "ModulePath " path
10993 Specifies a colon separated list of directories in which to search
10994 for modules. To find a module, fvwm searches each directory in
10995 turn and uses the first file found. Directory names on the list
10996 do not need trailing slashes.
11000 may contain environment variables such as
11001 .IR $HOME " (or " ${HOME} ).
11002 Further, a '+' in the
11004 is expanded to the previous value of the
11006 allowing easy appending or prepending to the
11011 ModulePath ${HOME}/lib/fvwm/modules:+
11013 The directory containing the standard modules is available via the
11014 environment variable
11015 .IR $FVWM_MODULEDIR .
11018 .BI "ModuleSynchronous [" "Expect string" "] [" "Timeout secs" "] " modulename
11020 .B ModuleSynchronous
11021 command is very similar to
11023 Fvwm stops processing any commands and user input until the module
11024 sends a string beginning with "NOP FINISHED STARTUP" back to fvwm.
11027 is given fvwm gives up if the module sent no input back to fvwm
11032 option is given, fvwm waits for the given
11035 .B ModuleSynchronous
11036 should only be used during fvwm startup to enforce the order in
11037 which modules are started. This command is intended for use with
11038 the (currently hypothetical) module that should be in place before
11039 other modules are started.
11041 Warning: It is quite easy to hang fvwm with this command, even if
11042 a timeout is given. Be extra careful choosing the string to wait
11043 for. Although all modules in the fvwm distribution send back the
11044 "NOP FINISHED STARTUP" string once they have properly started up,
11045 this may not be the case for third party modules. Moreover, you
11046 can try to escape from a locked
11047 .B ModuleSynchronous
11048 command by using the key sequence
11049 .SM Ctrl-Alt-Escape
11054 .BI "ModuleTimeout " timeout
11055 Specifies how many seconds fvwm waits for a module to respond. If
11056 the module does not respond within the time limit then fvwm kills
11059 must be greater than zero, or it is reset to the default value of
11063 .BI "SendToModule " "modulename string"
11064 Sends an arbitrary string (no quotes required) to all modules,
11065 whose alias or name matching
11067 which may contain wildcards. This only makes sense if the module
11068 is set up to understand and deal with these strings though. Can be
11069 used for module to module communication, or implementation of more
11070 complex commands in modules.
11073 .SS QUIT, RESTART AND SESSION MANAGEMENT COMMANDS
11077 Exits fvwm, generally causing X to exit too.
11081 Causes fvwm to stop managing the screen on which the command was
11086 Causes a session manager (if any) to shutdown the session. This
11087 command does not work for xsm, it seems that xsm does not
11088 implement this functionality. Use Unix signals to manage xsm
11092 .BI "Restart [" window_manager " [" params "]]"
11093 Causes fvwm to restart itself if
11095 is left blank, or to switch to an alternate window manager (or
11096 other fvwm version) if
11098 is specified. If the window manager is not in your default search
11099 path, then you should use the full path name for
11100 .IR window_manager .
11102 This command should not have a trailing ampersand. The command
11103 can have optional parameters with simple shell-like syntax. You
11106 (is expanded to the user home directory) and environmental
11108 .IR $VAR " or " ${VAR} . Here are several examples:
11111 Key F1 R N Restart fvwm -s
11112 Key F1 R N Restart ~/bin/fvwm -f $HOME/.fvwm/main
11113 Key F1 R N Restart fvwm1 -s -f .fvwmrc
11114 Key F1 R N Restart xterm -n '"X console"' \\
11115 -T \\"X\\ console\\" -e fvwm1 -s
11117 If you need a native restart, we suggest only to use
11119 command without parameters unless there is a reason not to. If you
11120 still use an old command 'Restart fvwm2' that was correct in 2.2.x,
11121 all current command line arguments are lost. On a restart without
11122 parameters or with --pass-args, they are preserved. Here are some
11123 cases when 'Restart fvwm2' or 'Restart fvwm' cause troubles:
11125 * running fvwm under a session manager
11126 * running fvwm with multi headed displays
11127 * having command line arguments, like
11128 -f themes-rc or -cmd
11129 * if the first fvwm2 in the $PATH is a
11132 This is why we are issuing a warning on an old usage. If you
11133 really want to restart to fvwm with no additional arguments, you
11134 may get rid of this warning by using "Restart fvwm -s" or
11135 "Restart /full/path/fvwm".
11137 Note, currently with multi headed displays, restart of fvwms on
11138 different screens works independently.
11141 .BI "Restart " "--pass-args window_manager"
11144 without parameters but the name for the current window manager is
11145 replaced with the specified
11147 and original arguments are preserved.
11149 This command is useful if you use initial arguments like
11153 and want to switch to another fvwm version without losing the
11157 .BI "Restart " --dont-preserve-state " [" other-params "]"
11160 .BI "Restart [" other-params "]"
11162 but it does not save any window states over the restart.
11164 Without this option,
11166 preserves most per-window state by writing it to a file named
11167 .I .fs-restart-$HOSTDISPLAY
11168 in the user's home directory.
11172 Causes a session manager (if any) to save the session. This
11173 command does not work for xsm, it seems that xsm does not
11174 implement this functionality. Use Unix signals to manage xsm
11178 .BI "SaveQuitSession"
11179 Causes a session manager (if any) to save and then shutdown the
11180 session. This command does not work for xsm, it seems that xsm
11181 does not implement this functionality. Use Unix signals to manage
11187 Colorsets are a powerful method to control colors. Colorsets
11188 create appearance resources that are shared by fvwm and its
11189 modules. When a colorset is modified all parts of fvwm react to
11190 that change. A colorset includes a foreground color, background
11191 color, shadow and highlight color (often based on the background
11192 color), background face (this includes images and all kinds of
11193 gradients). There is a way to render background face and specify
11194 other color operations.
11196 In the 2.4.x versions a special module
11198 was introduced to manage colorsets. Starting with the 2.5.x beta
11199 version, the FvwmTheme functionality was moved to the core fvwm,
11200 so this module became obsolete.
11204 DestroyModuleConfig FvwmTheme: *
11205 *FvwmTheme: Colorset 0 fg black, bg rgb:b4/aa/94
11206 *FvwmTheme: Colorset 1 fg black, bg rgb:a1/b2/c8
11208 corresponds to the new syntax:
11211 Colorset 0 fg black, bg rgb:b4/aa/94
11212 Colorset 1 fg black, bg rgb:a1/b2/c8
11216 .BI "Colorset " num " [" options "]"
11217 Creates or modifies colorset
11219 Colorsets are identified by this number. The number can start at
11220 zero and can be a very large number.
11222 Warning: The highest colorset number used determines memory
11223 consumption. Thus, if you define 'Colorset 100000', the memory for
11224 100001 colorsets is used. Keep your colorset numbers as small as
11227 By convention, colorsets are numbered like this:
11229 # 0 = Default colors
11230 # 1 = Inactive windows
11231 # 2 = Active windows
11232 # 3 = Inactive menu entry and menu background
11233 # 4 = Active menu entry
11234 # 5 = greyed out menu entry (only bg used)
11235 # 6 = module foreground and background
11236 # 7 = hilight colors
11239 If you need to have more colors and do not want to reinvent the
11240 wheel, you may use the convention used in fvwm-themes, it defines
11241 the meaning of the first 40 colorsets for nearly all purposes:
11243 .B http://fvwm-themes.sourceforge.net/doc/colorsets
11245 Each colorset has four colors, an optional pixmap and an optional
11246 shape mask. The four colors are used by modules as the
11247 foreground, background, highlight and shadow colors. When a
11248 colorset is created it defaults to a foreground of black and
11249 background of gray. The background and foreground are marked as
11250 "average" and "contrast" (see later) so that just specifying a
11251 pixmap or gradient gives sensible results.
11254 is a comma separated list containing some of the keywords:
11255 fg, Fore, Foreground,
11256 bg, Back, Background,
11257 hi, Hilite, Hilight,
11260 Pixmap, TiledPixmap, AspectPixmap,
11261 Transparent, RootTransparent,
11262 Shape, TiledShape, AspectShape, NoShape,
11264 Tint, fgTint, bgTint,
11271 .IR fg ", " Fore " and " Foreground
11272 take a color name as an argument and set the foreground color.
11275 may be used to select a color that contrasts well with the
11276 background color. To reset the foreground color to the default
11277 value you can simply omit the color name.
11279 .IR bg ", " Back " and " Background
11280 take a color name as an argument and set the background color. It
11281 also sets the highlight and shadow colors to values that give a 3d
11282 effect unless these have been explicitly set with the options
11283 below. The special name
11285 may be used to select a color that is the average color of the
11286 pixmap. If the pixmap is tinted with the
11288 option, the tint is not taken in account in the computation of the
11289 average color. You should use the
11291 option to get the "real" average color. The background color is
11292 reset to the default value if the color name is omitted.
11294 .IR hi ", " Hilite " and " Hilight
11295 take a color name as as argument and set the highlight color. If
11296 the highlight color is not explicitly set, the default is to
11297 calculate it from the background color. To switch back to the
11298 default behavior the color name can be omitted.
11300 .I sh ", " Shade " and " Shadow
11301 take a color name as as argument and set the shadow color. If the
11302 shadow color is not explicitly set, the default is to calculate it
11303 from the background color. To switch back to the default behavior
11304 the color name can be omitted.
11307 takes a color name as an argument and sets the color used by the
11308 shadowing font effect. See the
11309 .B FONT SHADOW EFFECTS
11310 section of the fvwm man page. By default this color is computed
11311 from the foreground and background colors. To switch back to the
11312 default the color name can be omitted.
11314 .IR Pixmap ", " TiledPixmap " and " AspectPixmap
11315 take a file name as an argument, search the
11317 and use it as the background pixmap. Any transparent parts are
11318 filled with the background color. Not specifying a file name
11319 removes any existing image from the colorset.
11321 produces repeated copies of the image with no scaling,
11323 causes the image to be stretched to fit whatever object the
11324 colorset is applied to and
11326 stretches to fit but retains the image aspect ratio.
11329 creates a transparent background pixmap. The pixmap is used as a
11330 window background to achieve root transparency. For this you
11332 .I ParentalRelativity
11336 A subsequent root background change may be detected or not, this
11337 depends on the program used to set the background. If you use
11338 fvwm-root, xsetbg (xli), FvwmBacker with solid or colorset colors
11339 or a recent version of Esetroot (>= 9.2) a background change is
11340 detected. If background changes are not detected (e.g., if you use
11341 xv or xsetroot) you can force detection by using the -d option of
11344 xv -root -quit mybg.png; fvwm-root -d
11346 Due to the way X implements transparency no guarantees can be made
11347 that the desired effect can be achieved. The application may even
11348 crash. If you experience any problems with this option, do not
11351 Using outline move and resize (see the
11356 option) as well as setting the
11357 .I WindowShadeShrinks
11358 style may help. The transparency achieved with
11360 depends on whether the colorset is applied to the foreground or
11361 the background of a window. In the second case the transparency is
11362 relative to the parent window of the window on which the colorset
11363 is defined. For example:
11365 Colorset 12 VGradient 200 grey30 gery60
11366 Colorset 17 Transparent
11367 *FvwmIconMan: Colorset 10
11368 *FvwmIconMan: PlainColorset 17
11370 gives an IconMan with a vertical grey gradient background and the
11371 buttons use the background (by transparency). To obtain a (root)
11372 transparent IconMan:
11374 Colorset 12 Transparent
11375 Colorset 17 Transparent
11376 Colorset 18 Transparent
11377 Colorset 19 Transparent
11379 *FvwmIconMan: Colorset 12
11380 *FvwmIconMan: PlainColorset 17
11381 *FvwmIconMan: FocusColorset 18
11382 *FvwmIconMan: IconColorset 19
11384 The Colorset IconMan option defines the IconMan window background,
11385 but the PlainColorset and the FocusColorset are drawn on the
11386 foreground. So, the transparency of the IconMan buttons is
11387 achieved by drawing nothing. Now if this IconMan is swallowed in
11390 FvwmButtons:(Colorset 10, Swallow \\
11391 "FvwmIconMan" 'FvwmIconMan')
11397 and it is transparent relative to
11401 uses Colorset 10 as background. If you want root transparency use
11405 .BR FvwmButtons ", " FvwmIconMan ", " FvwmIdent ", " FvwmScroll
11408 are relatively simple. There is one main colorset option which
11409 defines the background of the window and the other colorsets (if
11410 any) are drawn on the foreground. The case of
11411 .BR FvwmWinList " and " FvwmProxy
11414 all the colorsets are drawn on the foreground and with
11416 the two colorsets refer to the window backgrounds.
11418 is more complicated as almost everything in the pager are windows
11419 with some parental relations (the mini windows are the child and
11420 the desktops are the parents and all this is complicated by the
11421 hilighted page). So, the colorsets apply to the background of
11422 these windows. You should experiment. For
11423 .BR FvwmForm " and " FvwmScript
11424 the situation is similar. There is a main window (a child of the
11425 root window) which corresponds to the main colorset and most of
11426 the widgets are windows which are children of the main window.
11428 may work or not with the
11430 option. When the colorset is drawn on the foreground
11432 should work. In some cases, tinting may be very slow. Tinting may
11433 work with fvwm menu (without animation). Tinting may work better
11434 if your X server has backing store enabled (try xdpyinfo to see if
11435 this the case). There is a chance that the backing store support
11436 of your X server does not work well with the terrible hack used to
11437 Tint the ParentRelative Pixmap. So, to get tinted root
11438 transparency it is more safe to use the
11442 .IR RootTransparent " [ " buffer " ] "
11443 creates a root transparent background. To make this option work,
11444 you must use an Esetroot compatible program, fvwm-root with the
11445 --retain-pixmap option or FvwmBacker with the RetainPixmap option
11446 (and colorset or solid backgrounds). The
11448 keyword is useful only when the
11450 option is used too. This speeds up creation of windows which use
11451 the colorset (useful for fvwm menus) at the cost of memory
11452 usage. It also speeds up opaque move and resize which can be
11453 unacceptably slow without
11455 However, this option may add a lot of memory to your X server
11456 (depending on the size of the image used to set the
11457 background). In summary, using outline move and resize for modules
11458 which use such a colorset may be a good idea.
11460 .IR Shape ", " TiledShape " and " AspectShape
11461 take a file name as an argument, search the
11463 and use it as the shape bitmap.
11465 produces repeated copies of the bitmap with no scaling,
11467 causes the bitmap to be stretched to fit whatever object the
11468 colorset is applied to and
11470 stretches to fit but retains the bitmap aspect ratio. If the file
11471 is a pixmap in xpm format, the shape mask of the pixmap is used.
11473 Warning: Due to the way X11 implements shapes you cannot take back
11474 making windows shaped. You may have to restart fvwm or the shaped
11478 creates a pixmap and stretches it to fit the window.
11480 may be one of HGradient, VGradient, DGradient, BGradient,
11481 SGradient, CGradient, RGradient or YGradient. The gradient types
11482 are as follows: H is horizontal; V is vertical; D is diagonal
11483 from top left to bottom right; B is a backwards diagonal from
11484 bottom left to top right; S is concentric squares; C is concentric
11485 circles; R is a radar like pattern and Y is a Yin Yang style (but
11487 Please refer to the
11489 section for the syntax of gradients.
11492 takes 2 arguments, a color and a percentage between 0 and 100. It
11493 causes the image defined using
11497 to be tinted with the specified color using the percentage. If the
11498 image is transparent
11500 tints only the image part. Unfortunately, a colorset background
11501 specified using the
11503 option can give strange results. See the
11505 option for details. With no arguments this option removes the
11509 takes 2 arguments, a color and a percentage between 0 and 100. It
11510 causes the color defined using
11512 to be tinted with the specified color using the percentage. With
11513 no arguments this option removes the tint.
11516 takes 2 arguments, a color and a percentage between 0 and 100. It
11517 causes the color defined using
11519 to be tinted with the specified color using the percentage. If the
11523 colors are not specified, they are recomputed from the tinted bg
11524 color. With no arguments this option removes the tint.
11527 takes a percentage between 0 and 100 as an argument. It causes
11528 fvwm to merge the image defined using
11534 color using the percentage. If the percentage is 0 the image is
11535 hidden and if it is 100 the image is displayed as usual (no
11536 merge). The default is 100 and it is restored if no argument is
11540 takes a percentage between 0 and 100 as an argument. It causes
11541 fvwm to merge the text and the colorset background using the
11542 percentage. If the percentage is 0 the text is hidden and if it is
11543 100 the text is displayed as usual (no merge). This option has an
11544 effect only with fonts loaded by Xft, see the
11545 .B FONT NAMES AND FONT LOADING
11546 section. The default is 100 and it is restored if no argument is
11550 causes fvwm to dither the image defined using
11554 This is useful only with displays with depth less than or equal to
11555 16 (i.e., on displays which can only display less than 65537
11556 colors at once). The dithering effect lets you simulate having
11557 more colors available that you actually have.
11559 causes fvwm to do not dither the images.
11561 is the default if the depth is less than or equal to 8 (a screen
11562 with 256 colors or less). In depth 15 (32768 colors) and 16 (65536
11563 colors), the default is
11565 however this effect can be useful with images which contain a lot
11566 of close colors. For example a fine gradient will look more
11570 takes 2 arguments, a color and a percentage between 0 and 100. It
11571 causes fvwm or a module to tint the "icons" which are rendered
11572 into the colorset background with the specified color using a
11573 percentage. Here "icons" means, fvwm Icons, fvwm menu icons,
11574 MiniIcons which represent applications in various modules, images
11575 loaded by modules (e.g., images specified by the
11578 button option) ...etc. With no arguments this option removes the
11582 takes a percentage between 0 and 100 as an argument. It causes
11583 fvwm to merge the "icons" which are rendered into the colorset
11584 background using this percentage. The default is 100 and it is
11585 restored if no argument is given.
11588 It is equivalent to use "Tint a_color rate" and "Alpha a" if a =
11589 100 and the bg color is a_color. This equivalence does not hold
11590 for IconAlpha and IconTint as the background can be an image or a
11591 gradient (and not a uniform color background).
11592 However, in some cases you can achieve (almost) the same effect by
11593 using IconTint in the place of IconAlpha. This is preferable as,
11594 in general, IconAlpha generates more redrawing than IconTint.
11597 removes the shape mask from the colorset while
11599 removes the background pixmap or gradient.
11604 Colorset 3 fg tan, bg navy
11607 If necessary this creates colorsets 0, 1, 2 and 3 and then changes
11608 colorset 3 to have a foreground of tan, a background of navy.
11611 Colorset 3 bg "navy blue"
11614 changes the background color of colorset 3 to navy blue. The
11615 foreground and pixmap are unchanged.
11618 Colorset 3 AspectPixmap large_murky_dungeon.xpm
11624 Colorset 3 bg Average
11627 Sets the background color and the relief colors to match the
11628 background pixmap. This is the default setting but it must be used
11629 if a background color was specified and is now not required.
11631 Colorset 3 YGradient 200 3 blue 1000 navy 1 blue 1000 navy
11633 Adds a Yin Yang gradient background pixmap to colorset 3. If the
11634 background is set to average it is recomputed along with the
11635 foreground if that is set to contrast.
11639 FvwmCommand "Colorset 7 fg navy, bg gray"
11642 FvwmCommand "Colorset 7 fg gray"
11644 FvwmCommand "Colorset 7 fg navy"
11648 Makes colorset 7 blink.
11650 The color names used in colorsets are saved as fvwm variables can
11651 be substituted in any fvwm command. For example:
11653 AddToFunc InitFunction
11654 + I Exec exec xterm -fg $[fg.cs0] -bg $[bg.cs0]
11656 Where $[fg.cs0] is the foreground color of colorset zero. Please
11658 .B COMMAND EXPANSION
11659 section for more information.
11662 .B CleanupColorsets
11663 Resets a definition of all colorsets.
11666 .SS COLOR GRADIENTS
11668 A color gradient is a background that changes its color gradually
11669 from one hue to a different one. Color gradients can be used by
11670 various commands and modules of fvwm. There are eight types of
11673 is a horizontal gradient,
11677 is diagonal from top left to bottom right,
11679 is backwards diagonal from bottom left to top right,
11681 is concentric squares,
11683 is concentric circles,
11685 is a radar like pattern and
11687 is a Yin Yang style (but without the dots).
11689 The color gradient syntax has two forms:
11692 .BI "?Gradient " "colors start-color end-color"
11693 This form specifies a linear gradient. The arguments denote the
11696 to allocate (between 2 and 1000), the initial color and the final
11701 TitleStyle VGradient 20 \\
11702 rgb:b8/ce/bc rgb:5b/85/d0
11706 .BI "?Gradient " "colors segments color length color" " [" "length color" "] ..."
11707 The second form specifies a nonlinear gradient. The arguments are:
11708 the total number of
11710 to allocate (between 2 and 1000), then the number of
11712 For each segment, specify the starting
11716 then the ending color. Each subsequent segment begins with the
11717 second color of the last segment. The lengths may be any
11718 non-negative integers. The length of one segment divided by the
11719 sum of all segments lengths is the fraction of the colors that
11720 are used for the segment.
11725 MenuStyle * MenuFace DGradient \\
11726 128 2 lightgrey 50 blue 50 white
11728 # 20% gradient from red to blue,
11729 # 30% from blue to black,
11730 # 50% from black to grey
11731 MenuStyle * DGradient 100 3 Red 20 Blue 30 \\
11734 # 50% from blue to green, then
11735 # 50% from yellow to red
11736 Colorset 0 Blue Red HGradient \\
11737 128 3 Blue 1000 Green 1 Yellow 1000 Red
11744 Fvwm starts on this display unless the
11749 Set by fvwm to the directory containing the standard fvwm modules.
11752 Used to determine the user's data directory for reading and
11753 sometimes writing personal files. If this variable is not already
11754 set, it is set by fvwm to $HOME/.fvwm, which is the default user's
11758 Fvwm tries to contact this session manager.
11760 .I SESSION_MANAGER_NAME
11761 This is used mainly to determine xsm running to work around its
11762 bug. If this variable is set to "xsm", DiscardCommand is set as
11763 xsm expects it and not as XSMP requires. If you run fvwm under
11764 xsm, you should set this variable to "xsm", otherwise old state
11765 files are not removed.
11768 If this is set, fvwm saves its session data in this
11769 directory. Otherwise it uses
11771 Note, the state files are named
11773 and normally are removed automatically when not used anymore.
11777 Robert Nation with help from many people, based on twm code, which
11778 was written by Tom LaStrange. After Robert Nation came Charles
11779 Hines, followed by Brady Montz. Currently fvwm is developed by a
11780 number of people on the fvwm-workers mailing list.
11784 Fvwm and all the modules, scripts and other files coming with the
11785 distribution are subject to the GNU General Public License
11786 (GPL). Please refer to the
11788 file that came with fvwm for details.
11792 As of fvwm version 2.4.0 there were exactly 71.8 unidentified
11793 bugs. Since then 22.825 bugs have been fixed. Assuming that there
11794 are at least 10 unidentified bugs for every identified one, that
11795 leaves us with 71.8 - 22.825 + 10 * 22.825 = 277.225 unidentified
11796 bugs. If we follow this to its logical conclusion we will have an
11797 infinite number of unidentified bugs before the number of bugs can
11798 start to diminish, at which point the program will be bug-free.
11799 Since this is a computer program infinity = 3.4028e+38 if you
11800 don't insist on double-precision. At the current rate of bug
11801 discovery we should expect to achieve this point in 4.27e+27
11802 years. I guess we better plan on passing this thing on to our
11805 Known bugs can be found in the fvwm bug tracking system
11806 (accessible from the fvwm home page).
11808 Bug reports can be sent to the fvwm-workers mailing list at
11809 @FVWMWORKERSLIST@ (see the
11811 or reported through the bug tracking system.
11813 The official fvwm homepage is
11814 .BR @FVWMHOMEPAGE@ .