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. Do Not 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 eventually gets 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, svg,
270 hints, session management, bidirectional text, multibyte
271 characters, xinerama and Xft aa font rendering.
273 .BR "-C" " | " "--visual "
277 for the window borders and menus.
279 can be "StaticGray", "GrayScale", "StaticColor", "PseudoColor",
280 "TrueColor" or "DirectColor".
282 .BR "-I" " | " "--visualid "
286 as the visual id for the window borders and menus.
288 can be specified as N for decimal or 0xN for hexadecimal. See man
289 page of xdpyinfo for a list of supported visuals.
291 .BR "-l" " | " "--color-limit "
295 on the colors used in image, gradient and possibly simple colors
296 used by fvwm. In fact, fvwm (and all the modules) uses a palette
299 colors. This option is only useful with screens that display 256
300 colors (or less) with a dynamic visual (PseudoColor, GrayScale or
301 DirectColor). The default depends on your X server and how you run
302 fvwm. In most case this default is reasonable. The
304 option should be used only if you encounter problems with colors.
305 By default, fvwm tries to detect "large" pre-allocated
306 palettes. If such a palette is detected fvwm uses it and a priori
309 must not be used. Moreover, in this case the
310 .BR "-A" " and " "-S"
311 options are forced. Note that XFree-4.2 pre-allocate 244 colors
312 (if you use a driver with Render support) leaving only a few free
313 colors. This may lead to some color problems (and nothing can be
314 done). XFree-4.3 or better pre-allocate only 85 colors. If no
315 pre-allocated palette is auto detected the defaults are as follow:
317 | depth 8 (256 colors)| depth 4 (16 colors)
318 ------------|---------------------|--------------------
319 PseudoColor | 68 (4 cc + 4 grey) | 10 (2 cc + 2 grey)
320 ------------|---------------------|--------------------
321 GrayScale | 64 regular grey | 8 regular grey
322 ----------- |---------------------|--------------------
323 DirectColor | 32 (3 cc + 5 grey) | 10 (2 cc + 2 grey)
324 ------------|------------------------------------------
325 where "I cc" means a "IxIxI color cube"
327 These defaults may change before version 2.6. Note that if you use a
328 private color map (i.e., fvwm is started with the
329 .BR "-C" " or the " "-I"
330 options), then others defaults are used.
332 Now what to do if you encounter problems with colors? The first
333 thing to do is to check if you really cannot run your X server
334 with depth 15, 16 or better. Check your X server
335 documentation. Note that some hardware can support two different
336 depths on the same screen (typically depth 8 and depth 24). If
337 depth 8 is the default, you can force fvwm to use the best depth
342 as argument. So now we assume that you are forced to run in depth
343 8 with a dynamic visual because your hardware/driver cannot do
344 better or because you need to use an application which needs to
345 run under this mode (e.g., because this application needs
346 read-write colors). What it should be understand is that you have
347 only 256 colors and that all the applications which use the
348 default color map must share these colors. The main problem is
349 that there are applications which use a lot or even all the
350 colors. If you use such application you may have no more free
351 colors and some applications (which used only a few colors) may
352 fail to start or are unusable. There are three things that can be
353 done (and fvwm does not really play a particular role, all
354 applications are concerned). The first is to run the applications
355 which waste your (default) color map with a private color map. For
356 example, run netscape with the -install option, run
360 applications with the --cmap option, use the
362 option for fvwm. The disadvantage of this method is that it is
363 visually disturbing (see the
365 command for a better control of the color maps switching). The
366 second method is to limit the number of colors that the
367 applications use. Again, some applications have options to
368 specify a given color limit. With fvwm you may try various values,
369 61 (a special "visual" palette), 56 (a 4x4x3 color cube plus 6
370 grey), 29 (a 3x3x3 color cube plus 2 grey), 10 or 9. Also, you may
373 option. However, limiting the number of colors is not the
374 definitive solution. The definitive solution is to try cause
375 applications which use a lot of colors use the same colors. This
376 is a difficult task as there are no formal standards for this
377 goal. However, some toolkits as
381 use color cubes as palettes. So, the idea is to configure your
382 applications/toolkits to all use the same color cube. Moreover,
383 you can use the colors in this color cube in your X resources
384 configuration files and/or as arguments to colors options. Fvwm
385 can use any color cube of the form RxGxB with 2 <= R <= 6, R = G,
386 R-1 =< B <= R and B >= 2. To get an RxGxB color cube give an
389 an integer c >= R*G*B and < (R+1)*(G+1)*B if B=R and < R*G*(B+1)
390 if B < R (and different from 61). If c > R*G*B, then some grey may
391 be added to the color cube. You can use the
392 .BI "PrintInfo " Colors " " [1]
393 command to get information on your fvwm colors setting. In
394 particular, this command prints the palette used by fvwm in rgb
395 format (the last integer gives the number of times fvwm has
396 allocated the colors).
398 .BR "-L" " | " "--strict-color-limit"
399 If the screen displays 256 colors (or less) and has a dynamic visual,
400 causes fvwm to use its palette for all the colors. By default, the
401 palette is used only for images and gradients.
403 .BR "-P" " | " "--visual-palette"
404 If the screen displays 256 colors (or less) and has a dynamic
405 visual, this option causes fvwm to use a palette designed for
406 limiting the "visual" color distance between the points of the
407 palette. Moreover, for better color sharing, if possible colors
408 with a name in the X rgb data base are used for defining the
409 colors (with the hope that applications and images prefer to use
410 named colors). If the
412 option is not used this palette has 61 colors. This palette is
413 also automatically selected if 61 or 9 is used as argument to the
417 .BR "-A" " | " "--allocate-palette"
418 If the screen displays 256 colors (or less) and has a dynamic
419 visual this option causes fvwm to allocate all the colors of its
420 palette at start up for reserving these colors for future
421 use. This option forces the
423 option. By default, fvwm allocates (reserves) a color in its palette
424 only if it needs this color.
426 .BR "-S" " | " "--static-palette"
427 If the screen displays 256 colors (or less) and has a dynamic
428 visual this option causes fvwm to never free the colors in its
429 palette. By default, when fvwm does not need a color any more it
430 frees this color so that a new color can be used. This option may
431 speed up image loading and save a few bits of memory.
434 This option is provided for backward compatibility only. Blacking
435 out the screen during startup is not necessary (and doesn't work)
436 anymore. This option will be removed in the future.
438 .BI "--debug-stack-ring"
439 Enables stack ring debugging. This option is only intended for
440 internal debugging and should only be used by developers.
442 .SH ANATOMY OF A WINDOW
444 Fvwm puts a decorative border around most windows. This border
445 consists of a bar on each side and a small L-shaped section on
446 each corner. There is an additional top bar called the title-bar
447 which is used to display the name of the window. In addition,
448 there are up to 10 title-bar buttons. The top, side, and bottom
449 bars are collectively known as the side-bars. The corner pieces
450 are called the frame.
452 With the built-in minimal configuration, dragging mouse button 1
453 in the frame or side-bars begins a resize operation on the window.
454 Dragging mouse button 2 in the frame or side-bars begins a move
455 operation. There are raise/lower operations bound to a single
456 clicking on borders. Similarly for the window title.
458 Up to ten title-bar buttons may exist. Their use is completely
459 user definable. One popular configuration uses one button on the
460 left that is used to bring up a list of window options and two
461 buttons on the right used to iconify and maximize the window.
462 Another popular configuration adds a close button to the right.
463 The number of title-bar buttons used depends on which ones have
464 mouse actions bound to them. See the section on the
468 .SH THE VIRTUAL DESKTOP
470 Fvwm provides multiple virtual desktops for users who wish to use
471 them. The screen is a viewport onto a
473 which may be larger than the screen. Several distinct desktops
474 can be accessed (concept: one desktop for each project, or one
475 desktop for each application, when view applications are
476 distinct). Since each desktop can be larger than the physical
477 screen, divided into m by n
479 which are each the size of the physical screen, windows which are
480 larger than the screen or large groups of related windows can
483 The (m by n) size (i.e. number of pages) of the virtual desktops
484 can be changed any time, by using the
486 command. All virtual desktops must be (are) the same
487 size. The total number of distinct desktops does not need to be
488 specified, but is limited to approximately 4 billion total. All
489 windows on a range of desktops can be viewed in the
491 a miniature view of the desktops. The pager is an accessory
492 program, called a module, which is not essential for the window
493 manager to operate. Windows may also be listed, along with their
494 geometries, in a window list, accessible as a pop-up menu, or as a
495 separate window, called the
499 Fvwm keeps the windows on the desktop in a layered stacking order;
500 a window in a lower layer never obscures a window in a higher
501 layer. The layer of a window can be changed by using the
503 command. The concept of layers is a generalization of the
505 flag of older fvwm versions. The
506 .IR StaysOnTop " and " StaysPut
508 options are now implemented by putting the windows in suitable
509 layers and the previously missing
510 .IB "StaysOnBottom " Style
511 option has been added.
514 windows are windows which transcend the virtual desktop by
515 "Sticking to the screen's glass". They always stay put on the
516 screen. This is convenient for things like clocks and xbiffs, so
517 you only need to run one such gadget and it always stays with you.
518 Icons can also be made to stick to the glass, if desired.
520 Window geometries are specified relative to the current viewport.
525 creates a window in the upper left hand corner of the visible
526 portion of the screen. It is permissible to specify geometries
527 which place windows on the virtual desktop, but off the screen.
528 For example, if the visible screen is 1000 by 1000 pixels, and the
529 desktop size is 3x3, and the current viewport is at the upper left
530 hand corner of the desktop, invoking:
532 xterm -geometry +1000+1000
534 places a window just off of the lower right hand corner of the
535 screen. It can be found by moving the mouse to the lower right
536 hand corner of the screen and waiting for it to scroll into view.
537 A geometry specified as something like:
541 places the window's lower right hand corner 5 pixels from the
542 lower right corner of the visible portion of the screen. Not all
543 applications support window geometries with negative offsets.
544 Some applications place the window's upper right hand corner 5
545 pixels above and to the left of the upper left hand corner of the
546 screen; others may do just plain bizarre things.
548 There are several ways to cause a window to map onto a desktop or
549 page other than the currently active one. The geometry technique
550 mentioned above (specifying x,y coordinates larger than the
551 physical screen size), however, suffers from the limitation of
552 being interpreted relative to the current viewport: the window may
553 not consistently appear on a specific page, unless you always
554 invoke the application from the same page.
556 A better way to place windows on a different page, screen or desk
557 from the currently mapped viewport is to use the
558 .IR StartsOnPage " or " StartsOnScreen
559 style specification (the successors to the older
563 file. The placement is consistent: it does
564 not depend on your current location on the virtual desktop.
566 Some applications that understand standard Xt command line
567 arguments and X resources, like xterm and xfontsel, allow the user
568 to specify the start-up desk or page on the command line:
572 starts an xterm on desk number 1;
574 xterm -xrm "*Page:3 2 1"
576 starts an xterm two pages to the right and one down from the upper
577 left hand page of desk number 3. Not all applications understand
578 the use of these options, however. You could achieve the same
579 results with the following lines in your
591 .SH USE ON MULTI-SCREEN DISPLAYS
595 command line argument is not given, fvwm automatically starts up
596 on every screen on the specified display. After fvwm starts each
597 screen is treated independently. Restarts of fvwm need to be
598 performed separately on each screen. The use of
602 is strongly recommended for multi-screen displays. You may need
603 to quit on each screen to quit from the X session completely.
604 This is not to be confused with Xinerama support.
608 Fvwm supports the Xinerama extension of newer X servers which
609 is similar to multi head support (multiple screens) but allows to
610 move windows between screens. If Xinerama support has been
611 compiled into fvwm, it is used whenever fvwm runs on an X server
612 that supports and uses multiple screens via Xinerama. Without
613 this option, the whole desktop is treated as one big screen. For
614 example, menus might pop up right between two screens. The
616 command allows for specifying an explicit resistance value for moving
617 windows over the screen edge between two Xinerama screens.
618 Xinerama support can be enabled or disabled on the fly or from the
619 configuration file with the
621 command. Many modules and commands work nicely with Xinerama
624 Everywhere where a geometry in the usual X format can be supplied,
625 fvwm's Xinerama extension allows for specifying a screen in addition
626 to the geometry (or even the screen alone). To do this, a '@' is
627 added to the end of the geometry string followed by either the
628 screen number or a letter. A number is taken as the number of the
629 Xinerama screen to be used (as configured in the X server). The
630 letter can be one of 'g' for the global screen (the rectangle that
631 encloses all Xinerama screens), 'p' for the primary screen (see
632 below), 'c' for the current screen (the one that currently
633 contains the pointer). If the X server does not support Xinerama
634 or only one screen is used, the screen bit is ignored.
637 Style * IconBox 64x300-0-0@p
640 Xinerama support can be configured to use a primary screen. Fvwm
641 can be configured to place new windows and icons on this screen.
642 The primary screen is screen 0 by default but can be changed with
644 .B XineramaPrimaryScreen
647 Xinerama support was designed to work out of the box with the same
648 configuration file that would work on a single screen. It may
649 not perform very well if the involved screens use different screen
650 resolutions. In this situation, windows may get stuck in the
651 portion of the whole desktop that belongs to neither screen. When
652 this happens, the windows or icons can be retrieved with the
659 that can be entered in an FvwmConsole window or with FvwmCommand.
661 For multi-screen implementations other than Xinerama, such as
662 Single Logical Screen, it is possible to simulate a Xinerama
663 configuration if the total screen seen by fvwm is made up of
664 equal sized monitors in a rectangular grid. The commands
665 .BR XineramaSls ", " XineramaSlsSize " and " XineramaSlsScreens
666 are used to configure this feature.
670 During initialization, fvwm searches for a configuration file
671 which describes key and button bindings, and many other
672 things. The format of these files is described later. Fvwm first
673 searches for configuration files using the command
678 .IR config " in " "$FVWM_USERDIR" " and " "$FVWM_DATADIR"
679 directories, as described in
681 below. If this fails more files are queried for backward
682 compatibility. Here is the complete list of all file locations
683 queried in the default installation (only the first found file
687 /usr/local/share/fvwm/config
691 /usr/local/share/fvwm/.fvwm2rc
692 /usr/local/share/fvwm/system.fvwm2rc
695 Please note, the last 5 locations are not guaranteed to be
696 supported in the future.
698 If a configuration file is not found, the left mouse button, or
702 keys on the root window bring up menus and forms that can create
703 a starting configuration file.
705 Fvwm sets two environment variables which are inherited by its
708 which describes the display on which fvwm is running.
714 which doesn't work too well when passed through ssh to another
717 is set to a network-ready description of the display.
719 always uses the TCP/IP transport protocol (even for a local
722 should be used for local connections, as it may use Unix-domain
723 sockets, which are faster.
725 If you want to start some applications or modules with fvwm, you
736 but it is not recommended; do this only if you know what you are
737 doing. It is usually critical to start applications or modules
738 after the entire config is read, because it contains styles or
739 module configurations which can affect window appearance and
742 The standard way to start applications or modules on fvwm's start
743 up is to add them to an initialization function (usually
744 .BR StartFunction " or " InitFunction ).
745 This way they are only started after fvwm finishes to read and
750 Fvwm has three special functions for initialization:
752 which is executed on startups and restarts;
753 .BR InitFunction " and " RestartFunction ,
754 which are executed during initialization and restarts
755 (respectively) just after StartFunction. These functions may be
756 customized in a user's
760 command (described later) to start up modules, xterms, or whatever
761 you'd like to have started by fvwm.
763 Fvwm has also a special exit function:
765 executed when exiting or restarting before actually quitting.
766 It could be used to explicitly kill modules, etc.
768 If fvwm is run under a session manager, functions
769 .BR SessionInitFunction " and " SessionRestartFunction
770 are executed instead of InitFunction and RestartFunction.
771 This helps to define the user's
773 file to be good for both running under a session manager and
774 without it. Generally it is a bad idea to start xterms or other
775 applications in "Session*" functions. Also someone can decide to
776 start different modules while running under a session manager or
777 not. For the similar purposes
778 .B SessionExitFunction
779 is used instead of ExitFunction.
781 DestroyFunc StartFunction
782 AddToFunc StartFunction
783 + I Module FvwmPager * *
784 + I Module FvwmButtons
786 DestroyFunc InitFunction
787 AddToFunc InitFunction
788 + I Module FvwmBanner
789 + I Module FvwmTaskBar
790 + I xsetroot -solid cyan
794 DestroyFunc RestartFunction
795 AddToFunc RestartFunction
796 + I Module FvwmTaskBar
798 DestroyFunc SessionInitFunction
799 AddToFunc SessionInitFunction
800 + I Module FvwmBanner
802 DestroyFunc SessionRestartFunction
803 AddToFunc SessionRestartFunction
806 You do not need to define all special functions if some are empty.
807 Also note, all these special functions may be emulated now using
808 .BR StartFunction " and " ExitFunction,
811 DestroyFunc StartFunction
812 AddToFunc StartFunction
813 + I Test (Init) Module FvwmBanner
814 + I Module FvwmPager * *
815 + I Test (Restart) Beep
817 DestroyFunc ExitFunction
818 AddToFunc ExitFunction
819 + I Test (Quit) Echo Bye-bye
820 + I KillModule MyBuggyModule
821 + I Test (ToRestart) Beep
824 .SH COMPILATION OPTIONS
826 Fvwm has a number of compile-time options. If you have trouble
827 using a certain command or feature, check to see if support for it
828 was included at compile time. Optional features are described in
831 file that is generated during compilation.
843 images are monochrome. Fvwm can always display
849 formats are color images.
851 is a vector graphics image format.
853 options determine whether fvwm can display
861 file for more information.
865 compile-time option can make fvwm display spiffy
868 .SS SVG rendering options
869 By default SVG images are rendered as the image creator intended
870 them to. But since SVG is a vector graphics format, the images can
871 be rendered at any choosen size and rotation, e.g. making it possible
872 to use the same icon file rendered at diffrent sizes for the
873 .IR Icon " and " MiniIcon
876 The rendering options are specified as a string appended to the SVG
879 .B "\fIimage.svg\fP:\
880 [[-]\fIwidth\fPx[-]\fIheight\fP]\
881 [[+|-]\fIxpos\fP[+|-]\fIypos\fP]\
885 The option string always starts with a colon (':') to separate it
886 from the filename. An empty option string can skip this colon, but
887 it might still be a good idea to include it to prevent ambiguousness
888 if the filename contains any colon.
890 filename_without_colon.svg
891 filename:with:colon.svg:
896 specifies the dimensions of the rendering area in pixels, i.e. the
897 dimensions of the resulting image.
905 value of 0 to keep the aspect ratio.
912 mirrors the original image horizontally.
918 mirrors the original image vertically.
925 specifies a translation of the image in pixels. A positive
927 value moves the image to the right. A positive
929 value moves it down. Moving it partially outside of the rendering
930 area results in a cropped image.
937 specifies a rotation around the original image center in degrees.
938 A positive value rotates the image clockwise. Floating point values
947 specifes a scaling of the whole image. Scaling it up results in
948 a cropped image. Floting point values are recognized. Division by
954 Scaling down a translated or rotated image can prevent cropping.
958 Repeated usage of translation, rotation, and scaling is allowed.
959 Translation and rotation are additive. Scaling is multiplicative.
963 All of this can be combined. The following renders a horizontally
964 mirrored 30 pixels wide and 40 pixels high image rotated 60 degrees
965 counterclockwise in the lower left corner of a 75 pixels wide and
966 100 pixels high rendering area.
968 image.svg:-75x100-10+20@-60*2/5
973 A module is a separate program which runs as a separate Unix
974 process but transmits commands to fvwm to execute. Users can
975 write their own modules to do any weird or bizarre manipulations
976 without bloating or affecting the integrity of fvwm itself.
978 Modules must be spawned by fvwm so that it can set up two pipes
979 for fvwm and the module to communicate with. The pipes are
980 already open for the module when it starts and the file
981 descriptors for the pipes are provided as command line arguments.
983 Modules can be spawned by fvwm at any time during the X session by
986 command. Modules can exist for the duration of the X
987 session, or can perform a single task and exit. If the module is
988 still active when fvwm is told to quit, then fvwm closes the
989 communication pipes and waits to receive a SIGCHLD from the
990 module, indicating that it has detected the pipe closure and has
991 exited. If modules fail to detect the pipe closure fvwm exits
992 after approximately 30 seconds anyway. The number of
993 simultaneously executing modules is limited by the operating
994 system's maximum number of simultaneously open files, usually
997 Modules simply transmit commands to the fvwm command
998 engine. Commands are formatted just as in the case of a
1001 setup file. Certain auxiliary information is also transmitted, as
1002 in the sample module
1006 module is documented in its own man page.
1009 .B "MODULE COMMANDS"
1010 section for details.
1012 .SH ICCCM COMPLIANCE
1016 2.0 compliant. Check
1017 .BR http://tronche.com/gui/x/icccm/
1018 for more info. In addition,
1020 states that it should be possible for applications to receive any
1021 keystroke, which is not consistent with the keyboard shortcut
1022 approach used in fvwm and most other window managers. In
1023 particular you cannot have the same keyboard shortcuts working
1024 with your fvwm and another fvwm running within Xnest (a nested X
1025 server running in a window). The same problem exists with mouse
1030 states that windows possessing the property
1033 Client accepts input or input focus: False
1035 should not be given the keyboard input focus by the window
1036 manager. These windows can take the input focus by themselves,
1037 however. A number of applications set this property, and yet
1038 expect the window manager to give them the keyboard focus anyway,
1039 so fvwm provides a window style,
1041 which allows fvwm to overlook this
1043 rule. Even with this window style it is not guaranteed that the
1044 application accepts focus.
1046 The differences between
1048 1.1 and 2.0 include the ability to take over from a running
1050 2.0 compliant window manager; thus
1052 fvwm; vi ~/.fvwm/config; fvwm -replace
1056 command. It is not exactly the same, since killing the previously
1057 running wm may terminate your X session, if the wm was started as
1058 the last client in your
1059 .IR .Xclients " or " .Xsession
1062 Further additions are support for client-side colormap
1063 installation (see the
1065 for details) and the urgency hint. Clients can set this hint in
1066 the WM_HINTS property of their window and expect the window manager
1067 to attract the user's attention to the window. Fvwm has two re-definable
1068 functions for this purpose, "UrgencyFunc" and "UrgencyDoneFunc", which
1069 are executed when the flag is set/cleared. Their default definitions are:
1071 AddToFunc UrgencyFunc
1075 + I WarpToWindow 5p 5p
1076 AddToFunc UrgencyDoneFunc
1080 .SH GNOME COMPLIANCE
1084 (version 1) compliant. Check
1085 .B http://www.gnome.org
1086 for what that may mean. To disable
1088 hints for some or all windows, the
1092 .SH EXTENDED WINDOW MANAGER HINTS
1094 Fvwm attempts to respect the extended window manager hints (ewmh
1097 for short) specification:
1098 .BR http://www.freedesktop.org/wiki/Standards_2fwm_2dspec
1099 and some extensions of this specification. This allows fvwm to
1104 version 2 and other applications which respect this specification
1105 (any application based on
1107 version 2). Applications which respect this specification are
1108 called ewmh compliant applications.
1110 This support is configurable with styles and commands.
1111 These styles and commands have
1113 as the prefix (so you can find them easily in this man page).
1115 There is a new Context 'D' for the
1116 .BR Key ", " PointerKey ", " Mouse " and " Stroke
1117 commands. This context is for desktop applications (such as
1118 kdesktop and Nautilus desktop).
1120 When a compliant taskbar asks fvwm to activate a window (typically
1121 when you click on a button which represents a window in such a
1122 taskbar), then fvwm calls the complex function
1123 .B EWMHActivateWindowFunc
1124 which by default is Iconify Off, Focus and Raise. You can redefine
1125 this function. For example:
1127 DestroyFunc EWMHActivateWindowFunc
1128 AddToFunc EWMHActivateWindowFunc I Iconify Off
1131 + I WarpToWindow 50 50
1133 additionally warps the pointer to the center of the window.
1137 specification introduces the notion of Working Area. Without ewmh
1138 support the Working Area is the full visible screen (or all your
1139 screens if you have a multi head setup and you use Xinerama).
1140 However, compliant applications (such as a panel) can ask to
1141 reserve space at the edge of the screen. If this is the case, the
1142 Working Area is your full visible screen minus these reserved
1143 spaces. If a panel can be hidden by clicking on a button the
1144 Working Area does not change (as you can unhide the panel at any
1145 time), but the Dynamic Working Area is updated: the space reserved
1146 by the panel is removed (and added again if you pop up the
1147 panel). The Dynamic Working Area may be used when fvwm places or
1148 maximizes a window. To know if an application reserves space you
1149 can type "xprop | grep _NET_WM_STRUT" in a terminal and select the
1150 application. If four numbers appear then these numbers define the
1151 reserved space as explained in the
1155 .SH MWM COMPATIBILITY
1157 Fvwm provides options to emulate Motif Window Manager (Mwm) as
1158 well as possible. Please refer to the
1160 command as well as to the Mwm specific options of the
1161 .BR Style " and " MenuStyle
1162 commands for details.
1164 .SH OPEN LOOK and XVIEW COMPATIBILITY
1165 Fvwm supports all the Open Look decoration hints (except
1166 pushpins). Should you use any such application, please add the
1167 following line to your config:
1171 Most (perhaps all) Open Look applications have a strange notion of
1172 keyboard focus handling. Although a lot of work went into fvwm to
1173 work well with these, you may still encounter problems. It is
1174 recommended to use the NeverFocus focus policy and the NoLenience
1175 style for all such applications (the windows still get the focus):
1177 Style <application name> NeverFocus, NoLenience
1179 But in case you can not live with that focus policy, you can try
1180 using one of the other focus policies in combination with the
1183 Style <application name> MouseFocus, Lenience
1184 Style <application name> SloppyFocus, Lenience
1185 Style <application name> ClickToFocus, Lenience
1188 .SH M4 PREPROCESSING
1191 M4 pre-processing is handled by a module in fvwm. To get more
1194 In short, if you want fvwm to parse your files with m4, then
1201 file (if it appears at all), and start fvwm with the command
1203 fvwm -cmd "FvwmM4 config"
1206 .SH CPP PREPROCESSING
1209 Cpp is the C-language pre-processor. fvwm offers cpp processing
1210 which mirrors the m4 pre-processing. To find out about it,
1211 re-read the M4 section above, but replace "m4" with "cpp".
1216 Windows can be automatically raised when it receives focus, or
1217 some number of milliseconds after it receives focus, by using the
1221 .SH CONFIGURATION FILES
1223 The configuration file is used to describe mouse and button
1224 bindings, colors, the virtual display size, and related items.
1225 The initialization configuration file is typically called
1226 .IR config " (or " .fvwm2rc ")."
1229 command, it is easy to read in new configuration files as you go.
1231 Lines beginning with '#' are ignored by fvwm. Lines starting with
1232 \'*' are expected to contain module configuration commands (rather
1233 than configuration commands for fvwm itself). Like in shell
1234 scripts embedded newlines in a configuration file line can be
1235 quoted by preceding them with a backslash. All lines linked in
1236 this fashion are treated as a single line. The newline itself is
1239 Fvwm makes no distinction between configuration commands and
1240 action commands, so anything mentioned in the fvwm commands
1241 section can be placed on a line by itself for fvwm to execute as
1242 it reads the configuration file, or it can be placed as an
1243 executable command in a menu or bound to a mouse button or a
1244 keyboard key. It is left as an exercise for the user to decide
1245 which function make sense for initialization and which ones make
1248 .SH SUPPLIED CONFIGURATION
1250 A sample configuration file,
1251 .IR system.fvwm2rc ,
1252 is supplied with the fvwm distribution. It is well commented and
1253 can be used as a source of examples for fvwm configuration.
1254 It may be copied to /usr/local/share/fvwm/config file.
1256 Alternatively, the built-in menu (accessible when no
1257 configuration file is found) has options to create an initial
1258 config file for the user.
1261 .IR fvwm ", try " fvwm-themes
1262 package demonstrating the powerful fvwm functionality.
1264 .\" .SH INTERNATIONALIZATION
1265 .\" Internationalized fvwm enables to display not only LATIN-1
1266 .\" characters but also multi byte characters such as Japanese,
1267 .\" Korean, etc. You should set up your environment variable
1268 .\" .IR LC_TYPE " or " LANG ,
1269 .\" to enable this feature. Also, you should specify proper
1273 .\" Note that no catalog-file or input-methods are implemented.
1275 .SH FONT NAMES AND FONT LOADING
1277 The fonts used for the text of a window title, icon titles, menus
1278 and geometry window can be specified by using the Font and
1279 IconFont Style, the Font MenuStyle and the DefaultFont
1280 commands. Also, all the Modules which use text have configuration
1281 command(s) to specify font(s). All these styles and commands take
1282 a font name as an argument. This section explains what is a font
1283 name for fvwm and which fonts fvwm loads.
1285 First, you can use what we can call a usual font name, for
1288 -adobe-courier-bold-r-normal--10-100-75-75-m-60-ISO8859-1
1289 -adobe-courier-bold-r-normal--10-*
1290 -*-fixed-medium-o-normal--14-*-ISO8859-15
1292 That is, you can use an X Logical Font Description (XLFD for
1293 short). Then the "first" font which matches the description is
1294 loaded and used. This "first" font depends of your font path and
1295 also of your locale. Fonts which match the locale charset are
1296 loaded in priority order. For example with
1298 -adobe-courier-bold-r-normal--10-*
1300 if the locale is using an
1302 charset, fvwm tries to load a font which matches
1304 -adobe-courier-bold-r-normal--10-*-ISO8859-1
1306 with the locale charset
1310 -adobe-courier-bold-r-normal--10-*-ISO8859-15.
1313 A font name can be given as an extended XLFD. This
1314 is a comma separated list of (simple) XLFD font names, for example:
1316 -adobe-courier-bold-r-normal--14-*,-*-courier-medium-r-normal--14-*
1318 Each simple font name is tried until a matching font with the
1319 locale charset is found and if this fails each simple font name is
1320 tried without constraint on the charset.
1322 More details on the XLFD can be found in the X manual page, the X
1323 Logical Font Description Conventions document (called xlfd) and
1324 the XLoadFont and XCreateFontSet manual pages. Some useful font
1325 utilities are: xlsfonts, xfontsel, xfd and xset.
1327 If you have Xft support you can specify an Xft font name
1328 (description) of a true type (or Type1) font prefixed by "xft:",
1332 "xft:Luxi Mono:Medium:Roman:size=14:encoding=iso8859-1"
1334 The "first" font which matches the description is loaded. This
1335 first font depends on the XftConfig configuration file with Xft1
1336 and on the /etc/fonts/fonts.conf file with Xft2.
1337 One may read the Xft manual page and the fontconfig man page with
1338 Xft2. The first string which follows "xft:" is always considered
1339 as the family. With the second example Luxi Mono is the Family
1340 (Other XFree TTF families: "Luxi Serif", "Luxi Sans"), Medium is
1341 the Weight (other possible weights: Light, DemiBold, Bold, Black),
1342 Roman is the slant or the style (other possibilities: Regular,
1343 Oblique, Italic) size specifies the point size (for a pixel size
1344 use pixelsize=), encoding allows for enforce a charset (
1348 only; if no encoding is given the locale charset is assumed).
1349 An important parameter is "minspace=bool" where bool is True or
1350 False. If bool is False (the default?) Xft gives a greater font
1351 height to fvwm than if bool is True. This may modify text
1352 placement, icon and window title height, line spacing in menus and
1353 FvwmIdent, button height in some fvwm modules ...etc. With a LCD
1354 monitor you may try to add "rgba=mode" where mode is either rgb,
1355 bgr, vrgb or vbgr to enable subpixel rendering. The best mode
1356 depends on the way your LCD cells are arranged. You can pass other
1357 specifications in between ":", as
1358 "foundry=foundry_name", "spacing=type" where type can be
1359 monospace, proportional or charcell,
1360 "charwidth=integer", "charheight=integer" or "antialias=bool"
1361 where bool is True or False. It seems that these parameters are
1362 not always taken in account.
1364 To determine which Xft fonts are really loaded you can export
1365 XFT_DEBUG=1 before starting fvwm and take a look to the error
1366 log. With Xft2 you may use fc-list to list the available
1367 fonts. Anyway, Xft support is experimental (from the X and the
1368 fvwm point of view) and the quality of the rendering depends on
1369 number of parameters (the XFree and the freetype versions and your
1372 After an Xft font name you can add after a ";" an XLFD
1373 font name (simple or extended) as:
1375 xft:Verdana:pixelsize=14;-adobe-courier-bold-r-normal--14-*
1377 then, if either loading the Xft font fails or fvwm has no Xft
1378 support, fvwm loads the font
1379 "-adobe-courier-bold-r-normal--14-*". This allows for writing
1380 portable configuration files.
1382 .SH FONT AND STRING ENCODING
1384 Once a font is loaded, fvwm finds its encoding (or charset) using
1385 its name (the last two fields of the name). fvwm assumes that the
1386 strings which are displayed with this font use this encoding (an
1387 exception is that if an
1389 font is loaded, then
1391 is assumed for string encoding). In a normal situation,
1392 (i) a font is loaded by giving a font name without specifying the
1394 (ii) the encoding of the loaded font is the locale encoding, and
1396 (iii) the strings in the fvwm configuration files should use the
1397 locale encoding as well as the window and icon name. With Xft the
1398 situation is bit different as Xft supports only
1401 .SM iso8859-1 charsets. If you do not specify one of these
1402 encodings in the Xft font name, then fvwm does strings conversion
1403 using (iii). Note that with multibyte fonts (and in particular
1406 fonts) for good text rendering, the locale encoding should be the
1407 charset of the font.
1409 To override the previous rules, it is possible to specify the
1410 string encoding in the beginning of a font description as follow:
1412 StringEncoding=enc:_full_font_name_
1416 is an encoding supported by fvwm (usually font name charset plus some
1427 For example, you may use an
1429 locale charset and have an FvwmForm in Russian using
1431 encoding. In this case, you just have to ask FvwmForm to load a
1433 font by specifying the encoding in the font name. With a multibyte
1434 language, (as multibyte font works well only if the locale
1435 encoding is the charset of the font), you should use an
1439 StringEncoding=jisx0208.1983-0:-*-fixed-medium-r-*-ja-*-iso10646-1
1443 "StringEncoding=jisx0208.1983-0:xft:Bitstream Cyberbit"
1449 encoding. Another possibility is to use
1451 encoding for your FvwmForm configuration and use an
1455 -*-fixed-medium-r-*-ja-*-iso10646-1
1459 "StringEncoding=UTF-8:xft:Bitstream Cyberbit"
1463 "xft:Bitstream Cyberbit:encoding=iso10646-1"
1469 string encoding allows the display of any characters in a given
1472 More and more, unicode is used and text files use
1474 encoding. However, in practice the characters used range over your
1475 locale charset (this is the case when you generate a menu with
1476 fvwm-menu-desktop with recent versions of the
1480 desktop environments). For saving memory (an
1482 font may have a very large number of characters) or because you
1483 have a pretty font without an
1485 charset, you can specify the string encoding to be
1487 and use a font in the locale charset:
1489 StringEncoding=UTF-8:-*-pretty_font-*-12-*
1492 In most cases, fvwm correctly determines the encoding of the
1493 font. However, some fonts do not end with valid encoding
1494 names. When the font name isn't normal, for example:
1496 -misc-fixed-*--20-*-my_utf8-36
1498 you need to add the encoding after the font name using a slash as
1499 a delimiter. For example:
1501 MenuStyle * Font -misc-fixed-*--20-*-my_utf8-36/iso10646-1
1503 If fvwm finds an encoding, fvwm uses the iconv system functions to
1504 do conversion between encodings. Unfortunately, there are no
1505 standards. For conversion between
1513 and other systems use
1515 to define the converters (these two names are supported by
1516 fvwm). Moreover, in some cases it may be necessary to use machine
1517 specific converters. So, if you experience problems you can try to
1518 get information on your iconv implementation ("man iconv" may
1519 help) and put the name which defines the converter between the
1522 at the end of the font name after the encoding hint and a /
1523 (another possible solution is to use
1525 libiconv). For example use:
1527 Style * Font -misc-fixed-*--14-*-iso8859-1/*/latin1
1529 to use latin1 for defining the converter for the
1531 encoding. The "*" in between the "/" says to fvwm to determine
1532 the encoding from the end of the font name. Use:
1534 Style * Font -misc-fixed-*--14-*-local8859-6/iso8859-6/local_iso8859_6_iconv
1536 to force fvwm to use the font with
1538 as the encoding (this is useful for bi-directionality) and to use
1539 .SM local_iso8859_6_iconv
1540 for defining the converters.
1542 .SH FONT SHADOW EFFECTS
1544 Fonts can be given 3d effects. At the beginning of the font name
1545 (or just after a possible StringEncoding specification) add
1547 Shadow=size [offset] [directions]:
1550 is a positive integer which specifies the number of pixels of shadow.
1552 is an optional positive integer which defines the number of pixels
1553 to offset the shadow from the edge of the character. The default
1556 is an optional set of directions the shadow emanates from the
1559 are a space separated list of fvwm directions:
1561 .IR N ", " North ", " Top ", " t ", " Up ", " u ", " "-"
1563 .IR E ", " East ", " Right ", " r ", " Right ", " r ", " "]"
1565 .IR S ", " South ", " Bottom ", " b ", " Down ", " d ", " "_"
1567 .IR W ", " West ", " Left ", " l ", " Left ", " l ", " "["
1569 .IR NE ", " NorthEast ", " TopRight ", " tr ", " UpRight ", " ur ", " "^"
1571 .IR SE ", " SouthEast ", " BottomRight ", " br ", " DownRight ", " dr ", " ">"
1573 .IR SW ", " SouthWest ", " BottomLeft ", " bl ", " DownLeft ", " dl ", " "v"
1575 .IR NW ", " NorthWest ", " TopLeft ", " tl ", " UpLeft ", " ul ", " "<"
1577 .IR C ", " Center ", " Centre ", " .
1579 A shadow is displayed in each given direction.
1581 is equivalent to all the directions. The default
1587 direction, the shadow surrounds the whole string. Since this is a
1588 super set of all other directions, it is a waste of time to
1589 specify this along with any other directions.
1591 The shadow effect only works with colorsets. The color of the
1592 shadow is defined by using the
1596 command. Please refer to the
1598 section for details about colorsets.
1600 Note: It can be difficult to find the font,
1601 .IR fg ", " fgsh " and " bg
1602 colors to make this effect look good, but it can look quite good.
1604 .SH BI-DIRECTIONAL TEXT
1606 Arabic and Hebrew text require bi-directional text support to be
1607 displayed correctly, this means that logical strings should be
1608 converted before their visual presentation, so left-to-right and
1609 right-to-left sub-strings are determined and reshuffled.
1610 In fvwm this is done automatically in window titles, menus,
1611 module labels and other places if the fonts used for displaying the
1612 text are of one of the charsets that require
1614 (bi-directional) support. For example, this includes
1619 (unicode), but not other
1623 This bi-directional text support is done using the
1625 library compile time option, see
1628 .SH KEYBOARD SHORTCUTS
1630 Almost all window manager operations can be performed from the
1631 keyboard so mouse-less operation should be possible. In addition
1632 to scrolling around the virtual desktop by binding the
1634 command to appropriate keys,
1635 .BR Popup ", " Move ", " Resize ", "
1636 and any other command can be bound to keys. Once a command
1637 is started the pointer is moved by using the up, down,
1638 left, and right arrows, and the action is terminated by pressing
1639 return. Holding down the
1641 key causes the pointer movement to go in larger steps and holding
1644 key causes the pointer movement to go in smaller steps. Standard
1645 emacs and vi cursor movement controls (
1655 ) can be used instead of the arrow keys.
1657 .SH SESSION MANAGEMENT
1659 Fvwm supports session management according to the X Session
1660 Management Protocol. It saves and restores window position, size,
1661 stacking order, desk, stickiness, shadiness, maximizedness,
1662 iconifiedness for all windows. Furthermore, some global state is
1665 Fvwm doesn't save any information regarding styles, decors,
1666 functions or menus. If you change any of these resources during a
1667 session (e.g. by issuing
1669 commands or by using various modules), these changes are lost
1670 after saving and restarting the session. To become permanent,
1671 such changes have to be added to the configuration file.
1673 Note further that the current implementation has the following
1674 anomaly when used on a multi-screen display: Starting fvwm for the
1675 first time, fvwm manages all screens by forking a copy of itself
1676 for each screen. Every copy knows its parent and issuing a
1678 command to any instance of fvwm kills the master and thus all
1679 copies of fvwm. When you save and restart the session, the
1680 session manager brings up a copy of fvwm on each screen, but this
1681 time they are started as individual instances managing one screen
1684 kills only the copy it was sent to. This is probably not a very
1685 serious problem, since with session management, you are supposed
1686 to quit a session through the session manager anyway. If it is
1689 Exec exec killall fvwm
1691 still kills all copies of fvwm. Your system must have the
1695 .SH BOOLEAN ARGUMENTS
1697 A number of commands take one or several boolean arguments. These
1698 take a few equivalent inputs: "yes", "on", "true", "t" and "y" all
1699 evaluate to true while "no", "off", "false", "f" and "n" evaluate
1700 to false. Some commands allow "toggle" too which means that the
1701 feature is disabled if it is currently enabled and vice versa.
1703 .SH CONDITIONAL COMMANDS AND RETURN CODES
1705 Fvwm recognizes a number of commands that are executed only if
1706 certain conditions are met. For a complete description, please
1707 refer to the section
1708 .B CONDITIONAL COMMANDS
1711 .SH BUILT-IN KEY AND MOUSE BINDINGS
1713 The following commands are built-in to fvwm:
1715 Key Help R A Popup MenuFvwmRoot
1716 Key F1 R A Popup MenuFvwmRoot
1717 Key Tab A M WindowList Root c c NoDeskSort
1718 Key Escape A MC EscapeFunc
1719 Mouse 1 R A Menu MenuFvwmRoot
1720 Mouse 1 T A FuncFvwmRaiseLowerX Move
1721 Mouse 1 FS A FuncFvwmRaiseLowerX Resize
1722 Mouse 2 FST A FuncFvwmRaiseLowerX Move
1723 AddToFunc FuncFvwmRaiseLowerX
1732 keys invoke a built-in menu that fvwm creates. This is primarily
1733 for new users that have not created their own configuration
1734 file. Either key on the root (background) window pops up an menu
1735 to help you get started.
1739 key pressed anywhere with the
1743 key on PC keyboards) held down pop-ups a window list.
1745 Mouse button 1 on the title-bar or side frame can move, raise or
1748 Mouse button 1 on the window corners can resize, raise or lower a
1751 You can override or remove these bindings. To remove the window
1752 list binding, use this:
1757 .SH MODULE AND FUNCTION COMMANDS
1759 If fvwm encounters a command that it doesn't recognize,
1760 it checks to see if the
1761 specified command should have been
1763 Function (rest of command)
1767 Module (rest of command)
1769 This allows complex functions or modules to be invoked in a manner
1770 which is fairly transparent to the configuration file.
1774 file contains the line
1778 Fvwm looks for an fvwm command called "HelpMe", and fails.
1779 Next it looks for a user-defined complex function called "HelpMe".
1780 If no such function exists, fvwm tries to execute a
1781 module called "HelpMe".
1783 .SH DELAYED EXECUTION OF COMMANDS
1785 Note: There are many commands that affect look and feel of
1786 specific, some or all windows, like
1787 .BR Style ", " Mouse ", " Colorset ", " TitleStyle
1788 and many others. For performance reasons such changes are
1789 not applied immediately but only when fvwm is idle, i.e. no user
1790 interaction or module input is pending. Specifically, new
1792 options that are set in a function are not applied until after the
1793 function has completed. This can sometimes lead to unwanted
1796 To force that all pending changes are applied immediately, use the
1797 .BR UpdateStyles ", " Refresh " or " RefreshWindow
1802 Quotes are required only when needed to make fvwm consider two or
1803 more words to be a single argument. Unnecessary quoting is
1804 allowed. If you want a quote character in your text, you must
1805 escape it by using the backslash character. For example, if you
1806 have a pop-up menu called "Window-Ops", then you do not need
1811 but if you replace the dash with a space, then you need
1816 The supported quoting characters are double quotes, single quotes
1817 and reverse single quotes. All three kinds of quotes are treated
1818 in the same way. Single characters can be quoted with a preceding
1819 backslash. Quoting single characters works even inside other
1822 .SH COMMAND EXPANSION
1824 Whenever an fvwm command line is executed, fvwm performs parameter
1825 expansion. A parameter is a '$' followed by a word enclosed in
1826 brackets ($[...]) or a single special character. If fvwm
1827 encounters an unquoted parameter on the command line it expands it
1828 to a string indicated by the parameter name. Unknown parameters
1829 are left untouched. Parameter expansion is performed before
1830 quoting. To get a literal '$' use "$$".
1832 If a command is prefixed with a '-' parameter expansion isn't
1833 performed. This applies to the command immediately following the '-',
1834 in which the expansion normally would have taken place. When uesed
1835 together with other prefix commands it must be added before the other
1840 Pick -Exec exec xmessage '$[w.name]'
1842 opens an xmessage dialog with "$[w.name]" unexpanded.
1844 The longer variables may contain additional variables inside the
1845 name, which are expanded before the outer variable.
1847 In earlier versions of fvwm, some single letter variables were
1848 supported. It is deprecated now, since they cause a number of
1849 problems. You should use the longer substitutes instead.
1854 # Print the current desk number, horizontal page number
1855 # and the window's class (unexpanded here, no window).
1856 Echo $[desk.n] $[page.nx] $[w.class]
1859 Note: If the command is called outside a window context, it
1860 prints "$[w.class]" instead of the class name. It is usually not
1861 enough to have the pointer over a window to have a context window.
1862 To force using the window with the focus, the
1864 command can be used:
1866 Current Echo $[desk.n] $[page.nx] $[w.class]
1869 The parameters known by fvwm are:
1881 The absolute directory of the currently Read file. Intended for
1882 creating relative and relocatable configuration trees. If used
1883 outside of any read file, the returned value is '.'.
1890 The positional parameters given to a complex function (a function
1891 that has been defined with the
1893 command). "$0" is replaced with the first parameter, "$1" with
1894 the second parameter and so on. If the corresponding parameter is
1895 undefined, the "$..." is deleted from the command line.
1902 All positional parameters given to a complex function. This
1903 includes parameters that follow after "$9".
1912 positional parameter given to a complex function, counting from 0.
1913 If the corresponding parameter is undefined, the "$[n]" is deleted
1914 from the command line. The parameter is expanded unquoted.
1921 The positional parameters given to a complex function, starting
1924 and ending with parameter
1926 If all the corresponding parameters are undefined, the "$[...]" is
1927 deleted from the command line. If only some of the parameters are
1928 defined, all defined parameters are expanded, and the remaining
1929 silently ignored. All parameters is expanded unquoted.
1936 All the positional parameters given to a complex function,
1937 starting with parameter
1939 If all the corresponding parameters are undefined, the "$[...]" is
1940 deleted from the command line. All parameters is expanded
1948 All the positional parameters given to a complex function. This is
1949 equivalent of $[0-].
1956 The version number, like "2.6.0".
1963 The version info, like " (from cvs)", empty for the official
1971 The first line printed by the --version command line option.
1981 Either coordinate or the width or height of the current viewport.
1988 The current desk number.
1995 These parameters are replaced with the name of the desktop
1996 number <n> that is defined with the
1998 command. If no name is defined, then the default name is returned.
2006 The width or height of the whole desktop, i.e. the width or height
2007 multiplied by the number of pages in x or y direction.
2015 The number of total pages in a desk in x or y direction.
2016 This is the same as the values set by
2025 The current page numbers, by X and Y axes, starting from 0.
2038 The window-id (expressed in hex, e.g. 0x10023c) of the window the
2039 command was called for or "$[w.id]" if no window is associated
2051 $[w.iconfile.svgopts]
2052 $[w.miniiconfile.svgopts]
2054 The window's name, icon name, resource class and resource name,
2055 file name of its icon or mini icon defined with the
2056 .IR Icon " or " MiniIcon
2057 style (including the full path if the file was found on disk),
2058 and (if fvwm is compiled with SVG support) the icon or mini icon
2059 svg rendering options (including the leading colon), or unexpanded
2060 "$[w.<attribute>]" string if no window is associated with the command.
2062 Note, the first 4 variables may include any kind of characters, so
2063 these variables are quoted. It means that the value is surrounded
2064 by single quote characters and any contained single quote is
2065 prefixed with a backslash. This guarantees that commands like:
2067 Style $[w.resource] Icon norm/network.png
2069 work correctly, regardless of any special symbols the value may
2070 contain, like spaces and different kinds of quotes.
2080 Either coordinate or the width or height of the current window if
2081 it is not iconified. If no window is associated with the command
2082 or the window is iconified, the string is left as is.
2089 The number of the desk on which the window is shown. If the
2090 window is sticky the current desk number is used.
2097 The layer of the window.
2107 These work like $[w....] but return the geometry of the client
2108 part of the window. In other words: the border and title of the
2109 window is not taken into account.
2114 $[i.x], $[it.x], $[ip.x]
2115 $[i.y], $[it.y], $[ip.y]
2116 $[i.width], $[it.width], $[ip.width]
2117 $[i.height], $[it.height], $[ip.height]
2119 These work like $[w....] but return the geometry of the icon
2120 ($[i....]), the icon title ($[it....]) or the icon picture
2129 These return the position of the pointer on the screen. If the
2130 pointer is not on the screen, these variables are not expanded.
2138 These return the position of the pointer in the selected window.
2139 If the pointer is not on the screen, the window is iconified or
2140 no window is selected, these variables are not expanded.
2148 These return the position of the pointer in the client portion of
2149 the selected window. If the pointer is not on the screen, the
2150 window is shaded or iconified or no window is selected, these
2151 variables are not expanded.
2159 The screen number fvwm is running on. Useful for setups with
2176 These parameters are replaced with the name of the foreground
2177 (fg), background (bg), hilight (hilight) or shadow (shadow) color
2178 that is defined in colorset <n> (replace <n> with zero or a
2179 positive integer). For example "$[fg.cs3]" is expanded to the
2180 name of the foreground color of colorset 3 (in rgb:rrrr/gggg/bbbb
2181 form). Please refer to the
2183 section for details about colorsets.
2190 This is replaced by the id of the last command that was scheduled
2193 command, even if this command was already executed.
2200 This is replaced by the id the next command used with
2202 will get (unless a different id is specified explicitly).
2209 The return code of the last conditional command. This variable is
2210 only valid inside a function and can not be used in a conditional
2211 command. Please refer to the section
2212 .B CONDITIONAL COMMANDS
2213 in the command list.
2220 The context character of the running command as used in the
2221 .BS Mouse ", " Key " or " PointerKey
2222 command. This is useful for example with:
2224 Mouse 3 FS N WindowShade $$[func.context]
2232 return the translation of
2234 by looking in the current locale catalogs. If no translation is
2237 is returned as is. See the
2246 If the string within the braces is neither of the above, fvwm
2247 tries to find an environment variable with this name and replaces
2248 its value if one is found (e.g. "$[PAGER]" could be replaced by
2249 "more"). Otherwise the string is left as is.
2253 Some examples can be found in the description of the
2257 .SH SCRIPTING AND COMPLEX FUNCTIONS
2259 To achieve the more complex effects, fvwm has a number of
2260 commands that improve its scripting abilities. Scripts can be
2261 read from a file with
2263 from the output of a command with
2265 or written as a complex function with the
2267 command. For the curious, section 7 of the fvwm FAQ shows some
2268 real life applications of scripting. Please refer to the sections
2269 .B COMMANDS FOR USER FUNCTIONS AND SHELL COMMANDS
2271 .B CONDITIONAL COMMANDS
2272 for details. A word of warning: during execution of complex
2273 functions, fvwm needs to take all input from the mouse pointer
2274 (the pointer is "grabbed" in the slang of X). No other programs
2275 can receive any input from the pointer while a function is run.
2276 This can confuse some programs. For example, the xwd program
2277 refuses to make screen shots when run from a complex function. To
2278 achieve the same functionality you can use the
2279 .BR Read " or " PipeRead
2282 .SH THE LIST OF FVWM COMMANDS
2284 The command descriptions below are grouped together in the
2285 following sections. The sections are hopefully sorted in order of
2286 usefulness to the newcomer.
2289 - Miscellaneous commands
2290 - Commands affecting window movement and placement
2291 - Commands for focus and mouse movement
2292 - Commands controlling window state
2293 - Commands for mouse, key and stroke bindings
2294 - The Style command (controlling window styles)
2295 - Other commands controlling window styles
2296 - Commands controlling the virtual desktop
2297 - Commands for user functions and shell commands
2298 - Conditional commands
2300 - Quit, restart and session management commands
2307 Before a menu can be opened, it has to be populated with menu
2310 command and bound to a key or mouse button with the
2311 .BR Key ", " PointerKey " or " Mouse
2312 command (there are many other ways to invoke a menu too). This is
2313 usually done in the configuration file.
2315 Fvwm menus are extremely configurable in look and feel. Even the
2316 slightest nuances can be changed to the user's liking, including
2317 the menu item fonts, the background, delays before popping up sub
2318 menus, generating menus dynamically and many other features.
2321 command to learn more.
2326 In fvwm there are four slightly different types of menus:
2329 can appear everywhere on the screen on their own or attached to a
2330 part of a window. The
2332 command opens popup menus. If the popup menu was invoked with a
2333 mouse button held down, it is closed when the button is released.
2334 The item under the pointer is then activated and the associated
2338 is a very similar command, but the menus it opens are slightly less
2339 transient. When invoked by clicking a mouse button, it stays open
2340 and can be navigated with no button held. But if it is invoked by
2341 a button press followed by mouse motion, it behaves exactly like a
2344 .IR "Tear off menus" " or " "Pin up menus"
2345 are menus from either of the above two commands that have been
2346 "torn off" their original context and pinned on the desktop like a
2347 normal window. They are created from other menus by certain key
2348 presses or mouse sequences or with the
2350 command from inside a menu.
2353 are menus inside menus. When a menu item that has the
2355 command as its action is selected, the named menu is opened as an
2356 inferior menu to the parent. Any type of menu can have sub menus.
2361 Menus consist of any number of titles which are inactive menu
2362 items that usually appear at the top of the menu, normal items
2363 triggering various actions when selected, separator lines between
2364 the items, tear off bars (a horizontal broken line) that tear off
2365 the menu when selected, and sub menu items indicated with a
2366 triangle pointing left or right, depending on the direction in
2367 which the sub menu appears. All the above menu items are
2370 Additionally, if the menu is too long to fit on the screen, the
2371 excess menu items are put in a continuation menu and a sub menu
2372 with the string "More..." is placed at the bottom of the menu.
2373 Finally, there may be a picture running up either side of the menu
2379 Menus can be navigated either with the keyboard or with the
2380 mouse. Many people prefer to use the mouse, but it can be rather
2381 tedious. Once you get the hang of it, keyboard navigation can be
2382 much faster. While fvwm displays a menu, it can do nothing else.
2383 For example, new windows do not appear before the menu is closed.
2384 However, this is not exactly true for tear off menus. See the
2386 section for details.
2391 Moving the pointer over a menu selects the item below it.
2392 Normally this is indicated by a 3d border around the item, but not
2393 all parts of a menu can be selected. Pressing any mouse button
2394 while a menu is open by default activates the item below it. Items
2395 of a popup menu are also activated by releasing a held mouse button.
2396 In case of an item that hides a sub menu, the sub menu is
2397 displayed if the pointer hovers over the item long enough or moves
2398 close to the triangle indicating the sub menu. This behaviour can
2399 be tuned with menu styles.
2401 Scrolling a mouse wheel over a menu either wraps the pointer along the
2402 menu (default), scrolls the menu under the pointer or act as if the
2403 menu was clicked depending on the
2407 Clicking on a selected item activates it - what happens exactly
2408 depends on the type of the item.
2410 Clicking on a title, a separator, the side bar, or outside the
2411 menu closes the menu (exception: tear off menus can not be closed
2412 this way). Pressing mouse button 2 over a menu title or
2413 activating a tear off bar creates a tear off menu from the current
2414 menu. Clicking on a normal menu item invokes the command that is
2415 bound to it, and clicking on a sub menu item either closes all
2416 open menus and replaces them with the sub menu or posts the menu
2419 Posting menus is meant to ease mouse navigation. Once a sub menu
2420 is posted, only items from that sub menu can be selected. This
2421 can be very useful to navigate the menu if the pointer tends to
2422 stray off the menu. To unpost the menu and revert back to normal
2423 operation, either click on the same sub menu item or press any
2427 .B Keyboard Navigation
2429 Just like with mouse navigation, the item below the pointer is
2430 selected. This is achieved by warping the pointer to the menu
2431 items when necessary. While a menu is open, all key presses are
2432 intercepted by the menu. No other application can get keyboard
2433 input (although this is not the case for tear off menus).
2435 Items can be selected directly by pressing a hotkey that can be
2436 configured individually for each menu item. The hotkey is
2437 indicated by underlining it in the menu item label. With the
2439 menu style fvwm automatically assigns hotkeys to all menu items.
2441 The most basic keys to navigate through menus are the cursor keys
2442 (move up or down one item, enter or leave a sub menu),
2446 (close menu). Numerous other keys can be used to navigate through
2452 activate the current item.
2457 exit the current sequence of menus or destroy a tear off menu.
2461 .SM \fICursor-Down\fP,
2465 move to the next item.
2469 .SM \fICursor-Up\fP,
2470 .SM \fIShift-Tab\fP,
2471 .SM \fIShift-Meta-Tab\fP,
2473 move to the prior item.
2476 .SM \fICursor-Right\fP,
2481 .SM \fICursor-Left\fP,
2483 return to the prior menu.
2485 .SM \fICtrl-Cursor-Up\fP,
2488 .SM \fIShift-Ctrl-Meta-Tab\fP,
2492 .SM \fICtrl-Cursor-Down\fP,
2495 .SM \fICtrl-Meta-Tab\fP,
2497 move down five items.
2501 .SM \fIShift-Cursor-Up\fP,
2503 move to the first item.
2507 .SM \fIShift-Cursor-Down\fP,
2509 move to the last item.
2512 .SM \fIMeta-Cursor-Up\fP,
2513 .SM \fICtrl-Cursor-Left\fP,
2514 .SM \fIShift-Ctrl-Tab\fP
2515 move up just below the next separator.
2518 .SM \fIMeta-Cursor-Down\fP,
2519 .SM \fICtrl-Cursor-Right\fP,
2521 move down just below the next separator.
2524 opens the "More..." sub menu if any.
2531 The keys and mouse buttons used to navigate the menu can be configured
2533 .BR Key " and " Mouse
2534 commands with the special context 'M', possible combined with 'T' for
2535 the menu title, 'I' for other menu items, 'S' for any border or
2536 sidepic, '[' for left border including a left sidepic, ']' for right
2537 border including a right sidepic, '-' for top border, '_' for bottom
2538 border. The menu context uses its own set of actions that can be bound
2539 to keys and mouse buttons. These are
2540 .IR MenuClose ", " MenuEnterContinuation ", " MenuEnterSubmenu ", "
2541 .IR MenuLeaveSubmenu ", " MenuMoveCursor ", " MenuCursorLeft ", "
2542 .IR MenuCursorRight ", " MenuSelectItem ", " MenuScroll " and "
2545 It is not possible to override the key Escape with no modifiers for
2546 closing the menu. Neither is it possible to undefine mouse button 1,
2547 the arrow keys or the enter key for minimal navigation.
2550 exits from the current sequence of menus or destroys a tear off menu.
2552 .B MenuEnterContinuation
2553 opens the "More..." sub menu if any.
2559 returns to the prior menu.
2563 moves the selection to another item. If the first argument is zero
2564 the second argument specifies an absolute item in the menu to move
2565 the pointer to. Negative items are counted from the end of the menu.
2566 If the first argument is non-zero, the second argument must be omitted,
2567 and the first argument specifies a relative change in the selected item.
2568 The positions may be suffixed with a 's' to indicate that the items should
2569 refer only to the first items after separators.
2572 enters a sub menu with the
2574 menu style, and returns to the prior menu with the
2575 .IR SubmenusRight " menu style."
2578 enters a sub menu with the
2580 menu style, and returns to the prior menu with the
2581 .IR SubmenusLeft " menu style."
2584 triggers the action for the menu item.
2587 performs menu scrolling according to the
2588 .IR MouseWheel " menu style with " n " items. The distance can be"
2589 suffixed with an 's' to indicate the items should refer only to the
2590 first items after separators.
2593 turns a normal menu into a "torn off" menu. See
2600 A tear off menu is any menu that has been "torn off" the window it
2601 was attached to and pinned to the root window. There are three
2602 ways to tear off a menu: click on the menu title with mouse
2605 in the menu or activate its tear off bar (a horizontal bar with a
2606 broken line). Tear off bars must be added to the menu as any
2607 other item by assigning them the command
2610 The builtin tear off actions can be overridden by undefining the
2611 builtin menu actions bound to tear off. To remove the builtin mouse
2612 button 2 binding, use:
2618 and to remove the builtin backspace binding, use:
2626 for details on how to assign other bindings for tear off.
2628 Note that prior to fvwm 2.5.20 the tear off mouse bindings were
2629 redefined in different way, which no longer work.
2631 The window containing the menu is placed as any other window would
2632 be. If you find it confusing to have your tear off menus appear
2633 at random positions on the screen, put this line in your
2636 Style fvwm_menu UsePPosition
2639 To remove borders and buttons from a tear-off menu but keep the
2640 menu title, you can use
2643 Style fvwm_menu !Button 0, !Button 1
2644 Style fvwm_menu !Button 2, !Button 3
2645 Style fvwm_menu !Button 4, !Button 5
2646 Style fvwm_menu !Button 6, !Button 7
2647 Style fvwm_menu !Button 8, !Button 9
2648 Style fvwm_menu Title, HandleWidth 0
2651 A tear off menu is a cross breeding between a window and a menu.
2652 The menu is swallowed by a window and its title is stripped off
2653 and displayed in the window title. The main advantage is that the
2654 menu becomes permanent - activating an item does not close the
2655 menu. Therefore, it can be used multiple times without reopening
2656 it. To destroy such a menu, close its window or press the
2660 Tear off menus behave somewhat differently than normal menus and
2661 windows. They do not take the keyboard focus, but while the
2662 pointer is over one of them, all key presses are sent to the
2663 menu. Other fvwm key bindings are disabled as long as the pointer
2664 is inside the tear off menu or one of its sub menus. When the
2665 pointer leaves this area, all sub menus are closed immediately.
2666 Note that the window containing a tear off menu is never hilighted
2667 as if it had the focus.
2669 A tear off menu is an independent copy of the menu it originated
2670 from. As such, it is not affected by adding items to that menu or
2671 changing its menu style.
2673 To create a tear off menu without opening the normal menu first,
2675 .I TearOffImmediately
2677 .BR Menu " or " Popup
2681 .BI "AddToMenu " menu-name " [" menu-label " " action "]"
2683 Begins or adds to a menu definition. Typically a menu definition
2686 AddToMenu Utilities Utilities Title
2687 + Xterm Exec exec xterm -e tcsh
2688 + Rxvt Exec exec rxvt
2689 + "Remote Logins" Popup Remote-Logins
2690 + Top Exec exec rxvt -T Top -n \\
2692 + Calculator Exec exec xcalc
2693 + Xman Exec exec xman
2694 + Xmag Exec exec xmag
2695 + emacs Exec exec xemacs
2696 + Mail MailFunction \\
2699 + Modules Popup Module-Popup
2701 + Exit Fvwm Popup Quit-Verify
2703 The menu could be invoked via
2705 Mouse 1 R A Menu Utilities Nop
2709 Mouse 1 R A Popup Utilities
2711 There is no end-of-menu symbol. Menus do not have to be defined
2712 in a contiguous region of the
2714 file. The quoted (or first word)
2715 portion in the above examples is the menu label,
2716 which appears in the menu when the user pops it up. The remaining
2717 portion is an fvwm command which is executed if the user
2718 selects that menu item. An empty menu-label ("") and the
2720 function are used to insert a separator into the menu.
2723 .IR DynamicPopUpAction " and " DynamicPopDownAction
2724 have a special meaning when used as the name of a menu item. The
2725 action following the keyword is executed whenever the menu is
2726 popped up or down. This way you can implement dynamic menus. It
2727 is even possible to destroy itself with
2729 and the rebuild from scratch. When the menu has been destroyed
2730 (unless you used the
2732 option when destroying the menu), do not forget to add the dynamic
2735 Note: Do not trigger actions that require user interaction. They
2736 would probably fail and may screw up your menus. See the
2740 Warning: Do not issue
2742 commands as dynamic menu actions. Chances are good that this
2745 There are several configurable scripts installed together with fvwm
2746 for automatic menu generation. They have their own man pages.
2747 Some of them, specifically
2748 .BR fvwm-menu-directory " and " fvwm-menu-desktop ,
2750 .I DynamicPopupAction
2751 to create a directory listing or
2755 application listing.
2757 Example (File browser):
2759 # You can find the shell script fvwm_make_browse_menu.sh
2760 # in the utils/ directory of the distribution.
2761 AddToMenu BrowseMenu
2762 + DynamicPopupAction Piperead \\
2763 'fvwm_make_browse_menu.sh BrowseMenu'
2765 Example (Picture menu):
2767 # Build a menu of all .jpg files in
2769 AddToMenu JpgMenu foo title
2770 + DynamicPopupAction Function MakeJpgMenu
2772 AddToFunc MakeJpgMenu
2773 + I DestroyMenu recreate JpgMenu
2774 + I AddToMenu JpgMenu Pictures Title
2775 + I PipeRead 'for i in $HOME/Pictures/*.jpg; \\
2776 do echo AddToMenu JpgMenu "`basename $i`" Exec xv $i; done'
2779 .I MissingSubmenuFunction
2780 has a similar meaning. It is executed whenever you try to pop up
2781 a sub menu that does not exist. With this function you can define
2782 and destroy menus on the fly. You can use any command after the
2783 keyword, but if the name of an item (that is a submenu) defined with
2785 follows it, fvwm executes this command:
2787 Function <function-name> <submenu-name>
2789 I.e. the name is passed to the function as its first argument and
2790 can be referred to with "$0".
2793 .B fvwm-menu-directory
2794 script mentioned above may be used with
2795 .I MissingSubmenuFunction
2796 to create an up to date recursive directory listing.
2800 # There is another shell script fvwm_make_directory_menu.sh
2801 # in the utils/ directory of the distribution. To use it,
2802 # define this function in your configuration file:
2804 DestroyFunc MakeMissingDirectoryMenu
2805 AddToFunc MakeMissingDirectoryMenu
2806 + I PipeRead fvwm_make_directory_menu.sh $0
2808 DestroyMenu SomeMenu
2810 + MissingSubmenuFunction MakeMissingDirectoryMenu
2811 + "Root directory" Popup /
2813 This is another implementation of the file browser that uses
2814 sub menus for subdirectories.
2816 Titles can be used within the menu. If you add the option
2820 the title is added to the top of the menu. If there was a title
2821 already, it is overwritten.
2823 AddToMenu Utilities Tools Title top
2825 All text up to the first
2827 in the menu label is aligned to the left side of the menu, all
2828 text right of the first
2830 is aligned to the left in a second column and all text thereafter
2831 is placed right aligned in the third column. All other
2833 are replaced by spaces. Note that you can change this format with
2840 If the menu-label contains an ampersand ('&'), the next character
2841 is taken as a hot-key for the menu item. Hot-keys are underlined
2842 in the label. To get a literal '&', insert "&&". Pressing the
2843 hot-key moves through the list of menu items with this hot-key or
2844 selects an item that is the only one with this hot-key.
2846 If the menu-label contains a sub-string which is set off by stars,
2847 then the text between the stars is expected to be the name of an
2848 image file to insert in the menu. To get a literal
2849 \'*', insert "**". For example
2851 + Calculator*xcalc.xpm* Exec exec xcalc
2853 inserts a menu item labeled "Calculator" with a picture of a
2854 calculator above it. The following:
2856 + *xcalc.xpm* Exec exec xcalc
2858 Omits the "Calculator" label, but leaves the picture.
2860 If the menu-label contains a sub-string which is set off by
2861 percent signs, then the text between the percent signs is expected
2862 to be the name of image file (a so called mini icon to insert to
2863 the left of the menu label. A second mini icon that is drawn at
2864 the right side of the menu can be given in the same way. To get a
2865 literal '%', insert "%%". For example
2868 + Calculator%xcalc.xpm% Exec exec xcalc
2870 inserts a menu item labeled "Calculator" with a picture of a
2871 calculator to the left. The following:
2873 + %xcalc.xpm% Exec exec xcalc
2875 Omits the "Calculator" label, but leaves the picture. The
2876 pictures used with this feature should be small (perhaps 16x16).
2878 If the menu-name (not the label) contains a sub-string which is
2879 set off by at signs ('@'), then the text between them is expected
2880 to be the name of an xpm or bitmap file to draw along the left
2881 side of the menu (a side pixmap). You may want to use the
2885 command instead. To get a literal '@', insert "@@". For example
2887 AddToMenu StartMenu@linux-menu.xpm@
2889 creates a menu with a picture in its bottom left corner.
2891 If the menu-name also contains a sub-string surrounded by '^'s, then
2892 the text between '^'s is expected to be the name of an X11 color
2893 and the column containing the side picture is colored with that
2894 color. You can set this color for a menu style using the
2898 command. To get a literal '^', insert "^^". Example:
2900 AddToMenu StartMenu@linux-menu.xpm@^blue^
2902 creates a menu with a picture in its bottom left corner and
2903 colors with blue the region of the menu containing the picture.
2905 In all the above cases, the name of the resulting menu is name
2906 specified, stripped of the substrings between the various
2910 .BI "ChangeMenuStyle " "menustyle menu ..."
2911 Changes the menu style of
2912 .IR menu " to " menustyle .
2913 You may specify more than one menu in each call of
2914 .BR ChangeMenuStyle .
2916 ChangeMenuStyle pixmap1 \\
2917 ScreenSaverMenu ScreenLockMenu
2921 .BI "CopyMenuStyle " "orig-menustyle dest-menustyle"
2923 .IR orig-menustyle " to " dest-menustyle ,
2926 is an existing menu style. If the menu style
2928 does not exist, then it is created.
2931 .BI "DestroyMenu [" recreate "] " menu
2932 Deletes a menu, so that subsequent references to it are no longer
2933 valid. You can use this to change the contents of a menu during
2934 an fvwm session. The menu can be rebuilt using
2936 The optional parameter
2938 tells fvwm not to throw away the menu completely but to throw away
2939 all the menu items (including the title).
2941 DestroyMenu Utilities
2945 .BI "DestroyMenuStyle " menustyle
2946 Deletes the menu style named
2948 and changes all menus using this style to the default style, you
2949 cannot destroy the default menu style.
2951 DestroyMenuStyle pixmap1
2955 .B "Menu \fImenu-name\fP \
2957 ] [\fIdouble-click-action\fP\
2959 Causes a previously defined menu to be popped up in a sticky
2960 manner. That is, if the user invokes the menu with a click action
2961 instead of a drag action, the menu stays up. The command
2962 .I double-click-action
2963 is invoked if the user double-clicks a button (or hits the key
2964 rapidly twice if the menu is bound to a key) when bringing up the
2965 menu. If the double click action is not specified, double
2966 clicking on the menu does nothing. However, if the menu begins
2967 with a menu item (i.e. not with a title or a separator) and the
2968 double click action is not given, double clicking invokes the
2969 first item of the menu (but only if the pointer really was over
2972 The pointer is warped to where it was when the menu was invoked if
2973 it was both invoked and closed with a keystroke.
2977 arguments allow placement of the menu somewhere on the screen, for
2978 example centered on the visible screen or above a title bar.
2979 Basically it works like this: you specify a
2980 .I context-rectangle
2981 and an offset to this rectangle by which the upper left corner of
2982 the menu is moved from the upper left corner of the rectangle.
2985 arguments consist of several parts:
2987 .BI "[" context-rectangle "] " "x y" " [" special-options "]"
2990 .I context-rectangle
2996 the root window of the current screen.
3000 the root window of the whole Xinerama screen. Equivalent to
3001 "root" when Xinerama is not used.
3005 a 1x1 rectangle at the mouse position.
3009 the frame of the context window.
3013 the inside of the context window.
3017 the title of the context window or icon.
3021 button #n of the context window.
3025 the icon of the context window.
3033 the current menu item.
3037 the current window, menu or icon.
3041 whatever widget the pointer is on (e.g. a corner of a window or
3044 .BI "Rectangle <" geometry ">"
3046 the rectangle defined by
3048 in X geometry format. Width and height default to 1 if omitted.
3052 If the context-rectangle is omitted or illegal (e.g. "item" on a
3053 window), "Mouse" is the default. Note that not all of these make
3054 sense under all circumstances (e.g. "Icon" if the pointer is on a
3061 specify how far the menu is moved from it's default position. By
3062 default, the numeric value given is interpreted as a percentage of
3063 the context rectangle's width (height), but with a trailing
3065 the menu's width (height) is used instead. Furthermore a trailing
3067 changes the interpretation to mean pixels.
3069 Instead of a single value you can use a list of values. All
3070 additional numbers after the first one are separated from their
3071 predecessor by their sign. Do not use any other separators.
3075 are prefixed with "o<number>" where <number> is an integer, the
3076 menu and the rectangle are moved to overlap at the specified
3077 position before any other offsets are applied. The menu and the
3078 rectangle are placed so that the pixel at <number> percent of the
3079 rectangle's width/height is right over the pixel at <number>
3080 percent of the menu's width/height. So "o0" means that the
3081 top/left borders of the menu and the rectangle overlap,
3082 with "o100" it's the bottom/right borders and if you use "o50"
3083 they are centered upon each other (try it and you will see it is
3084 much simpler than this description). The default is "o0". The
3085 prefix "o<number>" is an abbreviation for "+<number>-<number>m".
3090 is equivalent to "o50". Examples:
3092 # window list in the middle of the screen
3095 # menu to the left of a window
3096 Menu name window -100m c+0
3098 # popup menu 8 pixels above the mouse pointer
3099 Popup name mouse c -100m-8p
3101 # somewhere on the screen
3102 Menu name rectangle 512x384+1+1 +0 +0
3104 # centered vertically around a menu item
3105 AddToMenu foobar-menu
3107 + "special item" Popup "another menu" item \\
3111 # above the first menu item
3112 AddToMenu foobar-menu
3113 + "first item" Popup "another menu" item \\
3116 Note that you can put a sub menu far off the current menu so you
3117 could not reach it with the mouse without leaving the menu. If
3118 the pointer leaves the current menu in the general direction of
3119 the sub menu the menu stays up.
3122 .IR special-options :
3125 To create a tear off menu without opening the normal menu, add the
3127 .IR TearOffImmediately .
3128 Normally the menu opens in normal state for a split second before
3129 being torn off. As tearing off places the menu like any other
3130 window, a position should be specified explicitly:
3132 # Forbid fvwm to place the menu window
3133 Style <name of menu> UsePPosition
3134 # Menu at top left corner of screen
3135 Menu Root 0p 0p TearOffImmediately
3139 .IR animated " and " Mwm " or " Win
3140 menu styles may move a menu somewhere else on the screen. If you
3141 do not want this you can add
3143 as an option. This might happen for example if you want the menu
3144 always in the top right corner of the screen.
3146 Where do you want a menu to appear when you click on it's menu
3147 item? The default is to place the title under the cursor, but if
3148 you want it where the position arguments say, use the
3150 option. If you want the pointer on the title of the menu, use
3152 too. Note that these options apply only if the
3153 .IB "PopupAsRootMenu " MenuStyle
3156 The pointer is warped to the title of a sub menu whenever the
3157 pointer would be on an item when the sub menu is popped up
3159 menu style) or never warped to the title at all
3160 .RI ( Mwm " or " Win
3161 menu styles). You can force (forbid) warping whenever the
3162 sub menu is opened with the
3163 .IR WarpTitle " (" NoWarp ") option."
3167 do work with a normal menu that has no other position arguments.
3171 .BI "MenuStyle " "stylename options"
3172 Sets a new menu style or changes a previously defined style. The
3174 is the style name; if it contains spaces or tabs it has to be
3175 quoted. The name "*" is reserved for the default menu style. The
3176 default menu style is used for every menu-like object (e.g. the
3177 window created by the
3179 command) that had not be assigned a style using the
3180 .BR ChangeMenuStyle .
3182 .BR DestroyMenuStyle .
3183 When using monochrome color options are ignored.
3186 is a comma separated list containing some of the keywords
3192 HilightBack / !HilightBack,
3194 ActiveFore / !ActiveFore,
3199 Hilight3DThick / Hilight3DThin / Hilight3DOff,
3201 Animation / !Animation,
3207 TitleWarp / !TitleWarp,
3208 TitleUnderlines0 / TitleUnderlines1 / TitleUnderlines2,
3209 SeparatorsLong / SeparatorsShort,
3210 TrianglesSolid / TrianglesRelief,
3211 PopupImmediately / PopupDelayed,
3212 PopdownImmediately / PopdownDelayed,
3217 PopupAsRootMenu / PopupAsSubmenu / PopupIgnore / PopupClose,
3218 RemoveSubmenus / HoldSubmenus,
3219 SubmenusRight / SubmenusLeft,
3222 VerticalItemSpacing,
3223 VerticalTitleSpacing,
3224 AutomaticHotkeys / !AutomaticHotkeys,
3226 ScrollOffPage / !ScrollOffPage,
3227 TrianglesUseFore / !TrianglesUseFore.
3229 In the above list some options are listed as option pairs or
3230 triples with a '/' in between. These options exclude each other.
3231 All paired options can be negated to have the effect of the
3232 counterpart option by prefixing ! to the option.
3234 Some options are now negated by prefixing ! to the option. This
3235 is the preferred form for all such options. The other negative
3236 forms are now deprecated and will be removed in the future.
3238 This is a list of MenuStyle deprecated negative options:
3239 ActiveForeOff, AnimationOff, AutomaticHotkeysOff, HilightBackOff,
3242 .IR Fvwm ", " Mwm ", " Win
3243 reset all options to the style with the same name in former
3244 versions of fvwm. The default for new menu styles is
3246 style. These options override all others except
3247 .IR Foreground ", " Background ", " Greyed ", " HilightBack ", "
3248 .IR ActiveFore " and " PopupDelay ,
3249 so they should be used only as the first option specified for a
3250 menu style or to reset the style to defined behavior. The same
3251 effect can be created by setting all the other options one by one.
3254 style menus popup sub menus automatically.
3256 menus indicate the current menu item by changing the background to
3259 sub menus overlap the parent menu,
3261 style menus never overlap the parent menu.
3264 style is equivalent to !HilightBack, Hilight3DThin,
3266 !Animation, Font, MenuFace, PopupOffset 0 67,
3267 TitleWarp, TitleUnderlines1, SeparatorsShort, TrianglesRelief,
3268 PopupDelayed, PopdownDelayed, PopupDelay 150, PopdownDelay 150,
3269 PopupAsSubmenu, HoldSubmenus,
3270 SubmenusRight, BorderWidth 2, !AutomaticHotkeys,
3274 style is equivalent to !HilightBack, Hilight3DThick,
3276 !Animation, Font, MenuFace, PopupOffset -3 100,
3277 !TitleWarp, TitleUnderlines2, SeparatorsLong, TrianglesRelief,
3278 PopupImmediately, PopdownDelayed, PopdownDelay 150,
3279 PopupAsSubmenu, HoldSubmenus, SubmenusRight, BorderWidth 2,
3280 !AutomaticHotkeys, PopupActiveArea 75.
3283 style is equivalent to HilightBack, Hilight3DOff, ActiveFore,
3284 !Animation, Font, MenuFace, PopupOffset -5 100, !TitleWarp,
3285 TitleUnderlines1, SeparatorsShort, TrianglesSolid,
3286 PopupImmediately, PopdownDelayed, PopdownDelay 150,
3287 PopupAsSubmenu, RemoveSubmenus, SubmenusRight, BorderWidth 2,
3288 !AutomaticHotkeys, PopupActiveArea 75.
3291 takes the thickness of the border around the menus in pixels. It
3292 may be zero to 50 pixels. The default is 2. Using an illegal
3293 value reverts the border width to the default.
3295 .IR Foreground " and " Background
3296 may have a color name as an argument. This color is used for menu
3297 text or the menu's background. You can omit the color name to
3298 reset these colors to the built-in default.
3301 may have a color name as an argument. This color is the one used
3302 to draw a menu-selection which is prohibited (or not recommended)
3303 by the Mwm hints which an application has specified. If the color
3304 is omitted the color of greyed menu entries is based on the
3305 background color of the menu.
3307 .IR HilightBack " and " !HilightBack
3308 switch hilighting the background of the selected menu item on and
3309 off. A specific background color may be used by providing the
3310 color name as an argument to
3312 If you use this option without an argument the color is based on
3313 the menu's background color. The
3315 option overrides the specified color. If the colorset has a
3316 non solid background it is used for the hilighting.
3319 switches hilighting the background of menu titles on. If a
3321 was used, the background colour is taken from there. Otherwise
3322 the color is based on the menu's background color. If the colorset
3323 has a non solid background it is used for the hilighting.
3325 .I ActiveFore " and " !ActiveFore
3326 switch hilighting the foreground of the selected menu item on and
3327 off. A specific foreground color may be used by providing the
3328 color name as an argument to
3330 Omitting the color turns hilighting on when an
3334 turns off hilighting the foreground completely. The
3336 option overrides the specified color.
3339 controls if a colorset is used instead of the
3340 .IR Foreground ", " Background " and " MenuFace
3343 keyword is followed by a number equal to zero or greater, this
3344 number is taken as the number of the colorset to use. If the
3345 number is omitted, the colorset is switched off and the regular
3346 menu styles are used again. The foreground and background colors
3347 of the menu items are replaced by the colors from the colorset. If
3348 the colorset has a pixmap defined, this pixmap is used as the
3349 background of the menu. Note that the
3351 menu style has been optimized for memory consumption and may use
3352 less memory than the background from a colorset. The shape mask
3353 from the colorset is used to shape the menu. Please refer to the
3355 section for details about colorsets.
3360 but the foreground from the colorset replaces the color given with
3363 menu style and the colorset's background color replaces the color
3366 command (to turn on background hilighting you have to use the
3368 menu style too). If specified, the hilight and shadow colors
3369 from the colorset are used too. The pixmap and shape mask from
3370 the colorset are not used. Hilighting the background or
3371 foreground can be turned off individually with the
3372 .IR !ActiveFore " or " !HilightBack
3378 but the foreground from the colorset replaces the color given with
3381 menu style. No other parts of the colorset are used.
3386 but is used only for menu titles.
3388 .IR Hilight3DThick ", " Hilight3DThin " and " Hilight3DOff
3389 determine if the selected menu item is hilighted with a 3D
3390 relief. Thick reliefs are two pixels wide, thin reliefs are one
3393 .I Hilight3DThickness
3394 takes one numeric argument that may be between -50 and +50
3395 pixels. With negative values the menu item gets a pressed in look.
3396 The above three commands are equivalent to a thickness of 2, 1 and
3399 .IR Animation " and " !Animation
3400 turn menu animation on or off. When animation is on, sub menus
3401 that do not fit on the screen cause the parent menu to be shifted
3402 to the left so the sub menu can be seen.
3404 .IR Font " and " TitleFont
3405 take a font name as an argument. If a font by this name exists
3406 it is used for the text of all menu items. If it does not exist
3407 or if the name is left blank the built-in default is used. If a
3409 is given, it is used for all menu titles instead of the normal font.
3412 enforces a fancy background upon the menus. You can use the same
3421 sections for more information. If you use
3423 without arguments the style is reverted back to normal.
3425 Some examples of MenuFaces are:
3427 MenuFace DGradient 128 2 lightgrey 50 blue 50 \\
3429 MenuFace TiledPixmap texture10.xpm
3430 MenuFace HGradient 128 2 Red 40 Maroon 60 \\
3432 MenuFace Solid Maroon
3434 Note: The gradient styles H, V, B and D are optimized for high
3435 speed and low memory consumption in menus. This is not the case
3436 for all the other gradient styles. They may be slow and consume
3437 huge amounts of memory, so if you encounter performance problems
3438 with them you may be better off by not using them. To improve
3439 performance you can try one or all of the following:
3441 Turn hilighting of the active menu item other than foreground
3444 MenuStyle <style> Hilight3DOff, !HilightBack
3445 MenuStyle <style> ActiveFore <preferred color>
3447 Make sure sub menus do not overlap the parent menu. This can
3448 prevent menus being redrawn every time a sub menu pops up or down.
3450 MenuStyle <style> PopupOffset 1 100
3452 Run your X server with backing storage. If your X Server is
3453 started with the -bs option, turn it off. If not try the -wm
3458 You may have to adapt this example to your system (e.g. if you use
3462 requires one numeric argument. This value is the delay in
3463 milliseconds before a sub menu is popped up when the pointer moves
3464 over a menu item that has a sub menu. If the value is zero no
3465 automatic pop up is done. If the argument is omitted the built-in
3466 default is used. Note that the popup delay has no effect if the
3468 option is used since sub menus pop up immediately then.
3471 makes menu items with sub menus pop up it up as soon as the
3472 pointer enters the item. The
3473 .I PopupDelay option
3476 is used fvwm looks at the
3478 option if or when this automatic popup happens.
3483 but determines the timeout of the
3487 .I PopdownImmediately
3488 makes sub menus vanish as soon as the pointer leaves the sub menu
3489 and the correspondent item in the parent menu. With the opposite
3492 the sub menu only pops down after the time specified with the
3494 option. This comes handy when the pointer often strays off the
3495 menu item when trying to move into the sub menu. Whenever there
3496 is a conflict between the
3497 .IR PopupImmediately ", " PopupDelayed ", " PopupDelay
3499 .IR PopdownImmediately ", " PopdownDelayed ", " PopdownDelay
3502 styles win when using mouse navigation and the
3504 styles win when navigating with the keyboard.
3507 requires two integer arguments. Both values affect where sub
3508 menus are placed relative to the parent menu. If both values are
3509 zero, the left edge of the sub menu overlaps the left edge of the
3510 parent menu. If the first value is non-zero the sub menu is
3511 shifted that many pixels to the right (or left if negative). If
3512 the second value is non-zero the menu is moved by that many
3513 percent of the parent menu's width to the right or left.
3516 requires an integer value between 51 and 100. Normally, when the
3517 pointer is over a menu item with a sub menu and the pointer enters
3518 the area that starts at 75% of the menu width, the sub menu is
3519 shown immediately. This percentage can be changed with
3520 .IR PopupActiveArea .
3521 Setting this value to 100 disables this kind of automatic popups
3522 altogether. The default value is restored if no or an illegal
3525 .IR TitleWarp " and " !TitleWarp
3526 affect if the pointer warps to the menu title when a sub menu is
3527 opened or not. Note that regardless of this setting the pointer is
3528 not warped if the menu does not pop up under the pointer.
3530 .IR TitleUnderlines0 ", " TitleUnderlines1 " and " TitleUnderlines2
3531 specify how many lines are drawn below a menu title.
3533 .IR SeparatorsLong " and " SeparatorsShort
3534 set the length of menu separators. Long separators run from the
3535 left edge all the way to the right edge. Short separators leave a
3536 few pixels to the edges of the menu.
3538 .IR TrianglesSolid " and " TrianglesRelief
3539 affect how the small triangles for sub menus is drawn. Solid
3540 triangles are filled with a color while relief triangles are
3544 requires one numeric argument. This value is the time in
3545 milliseconds between two mouse clicks in a menu to be considered
3546 as a double click. The default is 450 milliseconds. If the
3547 argument is omitted the double click time is reset to this
3551 takes the name of an image file as an argument. The
3552 picture is drawn along the left side of the menu. The
3554 option can be overridden by a menu specific side pixmap (see
3556 If the file name is omitted an existing side pixmap is removed from
3560 takes the name of an X11 color as an argument. This color is used
3561 to color the column containing the side picture (see
3562 above). The SideColor option can be overridden by a menu specific
3565 If the color name is omitted the side color option is switched off.
3567 .IR PopupAsRootMenu ", " PopupAsSubmenu ", " PopupIgnore " and " PopupClose
3568 change the behavior when you click on a menu item that opens a
3571 the original menu is closed before the sub menu appears, with
3573 it is not, so you can navigate back into the
3574 parent menu. Furthermore, with
3576 the sub menu is held open (posted) regardless of where you move
3577 the mouse. Depending on your menu style this may simplify
3578 navigating through the menu. Any keystroke while a menu is posted
3579 reverts the menu back to the normal behavior. With
3581 the menu is closed when a sub menu item is activated, and the menu
3584 is used (even if the menu was invoked with the
3591 instructs fvwm to remove sub menu when you move back into the
3594 the sub menu remains visible. You probably want to use
3596 if you are using the
3600 affects menu navigation with the keyboard.
3603 takes an optional key name as an argument. If the given key is
3604 released in a menu using this style, the current menu item is
3605 selected. This is intended for
3609 The key name is a standard X11 key name as defined in
3610 .IR /usr/include/X11/keysymdef.h ,
3613 prefix), or the keysym database
3614 .IR /usr/X11R6/lib/X11/XKeysymDB .
3615 To disable this behavior, omit
3618 Note: Some X servers do not support KeyRelease events.
3620 does not work on such a machine.
3623 takes a special string as its argument that determines the layout
3624 of the menu items. Think of the format string as if it were a
3625 menu item. All you have to do is tell fvwm where to place the
3626 different parts of the menu item (i.e. the labels, the triangle
3627 denoting a sub menu, the mini icons and the side pic) in the blank
3628 area. The string consists of spaces,
3630 characters and formatting directives beginning with '%'. Any
3631 illegal characters and formatting directives are silently ignored:
3634 .BR %l ", " %c " and " %r
3636 Insert the next item label. Up to three labels can be used. The
3637 item column is left-aligned
3646 Inserts the mini icon.
3650 Insert the sub menu triangle pointing either to the right
3659 denotes the beginning of the area that is highlighted either with
3660 a background color or a relief (or both). The second
3662 marks the end of this area.
3664 can be used up to twice in the string. If you do not add one or
3665 both of them, fvwm sets the margins to the margins of the whole
3666 item (not counting the side picture).
3670 Places the side picture either at the beginning or the end of the
3671 menu. This directive may be used only once and only as the first
3672 or last in the format string. If the
3674 is not at the beginning of the string, menus are not drawn properly.
3676 .BR Space ", " Tab ", " %Space " and " %Tab
3678 Add gap of one space, or a tab, using the width of the menu font.
3679 When using a tab, the size of the gap can be one to 8 spaces
3680 since the tab position is a multiple of 8 from the edge of the menu.
3681 The whole string must be quoted if spaces or tabs are used.
3690 inserts an empty area into the item, but with better control of
3691 its size (see below).
3695 You can define an additional space before and after each of the
3698 .BI % left . right p
3700 This means: if the object is defined in the menu (e.g. if it is
3702 and you use a side picture, or it is
3704 for the third column and there are items defined that actually
3705 have a third column), then add
3707 pixels before the object and
3709 pixels after it. You may leave out the
3713 parts if you do not need them. All values up to the screen width
3714 are allowed. Even negative values can be used with care. The
3716 may be replaced with any other formatting directives described
3719 Note: Only items defined in the format string are visible in the
3720 menus. So if you do not put a
3722 in there you do not see a side picture, even if one is specified.
3726 style changes the default
3728 string, but if it was set manually it is not modified.
3730 Note: If any unformatted title of the menu is wider than the
3731 widest menu item, the spaces between the different parts of the
3732 menu items are enlarged to match the width of the title. Leading
3733 left aligned objects in the format string
3734 .RB ( %l ", " %i ", "%< ", first " %| )
3735 stick to the left edge of the menu and trailing right aligned
3737 .RB ( %r ", " %i ", "%> ", second " %| )
3738 stick to the right edge. The gaps between the remaining items are
3743 MenuStyle * ItemFormat \\
3744 "%.4s%.1|%.5i%.5l%.5l%.5r%.5i%2.3>%1|"
3746 Is the default string used by fvwm: (side picture + 4 pixels gap)
3747 (beginning of the hilighted area + 1 pixel gap) (mini icon + 5p)
3748 (first column left aligned + 5p) (second column left aligned + 5p)
3749 (third column right aligned + 5p) (second mini icon + 5p) (2p +
3750 sub menu triangle + 3p) (1p + end of hilighted area).
3752 MenuStyle * ItemFormat \\
3753 "%.1|%3.2<%5i%5l%5l%5r%5i%1|%4s"
3755 Is used by fvwm with the
3759 .IR VerticalItemSpacing " and " VerticalTitleSpacing
3760 control the vertical spacing of menu items and titles like
3762 controls the horizontal spacing. Both take two numeric arguments
3763 that may range from -100 to +100. The first is the gap in pixels
3764 above a normal menu item (or a menu title), the second is the gap
3765 in pixels below it. Negative numbers do not make much sense and
3766 may screw up the menu completely. If no arguments are given or
3767 the given arguments are invalid, the built-in defaults are used:
3768 one pixel above the item or title and two below.
3771 mirrors the menu layout and behavior. Sub menus pop up to the
3772 left, the sub menu triangle is drawn left and the mini icon and
3773 side picture are drawn at the right side of the menu. The default
3776 The position hints of a menu are also affected by this setting,
3777 i.e. position hints using
3778 .IR item " or " menu
3779 as context rectangle and position hints using
3783 .IR AutomaticHotkeys " and " !AutomaticHotkeys
3784 control the menu's ability to automatically provide hot-keys on
3785 the first character of each menu item's label. This behavior is
3786 always overridden if an explicit hot-key is assigned in the
3791 controls the ability to scroll the menu using a mouse wheel. It takes
3792 one argument, that can be one of
3793 ScrollsPointer, ScrollsMenu, ScrollsMenuBackwards or ActivatesItem.
3794 ScrollsPointer makes the mouse wheel scroll the pointer over a menu.
3795 This is the default. ScrollsMenu and ScrollsMenuBackwards scroll the menu
3796 beneath the pointer. ActivatesItem disables scrolling by mouse wheel and
3797 makes the use of a mouse wheel act as if the menu was clicked.
3798 If no argument is supplied the default setting is restored.
3801 allows a menu to be scrolled out of the visible area if
3803 is set to ScrollsMenu or ScrollsMenuBackwards. This is the default.
3806 disables this behaviour.
3809 draws sub menu triangles with the foreground color of the menu colorset
3810 (normally drawn with the hilight color).
3811 .I !TrianglesUseFore
3812 disables this behaviour.
3817 MenuStyle * Foreground Black, Background gray40
3818 MenuStyle * Greyed gray70, ActiveFore White
3819 MenuStyle * !HilightBack, Hilight3DOff
3820 MenuStyle * Font lucidasanstypewriter-14
3821 MenuStyle * MenuFace DGradient 64 darkgray \\
3825 MenuStyle red Foreground Yellow
3826 MenuStyle red Background Maroon
3827 MenuStyle red Greyed Red, ActiveFore Red
3828 MenuStyle red !HilightBack, Hilight3DOff
3829 MenuStyle red Font lucidasanstypewriter-12
3830 MenuStyle red MenuFace DGradient 64 Red Black
3832 Note that all style options could be placed on a single line for
3836 .BI "MenuStyle " "forecolor backcolor shadecolor font style" " [" anim "]"
3837 This is the old syntax of the
3839 command. It is obsolete and may be removed in the future. Please
3840 use the new syntax as described above.
3842 Sets the menu style. When using monochrome the colors are
3845 is the one used to draw a menu-selection which is prohibited (or
3846 not recommended) by the Mwm hints which an application has
3847 specified. The style option is either
3848 .IR Fvwm ", " Mwm " or " Win ,
3849 which changes the appearance and operation of the menus.
3852 style menus popup sub menus automatically.
3854 menus indicate the current menu item by changing the background to
3857 sub menus overlap the parent menu,
3859 style menus never overlap the parent menu.
3863 option is given, sub menus that do not fit on the screen cause the
3864 parent menu to be shifted to the left so the sub menu can be
3870 .BI "Popup " PopupName " [" position "] [" default-action "]"
3871 This command has two purposes: to bind a menu to a key or mouse
3872 button, and to bind a sub menu into a menu. The formats for the
3873 two purposes differ slightly. The
3875 arguments are the same as for
3879 is invoked if the user clicks a button to invoke the menu and
3880 releases it immediately again (or hits the key rapidly twice if
3881 the menu is bound to a key). If the default action is not
3882 specified, double clicking on the menu does nothing. However, if
3883 the menu begins with a menu item (i.e. not with a title or a
3884 separator) and the default action is not given, double clicking
3885 invokes the first item of the menu (but only if the pointer really
3888 To bind a previously defined pop-up menu to a key or mouse button:
3891 The following example binds mouse buttons 2 and 3 to a pop-up
3892 called "Window Ops". The menu pops up if the buttons 2 or 3 are
3893 pressed in the window frame, side-bar, or title-bar, with no
3894 modifiers (none of shift, control, or meta).
3896 Mouse 2 FST N Popup "Window Ops"
3897 Mouse 3 FST N Popup "Window Ops"
3899 Pop-ups can be bound to keys through the use of the
3901 command. Pop-ups can be operated without using the mouse by
3902 binding to keys and operating via the up arrow, down arrow, and
3906 To bind a previously defined pop-up menu to another menu, for use
3910 The following example defines a sub menu "Quit-Verify" and binds
3911 it into a main menu, called "RootMenu":
3913 AddToMenu Quit-Verify
3914 + "Really Quit Fvwm?" Title
3915 + "Yes, Really Quit" Quit
3916 + "Restart Fvwm" Restart
3917 + "Restart Fvwm 1.xx" Restart fvwm1 -s
3919 + "No, Don't Quit" Nop
3921 AddToMenu RootMenu "Root Menu" Title
3922 + "Open XTerm Window" Popup NewWindowMenu
3923 + "Login as Root" Exec exec xterm \\
3924 -fg green -T Root \\
3926 + "Login as Anyone" Popup AnyoneMenu
3927 + "Remote Hosts" Popup HostMenu
3929 + "X utilities" Popup Xutils
3931 + "Fvwm Modules" Popup Module-Popup
3932 + "Fvwm Window Ops" Popup Window-Ops
3934 + "Previous Focus" Prev (AcceptsFocus) Focus
3935 + "Next Focus" Next (AcceptsFocus) Focus
3937 + "Refresh screen" Refresh
3939 + "Reset X defaults" Exec xrdb -load \\
3943 + Quit Popup Quit-Verify
3950 in that pop-ups do not stay up if the user simply clicks. These
3951 are popup-menus, which are a little hard on the wrist.
3953 menus stay up on a click action. See the
3955 command for an explanation of the interactive behavior of menus. A
3956 menu can be open up to ten times at once, so a menu may even use
3957 itself or any of its predecessors as a sub menu.
3961 When assigned to a menu item, it inserts a tear off bar into the
3962 menu (a horizontal broken line). Activating that item tears off
3963 the menu. If the menu item has a label, it is shown instead of
3964 the broken line. If used outside menus, this command does
3967 AddToMenu WindowMenu
3971 + I "click here to tear me off" TearMenuOff
3976 Does nothing. This is used to insert a title line in a popup or
3979 .SS MISCELLANEOUS COMMANDS
3982 .BI "BugOpts [" option " [" bool "]], " ...
3983 This command controls several workarounds for bugs in third party
3984 programs. The individual options are separated by commas. The
3987 is a boolean argument and controls if the bug workaround is
3988 enabled or not. It can either be "True" or "False" to turn the
3989 option on or off, or "toggle" to switch is back and forth. If
3991 is omitted, the default setting is restored.
3993 .I FlickeringMoveWorkaround
3994 disables ConfigureNotify events that are usually sent to an
3995 application while it is moved. If some windows flicker annoyingly
3996 while being moved, this option may help you. Note that if this
3997 problem occurs it is not an fvwm bug, it is a problem of the
4000 .I MixedVisualWorkaround
4001 makes fvwm install the root colormap before it does some
4002 operations using the root window visuals. This is only useful
4005 option is used to start fvwm and then only with some
4006 configurations of some servers (e.g. Exceed 6.0 with an 8 bit
4007 PseudoColor root and fvwm using a 24 bit TrueColor visual).
4011 option controls whether Motif applications have the ability to
4012 have modal dialogs (dialogs that force you to close them first
4013 before you can do anything else). The default is to not allow
4014 applications to have modal dialogs. Use this option with
4015 care. Once this option is turned on, you have to restart fvwm to
4018 .I RaiseOverNativeWindows
4019 makes fvwm try to raise the windows it manages over native windows
4020 of the X server's host system. This is needed for some X servers
4021 running under Windows or Windows NT. Fvwm tries to detect if it
4022 is running under such an X server and initializes the flag
4025 .I RaiseOverUnmanaged
4026 makes fvwm try to raise the windows it manages over
4027 override_redirect windows. This is used to cope with ill-mannered
4028 applications that use long-lived windows of this sort, contrary to
4030 conventions. It is useful with the
4034 .I FlickeringQtDialogsWorkaround
4035 suppresses flickering of the focused window in some modules when
4040 applications with application modal dialog windows. By default
4041 this option is turned on. This option may be visually disturbing
4042 for other applications using windows not managed by fvwm. Since
4043 these applications are rare it is most likely safe to leave this
4044 option at its default.
4046 .I EWMHIconicStateWorkaround
4049 compliant pagers or taskbars which represent windows which are on
4050 a different desktops as iconified. These pagers and taskbars use a
4053 specification before version 1.2 (the current
4055 2 & 3 versions). These pagers and taskbars use the IconicState
4057 state to determine if an application is iconified. This state,
4060 does not imply that a window is iconified (in the usual sense).
4061 Turning on this option forces fvwm to establish an equivalence
4062 between the IconicState
4064 state and the iconified window. This violates
4066 compliance but should not cause big problems. By default this
4070 .I DisplayNewWindowNames
4071 enabled, fvwm prints the name, icon name (if available), resource
4072 and class of new windows to the console. This can help in finding
4073 the correct strings to use in the
4078 .I ExplainWindowPlacement
4079 option is enabled, fvwm prints a message to the console whenever a
4080 new window is placed or one of the commands
4081 .BR PlaceAgain ", " Recapture " or " RecaptureWindow
4082 is used. The message explains on which desk, page, Xinerama
4083 screen and position it was placed and why. This option can be
4084 used to figure out why a specific window does not appear where you
4088 .I DebugCRMotionMethod
4089 option enables some debugging code in the ConfigureRequest
4090 handling routines of fvwm. It is not helpful for the user, but if
4091 you report a bug to the fvwm team we may ask you to enable this
4095 .BI "BusyCursor [" "Option bool" "], " ...
4096 This command controls the cursor during the execution of certain
4100 .IR DynamicMenu ", " ModuleSynchronous ", " Read ", " Wait ", " * .
4101 An option must be followed by a boolean argument
4103 You can use commas to separate individual options. If you set an
4104 option to "True", then when the corresponding command is run, fvwm
4105 displays the cursor of the
4109 command. "False" forces to not display the cursor. The default is:
4111 BusyCursor DynamicMenu False, \\
4112 ModuleSynchronous False, Read False, \\
4113 Recapture True, Wait False
4117 refers to all available options.
4121 option also controls the
4128 .I DynamicPopupAction
4130 .I MissingSubmenuFunction
4133 command. If this option is set to "False", then the busy cursor
4134 is not displayed during a dynamic menu command even if this
4136 .BR Read " or " PipeRead
4139 option is set to "True".
4143 option affects only the root cursor. During a wait pause the root
4144 cursor is replaced by the busy cursor and fvwm is still fully
4145 functional (you can escape from the pause, see the
4147 command). If you want to use this option and if you do not use
4148 the default root cursor, you must set your root cursor with the
4153 .BI "ClickTime [" delay "]"
4154 Specifies the maximum delay in milliseconds between a button press
4155 and a button release for the
4157 command to consider the action a mouse click. The default delay
4158 is 150 milliseconds. Omitting the delay value resets the
4163 .BI "ColorLimit " limit
4164 This command is obsolete. See the
4169 .\"on the colors used in pixmaps used by fvwm. Zero (the default)
4170 .\"sets no limit. Fvwm uses pixmaps for icons, mini-icons, and
4171 .\"pixmap borders, menu backgrounds and titles. This command limits
4172 .\"pixmap colors to a set of colors that starts out with common
4173 .\"colors. The current list contains about 60 colors and starts with
4174 .\"white, black, grey, green, blue, red, cyan, yellow, and magenta.
4179 .\"would limit pixmaps to these 9 colors.
4181 .\"It makes the most sense to put this command at the front of the
4183 .\"file. This command should occur before any menu definitions that
4184 .\"contain mini-icons.
4186 .\"Solid frame and title colors (including shadows and gradients) are
4187 .\"not controlled by this command.
4189 .\"This command only makes sense on screens that display a limited
4190 .\"number of colors at once. If your display can display more than
4191 .\"2 million colors at once, this command is ignored. Screens that
4192 .\"only display 256 colors at once are known as 8 bit displays. The 2
4193 .\"million color cutoff point corresponds to 21 bit color, the most
4194 .\"common screen that exceeds this limit would be 24 bit.
4196 .\"On 8 bit displays, the default color limit is set to the size of
4197 .\"the built-in table (about 60). We recommend that you start with
4198 .\"the default value, and not include this command in your
4199 .\".IR config " file."
4202 .BI "ColormapFocus " FollowsMouse | FollowsFocus
4203 By default, fvwm installs the colormap of the window that the
4204 cursor is in. If you use
4206 ColormapFocus FollowsFocus
4208 then the installed colormap is the one for the window that
4209 currently has the keyboard focus.
4212 .B "CursorStyle \fIcontext\fP [\fInumber\fP\
4219 Defines a new cursor for the specified context. Note that this
4220 command can not control the shapes an applications uses, for
4221 example, to indicate that it is busy. The various contexts are:
4224 .BR "POSITION " (top_left_corner)
4226 used when initially placing windows
4229 .BR "TITLE " (top_left_arrow)
4231 used in a window title-bar
4234 .BR "DEFAULT " (top_left_arrow)
4236 used in windows that do not set their cursor
4241 used in one of the title-bar buttons
4246 used when moving or resizing windows
4249 .BR "RESIZE " (sizing)
4251 used when moving or resizing windows
4256 used during certain fvwm commands (see
4261 .BR "MENU " (top_left_arrow)
4266 .BR "SELECT " (crosshair)
4268 used when the user is required to select a window
4271 .BR "DESTROY " (pirate)
4273 used for DESTROY, CLOSE, and DELETE commands
4276 .BR "TOP " (top_side)
4278 used in the top side-bar of a window
4281 .BR "RIGHT " (right_side)
4283 used in the right side-bar of a window
4286 .BR "BOTTOM " (bottom_side)
4288 used in the bottom side-bar of a window
4291 .BR "LEFT " (left_side)
4293 used in the left side-bar of a window
4296 .BR "TOP_LEFT " (top_left_corner)
4298 used in the top left corner of a window
4301 .BR "TOP_RIGHT " (top_right_corner)
4303 used in the top right corner of a window
4306 .BR "BOTTOM_LEFT " (bottom_left_corner)
4308 used in the bottom left corner of a window
4311 .BR "BOTTOM_RIGHT " (bottom_right_corner)
4313 used in the bottom right corner of a window
4316 .BR "TOP_EDGE " (top_side)
4318 used at the top edge of the screen.
4321 .BR "RIGHT_EDGE " (right_side)
4323 used at the right edge of the screen.
4326 .BR "BOTTOM_EDGE " (bottom_side)
4328 used at the bottom edge of the screen.
4331 .BR "LEFT_EDGE " (left_side)
4333 used at the left edge of the screen.
4336 .BR "ROOT " (left_ptr)
4338 used as the root cursor.
4341 .BR "STROKE " (plus)
4349 The defaults are shown in parentheses above. If you ever want to
4350 restore the default cursor for a specific context you can omit the
4353 The second is either the numeric value of the cursor as defined in
4356 or its name (without the XC_ prefix). Alternatively, the xpm file
4357 name may be specified. This xpm file should contain a pixmap
4358 using 3 colors (None, black, white) and an optional hot-spot. If
4359 no hot-spot is defined, the hot-spot is placed in the center of
4360 the image. Furthermore the name can be
4364 (a single pixel as the cursor). For example:
4366 # make the kill cursor be XC_gumby (both forms work):
4367 CursorStyle DESTROY 56
4368 CursorStyle DESTROY gumby
4370 CursorStyle TOP_LEFT topl.xpm
4371 CursorStyle ROOT nice_arrow.xpm yellow black
4375 arguments specify the foreground and background colors for the
4376 cursor, defaulting to black and white.
4378 Here is an example pixmap file
4379 .IR nice_arrow.xpm :
4382 static char *nice_arrow_xpm[] = {
4383 /* width height num_colors chars_per_pixel hot-spot */
4406 The hot-spot coordinates are relative to zero, in the above
4407 example, the hot-spot is in the second row, and second column.
4410 .BI "DefaultColors [" "foreground background" "]"
4412 sets the default foreground and background colors used in
4413 miscellaneous windows created by fvwm, for example in the geometry
4414 feedback windows during a move or resize operation. If you do not
4415 want to change one color or the other, use - as its color name. To
4416 revert to the built-in default colors omit both color names. Note
4417 that the default colors are not used in menus, window titles or
4421 .BI "DefaultColorset [" num "]"
4423 sets the colorset used by the windows controlled by the
4425 command. To revert back to the
4431 or any variant of the
4436 .BI "DefaultFont [" fontname "]"
4438 sets the default font to font
4440 The default font is used by fvwm whenever no other font has been
4441 specified. To reset the default font to the built-in default,
4442 omit the argument. The default font is used for menus, window
4443 titles, icon titles as well as the geometry feedback windows
4444 during a move or resize operation. To override the default font
4445 in a specific context, use the
4446 .BR "Style * Font" ", " "Style * IconFont" ", or " MenuStyle
4450 .BI "DefaultIcon " filename
4451 sets the default icon which is used if a window has neither an
4452 client-supplied icon nor an icon supplied via the
4459 .BI "DefaultLayers " "bottom put top"
4460 changes the layers that are used for the
4461 .IR StaysOnBottom ", " StaysPut ", " StaysOnTop
4463 options. Initially, the layers 2, 4 and 6 are used.
4466 .BI "Deschedule " "[command_id]"
4467 Removes all commands that were scheduled with the id
4471 command from the list of commands to be executed unless they were
4472 already executed. If the
4474 is omitted, the value of the variable $[schedule.last] is used as
4478 .BI "Emulate " Fvwm | Mwm | Win
4479 This command is a catch all for how miscellaneous things are done
4480 by fvwm. Right now this command affects where the move/resize
4481 feedback window appears and how window placement is aborted. To
4482 have more Mwm- or Win-like behavior you can call
4486 as its argument. With
4488 resize and move feedback windows are in the center of the screen,
4489 instead of the upper left corner.
4490 This also affects how manual placement is aborted.
4491 See the ManualPlacement description.
4495 By default the key sequence
4497 allows for escaping from a
4499 pause and from a locked
4500 .B ModuleSynchronous
4503 command used with the
4505 command allows for configuring this key sequence. An example:
4508 Key Escape A S EscapeFunc
4517 .B ModuleSynchronous
4522 command does nothing.
4525 .BI "FakeClick [" "command value" "] ..."
4526 This command is mainly intended for debugging fvwm and no
4527 guarantees are made that it works for you.
4529 can simulate mouse button press and release events and pass them
4530 to fvwm or the applications. The parameters are a list of
4531 commands which consist of pairs of
4536 .IR press " and " release
4537 commands are followed by the appropriate mouse button number and
4538 generate a button press or release event on the window below the
4541 commands pauses fvwm for the given number of milliseconds. The
4543 command simulates pressing or releasing modifier keys. The values
4544 1 to 5 are mapped to
4548 while 6, 7 and 8 are mapped to
4553 The modifier is set for any further button events. To release a
4554 modifier key, use the corresponding negative number. The
4556 command determines to which window the button events are
4557 sent. With a depth of 1, all events go to the root window,
4558 regardless of the pointer's position. With 2, the event is passed
4559 to the top level window under the pointer which is usually the
4560 frame window. With 3, events go to the client window. Higher
4561 numbers go to successive sub windows. Zero (0) goes to the
4562 smallest window that contains the pointer. Note that events
4565 FakeClick depth 2 press 1 wait 250 release 1
4567 This simulates a click with button 1 in the parent window (depth
4568 2) with a delay of 250 milliseconds between the press and the
4570 Note: all command names can be abbreviated with their first letter.
4574 .BI "FakeKeypress [" "command value" "] ..."
4575 This command is mainly intended for debugging fvwm and no
4576 guarantees are made that it works for you.
4578 can simulate key press and release events and pass them
4579 to fvwm or applications. The parameters are a list of
4580 commands which consist of pairs of command tokens and values.
4582 .IR press " and " release
4583 commands are followed by a key name.
4584 The key name is a standard X11 key name as defined in
4585 .IR /usr/include/X11/keysymdef.h ,
4588 prefix), or the keysym database
4589 .IR /usr/X11R6/lib/X11/XKeysymDB .
4591 .IR wait ", " modifiers " and " depth
4592 commands are the same as those used by
4595 Save all GVim sessions with: "Esc:w\\n"
4597 All (gvim) FakeKeypress press Escape \\
4602 Save & exit all GVim sessions with: "Esc:wq\\n"
4604 All (gvim) FakeKeypress press Escape \\
4610 Send A to a specific window:
4612 WindowId 0x3800002 FakeKeypress press A
4614 Note: all command names can be abbreviated with their first letter.
4618 .BI "GlobalOpts [" options "]"
4619 As announced in the past, this command has been removed. Please
4620 replace the global options in your configuration file according to
4621 the following table:
4623 GlobalOpts WindowShadeShrinks
4625 Style * WindowShadeShrinks
4627 GlobalOpts WindowShadeScrolls
4629 Style * WindowShadeScrolls
4631 GlobalOpts SmartPlacementIsReallySmart
4633 Style * MinOverlapPlacement
4635 GlobalOpts SmartPlacementIsNormal
4637 Style * TileCascadePlacement
4639 GlobalOpts ClickToFocusDoesntPassClick
4641 Style * ClickToFocusPassesClickOff
4643 GlobalOpts ClickToFocusPassesClick
4645 Style * ClickToFocusPassesClick
4647 GlobalOpts ClickToFocusDoesntRaise
4649 Style * ClickToFocusRaisesOff
4651 GlobalOpts ClickToFocusRaises
4653 Style * ClickToFocusRaises
4655 GlobalOpts MouseFocusClickDoesntRaise
4657 Style * MouseFocusClickRaisesOff
4659 GlobalOpts MouseFocusClickRaises
4661 Style * MouseFocusClickRaises
4663 GlobalOpts NoStipledTitles
4665 Style * !StippledTitle
4667 GlobalOpts StipledTitles
4669 Style * StippledTitle
4671 GlobalOpts CaptureHonorsStartsOnPage
4673 Style * CaptureHonorsStartsOnPage
4675 GlobalOpts CaptureIgnoresStartsOnPage
4677 Style * CaptureIgnoresStartsOnPage
4679 GlobalOpts RecaptureHonorsStartsOnPage
4681 Style * RecaptureHonorsStartsOnPage
4683 GlobalOpts RecaptureIgnoresStartsOnPage
4685 Style * RecaptureIgnoresStartsOnPage
4687 GlobalOpts ActivePlacementHonorsStartsOnPage
4689 Style * ManualPlacementHonorsStartsOnPage
4691 GlobalOpts ActivePlacementIgnoresStartsOnPage
4693 Style * ManualPlacementIgnoresStartsOnPage
4695 GlobalOpts RaiseOverNativeWindows
4697 BugOpts RaiseOverNativeWindows on
4699 GlobalOpts IgnoreNativeWindows
4701 BugOpts RaiseOverNativeWindows off
4706 .BI "HilightColor " "textcolor backgroundcolor"
4707 This command is obsoleted by the
4710 .IR HilightFore " and " HilightBack .
4713 Style * HilightFore textcolor, \\
4714 HilightBack backgroundcolor
4719 .BI "HilightColorset [" num "]"
4720 This command is obsoleted by the
4723 .IR HilightColorset .
4726 Style * HilightColorset num
4731 .BI "IconFont [" fontname "]"
4732 This command is obsoleted by the
4738 Style * IconFont fontname
4743 .BI "IconPath " path
4744 This command is obsolete. Please use
4749 .BI "ImagePath " path
4750 Specifies a colon separated list of directories in which to search
4751 for images (both monochrome and pixmap). To find an image given
4752 by a relative pathname, fvwm looks into each directory listed in
4753 turn, and uses the first file found.
4755 If a directory is given in the form "/some/dir;.ext", this means
4756 all images in this directory have the extension ".ext" that should
4757 be forced. The original image name (that may contain another
4758 extension or no extension at all) is not probed, instead ".ext" is
4759 added or replaces the original extension. This is useful, for
4760 example, if a user has some image directories with ".xpm" images
4761 and other image directories with the same names, but ".png"
4766 may contain environment variables such as
4767 .IR $HOME " (or " ${HOME} ).
4768 Further, a '+' in the
4770 is expanded to the previous value of the path, allowing appending
4771 or prepending to the path easily.
4775 ImagePath $HOME/icons:+:/usr/include/X11/bitmaps
4779 module is used to parse your
4781 files, then m4 may want to mangle the word "include" which
4782 frequently shows up in the
4784 command. To fix this one may add
4790 command, or better: use the
4794 directives to have a prefix of "m4_" (see the
4799 .BI "LocalePath " path
4800 Specifies a colon separated list of "locale path" in which to
4801 search for string translations. A locale path is constituted by a
4802 directory path and a text domain separated by a semicolon
4803 (';'). As an example the default locale path is:
4805 /install_prefix/share/locale;fvwm
4807 where install_prefix is the fvwm installation directory. With such
4808 a locale path translations are searched for in
4810 /install_prefix/share/locale/lang/LC_MESSAGES/fvwm.mo
4814 depends on the locale. If no directory is given the default
4815 directory path is assumed. If no text domain is given,
4817 is assumed. Without argument the default locale path is restored.
4823 may contain environment variables and a '+' to append or prepend
4824 the locale path easily.
4826 For example, the fvwm-themes package uses
4828 LocalePath ";fvwm-themes:+"
4830 to add locale catalogs.
4832 The default fvwm catalog contains a few strings used by the fvwm
4833 executable itself (Desk and Geometry) and strings used in some
4834 default configuration files and
4836 configuration. You can take a look at the po/ subdirectory of the
4837 fvwm source to get the list of the strings with a possible
4838 translation in various languages. At present, very few languages
4841 The main use of locale catalogs is via the "$[gt.string]"
4844 DestroyMenu MenuFvwmWindowOps
4845 AddToMenu MenuFvwmWindowOps "$[gt.Window Ops]" Title
4846 + "$[gt.&Move]" Move
4847 + "$[gt.&Resize]" Resize
4848 + "$[gt.R&aise]" Raise
4849 + "$[gt.&Lower]" Lower
4850 + "$[gt.(De)&Iconify]" Iconify
4851 + "$[gt.(Un)&Stick]" Stick
4852 + "$[gt.(Un)Ma&ximize]" Maximize
4854 + "$[gt.&Close]" Close
4855 + "$[gt.&Destroy]" Destroy
4857 gives a menu in the locale languages if translations are
4862 module has its own catalog and that the
4864 module has a set of special instructions for string
4865 translation. It is out of the scope of this discussion to explain
4866 how to build locale catalogs. Please refer to the
4868 gettext documentation.
4871 .BI "PixmapPath " path
4872 This command is obsolete. Please use
4877 .BI "PrintInfo " "subject [verbose]"
4878 Print information on
4880 on stderr. An optional integer argument
4882 defines the level of information which is given.
4883 The current valid subjects are:
4886 which prints information about the colors used by fvwm. This useful
4887 on screens which can only display 256 (or less) colors at once.
4890 is one or greater the palette used by fvwm is printed.
4891 If you have a limited color palette, and you run out of colors,
4892 this command might be helpful.
4895 which prints information on your locale and the fonts that fvwm
4901 which prints information on the locale catalogs that fvwm used
4904 which prints information on fvwm styles.
4912 command is invoked, the last command that was executed by fvwm is
4913 executed again. This happens regardless of whether it was
4914 triggered by user interaction, a module or by an X event.
4915 Commands that are executed from a function defined with the
4918 .BR Read " or " PipeRead
4919 commands or by a menu are not repeated. Instead, the function,
4921 .B Read " or " PipeRead
4922 command is executed again.
4925 .BI "Schedule " "[Periodic] delay_ms [command_id] command"
4928 is executed after about
4930 milliseconds. This may be useful in some tricky setups. The
4932 is executed in the same context window as the
4934 command. An optional integer argument
4936 may be given in decimal, hexadecimal or octal format. This id can
4939 command to remove the scheduled command before it is executed. If
4940 no id is given, fvwm uses negative id numbers, starting with -1
4941 and decreasing by one with each use of the
4946 command and its arguments undergo the usual command line
4947 expansion, and, when
4949 is finally executed, it is expanded again. It may therefore be
4950 necessary to quote the parts of the command that must not be
4953 Note: A window's id as it is returned with $[w.id] can be used as
4958 Current Schedule 1000 $[w.id] WindowShade
4963 command also supports the optional keyword
4965 which indicates that the
4967 should be executed every
4971 Schedule Periodic 10000 PipeRead '[ -N "$MAIL" ] && echo \\
4976 command to stop periodic commands.
4982 .BI "State " state " [" bool "]"
4983 Sets, clears or toggles one of the 32 user defined states which
4984 are associated with each window. The
4986 is a number ranging from 0 to 31. The states have no meaning in
4987 fvwm, but they can be checked in conditional commands like
4991 condition. The optional argument
4993 is a boolean argument. "True" sets the given state, while "False"
4994 clears it. Using "toggle" switches to the opposite state. If the
4996 argument is not given, the state is toggled.
4999 .BI "WindowFont [" fontname "]"
5000 This command is obsoleted by the
5006 Style * Font fontname
5011 .B "WindowList [(\fIconditions\fP\
5014 ] [\fIdouble-click-action\fP\
5016 Generates a pop-up menu (and pops it up) in which the title and
5017 geometry of each of the windows currently on the desktop are
5020 The format of the geometry part is:
5021 . IR desk "(" layer "): " "x-geometry sticky" ,
5023 .IR desk " and " layer
5024 are the corresponding numbers and
5026 is empty or a capital S. The geometry of iconified windows is
5027 shown in parentheses. Selecting an item from the window list
5028 pop-up menu causes the interpreted function "WindowListFunc" to be
5029 run with the window id of that window passed in as $0. The default
5030 "WindowListFunc" looks like this:
5032 AddToFunc WindowListFunc
5036 + I WarpToWindow 5p 5p
5038 You can destroy the built-in "WindowListFunc" and create your own
5039 if these defaults do not suit you.
5041 The window list menu uses the "WindowList" menu style if it is
5044 command). Otherwise the default menu style is used. To switch
5045 back to the default menu style, issue the command
5047 DestroyMenuStyle WindowList
5051 MenuStyle WindowList SelectOnRelease Meta_L
5055 can be used to exclude certain windows from the window
5056 list. Please refer to the
5058 command for details. Only windows that match the given conditions
5059 are displayed in the window list. The
5061 below work vice versa: windows that would otherwise not be
5062 included in the window list can be selected with them. The
5070 arguments are the same as for
5073 .I double-click-action
5074 is invoked if the user double-clicks (or hits the key rapidly
5075 twice if the menu is bound to a key) when bringing the window
5077 .I double-click-action
5078 must be quoted if it consists of more than one word.
5081 .I double-click-action
5082 is useful to define a default window if you have bound the window
5083 list to a key (or button) like this:
5085 # Here we call an existing function, but
5086 # it may be different. See the default
5087 # WindowListFunc definition earlier in this
5089 AddToFunc SwitchToWindow
5092 Key Tab A M WindowList "Prev SwitchToWindow"
5096 once it brings up the window list, if you hit it twice the focus
5097 is flipped between the current and the last focused window. With
5100 menu style (see example above) a window is selected as soon as you
5107 passed to WindowList are separated by commas and can be
5108 .IR Geometry " / " NoGeometry " / " NoGeometryWithInfo ,
5111 .IR NoNumInDeskTitle ,
5112 .IR NoCurrentDeskTitle ,
5113 .IR "MaxLabelWidth width",
5114 .IR TitleForAllDesks ,
5115 .IR "Function funcname" ,
5116 .IR "Desk desknum" ,
5118 .IR NoIcons " / " Icons " / " OnlyIcons ,
5119 .IR NoNormal " / " Normal " / " OnlyNormal ,
5120 .IR NoSticky " / " Sticky " / " OnlySticky ,
5121 .IR NoStickyAcrossPages " / " StickyAcrossPages " / " OnlyStickyAcrossPages ,
5122 .IR NoStickyAcrossDesks " / " StickyAcrossDesks " / " OnlyStickyAcrossDesks ,
5123 .IR NoOnTop " / " OnTop " / " OnlyOnTop ,
5124 .IR NoOnBottom " / " OnBottom " / " OnlyOnBottom ,
5126 .IR UseListSkip " / " OnlyListSkip ,
5130 .IR IconifiedAtEnd ,
5132 .IR Alphabetic " / " NotAlphabetic ,
5133 .IR SortByResource ,
5136 .IR SelectOnRelease .
5138 (Note - normal means not iconic, sticky, or on top)
5142 option windows are alphabetically sorted first by resource class,
5143 then by resource name and then by window name (or icon name if
5147 also works in the expected manner.
5151 option windows are sorted just like with
5152 .IR SortByResource ,
5153 but the resource name is not taken into account, only the resource
5158 option works exactly like the
5160 option with the same name, but overrides the option given in a
5161 menu style. By default, this option is set to the left
5163 key. To switch it off, use
5167 If you pass in a function via
5168 .IR "Function funcname" ,
5169 it is called within a window context of the selected window:
5171 AddToFunc IFunc I Iconify toggle
5172 WindowList Function IFunc, NoSticky, \\
5173 CurrentDesk, NoIcons
5176 .IB "Layer m " [ "n" ]
5177 option, only windows in layers between m and n are displayed. n
5178 defaults to m. With the
5180 option the order of the windows in the list is reversed.
5184 option the currently focused window (if any) is shown at the
5185 bottom of the list. This is mostly intended for simulating the
5186 Alt-Tab behavior in another GUI.
5189 makes iconified windows be moved to the end of the list. This is
5190 also from another GUI.
5194 option causes fvwm to not display the geometries as well as
5195 the separators which indicate the different desktops.
5196 .I NoGeometryWithInfo
5197 removes the geometries, but keep the desktop information
5198 and indicates iconic windows.
5200 causes fvwm to not display the desktop number in the geometry
5201 or before the window title with the
5202 .I NoGeometryWithInfo
5205 is only useful if a desktop name is defined with the
5207 command. It causes fvwm to not display the desktop number before
5208 the desktop name. By default, the WindowList menu have a title
5209 which indicates the current desk or the selected desktop if the
5211 condition is used. The
5212 .I NoCurrentDeskTitle
5213 option removes this title.
5215 causes fvwm to add a menu title with the desk name and/or number
5216 before each group of windows on the same desk.
5219 the layer of the window is not diplayed. The options
5220 .IR ShowPage ", " ShowPageX " and " ShowPageY
5221 enable displaying the page of the window rounded multiples of the
5225 the window's Xinerama screen number is displayed.
5229 option takes the number of characters to print as its argument.
5230 No more than that many characters of the window name are visible.
5232 If you wanted to use the
5234 as an icon manager, you could invoke the following:
5236 WindowList OnlyIcons, Sticky, OnTop, Geometry
5240 options essentially wipe out all other ones... but the
5242 option which just causes
5244 to only consider the windows with
5252 is called, the X function with the same name is used to send all
5253 pending X requests to the server. This command is intended for
5257 .BI "XSynchronize [" bool "]"
5260 command controls whether X requests are sent to the X server
5261 immediately or not. Normally, requests are sent in larger batches
5262 to save unnecessary communication. To send requests immediately,
5263 use "True" as the argument, to disable this use "False" or to
5264 toggle between both methods use "Toggle" or omit the
5266 argument. Fvwm defaults to synchronized requests when started
5269 option. This command is intended for debugging only.
5273 Used to continue adding to the last specified decor, function or
5274 menu. See the discussion for
5275 .BR AddToDecor ", " AddToFunc ", and " AddToMenu .
5278 .SS COMMANDS AFFECTING WINDOW MOVEMENT AND PLACEMENT
5281 .BI "AnimatedMove " "x y" " [" Warp "]"
5282 Move a window in an animated fashion. Similar to
5284 command below. The options are the same, except they are required,
5285 since it doesn't make sense to have a user move the window
5286 interactively and animatedly. If the optional argument
5288 is specified the pointer is warped with the window.
5291 .BI "HideGeometryWindow [" Never " | " Move " | " Resize "]"
5292 Hides the position or size window that is usually shown when a
5293 window is moved or resized interactively. To switch it off only
5294 for move or resize operations the optional parameters
5295 .IR Move " and " Resize
5296 can be used respectively. To switch both on again use the
5301 .BI "Layer [" "arg1 arg2" "] | [" default "]"
5302 Puts the current window in a new layer. If
5304 is non zero then the next layer is the current layer number plus
5308 is zero then the new layer is
5313 puts the window in its default layer, i.e. the layer it was
5314 initially in. The same happens if no or invalid arguments are
5319 Allows the user to lower a window. Note that this lowers a window
5320 only in its layer. To bring a window to the absolute bottom, use
5322 AddToFunc lower-to-bottom
5328 .B "Move [[screen \fIscreen\fP]\
5336 ]] | [\fIpointer\fP\
5338 Allows the user to move a window. If called from somewhere in a
5339 window or its border, then that window is moved. If called from
5340 the root window then the user is allowed to select the target
5343 If the literal option Screen followed by a
5345 argument is specified, the coordinates are interpreted as relative
5346 to the given screen. The width and height of the screen are used
5347 for the calculations instead of the display dimensions. The
5349 as interpreted as in the
5352 If the optional argument
5354 is specified the pointer is warped with the window. If the single
5357 is given, the top left corner of the window is moved to the
5358 pointer position before starting the operation; this is mainly
5359 intended for internal use by modules like
5362 The operation can be aborted with Escape or any mouse button not set
5363 to place the window. By default mouse button 2 is set to cancel the move
5364 operation. To change this you may use the
5366 command with special context 'P' for Placement (see
5368 command for details).
5370 The window condition
5372 can be used to check if a specific button was pressed to place the
5377 If the optional arguments
5379 are provided, then the window is moved immediately without user
5380 interaction. Each argument can specify an absolute or relative
5381 position from either the left/top or right/bottom of the screen.
5382 By default, the numeric value given is interpreted as a percentage
5383 of the screen width/height, but a trailing
5385 changes the interpretation to mean pixels. To move the window
5386 relative to its current position, add the
5388 (for "window") prefix before the
5390 value. To move the window to a position relative to the current
5391 location of the pointer, add the
5393 (for "mouse") prefix. To leave either coordinate unchanged,
5394 "keep" can be specified in place of
5401 # Move window to top left is at (10%,10%)
5402 Mouse 2 T A Move 10 10
5403 # Move top left to (10pixels,10pixels)
5404 Mouse 3 T A Move 10p 10p
5406 More complex examples (these can be bound as actions to
5407 keystrokes, etc.; only the command is shown, though):
5409 # Move window so bottom right is at bottom
5413 # Move window so top left corner is 10 pixels
5414 # off the top left screen edge
5417 # Move window 5% to the right, and to the
5421 # Move window up 10 pixels, and so left edge
5425 # Move window to the mouse pointer location
5433 .BI "MoveToDesk [" prev " | " arg1 " [" arg2 "] [" "min max" "]]"
5434 Moves the selected window to another desktop. The arguments are
5437 command. Without any arguments, the window is moved to the
5440 is a replacement for the old
5442 command, which can no longer be used.
5445 .BI "MoveThreshold [" pixels "]"
5446 When the user presses a mouse button upon an object fvwm waits to
5447 see if the action is a click or a drag. If the mouse moves by
5450 pixels it is assumed to be a drag.
5452 Previous versions of fvwm hardwired
5454 to 3, which is now the default value. If
5456 is negative or omitted the default value (which might be increased
5457 when 16000x9000 pixel displays become affordable) is restored.
5460 .B "MoveToPage [\fIoptions\fP\
5467 Moves the selected window to another page (x,y). The upper left
5468 page is (0,0), the upper right is (M,0), where M is one less than
5469 the current number of horizontal pages specified in the
5471 command. Similarly the lower left page is (0,N), and the lower
5472 right page is (M,N). Negative page numbers refer to pages from
5473 the rightmost/lowest page. If
5475 are not given, the window is moved to the current page (a window
5476 that has the focus but is off-screen can be retrieved with this).
5477 Moving windows to a page relative to the current page can be
5478 achieved by adding a trailing
5480 after any or both numerical arguments. To move the window
5481 relative to its current location, add a trailing
5483 To move a window to the previous page use
5485 as the single argument.
5487 Windows are usually not moved beyond desk boundaries.
5492 .IR wrapx " and " wrapy
5493 to wrap around the x or y coordinate when the window is moved
5494 beyond the border of the desktop. For example, with
5496 when the window moves past the right edge of the desktop, it
5497 reappears on the left edge. The options
5498 .IR nodesklimitx " and " nodesklimity
5499 allow moving windows beyond the desk boundaries in x and y
5500 direction (disabling the
5501 .IR wrapx " and " wrapy
5506 # Move window to page (2,3)
5509 # Move window to lowest and rightmost page
5512 # Move window to last page visited
5515 # Move window two pages to the right and one
5516 # page up, wrap at desk boundaries
5517 MoveToPage wrapx wrapy +2p -1p
5521 .BI "MoveToScreen [" screen "]"
5522 Moves the selected window to another Xinerama screen. The
5524 argument can be 'p' for the primary screen, 'c' for the current
5525 screen (containing the mouse pointer), 'g' for the global screen
5526 or the screen number itself (counting from zero).
5529 .BI "OpaqueMoveSize [" percentage "]"
5530 Tells fvwm the maximum size window with which opaque window
5531 movement should be used. The percentage is percent of the total
5532 screen area (may be greater than 100). With
5536 all windows are moved using the traditional rubber-band
5539 OpaqueMoveSize unlimited
5541 or if a negative percentage is given
5542 all windows are moved as solid windows. The default is
5546 which allows small windows to be moved in an opaque manner but
5547 large windows are moved as rubber-bands. If
5549 is omitted or invalid the default value is set. To resize windows
5550 in an opaque manner you can use the
5557 .BI "PlaceAgain [" Anim "] [" "Icon" "]"
5558 Causes the current window's position to be re-computed using the
5559 initial window placement logic. The window is moved to where it
5560 would have been if it were a new window that had just appeared.
5562 .IR Smart " or " Clever " (" ReallySmart ")"
5563 placement. With the optional argument
5565 an animated move is used to place the window in its new position.
5566 With the additional option
5568 the icon is placed again instead.
5572 Allows the user to raise a window. Note that this raises a window
5573 only in its layer. To bring a window to the absolute top, use
5575 AddToFunc raise-to-top
5579 where ontop is the highest layer used in your setup.
5583 Alternately raises and lowers a window. The window is raised if
5584 it is obscured by any window (except for its own transients when
5588 command) otherwise it is lowered.
5591 .B "Resize [[\fIframe\fP] [direction \fIdir\fP [\fIwarptoborder\fP]] \
5592 [\fIfixeddirection\fP] \
5593 [\fIw\fP]\fIwidth\fP[\fIp\fP|\fIc\fP] \
5594 [\fIw\fP]\fIheight\fP[\fIp\fP|\fIc\fP]] \
5598 Allows for resizing a window. If called from somewhere in a window
5599 or its border, then that window is resized. If called from the
5600 root window then the user is allowed to select the target window.
5602 The operation can be aborted with Escape or by pressing any mouse
5603 button (except button 1 which confirms it).
5605 If the optional arguments
5606 .IR width " and " height
5607 are provided, then the window is resized so that its dimensions
5609 .IR width " by " height .
5611 .IR width " and " height
5612 are percent-of-screen, unless a letter
5614 is appended to one or both coordinates, in which case the location
5615 is specified in pixels. With a
5617 suffix the unit defined by the client application (hence the c) is
5618 used. So you can say
5622 to make a terminal window just big enough for 80x24
5626 .IR width " or " height
5627 is prefixed with the letter
5629 the size is not taken as an absolute value but added to the
5630 current size of the window. Example:
5632 # Enlarge window by one line
5636 .IR width " and " height
5637 can be negative. In this case the new size is the screen size
5638 minus the given value. If either value is "keep", the
5639 corresponding dimension of the window is left untouched. The new
5640 size is the size of the client window, thus
5644 may make the window bigger than the screen. To base the new size
5645 on the size of the whole fvwm window, add the
5647 option after the command. The options
5648 .IR fixeddirection ", " direction " and " warptoborder
5649 are only used in interactive move operations. With
5651 the same border is moved even if the pointer moves past the
5652 opposite border. The
5654 option must be followed by a direction name such as "NorthWest",
5655 "South" or "East" (you get the idea). Resizing is started
5656 immediately, even if the pointer is not on a border. The
5658 option changes the behaviour of the
5660 option so that the pointer is automatically warped to the border
5661 in the given direction before starting to resize. Also, if
5662 resizing is started by clicking on the window border, the pointer
5663 is warped to the outer edge of the border.
5665 AddToFunc ResizeSE I Resize Direction SE
5666 Mouse 3 A M ResizeSE
5669 An alternate syntax is used if the keyword
5670 .IR bottomright " or in short " br
5671 follows the command name. In this case, the arguments
5673 specify the desired position of the bottom right corner of the
5674 window. They are interpreted exactly like the
5678 command. Actually, any of the options accepted by the
5680 command can be used.
5683 .BI "ResizeMaximize [" resize-arguments "]"
5684 Combines the effects of
5685 .BR Resize " and " Maximize
5686 in a single command. When used on a maximized window, the window
5687 is resized and is still in the maximized state afterwards. When
5688 used on an unmaximized window, the window is resized and put into
5689 the maximized state afterwards. This is useful if the user wants
5690 to resize the window temporarily and then return to the original
5693 are the same as for the
5698 .BI "ResizeMove " "resize-arguments move-arguments"
5699 This command does the same as the
5700 .BR Resize " and " Move
5701 commands, but in a single call which is less visually
5704 are exactly the same arguments as for the
5708 are exactly the same arguments as for the
5712 option which is not supported by the
5718 # Move window to top left corner and cover
5719 # most of the screen
5720 ResizeMove -10p -20p 0 0
5722 # Grow the focused window towards the top of screen
5723 Current Resize keep w+$[w.y]p keep 0
5726 Note: Fvwm may not be able to parse the command properly if the
5734 .BI "ResizeMoveMaximize " "resize-arguments move-arguments"
5735 Combines the effects of
5736 .BR ResizeMove " and " Maximize
5737 in a single command. When used on a maximized window, the window
5738 is resized and moved and is still in the maximized state
5739 afterwards. When used on an unmaximized window, the window is
5740 resized and put into the maximized state afterwards. This is
5741 useful if the user wants to resize the window temporarily and then
5742 return to the original geometry. The
5743 .IR resize-arguments " and " move-arguments
5744 are the same as for the
5749 .BI "RestackTransients"
5750 This command regroups the transients of a window close to it in
5751 the stacking order as if the window had just been lowered and then
5752 raised. The position of the window itself is not altered. Only
5753 windows that use either the
5754 .I RaiseTransient " or " LowerTransient
5755 style are affected at all. When
5756 .B RestackTransients
5757 is used on a transient window with the
5758 .I StackTransientParent
5759 style set, it is redirected to the parent window.
5762 .BI "SetAnimation " milliseconds-delay " [" fractions-to-move-list "]"
5763 Sets the time between frames and the list of fractional offsets to
5764 customize the animated moves of the
5766 command and the animation of menus (if the menu style is set to
5770 .I fractions-to-move-list
5771 is omitted, only the time between frames is altered. The
5772 .I fractions-to-move-list
5773 specifies how far the window should be offset at each successive
5774 frame as a fraction of the difference between the starting
5775 location and the ending location. e.g.:
5777 SetAnimation 10 -.01 0 .01 .03 .08 .18 .3 \\
5778 .45 .6 .75 .85 .90 .94 .97 .99 1.0
5780 Sets the delay between frames to 10 milliseconds, and sets the
5781 positions of the 16 frames of the animation motion. Negative
5782 values are allowed, and in particular can be used to make the
5783 motion appear more cartoonish, by briefly moving slightly in the
5784 opposite direction of the main motion. The above settings are the
5788 .B "SnapAttraction [\fIproximity\fP \
5792 If during an interactive move the window or icon comes within
5794 pixels of another the window or icon, it is moved to make the
5795 borders adjoin. The default of 0 means that no snapping happens.
5796 Calling this command without arguments turns off snap attraction
5797 and restores the default behavior. Please refer also to the
5803 argument is optional and may be set to one of the four following
5806 both icons and windows snap to other windows and other icons.
5808 lets snap windows only to other windows and icons only to other
5811 windows snap only to other windows. Icons do not snap. Similarly
5814 icons snap to only other icons and windows do not snap.
5818 option is not given, the snapping behavior is not changed. The
5824 option is present windows and or icons are snapped to the screen
5828 .BI "SnapGrid [" "x-grid-size y-grid-size" "]"
5829 During an interactive move a window or icon is positioned such
5830 that its location (top left corner) is coincident with the nearest
5831 grid point. The default
5832 .IR x-grid-size " and " y-grid-size
5833 setting are both 1, which is effectively no grid all. An
5834 interactive move with both
5835 .BR SnapGrid " and " SnapAttraction
5836 results in the window being moved to be adjacent to the nearest
5837 window border (if within snap proximity) or grid position. In
5838 other words, the window moves the shortest distance possible to
5840 .BR SnapGrid " and " SnapAttraction .
5841 Note that the x and y coordinates are not coupled. For example, a
5842 window may snap to another window on the x axis while snapping to
5843 a grid point on the y axis. Calling this command without
5844 arguments reinstates the default settings.
5847 .BI "WindowsDesk " arg1 " [" arg2 "]"
5848 Moves the selected window to another desktop.
5850 This command has been removed and must be replaced by
5852 the arguments for which are the same as for the
5856 You cannot simply change the name of the command: the syntax has
5857 changed. If you used
5861 to move a window to desk n, you have to change it to
5867 .BI "XorPixmap [" pixmap "]"
5868 Selects the pixmap with which bits are xor'ed when doing
5869 rubber-band window moving or resizing. This has a better chance
5870 of making the rubber-band visible if
5872 does not give good results. An example pixmap
5873 .I resize.rainbow.xpm
5874 is provided with the icon distribution. To turn the
5883 .BI "XorValue [" number "]"
5884 Changes the value with which bits are xor'ed when doing
5885 rubber-band window moving or resizing.
5886 Valid values range from zero to the maximum value of an
5887 unsigned long integer on your system.
5888 Setting this value is a trial-and-error process.
5889 The default value 0 tries to find a
5890 value that gives a good contrast to black and white.
5891 The default value is used if the given
5893 is omitted or invalid.
5896 .SS COMMANDS FOR FOCUS AND MOUSE MOVEMENT
5899 .BI "CursorMove " horizontal "[" p "] " vertical "[" p "]"
5900 Moves the mouse pointer by
5902 pages in the X direction and
5904 pages in the Y direction. Either or both entries may be
5905 negative. Both horizontal and vertical values are expressed in
5906 percent of pages, so
5910 means to move down and right by one full page.
5914 means to move right half a page and down a quarter of a
5915 page. Alternatively, the distance can be specified in pixels by
5918 to the horizontal and/or vertical specification. For example
5920 CursorMove -10p -10p
5922 means move ten pixels up and ten pixels left. The CursorMove
5923 function should not be called from pop-up menus.
5926 .BI "FlipFocus [" NoWarp "]"
5929 command as if the user had used the pointer to select the
5930 window. This command alters the order of the WindowList in the
5931 same way as clicking in a window to focus, i.e. the target window
5934 and placed at the start. This command is recommended for use with
5937 command and in the function invoked from
5941 .BI "Focus [" NoWarp "]"
5942 Sets the keyboard focus to the selected window. If the
5944 argument is given, this is all it does. Otherwise it also moves
5945 the viewport or window as needed to make the selected window
5946 visible. This command does not automatically raise the
5947 window. Does not warp the pointer into the selected window (see
5949 function). Does not de-iconify. This command does not alter the
5954 around so that the target window is at the start.
5958 argument is given, Focus cannot transfer the keyboard focus to
5959 windows on other desks.
5961 To raise and/or warp a pointer to a window together with
5962 .BR Focus " or " FlipFocus ,
5963 use a function, like:
5965 AddToFunc SelectWindow
5969 + I WarpToWindow 50 8p
5973 .BI "WarpToWindow " x "[" p "] " y "[" p "]"
5974 Warps the cursor to the associated window. The parameters
5976 default to percentage of window down and in from the upper left
5977 hand corner (or number of pixels down and in if
5979 is appended to the numbers). If a number is negative the opposite
5980 edge is used and the direction reversed. This command works also
5981 with windows that are not managed by fvwm. In this case fvwm does
5982 not bring the window onto the screen if it is not visible. For
5983 example it is possible to warp the pointer to the center of the
5984 root window on screen 1:
5986 WindowId root 1 WarpToWindow 50 50
5990 .SS COMMANDS CONTROLLING WINDOW STATE
5994 If the window accepts the delete window protocol a message is sent
5995 to the window asking it to gracefully remove itself. If the
5996 window does not understand the delete window protocol then the
5997 window is destroyed as with the
5999 command. Note: if the window accepts the delete window protocol
6000 but does not close itself in response, the window is not deleted.
6004 Sends a message to a window asking that it remove itself,
6005 frequently causing the application to exit.
6009 Destroys an application window, which usually causes the
6010 application to crash and burn.
6013 .BI "Iconify [" bool "]"
6014 Iconifies a window if it is not already iconified or de-iconifies
6015 it if it is already iconified. The optional argument
6017 is a boolean argument. "True" means only iconification is
6018 allowed, while "False" forces de-iconification. Using "toggle"
6019 switches between iconified and de-iconified states.
6021 There are a number of
6023 options which influence the appearance and behavior of icons (e.g.
6024 .IR StickyIcon ", " NoIcon ).
6026 For backward compatibility, the optional argument may also be a
6027 positive number instead of "True", or a negative number instead
6028 of "False". Note that this syntax is obsolete, and will be removed
6032 .B "Maximize [\fIflags\fP\
6034 ] [\fIhorizontal\fP\
6036 ]] [\fIvertical\fP \
6039 Without its optional arguments (or if the
6041 bit has the value "toggle")
6043 causes the window to alternately switch from a full-screen size to
6044 its normal size. To force a window into maximized (normal) state
6045 you can use a "True" or "False" value for the
6049 With the optional arguments
6050 .IR horizontal " and " vertical ,
6051 which are expressed as percentage of a full screen, the user can
6052 control the new size of the window. An optional suffix
6054 can be used to indicate pixels instead of percents of the screen
6055 size. If horizontal is greater than 0 then the horizontal
6056 dimension of the window is set to
6057 .IR horizontal *screen_width/100.
6058 If the value is smaller than 0 the size is subtracted from the
6059 screen width, i.e. -25 is the same as 75. If
6061 is "grow", it is maximized to current available space until
6062 finding any obstacle. The vertical resizing is similar. If both
6063 horizontal and vertical values are "grow", it expands vertically
6064 first, then horizontally to find space. Instead of the horizontal
6065 "grow" argument, "growleft" or "growright" can be used
6066 respectively "growup" and "growdown".
6069 argument is a space separated list containing the following
6071 .IR ewmhiwa ", " growonwindowlayer ", " growonlayers " and " screen .
6073 causes fvwm to ignore the
6076 .I Growonwindowlayer
6077 causes the various grow methods to ignore windows with a layer
6078 other than the current layer of the window which is maximized.
6081 option must have two integer arguments. The first one is the
6082 minimum layer and the second one the maximum layer to use.
6083 Windows that are outside of this range of layers are ignored by
6084 the grow methods. A negative value as the first or second
6085 argument means to assume no minimum or maximum layer.
6087 must have an argument which specifies the Xinerama screen on which
6089 It can be 'p' for the primary screen, 'c' for the current
6090 screen (containing the mouse pointer), 'g' for the global screen
6091 or the screen number itself (counting from zero). This option is
6092 only useful with multiple Xinerama screens.
6094 Here are some examples. The following adds a title-bar button to
6095 switch a window to the full vertical size of the screen:
6097 Mouse 0 4 A Maximize 0 100
6099 The following causes windows to be stretched to the full width:
6101 Mouse 0 4 A Maximize 100 0
6103 This makes a window that is half the screen size in each
6106 Mouse 0 4 A Maximize 50 50
6108 To expand a window horizontally until any other window is found:
6110 Mouse 0 4 A Maximize 0 grow
6112 To expand a window until any other window on the same or a higher
6115 Mouse 0 4 A Maximize growonlayers $[w.layer] -1 grow grow
6117 To expand a window but leave the lower 60 pixels of the screen
6120 Mouse 0 4 A Maximize 100 -60p
6122 Values larger than 100 can be used with caution.
6126 This command is obsolete and should not be used anymore. Should
6127 you want to do something specific that you cannot do without it,
6128 please report this to the fvwm-workers mailing list
6129 (@FVWMWORKERSLIST@). This command may be removed at some point
6130 in the future. Please read the note at the end of the section
6131 .B "DELAYED EXECUTION OF COMMANDS"
6132 to learn about how to avoid the
6136 Causes fvwm to recapture all of its windows. This ensures that
6137 the latest style parameters are used. The recapture operation is
6138 visually disturbing.
6140 Since fvwm version 2.4 only a very few
6144 to take effect (e.g.
6148 .BI "RecaptureWindow"
6149 This command is obsolete and should not be used anymore. See
6153 Causes fvwm to recapture the chosen window.
6157 Causes all windows on the screen to redraw themselves. All pending
6158 updates of all windows' styles and looks are applied immediately.
6160 .BR Style " or " TitleStyle
6161 commands were issued inside a fvwm function.
6165 Causes the chosen window to redraw itself. All pending updates of
6166 the window's style and look are applied immediately. E.g. if
6167 .BR Style " or " TitleStyle
6168 commands were issued inside a fvwm function.
6171 .BI "Stick [" bool "]"
6174 argument is empty or "toggle", the
6176 command makes a window sticky if it is not already sticky, or
6177 non-sticky if it is already sticky. To make a window sticky
6178 regardless of its current state the
6180 argument must be "True". To make it non-sticky use "False".
6183 .BI "StickAcrossPages [" bool "]"
6186 but only sticks a window across pages, not across desks.
6189 .BI "StickAcrossDesks [" bool "]"
6192 but only sticks a window across desks, not across pages.
6195 .BI "WindowShade [" bool "] | [[" ShadeAgain "] " direction "]"
6196 Toggles the window shade feature for titled windows. Windows in
6197 the shaded state only display a title-bar. If
6199 is not given or "toggle", the window shade state is toggled. If
6201 is "True", the window is forced to the shaded state. If
6203 is "False", then the window is forced to the non-shaded
6204 state. To force shading in a certain direction, the
6206 argument can be used. Any of the strings "North", "South",
6207 "West", "East", "NorthWest", "NorthEast", "SouthWest",
6208 "SouthEast" or "Last" can be given. The direction can be abbreviated with
6209 the usual one or two letters "N", "NW", etc. Using a direction on
6210 a window that was already shaded unshades the window. To shade it
6211 in a different direction, use the
6213 option. The direction
6215 shades the window in the direction it last was shaded. If the
6216 window has never been shaded before it is shaded as if no
6217 direction had been given. Windows without titles can be shaded
6218 too. Please refer also to the options
6219 .IR WindowShadeSteps ", " WindowShadeShrinks ,
6220 .IR WindowShadeScrolls ", " WindowShadeLazy ,
6221 .IR WindowShadeAlwaysLazy " and " WindowShadeBusy .
6226 Style * WindowShadeShrinks, \\
6227 WindowShadeSteps 20, WindowShadeLazy
6228 Mouse 1 - S WindowShade North
6229 Mouse 1 [ S WindowShade West
6230 Mouse 1 ] S WindowShade E
6231 Mouse 1 _ S WindowShade S
6234 Note: When a window that has been shaded with a
6236 argument changes the direction of the window title (see
6239 option), the shading direction does not change. This may look
6240 very strange. Windows that were shaded without a
6242 argument stay shaded in the direction of the title bar.
6244 For backward compatibility, the optional argument may also be 1 to
6245 signify "on", and 2 to signify "off". Note that this syntax is
6246 obsolete, and will be removed in the future.
6249 .BI "WindowShadeAnimate [" steps "[" p "]]"
6250 This command is obsolete. Please use the
6257 .SS COMMANDS FOR MOUSE, KEY AND STROKE BINDINGS
6260 .BI "IgnoreModifiers [" Modifiers "]"
6261 Tells fvwm which modifiers to ignore when matching Mouse or Key
6266 style too. This command belongs into your
6268 If you issue it when your fvwm session is already up and running
6269 the results are unpredictable. The should appear before any
6270 applications or modules are started in your
6277 has the same syntax as in the
6278 .BR Mouse " or " Key
6279 bindings, with the addition of 'L' meaning the
6281 key. The default is "L".
6283 can be omitted, meaning no modifiers are ignored. This command
6284 comes in handy if the
6288 keys interfere with your shortcuts. With XFree86 '2' usually is
6291 modifier and '5' refers to the
6293 key. To turn all these pesky modifiers off you can use this
6300 argument is the string "default", fvwm reverts back to the
6304 This command creates a lot of extra network traffic, depending on
6305 your CPU, network connection, the number of
6306 .BR Key " or " Mouse
6307 commands in your configuration file and the number of modifiers
6308 you want to ignore. If you do not have a lightning fast machine
6309 or very few bindings you should not ignore more than two
6310 modifiers. I.e. do not ignore
6312 if you have no problem with it. In the
6314 you can find a better solution of this problem.
6317 .BI "EdgeCommand [" direction " [" Function "]]"
6318 Binds a specified fvwm command
6320 to an edge of the screen. Direction may be one of
6321 "North", "Top", "West", "Left", "South", "Bottom", "Right"
6324 is omitted the binding for this edge is removed. If EdgeCommand is
6325 called without any arguments all edge bindings are removed.
6328 is executed when the mouse pointer
6329 enters the invisible pan frames that surround the visible screen.
6330 The binding works only if
6332 is set to a value greater than 0.
6333 If a function is bound to an edge, scrolling specified by
6335 is disabled for this edge.
6336 It is possible to bind a function only to some edges
6337 and use the other edges for scrolling.
6338 This command is intended to raise or lower certain windows
6339 when the mouse pointer enters an edge.
6341 can be used get a delay when raising or lowering windows.
6342 The following example raises
6344 if the mouse pointer enters the top edge of the screen.
6346 # Disable EdgeScrolling but make it possible
6347 # to move windows over the screen edge
6348 EdgeResistance 10000 20
6350 # Set thickness of the edge of the screen to 1
6353 # Give focus to FvwmButtons if the mouse
6355 EdgeCommand Top Next (FvwmButtons) Focus
6356 # Make sure the Next command matches the window
6357 Style FvwmButtons CirculateHit
6360 Module FvwmAuto 100 \\
6361 "Silent AutoRaiseFunction" \\
6362 "Silent AutoLowerFunction"
6364 # If any window except FvwmButtons has
6365 # focus when calling this function
6366 # FvwmButtons are lowered
6367 DestroyFunc AutoLowerFunction
6368 AddToFunc AutoLowerFunction
6369 + I Current (!FvwmButtons) \\
6370 All (FvwmButtons) Lower
6372 # If FvwmButtons has focus when calling \\
6373 # this function raise it
6374 DestroyFunc AutoRaiseFunction
6375 AddToFunc AutoRaiseFunction
6376 + I Current (FvwmButtons) Raise
6378 Normally, the invisible pan frames are only on the screen edges
6379 that border virtual pages. If a screen edge has a command bound
6380 to it, the pan frame is always created on that edge.
6383 .BI "EdgeLeaveCommand [" direction " [" Function "]]"
6384 Binds a specified fvwm command
6386 to an edge of the screen. Direction may be one of
6387 "North", "Top", "West", "Left", "South", "Bottom", "Right"
6390 is omitted the binding for this edge is removed. If
6391 EdgeLeaveCommand is called without any arguments all edge bindings
6395 is executed when the mouse pointer
6396 leaves the invisible pan frames that surround the visible screen.
6397 The binding works only if
6399 is set to a value greater than 0.
6400 If a function is bound to an edge, scrolling specified by
6402 is disabled for this edge.
6403 It is possible to bind a function only to some edges
6404 and use the other edges for scrolling.
6405 This command is intended to raise or lower certain windows
6406 when the mouse pointer leaves an edge.
6408 can be used get a delay when raising or lowering windows.
6412 Normally, the invisible pan frames are only on the screen edges
6413 that border virtual pages. If a screen edge has a command bound
6414 to it, the pan frame is always created on that edge.
6418 Used in conjunction with
6420 to pass mouse button presses on the root window to a
6422 program (such as GMC). The following example passes presses of
6423 mouse buttons 1 and 3 to such a program.
6425 Mouse 1 R A GnomeButton
6426 Mouse 3 R A GnomeButton
6430 .BI "Key [(" window ")] " "Keyname Context Modifiers Function"
6431 Binds a keyboard key to a specified fvwm command, or
6432 removes the binding if
6434 is '-'. The syntax is the same as for a
6436 binding except that the mouse button number is replaced with a
6438 Normally, the key binding is activated when the key is pressed.
6440 is a standard X11 key name as defined in
6441 .IR /usr/include/X11/keysymdef.h ,
6444 prefix), or the keysym database
6445 .IR /usr/X11R6/lib/X11/XKeysymDB .
6446 Only key names that are
6447 generated with no modifier keys or with just the
6449 key held are guaranteed to work. The
6450 .IR Context " and " Modifiers
6451 fields are defined as in the
6453 binding. However, when you press a key the context window is the
6454 window that has the keyboard focus. That is not necessarily the
6455 same as the window the pointer is over (with
6456 .IR SloppyFocus " or " ClickToFocus ).
6457 Note that key bindings with the 'R' (root window) context do not
6459 .IR SloppyFocus " and " ClickToFocus .
6460 If you encounter problems, use the
6462 command instead. If you want to bind keys to a window with
6463 .IR SloppyFocus " or " ClickToFocus
6464 that are supposed to work when the pointer is not over the window,
6465 fvwm assumes the pointer is over the client window (i.e. you have
6466 to use the 'W' context).
6468 The special context 'M' for menus can be used to (re)define the menu
6469 controls. It can only be used alone or together with 'T' for the menu
6470 title bar. See the section "Menu Bindings" for details.
6472 The following example binds the built-in window list to pop up
6474 .SM Alt-Ctrl-Shift-F11
6475 is hit, no matter where the mouse pointer is:
6477 Key F11 A SCM WindowList
6479 Binding a key to a title-bar button causes that button to appear.
6482 command for details.
6485 .BI "Mouse [(" window ")] " "Button Context Modifiers Function"
6486 Defines a mouse binding, or removes the binding if
6490 is the mouse button number. If
6492 is zero then any button performs the specified function. Note
6493 that only mouse buttons 1 to 5 are fully supported by X11. Any
6494 number above this works only partially. Complex functions can not
6495 be used with these buttons and neither any operation that requires
6496 dragging the pointer with the button held. This is due to
6497 limitations of X11. By default, the highest allowed button number
6501 describes where the binding applies. Valid contexts are 'R' for
6502 the root window, 'W' for an application window, 'D' for a desktop
6503 application (as kdesktop or Nautilus desktop), 'T' for a window
6504 title-bar, 'S' for a window side, top, or bottom bar, '[', ']',
6505 \'-' and '_' for the left, right, top or bottom side only, 'F' for
6506 a window frame (the corners), '<', '^', '>' and 'v' for the top
6507 left, top right, bottom right or bottom left corner, 'I' for an
6508 icon window, or '0' through '9' for title-bar buttons, or any
6509 combination of these letters. 'A' is for any context. For
6510 instance, a context of "FST" applies when the mouse is anywhere in
6511 a window's border except the title-bar buttons. Only 'S' and 'W'
6512 are valid for an undecorated window.
6514 The special context 'M' for menus can be used to (re)define the menu
6515 controls. It can only be used alone or together with 'T' for the menu
6516 title bar. See the section "Menu Bindings" for details.
6518 The special context 'P' controls what buttons that can be used to
6519 place a window. When using this context no modifiers are allowed
6526 .IR PlaceWindow ", " PlaceWindowDrag ", " PlaceWindowInteractive
6527 .RI ", " CancelPlacement ", " CancelPlacementDrag
6528 .RI ", " CancelPlacementInteractive " or " - .
6533 usable for window placement, both for interactive and drag move.
6535 does the inverse. That is makes
6537 to cancel move for both interactive and drag move. It may however
6538 not override how new windows are resized after being placed. This
6539 is controlled by the
6541 command. Also a window being dragged can always be placed
6542 by releasing the button hold while dragging, regardless of if it is
6547 .IR PlaceWindowDrag " and " PlaceWindowInteractive / CancelPlacementDrag
6548 .RI " and " CancelPlacementInteractive
6550 .IR PlaceWindow / CancelPlacement
6551 with the exception that they only affect either windows dragged /
6552 placed interactively.
6556 .IR CancelPlacement .
6558 The following example makes all buttons but button 3 usable for
6559 interactive placement and makes drag moves started by other buttons
6560 than one cancel if button 1 is pressed before finishing the move:
6562 Mouse 0 P N PlaceWindow
6563 Mouse 3 P N CancelPlacement
6564 Mouse 1 P N CancelPlacementDrag
6567 By default, the binding applies to all windows. You can specify
6568 that a binding only applies to specific windows by specifying the
6569 window name in brackets. The window name is a wildcard pattern
6570 specifying the class, resource or name of the window you want the
6571 binding to apply to.
6573 The following example shows how the same key-binding can be used to
6574 perform different functions depending on the window that is focused:
6576 Key (rxvt) V A C Echo ctrl-V-in-RXVT
6577 Key (*term) V A C Echo ctrl-V-in-Term
6579 Key V A C Echo ctrl-V-elsewhere
6582 A '--' action indicates that the event should be propagated to the
6583 specified window to handle. This is only a valid action for
6584 window-specific bindings.
6586 This example shows how to display the WindowList when Button 3 is
6587 pressed on an rxvt window:
6589 Mouse (rxvt) 3 A A WindowList
6592 Note that Fvwm actually intercepts all events for a window-specific
6593 binding and (if the focused window doesn't match any of the
6594 bindings) sends a synthetic copy of the event to the window. This
6595 should be transparent to most applications, however (for security
6596 reasons) some programs ignore these synthetic events by default -
6597 xterm is one of them. To enable handling of these events, add the
6598 following line to your ~/.Xdefaults file:
6601 XTerm*allowSendEvents: true
6605 is any combination of 'N' for no modifiers, 'C' for control, 'S'
6606 for shift, 'M' for Meta, 'L' for Caps-Lock or 'A' for any
6607 modifier. For example, a modifier of "SM" applies when both the
6611 keys are down. X11 modifiers mod1 through mod5 are represented as
6612 the digits '1' through '5'. The modifier 'L' is ignored by
6613 default. To turn it on, use the
6618 is one of fvwm's commands.
6620 The title-bar buttons are numbered with odd numbered buttons on
6621 the left side of the title-bar and even numbers on the
6622 right. Smaller-numbered buttons are displayed toward the outside
6623 of the window while larger-numbered buttons appear toward the
6624 middle of the window (0 is short for 10). In summary, the buttons
6629 The highest odd numbered button which has an action bound to it
6630 determines the number of buttons drawn on the left side of the
6631 title bar. The highest even number determines the number of right
6632 side buttons which are drawn. Actions can be bound to either
6633 mouse buttons or keyboard keys.
6636 .BI "PointerKey [(" window ")] " "Keyname Context Modifiers Function"
6637 This command works exactly like the
6639 command. The only difference is that the binding operates on the
6640 window under the pointer. Normal key bindings operate on the
6641 focused window instead. The
6643 command can for example be used to bind keys to the root window if
6645 .IR SloppyFocus " or " ClickToFocus .
6646 However, some applications (xterm is one example) are unable to
6647 handle this key anymore, even if the pointer is over the xterm
6648 window. It is recommended to use the
6650 command only for key combinations that are not needed in any
6656 PointerKey f1 a m Menu MainMenu
6660 .BI "Stroke [(" window ")] " "Sequence Button Context Modifiers Function"
6661 Binds a mouse stroke sequence to a specified fvwm command,
6662 or removes the binding if
6664 is '-'. The syntax is the same as for a
6668 is inserted in front of the button number and a value of 0 for
6673 .IR Context " and " Modifiers
6674 fields are defined as in the
6676 binding. However, only the 'R' Context really works (if you want
6677 to use other contexts you need to use the
6681 Strokes sequences are defined in a telephone grid like this:
6689 or in a numeric pad grid like this:
6697 The telephone grid is used by default, to use the numeric pad grid
6698 you should begin the sequence with a 'N'. Note that a complex
6699 motion may produce several different sequences (see the "netscape"
6700 example below to handle such motion). Moreover, sequences are
6701 limited to 20 elements (with the present version of
6703 however, in practice it is preferable to use sequence with less
6706 Because of the default button menu in fvwm, you may need to remove
6707 a mouse button binding (using an empty action) before using the
6712 Also, you can still use the stroke "sequence 0" to simulate a
6715 Stroke 0 3 R N Menu WindowList Nop
6717 The following example starts xterm when the mouse drags an 'I' on
6718 the root window with button 3 pressed down:
6720 Stroke 258 3 R N Exec exec xterm
6722 An example for Netscape:
6724 Stroke 7415963 3 R N Exec exec netscape
6725 Stroke 74148963 3 R N Exec exec netscape
6726 Stroke 74158963 3 R N Exec exec netscape
6727 Stroke 7418963 3 R N Exec exec netscape
6728 Stroke 415963 3 R N Exec exec netscape
6730 You may prefer to use the numeric pad grid since you have such a
6731 grid on your machine. Here an example:
6733 Stroke N78963214 3 R N FvwmForm FvwmForm-QuitVerify
6734 Stroke N789632147 3 R N FvwmForm FvwmForm-QuitVerify
6736 This example starts the "QuitVerify" form if you draw a box that
6737 begins in the top left corner.
6741 installed and fvwm compiled with stroke support.
6745 .B http://www.etla.net/~willey/projects/libstroke/
6749 .BI "StrokeFunc [" Options "]"
6750 Causes fvwm to record a mouse stroke sequence and to execute the
6751 corresponding action as defined in a
6753 command. The cursor is modified to the
6757 command during recording. When the stroke is finished
6759 looks for a stroke binding of the form
6761 Stroke sequence 0 Context Modifiers action
6763 and executes the corresponding action (Note the 0). Normal use of
6764 this function is via a
6765 .BR Mouse " or " Key
6768 Mouse 3 A M StrokeFunc
6769 Key x R N StrokeFunc
6771 If you press mouse button 3 and
6773 anywhere (respectively, press the key x when the cursor is on the
6774 root window), then fvwm records the mouse motions until the mouse
6775 button 3 (respectively, the x key) is released and then check if
6778 corresponds to a stroke binding of the form
6780 .RI """Stroke " sequence " 0 A M " action """ \""
6781 .RI """Stroke " sequence " 0 R N " action """ \""
6784 .IR Context " and " Modifiers
6785 are taken at the beginning of the execution of the
6787 command (so you can release the modifiers before the end of the
6788 stroke recording in the case of a mouse binding and if you used,
6789 say, a title-bar context the mouse motion can go through an
6790 application window). The keys
6794 allow you to abort the command.
6798 command has five options:
6799 .IR NotStayPressed ", " EchoSequence ", " DrawMotion ", "
6800 .IR FeedBack " and " StrokeWidth .
6801 These options are disabled by default.
6803 causes fvwm to Echo the recorded stroke sequence.
6805 causes fvwm to draw the mouse motion on the screen.
6807 causes fvwm to display during a fraction of second the cursor of
6812 command if the recorded stroke sequence corresponds to a stroke
6815 takes an integer argument, which must be >= 0 and <= 100 and which
6816 defines the width of the line for the
6827 command. This option removes the need to have a button or the key
6828 pressed during the stroke, but you have to do a mouse click or
6833 key to finish the mouse motion recording (these keys also work
6840 "alone". In this case it works as above with the
6842 option enabled. However,
6844 in general, may not work as expected (i.e., in this case use 'A'
6847 in the stroke bindings).
6849 Note that some computers do not support key release events. If
6850 that is the case the
6854 command works as if the
6859 .SS THE STYLE COMMAND (CONTROLLING WINDOW STYLES)
6861 For readability, the commands in this section are not sorted
6862 alphabetically. The description of the
6864 command can be found at the end of this section.
6867 .BI "FocusStyle " "stylename options"
6868 works exactly like the
6870 command, but accepts only the focus policy related styles
6871 beginning with "FP". The prefix can be removed, but at the cost
6872 of a little bit of time.
6874 is meant to make the configuration file more readable. Example:
6876 FocusStyle * EnterToFocus, !LeaveToUnfocus
6880 Style * FPEnterToFocus, !FPLeaveToUnfocus
6884 .BI "DestroyStyle " style
6885 deletes the style named
6887 The changes take effect immediately. Note that
6889 is not a wild-carded search string, but rather a case-sensitive
6890 string that should exactly match the original
6894 Destroying style "*" can be done, but isn't really to be
6895 recommended. For example:
6897 DestroyStyle Application*
6899 This removes all settings for the style named "Application*", NOT
6900 all styles starting with "Application".
6903 .B "DestroyWindowStyle"
6904 deletes the styles set by the
6906 command on the selected window. The changes take effect immediately.
6910 All pending updates of all windows' styles and looks are applied
6911 immediately. E.g. if
6912 .BR Style ", " WindowStyle " or " TitleStyle
6913 commands were issued inside a fvwm function.
6916 .BI "Style " "stylename options ..."
6919 command is used to set attributes of a window to values other than
6920 the default or to set the window manager default styles.
6923 can be a window's name, class, or resource string. It may contain
6924 the wildcards '*' and '?', which are matched in the usual Unix
6925 filename manner. Multiple style options in a single
6927 command are read from left to right as if they were issued one
6928 after each other in separate commands. A given style always
6929 overrides all conflicting styles that have been issued earlier (or
6930 further left on the same style line).
6932 Note: windows that have no name (WM_NAME) are given a name of
6933 "Untitled", and windows that do not have a class (WM_CLASS,
6934 res_class) are given class "NoClass" and those that do not have a
6935 resource (WM_CLASS, res_name) are given resource "NoResource".
6937 If a window has the resource "fvwmstyle" set, the value of that
6938 resource is used in addition to any window names when selecting
6942 is a comma separated list containing one or more of the
6943 following keywords. Each group of style names is separated by
6944 slashes ('/'). The last style in these groups is the default.
6945 .IR BorderWidth ", " HandleWidth ,
6946 .IR !Icon " / " Icon ", " MiniIcon ,
6947 .IR IconBox ", " IconGrid ", " IconFill ", " IconSize ,
6948 .IR !Title " / " Title ,
6949 .IR TitleAtBottom " / " TitleAtLeft " / " TitleAtRight " / " TitleAtTop ,
6950 .IR LeftTitleRotatedCW " / " LeftTitleRotatedCCW ,
6951 .IR RightTitleRotatedCCW " / " RightTitleRotatedCW ,
6952 .IR TopTitleRotated " / " TopTitleNotRotated ,
6953 .IR BottomTitleRotated " / " BottomTitleNotRotated ,
6954 .IR !UseTitleDecorRotation " / " UseTitleDecorRotation ,
6955 .IR StippledTitle " / " !StippledTitle ,
6956 .IR StippledIconTitle " / " !StippledIconTitle ,
6957 .IR IndexedWindowName " / " ExactWindowName ,
6958 .IR IndexedIconName " / " ExactIconName ,
6959 .IR !Borders " / " Borders ,
6960 .IR !Handles " / " Handles ,
6961 .IR WindowListSkip " / " WindowListHit ,
6962 .IR CirculateSkip " / " CirculateHit ,
6963 .IR CirculateSkipShaded " / " CirculateHitShaded ,
6964 .IR CirculateSkipIcon " / " CirculateHitIcon ,
6966 .IR StaysOnTop " / " StaysOnBottom " / " StaysPut ,
6967 .IR Sticky " / " Slippery ,
6968 .IR StickyAcrossPages " / " !StickyAcrossPages ,
6969 .IR StickyAcrossDesks " / " !StickyAcrossDesks ,
6970 .IR !StickyStippledTitle " / " StickyStippledTitle ,
6971 .IR !StickyStippledIconTitle " / " StickyStippledIconTitle ,
6972 .IR StartIconic " / " StartNormal ,
6973 .IR Color ", " ForeColor ", " BackColor ", " Colorset ,
6974 .IR HilightFore ", " HilightBack ", " HilightColorset ,
6975 .IR BorderColorset ", " HilightBorderColorset ,
6976 .IR IconTitleColorset ", " HilightIconTitleColorset ,
6977 .IR IconBackgroundColorset ,
6978 .IR IconTitleRelief ", " IconBackgroundRelief ", " IconBackgroundPadding ,
6981 .IR StartsOnDesk " / " StartsOnPage " / " StartsAnyWhere ,
6982 .IR StartsOnScreen ,
6983 .IR ManualPlacementHonorsStartsOnPage " / " ManualPlacementIgnoresStartsOnPage ,
6984 .IR UnderMousePlacementHonorsStartsOnPage " / " UnderMousePlacementIgnoresStartsOnPage ,
6985 .IR CaptureHonorsStartsOnPage " / " CaptureIgnoresStartsOnPage ,
6986 .IR RecaptureHonorsStartsOnPage " / " RecaptureIgnoresStartsOnPage ,
6987 .IR StartsOnPageIncludesTransients " / " StartsOnPageIgnoresTransients ,
6988 .IR IconTitle " / " !IconTitle ,
6989 .IR MwmButtons " / " FvwmButtons ,
6990 .IR MwmBorder " / " FvwmBorder ,
6991 .IR MwmDecor " / " !DecorHint ,
6992 .IR MwmFunctions " / " !FuncHint ,
6993 .IR HintOverride " / " !Override ,
6994 .IR !Button " / " Button ,
6995 .IR ResizeHintOverride " / " !ResizeHintOverride ,
6996 .IR OLDecor " / " !OLDecor ,
6997 .IR GNOMEUseHints " / " GNOMEIgnoreHints ,
6998 .IR StickyIcon " / " SlipperyIcon ,
6999 .IR StickyAcrossPagesIcon " / " !StickyAcrossPagesIcon ,
7000 .IR StickyAcrossDesksIcon " / " !StickyAcrossDesksIcon ,
7001 .IR ManualPlacement " / " CascadePlacement " / " MinOverlapPlacement " / "
7002 .IR MinOverlapPercentPlacement " / " TileManualPlacement " / "
7003 .IR TileCascadePlacement " / " CenterPlacement " / " UnderMousePlacement ,
7004 .IR MinOverlapPlacementPenalties ,
7005 .IR MinOverlapPercentPlacementPenalties ,
7006 .IR DecorateTransient " / " NakedTransient ,
7007 .IR DontRaiseTransient " / " RaiseTransient ,
7008 .IR DontLowerTransient " / " LowerTransient ,
7009 .IR DontStackTransientParent " / " StackTransientParent ,
7010 .IR SkipMapping " / " ShowMapping ,
7011 .IR ScatterWindowGroups " / " KeepWindowGroupsOnDesk ,
7014 .IR !UsePPosition " / " NoPPosition " / " UsePPosition ,
7015 .IR !UseUSPosition " / " NoUSPosition " / " UseUSPosition ,
7016 .IR !UseTransientPPosition " / " NoTransientPPosition " / "
7017 .IR UseTransientPPosition ,
7018 .IR !UseTransientUSPosition " / " NoTransientUSPosition " / "
7019 .IR UseTransientUSPosition ,
7020 .IR !UseIconPosition " / " NoIconPosition " / " UseIconPosition ,
7021 .IR Lenience " / " !Lenience ,
7022 .IR ClickToFocus " / " SloppyFocus " /"
7023 .IR MouseFocus | FocusFollowsMouse " / " NeverFocus ,
7024 .IR ClickToFocusPassesClickOff " / " ClickToFocusPassesClick ,
7025 .IR ClickToFocusRaisesOff " / " ClickToFocusRaises ,
7026 .IR MouseFocusClickRaises " / " MouseFocusClickRaisesOff ,
7027 .IR GrabFocus " / " GrabFocusOff ,
7028 .IR GrabFocusTransientOff " / " GrabFocusTransient ,
7029 .IR FPFocusClickButtons ,
7030 .IR FPFocusClickModifiers ,
7031 .IR !FPSortWindowlistByFocus " / " FPSortWindowlistByFocus ,
7032 .IR FPClickRaisesFocused " / " !FPClickRaisesFocused ,
7033 .IR FPClickDecorRaisesFocused " / " !FPClickDecorRaisesFocused ,
7034 .IR FPClickIconRaisesFocused " / " !FPClickIconRaisesFocused ,
7035 .IR !FPClickRaisesUnfocused " / " FPClickRaisesUnfocused ,
7036 .IR FPClickDecorRaisesUnfocused " / " !FPClickDecorRaisesUnfocused ,
7037 .IR FPClickIconRaisesUnfocused " / " !FPClickIconRaisesUnfocused ,
7038 .IR FPClickToFocus " / " !FPClickToFocus ,
7039 .IR FPClickDecorToFocus " / " !FPClickDecorToFocus ,
7040 .IR FPClickIconToFocus " / " !FPClickIconToFocus ,
7041 .IR !FPEnterToFocus " / " FPEnterToFocus ,
7042 .IR !FPLeaveToUnfocus " / " FPLeaveToUnfocus ,
7043 .IR !FPFocusByProgram " / " FPFocusByProgram ,
7044 .IR !FPFocusByFunction " / " FPFocusByFunction ,
7045 .IR FPFocusByFunctionWarpPointer " / " !FPFocusByFunctionWarpPointer ,
7046 .IR FPLenient " / " !FPLenient ,
7047 .IR !FPPassFocusClick " / " FPPassFocusClick ,
7048 .IR !FPPassRaiseClick " / " FPPassRaiseClick ,
7049 .IR FPIgnoreFocusClickMotion " / " !FPIgnoreFocusClickMotion ,
7050 .IR FPIgnoreRaiseClickMotion " / " !FPIgnoreRaiseClickMotion ,
7051 .IR !FPAllowFocusClickFunction " / " FPAllowFocusClickFunction ,
7052 .IR !FPAllowRaiseClickFunction " / " FPAllowRaiseClickFunction ,
7053 .IR FPGrabFocus " / " !FPGrabFocus ,
7054 .IR !FPGrabFocusTransient " / " FPGrabFocusTransient ,
7055 .IR FPOverrideGrabFocus " / " !FPOverrideGrabFocus ,
7056 .IR FPReleaseFocus " / " !FPReleaseFocus ,
7057 .IR !FPReleaseFocusTransient " / " FPReleaseFocusTransient ,
7058 .IR FPOverrideReleaseFocus " / " !FPOverrideReleaseFocus ,
7059 .IR StartsLowered " / " StartsRaised ,
7060 .IR IgnoreRestack " / " AllowRestack ,
7061 .IR FixedPosition " / " VariablePosition ,
7062 .IR FixedUSPosition " / " VariableUSPosition ,
7063 .IR FixedPPosition " / " VariablePPosition ,
7064 .IR FixedSize " / " VariableSize ,
7065 .IR FixedUSSize " / " VariableUSSize ,
7066 .IR FixedPSize " / " VariablePSize ,
7067 .IR !Closable " / " Closable ,
7068 .IR !Iconifiable " / " Iconifiable ,
7069 .IR !Maximizable " / " Maximizable ,
7070 .IR !AllowMaximizeFixedSize " / " AllowMaximizeFixedSize ,
7071 .IR IconOverride " / " NoIconOverride " / " NoActiveIconOverride ,
7072 .IR DepressableBorder " / " FirmBorder ,
7074 .IR IconifyWindowGroups " / " IconifyWindowGroupsOff ,
7075 .IR ResizeOpaque " / " ResizeOutline ,
7076 .IR BackingStore " / " BackingStoreOff " / " BackingStoreWindowDefault ,
7077 .IR Opacity " / " ParentalRelativity ,
7078 .IR SaveUnder " / " SaveUnderOff ,
7079 .IR WindowShadeShrinks " / " WindowShadeScrolls ,
7080 .IR WindowShadeSteps ,
7081 .IR WindowShadeAlwaysLazy " / " WindowShadeBusy " / " WindowShadeLazy,
7082 .IR EWMHDonateIcon " / " EWMHDontDonateIcon ,
7083 .IR EWMHDonateMiniIcon " / " EWMHDontDonateMiniIcon ,
7084 .IR EWMHMiniIconOverride " / " EWMHNoMiniIconOverride ,
7085 .IR EWMHUseStackingOrderHints " / " EWMHIgnoreStackingOrderHints ,
7086 .IR EWMHIgnoreStateHints " / " EWMHUseStateHints ,
7087 .IR EWMHIgnoreStrutHints " / " EWMHUseStrutHints ,
7088 .IR EWMHIgnoreWindowType " / " !EWMHIgnoreWindowType ,
7089 .IR EWMHMaximizeIgnoreWorkingArea " / " EWMHMaximizeUseWorkingArea " / "
7090 .IR EWMHMaximizeUseDynamicWorkingArea ,
7091 .IR EWMHPlacementIgnoreWorkingArea " / " EWMHPlacementUseWorkingArea " / "
7092 .IR EWMHPlacementUseDynamicWorkingArea ,
7093 .IR MoveByProgramMethod ,
7097 .\" +++++++++++++++ general notes
7098 In the above list some options are listed as
7099 style-option/opposite-style-option. The opposite-style-option for
7100 entries that have them describes the fvwm default behavior and can
7101 be used if you want to change the fvwm default behavior.
7103 .\" +++++++++++++++ focus policy
7107 instructs fvwm to give the focus to a window when it is clicked
7111 .IR FocusFollowsMouse )
7112 tells fvwm to give a window the focus as soon as the pointer
7113 enters the window, and take it away when the pointer leaves the
7116 is similar, but doesn't give up the focus if the pointer leaves
7117 the window to pass over the root window or a ClickToFocus window
7118 (unless you click on it, that is), which makes it possible to move
7119 the mouse out of the way without losing focus. A window with the
7122 never receives the focus. This is useful for modules like
7125 Note: Once any of the "FP..." styles has been used, the defaults
7126 that come with the basic focus policies are not restored when the
7127 latter are used again. For example, once !FPGrabFocus has been
7128 used, using ClickToFocus does not restore FPGrabFocus.
7130 The focus model can be augmented with several additional options.
7131 In fvwm-2.5.3 and later, there are a large number of advanced
7132 options beginning with "FP" or "!FP". These options shall replace
7133 the older options one day and are described first. Using any of
7134 these new options may limit compatibility with older releases. In
7135 general, options beginning with "FP" turn a feature on, while
7136 those beginning with "!FP" turn it off.
7138 .B Focusing the window
7141 .IR FPEnterToFocus ,
7142 when the pointer enters a window it receives focus.
7145 .IR FPLeaveToUnfocus
7146 a window loses focus when the pointer leaves it.
7149 .IR FPClickToFocus ", " FPClickDecorToFocus " or "
7150 .IR FPClickIconToFocus ,
7151 a window receives focus when the inside of the window or the
7152 decorations or its icon is clicked.
7155 .IR FPFocusByProgram
7156 style allows windows to take the focus themselves.
7159 .IR !FPFocusByFunction
7160 style forbids that a window receives the focus via the
7161 .BR Focus " and " FlipFocus
7165 .IR FPFocusByFunctionWarpPointer
7166 style controls if the pointer is warped to a selected window
7172 allows focus on windows that do not want it, like
7177 .IR FPFocusClickButtons
7178 style takes a list of mouse buttons that can be clicked to focus
7179 or raise a window when the appropriate style is used. The default
7180 is to use the first three buttons ("123").
7183 .IR FPFocusClickModifiers
7184 style takes a list of modifier keys just like the
7186 command. The exact combination of modifier keys must be pressed
7187 for the click to focus or raise a window to work. The default is
7188 to use no modifiers ("N").
7191 .IR FPPassFocusClick
7192 style, the click that was used to focus a window is passed to
7196 .IR FPAllowFocusClickFunction
7197 style, the click that was used to focus a window can also
7198 trigger a normal action that was bound to the window with the
7203 .IR FPIgnoreFocusClickMotion
7204 style is used, clicking in a window and then dragging the pointer
7205 with the button held down does not count as the click to focus the
7206 window. Instead, the application processes these events
7207 normally. This is useful to select text in a terminal window with
7208 the mouse without raising the window. However, mouse bindings on
7209 the client window are not guaranteed to work anymore (see
7211 command). This style forces the initial click to be
7212 passed to the application. The distance that the pointer must be
7213 moved to trigger this is controlled by the
7218 .IR FPSortWindowlistByFocus " and " !FPSortWindowlistByFocus
7219 styles control whether the internal window list is sorted in the
7220 order the windows were focused or in the order they were created.
7221 The latter is the default for
7222 .IR ClickToFocus " and " SloppyFocus .
7225 .B Clicking the window to raise
7228 .IR FPClickRaisesFocused ", " FPClickDecorRaisesFocused " and "
7229 .IR FPClickIconRaisesFocused
7230 allow to raise the window when the interior or the decorations or
7231 the icon of the window is clicked while the window is already
7235 .IR FPClickRaisesUnfocused ", " FPClickDecorRaisesUnfocused " and "
7236 .IR FPClickIconRaisesUnfocused
7237 allow to raise the window when the interior or the decorations or
7238 the icon of the window is clicked while the window is not yet
7242 .IR FPPassRaiseClick
7243 style, the click that was used to raise the window is passed to
7247 .IR FPAllowRaiseClickFunction
7248 style, the click that was used to raise the window can also
7249 trigger a normal action that was bound to the window with the
7254 .IR FPIgnoreRaiseClickMotion
7255 style is used, clicking in a window and then dragging the pointer
7256 with the button held down does not count as the click to raise the
7257 window. Instead, the application processes these events
7258 normally. This is useful to select text in a terminal window with
7259 the mouse without raising the window. However, mouse bindings on
7260 the client window are not guaranteed to work anymore (see
7262 command. Note that this style forces that the initial click is
7263 passed to the application. The distance that the pointer must be
7264 moved to trigger this is controlled by the
7268 .B Grabbing the focus when a new window is created
7270 New normal or transient windows with the
7271 .IR FPGrabFocus " or " FPGrabFocusTransient
7272 style automatically receive the focus when they are created.
7274 is the default for windows with the
7276 style. Note that even if these styles are disabled, the
7277 application may take the focus itself. Fvwm can not prevent this.
7280 .I OverrideGrabFocus
7281 style instructs fvwm to never take away the focus from such a
7283 .IR GrabFocus " or " GrabFocusTransient
7284 styles. This can be useful if you like to have transient windows
7285 receive the focus immediately, for example in a web browser, but
7286 not while you are working in a terminal window or a text
7289 The above three styles are accompanied by
7290 .IR FPReleaseFocus ", " FPReleaseFocusTransient " and "
7291 .IR FPOverrideReleaseFocus .
7292 These control if the focus is returned to another window when the
7293 window is closed. Otherwise no window or the window under the
7294 pointer receives the focus.
7296 .IR ClickToFocusPassesClickOff " and " ClickToFocusPassesClick
7297 controls whether a mouse click to focus a window is sent to the
7298 application or not. Similarly,
7299 .I ClickToFocusRaisesOff/MouseFocusClickRaisesOff
7301 .I ClickToFocusRaises/MouseFocusClickRaises
7302 control if the window is raised (but depending on the focus
7305 Note: in fvwm versions prior to
7306 2.5.3, the "Click..." options applied only to windows with
7308 while the "Mouse..." options applied to windows with a different
7309 focus policy. This is no longer the case.
7313 style is equivalent to using
7314 .IR FPGrabFocus " + " FPReleaseFocus .
7317 .I GrabFocusTransient
7318 style is equivalent to using
7319 .IR FPGrabFocusTransient " + " FPReleaseFocusTransient .
7322 is equivalent to the new style
7325 .\" +++++++++++++++ styles affecting the window title
7329 .IR Title " and " !Title
7330 options determine if the window has a title-bar or not. By
7331 default all windows have a title-bar.
7338 .IR TitleAtBottom ", " TitleAtLeft " or " TitleAtRight
7339 style have a title-bar below, to the left or to the right of the
7340 window instead of above as usual. The
7342 style restores the default placement. Even if the window has the
7344 style set, this affects the
7346 command. Please check the
7348 command for interactions between that command and these styles.
7349 Titles on the left or right side of the windows are augmented by
7350 the following styles:
7352 Normally, the text in titles on the left side of a window is
7353 rotated counterclockwise by 90 degrees from the normal upright
7354 position and 90 degrees clockwise for titles on the right side.
7355 It can also be rotated in the opposite directions with
7356 .IR LeftTitleRotatedCW " if " TitleAtLeft
7358 .IR RightTitleRotatedCCW " if " TitleAtRight
7359 is used. The defaults can be restored with
7360 .IR LeftTitleRotatedCCW " and " RightTitleRotatedCW .
7361 A normal horizontal text may be rotated as well with
7362 .IR TopTitleRotated " if " TitleAtTop
7364 .IR BottomTitleRotated " if " TitleAtBottom
7365 is used. The defaults can be restored with
7366 .IR TopTitleNotRotated " and " BottomTitleNotRotated .
7368 By default the title bar decoration defined using the
7370 command is rotated following the title text rotation (see the
7371 previous paragraph). This can be disabled by using the
7372 .I !UseTitleDecorRotation
7374 .I UseTitleDecorRotation
7375 reverts back to the default.
7379 style, titles are drawn with the same effect that is usually
7380 reserved for windows with the
7381 .IR Sticky ", " StickyAcrossPages " or " StickyAcrossDesks
7384 reverts back to normal titles.
7391 takes two arguments. The first is the window-label text color and
7392 the second is the window decorations normal background color. The
7393 two colors are separated with a slash. If the use of a slash
7394 causes problems then the separate
7395 .IR ForeColor " and " BackColor
7396 options can be used.
7399 takes the colorset number as its sole argument and overrides the
7402 Instead, the corresponding colors from the given colorset are
7403 used. Note that all other features of a colorset are not used.
7406 decoration style in the
7407 .BR TitleStyle " and " ButtonStyle
7409 To stop using the colorset, the colorset number is omitted.
7412 .IR HilightFore ", " HilightBack " and " HilightColorset
7413 style options work exactly like
7414 .IR ForeColor ", " BackColor " and " Colorset
7415 but are used only if the window has the focus. These styles
7416 replace the old commands
7417 .BR HilightColor " and " HilightColorset .
7420 takes the colorset number as its sole argument and overrides the
7422 .IR Color " or " Colorset .
7423 for the window border. To stop using a colorset, the argument is
7427 .IR HilightBorderColorset
7428 style option works similarly to
7430 but is used when the window has the focus.
7433 disables displaying icon labels while the opposite style
7435 enables icon labels (default behaviour).
7441 .IR IconTitleColorset
7442 takes the colorset number as its sole argument and overrides the
7444 .IR Color " or " Colorset .
7445 To stop using this colorset, the argument is omitted.
7447 .IR HilightIconTitleColorset
7448 takes the colorset number as its sole argument and overrides the
7450 .IR HilightColor " or " HilightColorset .
7451 To stop using this colorset, the argument is omitted.
7453 .IR IconBackgroundColorset
7454 takes the colorset number as its sole argument and uses it to set
7455 a background for the icon picture. By default the icon picture is
7456 not drawn onto a background image. To restore the default, the
7457 argument is omitted.
7460 takes one numeric argument that may be between -50 and +50 pixels
7461 and defines the thickness of the 3D relief drawn around the icon
7462 title. With negative values the icon title gets a pressed in
7463 look. The default is 2 and it is restored if the argument is
7466 .IR IconBackgroundRelief
7467 takes one numeric argument that may be between -50 and +50 pixels
7468 and defines the thickness of the 3D relief drawn around the icon
7469 picture background (if any). With negative values the icon
7470 background gets a pressed in look. The default is 2 and it is
7471 restored if the argument is omitted.
7473 .IR IconBackgroundPadding
7474 takes one numeric argument that may be between 0 and 50 pixels and
7475 defines the amount of free space between the relief of the icon
7476 background picture (if any) and the icon picture. The default is 2
7477 and it is restored if the argument is omitted.
7480 .IR Font " and " IconFont
7481 options take the name of a font as their sole argument. This font
7482 is used in the window or icon title. By default the font given in
7485 command is used. To revert back to the default, use the style
7486 without the name argument. These styles replace the older
7487 .BR WindowFont " and " IconFont
7491 .I IndexedWindowName
7492 style causes fvwm to use window titles in the form
7494 .IR name " (" i ") "
7498 is the exact window name and
7500 is an integer which represents the
7506 restores the default which is to use the exact window name.
7511 .I IndexedWindowName
7514 styles but for the icon titles.
7516 .\" +++++++++++++++ styles affecting title buttons
7519 .IR Button " and " !Button
7520 take a numeric argument which is the number of the title-bar
7521 button which is to be shown or omitted.
7530 button look pressed-in when the window is maximized. See the
7534 for more information. To switch this style off again, use the
7538 .\" +++++++++++++++ styles affecting borders
7543 suppresses the window border (but not the title) completely. The
7545 style enables them again. Without borders, all other styles
7546 affecting window borders are meaningless.
7549 makes the 3D bevel more closely match Mwm's.
7551 turns off the previous option.
7555 style, the window does not get the handles in the window corners
7556 that are commonly used to resize it. With
7560 style is used. By default, or if
7562 is specified, the width from the
7571 takes a numeric argument which is the width of the border to place
7572 the window if it does have resize-handles.
7575 takes a numeric argument which is the width of the border to place
7576 the window if it does not have resize-handles. It is used only if
7579 style is specified too.
7581 .I DepressableBorder
7582 makes the border parts of the window decoration look sunken in
7583 when a button is pressed over them. This can be disabled again
7588 .\" +++++++++++++++ icons, shading, maximizing, movement, resizing
7590 .B Icons, shading, maximizing, movement, resizing
7592 takes an (optional) unquoted string argument which is the icon
7593 bitmap or pixmap to use. Icons specified this way override pixmap
7594 icons, but not icon windows or the ewmh icon, provided by the
7595 client in the application (with the WM_HINTS property or with the
7596 ewmh _NET_WM_ICON property). The
7598 style changes the behavior to override any client-provided icons;
7601 style changes the behavior to not override any client-provided
7602 icons; the default overriding behavior can be activated with the
7603 .I NoActiveIconOverride
7604 style. With this style, fvwm uses application provided icons if
7605 the icon is changed but uses the icon provided in the
7606 configuration file until then.
7608 There is one exception to these rules, namely
7610 Style * Icon unknown.xpm
7612 doesn't force the unknown.xpm icon on every window, it just sets
7613 the default icon like the DefaultIcon command. If you really want
7614 all windows to have the same icon, you can use
7616 Style ** Icon unknown.xpm
7620 attribute is set then the specified window simply disappears when
7621 it is iconified. The window can be recovered through the
7624 is set without an argument then the
7626 attribute is cleared but no icon is specified. An example which
7629 module icon to exist:
7632 Style FvwmPager Icon
7636 takes no argument, four numeric arguments (plus optionally a
7637 screen specification), an X11 geometry string or the string
7640 .RI IconBox " [" "screen scr-spec" "] " "l t r b"
7648 is the left coordinate,
7654 is bottom. Negative coordinates indicate distance from the right
7655 or bottom of the screen.
7656 If the first argument is the word
7660 argument specifies the Xinerama screen on which the IconBox is
7661 defined. It can be the usual screen Xinerama specification, 'p',
7662 \'c', 'g', a screen number or the additional 'w' for the screen
7663 where the window center is located. This is only useful with
7664 multiple Xinerama screens.
7665 The "l t r b" specification is more flexible than an X11 geometry.
7668 IconBox -80 240 -1 -1
7670 defines a box that is 80 pixels wide from the right edge,
7671 240 pixels down from the top, and continues to the bottom of
7674 Perhaps it is easier to use is an X11
7675 geometry string though:
7679 places an 1000 by 70 pixel icon box on the bottom of the screen
7680 starting in the lower right hand corner of the screen.
7681 One way to figure out a geometry like this is to use a window
7682 that resizes in pixel increments, for example, xv.
7683 Then resize and place the xv window where you want the iconbox.
7684 Then use FvwmIdent to read the windows geometry.
7685 The icon box is a region of the screen
7686 where fvwm attempts to put icons for any matching window, as long
7687 as they do not overlap other icons.
7688 Multiple icon boxes can be
7689 defined as overflow areas. When the first icon box is full, the
7690 second one is filled. All the icon boxes for one style must be
7693 command. For example:
7695 Style * IconBox -80 240 -1 -1, \\
7698 A Style command with the IconBox option replaces any icon box
7699 defined previously by another Style command for the same style.
7700 Thats why the backslash in the previous example is required.
7702 Note: The geometry for the icon box command takes the additional
7703 screen specifier "@w" in case a Xinerama setup is used. This
7704 designates the screen where the window center is located. The
7705 additional screen specifier is not allowed anywhere else.
7707 If you never define an icon box, or you fill all the icon boxes,
7708 fvwm has a default icon box that covers the screen, it fills top
7709 to bottom, then left to right, and has an 80x80 pixel grid. To
7710 disable all but the default icon box you can use IconBox without
7711 arguments in a separate
7713 command. To disable all icon boxes including the default icon
7714 box, the argument "none" can be specified.
7716 Hint: You can auto arrange your icons in the icon box with a
7717 simple fvwm function. Put the "DeiconifyAndRearrange" function
7718 below in your configuration file:
7720 AddToFunc DeiconifyAndRearrange
7722 + C All (CurrentPage, Iconic) PlaceAgain Icon
7724 And then replace all places where you call the
7726 command to de-iconify an icon with a call to the new
7727 function. For example replace
7735 Mouse 1 I A Iconify off
7740 + C DeiconifyAndRearrange
7743 + D DeiconifyAndRearrange
7745 Mouse 1 I A DeiconifyAndRearrange
7748 takes 2 numeric arguments greater than zero.
7752 Icons are placed in an icon box by stepping through the icon box
7755 values for the icon grid, looking for a free space. The default
7756 grid is 3 by 3 pixels which gives a tightly packed appearance. To
7757 get a more regular appearance use a grid larger than your largest
7760 definition to clip an icon to a maximum size. An
7762 definition must follow the
7764 definition that it applies to:
7766 Style * IconBox -80x240-1-1, IconGrid 90 90
7771 .RI "IconFill " "Bottom Right"
7773 Icons are placed in an icon box by stepping through the icon box
7774 using these arguments to control the direction the box is filled
7775 in. By default the direction is left to right, then top to bottom.
7776 This would be expressed as:
7780 To fill an icon box in columns instead of rows, specify the
7781 vertical direction (top or bottom) first. The directions can be
7782 abbreviated or spelled out as follows: "t", "top", "b", "bot",
7783 "bottom", "l", "lft", "left", "r", "rgt", "right". An
7785 definition must follow the
7787 definition that it applies to:
7789 Style * IconBox -80x240-1-1, IconFill b r
7792 sets limits on the size of an icon image. Both user-provided
7793 and application-provided icon images are affected.
7795 .RI IconSize " [ " width " " height " [ " maxwidth " " maxheight " ] ]"
7797 All arguments are measured in pixels. When all four arguments are
7803 represent the minimum size of an icon, and
7807 represent the maximum size of an icon. Icon images that are smaller
7808 than the minimum size are padded. Icon images that are bigger than
7809 the maximum size are clipped.
7811 If only two arguments are passed to
7816 represent the absolute size of an icon. Icons covered by this style
7817 are padded or clipped to achieve the given size.
7819 If no arguments are specified, the default values are used for each
7820 dimension. This effectively places no limits on the size of an icon.
7822 The value of "-1" can be used in place of any of the arguments to
7823 specify the default value for that dimension.
7825 Note that application-provided icon windows are not affected.
7828 specifies a pixmap to use as the miniature icon for the
7829 window. This miniature icon can be drawn in a title-bar button
7832 and can be used by various fvwm modules
7833 .RB ( FvwmWinList ", " FvwmIconMan " and " FvwmTaskBar ).
7834 It takes the name of a pixmap as an argument.
7836 .IR WindowShadeShrinks " and " WindowShadeScrolls
7837 control if the contents of a window that is being shaded with the
7839 command are scrolled (default) or if they stay in place. The
7840 shrinking mode is a bit faster
7844 option selects the number of steps for animation when shading a
7847 It takes one number as its argument. If the number has a trailing
7849 it sets the number of pixels to use as the step size instead of
7850 a fixed number of steps. 0 disables the animation. This happens
7851 too if the argument is omitted or invalid.
7855 command has two modes of operation: busy and lazy shading. Busy
7856 shading can be 50% slower than lazy shading, but the latter can
7857 look strange under some conditions, for example, if the window
7858 borders, buttons or the title are filled with a tiled pixmap.
7859 Also, the window handles are not drawn in lazy mode and the border
7860 relief may only be drawn partially right before the window reaches
7861 the shaded state or tight after leaves the unshaded state. By
7862 default, fvwm uses lazy mode if there are no bad visual effects
7863 (not counting the window handles) and busy mode otherwise. Use
7865 .I WindowShadeAlwaysLazy " or " WindowShadeBusy
7866 to force using the lazy or busy mode. The default setting is
7868 .IR WindowShadeLazy .
7871 instructs fvwm to resize the corresponding windows with their
7872 contents visible instead of using an outline. Since this causes
7873 the application to redraw frequently it can be quite slow and make
7874 the window flicker excessively, depending on the amount of
7875 graphics the application redraws. The
7877 style (default) negates the
7879 style. Many applications do not like their windows being resized
7880 opaque, e.g. XEmacs, Netscape or terminals with a pixmap
7881 background. If you do not like the result, do not use the
7883 style for these windows. To exempt certain windows from opaque
7884 resizing you could use these lines in your configuration file:
7886 Style * ResizeOpaque
7887 Style rxvt ResizeOutline
7888 Style emacs ResizeOutline
7891 makes the window sticky, i.e. it is always visible on each page
7892 and each desk. The opposite style,
7894 reverts back to the default.
7897 makes the window sticky when its iconified. It de-iconifies on
7898 top the active desktop.
7900 reverts back to the default.
7902 .IR StickyAcrossPages " and " StickyAcrossPagesIcon
7904 .IR Sticky " and " StickyIcon ,
7905 but stick the window only across pages, not desks while
7906 .I StickyAcrossDesks " and " StickyAcrossDesksIcon
7907 works the other way round.
7909 Windows that have been marked as
7912 .I StickyAcrossDesks
7914 .I StickyAcrossPages
7915 have stipples drawn on the titlebar. This can be negated with the
7916 .I !StickyStippledTitle
7918 .I StickyStippledTitle
7919 puts back the stipples where that window has also been marked as
7921 Note that this is the default style for
7925 icons have stipples drawn on the title. This can be disabled in
7926 the same way with the
7927 .I !StickyStippledIconTitle
7932 style are shown as icons initially. Note that some applications
7933 counteract that by deiconifying themselves. The default is to not
7934 iconify windows and can be set with the
7938 .I StippledIconTitle
7941 in that it draws stipples on the titles of icons but does not
7942 make the icon sticky.
7945 makes fvwm ignore attempts of clients to raise or lower their own
7946 windows. By default, the opposite style,
7950 .IR FixedPosition " and " FixedUSPosition
7951 make fvwm ignore attempts of the user to move the window. It is
7952 still possible to move the window by resizing it. To allow the
7953 user to move windows, use the
7954 .IR VariablePosition " or " VariableUSPosition
7957 .IR FixedSize " and " FixedUSSize
7958 make fvwm ignore attempts of the user to resize the window. To
7959 allow the user to resize windows, use the
7960 .IR VariableSize " or " VariableUSSize
7963 .IR FixedPPosition " and " FixedPSize
7964 make fvwm ignore attempts of the program to move or resize its
7965 windows. To allow this kind of actions, use the
7966 .IR VariablePPosition " or " VariablePSize
7967 style. These styles may sometimes affect the initial placement
7968 and dimensions of new windows (depending on the application). If
7969 windows are created at strange places, try either the
7970 .IR VariablePPosition " or " NoPPosition
7973 style may screw up window dimensions for some applications. Do Not
7974 use this style in this case.
7976 .IR MoveByProgramMethod
7977 affects how fvwm reacts to requests by the application to move its
7978 windows. By default, fvwm tries to detect which method to use,
7979 but it sometimes detects the wrong method. You may come across a
7980 window that travels across the screen by a few pixels when the
7981 application resizes it, moves to a screen border with the frame
7982 decorations off screen, that remembers its position for the next
7983 time it starts but appears in a slighly shifted position, or that
7984 attepmts to become full screen but has the. Try out both options,
7985 .IR UseGravity " and " IgnoreGravity
7986 on the window (and that window only) and see if that helps. By
7987 default, fvwm uses the
7989 method. Once the method was detected, it is never changed again.
7990 As long as fvwm can not detect the proper method, it uses
7992 To force fvwm to retry the detection, use one of the other two
7993 options first and then use
7997 Note: This option was introduced to alleviate a problem with the
8001 clearly states that the
8003 option should be used, but traditionally applications ignored this
8007 enables the functions
8012 to be performed on the windows. This is on by default.
8015 inhibits the window to be closed.
8018 enables the function
8020 to be performed on the windows.
8021 This is on by default.
8024 inhibits the window from being iconified.
8027 enables the function
8029 to be performed on the windows.
8030 This is on by default.
8033 inhibits the window from being maximized.
8035 .IR AllowMaximizeFixedSize
8036 enables the function
8038 to be performed on windows that are not resizable, unless
8039 maximization has been disabled either using the style
8041 or through WM hints. This is on by default. The opposite,
8042 .IR !AllowMaximizeFixedSize ,
8043 inhibits all windows that are not resizable from being maximized.
8045 .I ResizeHintOverride
8046 instructs fvwm to ignore the program supplied minimum and maximum
8047 size as well as the resize step size (the character size in many
8048 applications). This can be handy for broken applications that
8049 refuse to be resized. Do not use it if you do not need it. The
8050 default (opposite) style is
8051 .IR !ResizeHintOverride .
8052 Note: With this style,
8054 reports the window's geometry in pixels instead of characters.
8056 .I MaxWindowSize " [ width [ p ] height [ p ] ]"
8057 Tells fvwm the maximum width and height of a window. The values
8058 are the percentage of the total screen area. If the letter
8060 is appended to either of the values, the numbers are interpreted
8061 as pixels. This command is useful to force large application
8062 windows to be fully visible. Neither
8063 .IR height " nor " width
8064 may be less than 100 pixels. If you omit the parameters or their
8065 values are invalid, both limits are set to 32767 pixels (which is
8069 .I IconifyWindowGroups
8070 all windows in the same window group are iconified and deiconified
8071 at once when any window in the group is (de)iconified. The default is
8072 .IR IconifyWindowGroupsOff ,
8073 which disables this behavior. Although a number of applications
8074 use the window group hint, it is rarely used in a proper way, so
8075 it is probably best to use
8076 .I IconifyWindowGroups
8077 only for selected applications.
8079 .\" +++++++++++++++ Window Manager placement
8081 .B Window Manager placement
8082 Applications can place windows at a particular spot on the screen
8083 either by window manager hints or a geometry specification. When
8084 they do neither, then the window manager steps in to find a place
8085 for the window. Fvwm knows several ways to deal with this
8086 situation. The default is
8087 .IR TileCascadePlacement .
8090 automatically places new windows in the center of the display.
8093 automatically place new windows in a cascading fashion.
8095 .I TileCascadePlacement
8096 automatically places new windows in a smart location - a location
8097 in which they do not overlap any other windows on the screen. If
8098 no such position can be found
8099 .IR CascadePlacement
8100 is used as a fall-back method.
8102 .I TileManualPlacement
8104 .IR TileCascadePlacement ,
8107 as the fall-back method.
8109 .I UnderMousePlacement
8110 automatically places new windows centered at the current cursor position.
8112 .I MinOverlapPlacement
8113 automatically places new windows in a location in which the
8114 overlapping area in pixels of other windows is minimized.
8115 By default this placement policy tries to avoid
8116 overlapping icons and windows on higher layers.
8117 This can be configured with the
8118 .IR MinOverlapPlacementPenalties
8121 .I MinOverlapPercentPlacement
8123 .IR MinOverlapPlacement
8124 but tries to minimize the overlapped percentages of other windows
8125 instead of the overlapped area in pixels. This placement policy
8126 tries to avoid covering other windows completely and tries even
8127 harder not to cover small windows.
8128 This can be configured with the
8129 .I MinOverlapPlacementPenalties
8131 .I MinOverlapPercentPlacementPenalties
8134 .I MinOverlapPlacementPenalties
8135 takes at most 6 positive or null decimal arguments:
8137 .I normal ontop icon sticky below strut
8139 if trailing arguments are missing the default is used which is:
8143 To reset this style to the default values, prefix it with a '!'.
8144 This style configures the
8145 .IR MinOverlapPlacement " and " MinOverlapPercentPlacement
8149 factor affects normal windows, the
8151 factor affects windows with a greater layer than the window being
8154 factor affects icons, the
8156 factor affects sticky windows, the
8158 factor affects windows with a smaller layer than the window being
8161 factor affects the complement of the
8163 working area if the window being placed has the
8164 .I EWMHPlacementUseWorkingArea
8165 style and windows with an
8167 strut hint (i.e., a "please do not cover me" hint) if the window
8168 being placed has the
8169 .I EWMHPlacementUseDynamicWorkingArea
8170 style. These factors represent the amount of area that these
8171 types of windows (or area) are counted as, when a new window is
8172 placed. For example, by default the area of ontop windows is
8173 counted 5 times as much as normal windows. So
8174 .IR MinOverlapPlacement " and " MinOverlapPercentPlacement
8175 covers five times as much area of another window before it will
8176 cover an ontop window. To treat ontop windows the same as other
8177 windows, set this to 1. To really, really avoid putting windows
8178 under ontop windows, set this to a high value, say 1000. This
8179 style affects the window already mapped and not the window which
8180 is currently placed. There is one exception to this rule: in the
8181 case of the window being placed has the
8182 .I EWMHPlacementUseWorkingArea
8185 factor affects the placed window.
8187 .I MinOverlapPercentPlacementPenalties
8188 takes at most 4 positive or null integer arguments:
8190 .I cover_100 cover_95 cover_85 cover_75
8192 if trailing arguments are missing the defaults are used
8197 To reset this style to the default values, prefix it with a '!'.
8198 This style affects the
8199 .I MinOverlapPercentPlacement
8200 placement policy and is similar to the
8201 .I MinOverlapPlacementPenalties
8204 factor is used when the window being placed covers at least
8206 percent of the window. This factor is added to the factor
8208 .IR MinOverlapPlacementPenalties
8212 (aka active placement). The user is required to place every new
8213 window manually. The window only shows as a rubber band until a
8214 place is selected manually. The window is placed when a mouse
8215 button or any key except
8217 is pressed. Escape aborts manual placement which places the
8218 window in the top left corner of the screen. If mouse button 2 is
8219 pressed during the initial placement of a window (respectively
8221 and mouse button 1 in case Mwm emulation has been enabled with the
8223 command), the user is asked to resize the window too.
8225 It is possible to define buttons usable to place windows with the
8227 command and the special context 'P' for placement (see
8229 command). However, you can't redefine the way to also resize the
8230 window other than the way it is affected by the
8232 command. The button used for placing the window can be checked with
8241 Style * ManualPlacement
8244 *FvwmEvent: add_window GrowDownFunc
8245 AddToFunc StartFunction
8248 AddToFunc GrowDownFunc
8249 + I windowid $0 (PlacedByButton 3) \\
8250 Resize bottomright keep -0p
8253 Now, whenever a window is created and the user presses button 3 to
8254 finish initial placement, the window is automatically enlarged
8255 until it hits the bottom screen border.
8257 .I Old placement styles
8258 DumbPlacement / SmartPlacement / SmartPlacementOff,
8259 CleverPlacement / CleverPlacementOff,
8260 ActivePlacement / RandomPlacement,
8261 ActivePlacementsHonorsStartsOnPage /
8262 ActivePlacementsHonorsStartsOnPageOff, GlobalOpts
8263 SmartPlacementIsReallySmart / GlobalOpts SmartPlacementIsNormal
8264 are still supported but will be removed in the future. The old and
8265 new styles can be translated according to the following table:
8267 GlobalOpts SmartPlacementIsReallySmart
8268 Style * SmartPlacement
8270 Style * SmartPlacement, CleverPlacement
8272 GlobalOpts SmartPlacementIsNormal
8273 Style * SmartPlacement
8275 Style * SmartPlacement, CleverPlacementOff
8277 Style * DumbPlacement, RandomPlacement
8279 Style * CascadePlacement
8281 Style * DumbPlacement, ActivePlacement
8283 Style * ManualPlacement
8285 Style * SmartPlacement, \\
8286 RandomPlacement, CleverPlacementOff
8288 Style * TileCascadePlacement
8290 Style * SmartPlacement, \\
8291 ActivePlacement, CleverPlacementOff
8293 Style * TileManualPlacement
8295 Style * SmartPlacement, CleverPlacement
8297 Style * MinOverlapPlacement
8299 Style * SmartPlacement, \\
8300 ActivePlacement, CleverPlacement
8302 Style * MinOverlapPercentPlacement
8304 Style * ActivePlacementsHonorsStartsOnPage
8306 Style * ManualPlacementsHonorsStartsOnPage
8308 Style * ActivePlacementsHonorsStartsOnPageOff
8310 Style * ManualPlacementsHonorsStartsOnPageOff
8313 .\" +++++++++++++++ placement options and stacking policy
8315 .B Placement policy options and window stacking
8317 instructs fvwm to ignore the program specified position (PPosition
8318 hint) when adding new windows. Using PPosition is required for
8319 some applications, but if you do not have one of those its a real
8320 headache. Many programs set PPosition to something obnoxious like
8321 0,0 (upper left corner).
8324 is equivalent to the deprecated option
8330 but applies suppresses using the user specified position indicated
8331 by the program (USPosition hint). It is generally a bad thing to
8332 override the user's choice, but some applications misuse the
8333 USPosition hint to force their windows to a certain spot on the
8334 screen without the user's consent.
8337 is equivalent to the deprecated option
8340 .IR !UseTransientPPosition " and " UseTransientPPosition
8342 .IR !UsePPosition " and " UsePPosition
8343 but apply only to transient windows.
8345 .I !UseTransientPPosition
8346 is equivalent to the deprecated option
8347 .IR NoTransientPPosition .
8350 instructs fvwm to ignore the program specified icon position
8351 (IconPosition hint) when iconifying the window.
8354 is equivalent to the deprecated option
8355 .IR NoIconPosition .
8358 takes a numeric argument which is the desktop number on which the
8359 window should be initially placed. Note that standard Xt programs
8360 can also specify this via a resource (e.g. "-xrm '*Desk: 1'").
8363 takes 1, 2, or 3 numeric arguments. If one or three arguments are
8364 given, the first (or only) argument is the desktop number. If
8365 three arguments are given, the 2nd and 3rd arguments identify the
8366 x,y page position on the virtual window. If two arguments are
8367 given, they specify the page position, and indicate no desk
8368 preference. If only one argument is given,
8370 functions exactly like
8372 For those standard Xt programs which understand this usage, the
8373 starting desk/page can also be specified via a resource (e.g.,
8374 "-xrm '*page: 1 0 2'").
8378 is a useful technique when you want to start an app on some other
8379 page and continue with what you were doing, rather than waiting
8383 takes one argument. It can be 'p' for the primary screen, 'c' for
8384 the current screen (containing the mouse pointer), 'g' for the
8385 global screen or the screen number itself (counting from zero). A
8386 new window is placed on the specified Xinerama screen. The
8387 default is to place windows on the screen that contains the mouse
8388 pointer at the time the window is created. However, those windows
8389 which are not placed by fvwm (i.e., those with a USPosition hint
8390 from a user specified geometry) are normally placed in a position
8391 relative to the global screen. The
8393 style is also useful to cause these windows to be placed relative
8394 to a specific Xinerama screen. For example:
8396 Style * StartsOnScreen c
8398 Would cause all windows, including those with their own geometry
8399 to be placed relative to the current Xinerama screen rather than
8400 the global screen. For those standard Xt programs which
8401 understand this usage, the starting desk/page can also be
8402 specified via a resource (e.g., "-xrm '*fvwmscreen: c'").
8403 ('fvwmscreen' was chosen because some applications already use
8404 \'.screen' for other purposes.)
8406 .I StartsOnPageIncludesTransients
8409 style to be applied even for transient windows. This is not
8410 usually useful, since transients are usually pop ups that you want
8411 to appear in your visible viewport; but occasionally an
8412 application uses a transient for something like a startup window
8413 that needs to be coerced into place.
8415 .I ManualPlacementIgnoresStartsOnPage
8417 .IR StartsOnPage " or " StartsOnDesk
8418 placement in the event that both
8419 .IR ManualPlacement " and " SkipMapping
8420 are in effect when a window is created. This prevents you from
8421 interactively placing a window and then wondering where it
8422 disappeared to, because it got placed on a different desk or page.
8423 .I ManualPlacementHonorsStartsOnPage
8424 allows this to happen anyway. The option has no effect if
8426 is not in effect, because fvwm switches to the proper desk/page to
8427 perform interactive placement. The default is
8428 .IR ManualPlacementIgnoresStartsOnPage "; "
8429 .I ManualPlacementHonorsStartsOnPage
8430 matches the way the old
8432 style used to handle the situation.
8434 .I UnderMousePlacementIgnoresStartsOnPage
8436 .I UnderMousePlacementHonorsStartsOnPage
8438 .I ManualPlacementIgnoresStartsOnPage
8440 .I ManualPlacementHonorsStartsOnPage
8442 .I UnderMousePlacement
8445 .I CaptureHonorsStartsOnPage
8446 causes the initial capture (of an already existing window) at
8447 startup to place the window according to the
8448 .IR StartsOnPage " and " StartsOnScreen
8449 desk, page and Xinerama screen specification.
8450 .I CaptureIgnoresStartsOnPage
8451 causes fvwm to ignore these settings (including
8453 on initial capture. The default is
8454 .IR CaptureIgnoresStartsOnPage .
8456 .I RecaptureHonorsStartsOnPage
8457 causes a window to be placed according to, or revert to, the
8458 .IR StartsOnPage " and " StartsOnScreen
8459 desk, page and Xinerama screen specification on
8460 .BR Restart " or " Recapture .
8461 .I RecaptureIgnoresStartsOnPage
8462 causes fvwm to respect the current window position on
8463 .BR Restart " or " Recapture .
8465 .IR RecaptureIgnoresStartsOnPage .
8468 accepts one optional argument: a non-negative integer. This is
8469 the layer the window is put in. If no argument is given, any
8470 previously set value is deleted and the default layer is implied.
8473 puts the window in the top layer. This layer can be changed by
8479 puts the window in the put layer. This layer can be changed by
8485 puts the window in the bottom layer. This layer can be changed by
8491 instructs fvwm to put the window initially at the bottom of its
8492 layer rather than the default
8496 tells fvwm not to switch to the desk the window is on when it gets
8497 mapped initially (useful with
8498 .IR StartsOnDesk " or " StartsOnPage ).
8500 .I KeepWindowGroupsOnDesk
8501 makes new windows that have the window group hint set appear on
8502 the same desk as the other windows of the same group. Since this
8503 behavior may be confusing, the default setting is
8504 .IR ScatterWindowGroups .
8505 The window group hint is ignored when placing windows in this
8508 .\" +++++++++++++++ transient windows
8510 .B Transient windows
8511 .I DecorateTransient
8512 causes transient windows, which are normally left undecorated, to
8513 be given the usual fvwm decorations (title bar, buttons,
8514 etc.). Note that some pop-up windows, such as the xterm menus, are
8515 not managed by the window manager and still do not receive
8518 (the default) causes transient windows not to be given the
8519 standard decorations. You can only bind keys or mouse buttons to
8520 the sides and the client part of an undecorated window ('S' and
8521 \'W' contexts in bindings, see
8522 .BR Mouse " and " Key
8527 style that has transient windows raises all its transients when it
8529 .I DontRaiseTransient
8530 style disables this behavior. All windows are then treated as if
8531 they had no transients.
8535 style that has transient windows lowers all its transients when it
8537 .I DontLowerTransient
8538 style disables this behavior. All windows are then treated as if
8539 they had no transients.
8542 .I StackTransientParent
8544 .IR RaiseTransient " and " LowerTransient
8545 styles. Raising a window with
8546 .I StackTransientParent
8547 style transfers the raise action to the main window if the window
8548 being raised is a transient and its main window has
8550 style; this effect makes raise on a transient act just like raise
8551 on its main - the whole group is raised. Similar behavior holds
8552 for lowering a whole group of transients when the main has
8555 .I DontStackTransientParent
8556 turns this behavior off.
8557 .I (Dont)StackTransientParent
8559 .IR RaiseTransient " and " LowerTransient
8562 A reasonable emulation of Motif raise/lower on transients is
8565 Style * RaiseTransient
8566 Style * LowerTransient
8567 Style * StackTransientParent
8570 .\" +++++++++++++++ Extended WM Hints styles
8572 .B Extended Window Manager Hints styles
8573 To understand the used terminology in this sub section, please
8575 .BR "EXTENDED WINDOW MANAGER HINTS" .
8578 instructs fvwm to set the application ewmh icon hint with the icon
8579 that is used by fvwm if the application does not provide such hint
8580 (and if the icon used by fvwm is not an icon window).
8581 .I EWMHDonateMiniIcon
8582 does the same thing for mini icons. This allows compliant pager,
8583 taskbar, iconbox ...etc to display the same (mini) icons as
8584 fvwm. Note that on some hardware (e.g., 8-bit displays) these
8585 styles can slow down window mapping and that in general only one
8586 of these styles is needed by a compliant application.
8587 .I EWMHDontDonateIcon
8589 .I EWMHDontDonateMiniIcon
8590 restore the defaults which are to not set any ewmh (mini) icons
8593 By default, if an application provides an ewmh icon hint of small
8594 size (i.e., height and width less than or equal to 22), then fvwm
8595 uses this icon as its mini icon.
8596 .I EWMHMiniIconOverride
8597 instructs fvwm to ignore ewmh icons and to use the mini icon
8601 .I EWMHNoMiniIconOverride
8602 restores the default.
8604 .I EWMHUseStackingOrderHints
8609 hints which change the window layer.
8610 .I EWMHIgnoreStackingOrderHints
8611 causes fvwm to ignore
8615 An application can ask for some reserved space on the desktop by a
8618 terminology such a hint is called a strut and it is used to
8619 compute the working area and may be used for window placement and
8620 in the maximize command.
8621 .I EWMHIgnoreStrutHints
8622 causes fvwm to ignore such hints, as
8623 .IR EWMHUseStrutHints ,
8624 causes fvwm to use it which is the default.
8626 .I EWMHIgnoreStateHints
8627 causes fvwm to ignore initial
8629 state hints when a new window is mapped. The default
8630 .I EWMHUseStateHints
8631 causes fvwm to accept such hints.
8633 .I EWMHIgnoreWindowType
8634 causes fvwm to ignore
8636 window type specification. The default
8637 .I !EWMHIgnoreWindowType
8638 causes fvwm to style windows of specified types as such.
8640 .I EWMHMaximizeIgnoreWorkingArea
8641 causes fvwm to ignore the
8643 working area when it executes a
8646 .I EWMHMaximizeUseWorkingArea
8649 working area is used as with
8650 .I EWMHMaximizeUseDynamicWorkingArea
8653 dynamic working area is used (the default).
8655 .I EWMHPlacementIgnoreWorkingArea
8656 causes fvwm to ignore the
8658 working area when it places (or places again) a window. With
8659 .I EWMHPlacementUseWorkingArea
8662 working area is taken in account as with
8663 .I EWMHPlacementUseDynamicWorkingArea
8666 dynamic working area is taken in account (the default). Note that
8668 .IR MinOverlapPlacement " and " MinOverlapPercentPlacement
8669 placement policy, the way the
8671 (dynamic) working area is taken in account is configurable with
8673 .I MinOverlapPlacementPenalties
8676 .\" +++++++++++++++ miscellaneous
8680 .IR BackingStore ", " BackingStoreOff " and " BackingStoreWindowDefault
8681 determine if the X server uses backing store for the window or
8684 means that the X server tries to keep the obscured parts of a
8685 window in memory. This is usually slower if the client runs on
8686 the same machine as the X server, but can be much faster if the
8687 connection is slow (see also
8691 disables backing store for the window. By default, fvwm
8692 does not enable or disable backing store itself but leaves is as
8693 the window requested it. To revert back to the application's
8695 .I BackingStoreWindowDefault
8698 Note: This style is useless if the X server does not allow backing
8702 enables the corresponding window attribute in the X server. For a
8703 window using this style, the X server tries to store the graphics
8704 below it in memory which is usually slower if the client runs on
8705 the same machine as the X server.
8707 may speed up fvwm if the connection to the X server is slow
8708 (e.g. over a modem link). To disable save under, use the
8710 style. This is the default. See also
8714 Note: This style is useless if the X server does not allow save
8717 .I ParentalRelativity
8718 enables clients that use a background pixmap of type
8720 to achieve transparency. Fvwm modules that support transparent
8721 colorsets require this setting.
8723 is the default and should be used for all non-transparent clients
8724 for better performance.
8727 makes fvwm attempt to recognize and respect the mwm decoration
8728 hints that applications occasionally use. To switch this style
8734 makes fvwm attempt to recognize and respect the mwm prohibited
8735 operations hints that applications occasionally use.
8737 makes fvwm shade out operations that mwm would prohibit, but it
8738 lets you perform the operation anyway.
8740 allows turns off the mwm hints completely.
8743 makes fvwm attempt to recognize and respect the olwm and olvwm
8744 hints that many older XView and OLIT applications use. Switch
8745 this option off with
8752 hints for the window, even if
8754 compliance is compiled in. This is useful for those pesky
8755 applications that try to be more clever than the user and use
8757 hints to force the window manager to ignore the user's
8760 style switches back to the default behavior.
8763 This style is deprecated and will be removed in the future. There
8764 are plans to replace it with a more flexible solution in fvwm-3.0.
8767 accepts one argument: the name of a decor created with
8769 If no decor name is specified, the "Default" decor is
8770 used. Windows do not actually contain decors, but are always
8771 assigned to one. If the decor is later modified with
8773 the changes are visible for all windows which are assigned to it.
8774 The decor for a window can be reassigned with
8778 This style is deprecated and will be removed in the future. There
8779 are plans to replace it with a more flexible solution in fvwm-3.0.
8782 takes one arg, which is the name of another style. That way you
8783 can have unrelated window names easily inherit similar traits
8784 without retyping. For example:
8786 Style rxvt UseStyle XTerm
8788 Warning: If a style is built from one or more parent styles and
8789 the parent styles are changed, the derived style is not
8790 modified. To achieve this you have to issue the
8797 style option are ignored by fvwm. They are not decorated, can not
8798 be moved or resized, etc. You probably want to use
8799 .B Bugopts RaiseOverUnmanaged
8800 too. This option can be turned off with the
8803 However, windows that are already ignored at the time when the
8804 option is set must be recaptured with the
8806 command in order to become managed.
8809 sets the initial value of one of the 32 user defined states
8810 which are associated with each window. The state number ranges
8811 from 0 to 31 and must be given as an argument. The states have no
8812 meaning in fvwm, but they can be checked in conditional commands
8817 condition and manipulated with the
8821 # turn on state 11 for xterms ...
8822 Style xterm State 11
8823 # ... but not for rxvts.
8824 Style rxvt !State 11
8827 .\" +++++++++++++++ styles affecting window selection
8831 styles do not appear in the menu that is created with the
8833 command or the lists shown in several modules like
8834 .BR FvwmIconMan " or " FvwmWinList .
8835 In the modules, the style can usually be ignored with an option.
8836 Please refer to the man page of the module in question for
8837 further information. To disable this feature, use the default
8842 .IR CirculateSkip " and " CirculateHit
8843 control whether the window is considered by conditional commands,
8845 .BR Next ", " Prev " or " All .
8848 are never selected by conditional commands. However, the styles
8849 can be overridden explicitly in the condition with the
8850 .IR CirculateHit ", " CirculateHitIcon " or " CirculateHitShaded
8851 conditions, and some conditional commands, e.g.
8852 .BR Current " and " All ,
8855 .IR CirculateSkipIcon ", " CirculateHitIcon ,
8856 .IR CirculateSkipShaded " and " CirculateHitShaded
8858 .IR CirculateSkip " and " CirculateHit
8859 but apply only to iconic or shaded windows.
8860 Note: if multiple ...Skip... options are combined, windows are
8861 only selected if they match none of the given conditions. So,
8864 Style * CirculateSkipIcon, CirculateSkipShaded
8866 only windows that are neither iconic nor shaded are selected.
8867 Note: For historical reasons, the conditional commands understand
8868 the names of these styles as condition names. Take care not to
8871 .\" +++++++++++++++ examples
8875 # Change default fvwm behavior to no title-
8876 # bars on windows! Also define a default icon.
8878 Icon unknown1.xpm, \\
8882 # now, window specific changes:
8883 Style Fvwm* !Handles, Sticky, \\
8886 Style FvwmPager StaysOnTop, BorderWidth 0
8887 Style *lock !Handles, Sticky, \\
8888 StaysOnTop, WindowListSkip
8889 Style xbiff Sticky, WindowListSkip
8890 Style FvwmButtons !Handles, Sticky, \\
8894 # Put title-bars back on xterms only!
8895 Style xterm Title, Color black/grey
8897 Style rxvt Icon term.xpm
8898 Style xterm Icon rterm.xpm
8899 Style xcalc Icon xcalc.xpm
8900 Style xbiff Icon mail1.xpm
8901 Style xmh Icon mail1.xpm, \\
8903 Style xman Icon xman.xpm
8904 Style matlab Icon math4.xpm, \\
8906 Style xmag Icon magnifying_glass2.xpm
8907 Style xgraph Icon graphs.xpm
8908 Style FvwmButtons Icon toolbox.xpm
8909 Style Maker StartsOnDesk 1
8910 Style signal StartsOnDesk 3
8912 # Fire up Netscape on the second desk, in the
8913 # middle of my 3x3 virtual desktop, and do not
8914 # bother me with it...
8915 Style Netscape* SkipMapping, \\
8918 Note that all properties for a window are or'ed together. In the
8919 above example "FvwmPager" gets the property
8921 via an exact window name match but also gets
8922 .IR !Handles ", " Sticky " and " WindowListSkip
8923 by a match to "Fvwm*". It gets
8925 by virtue of a match to "*". If conflicting styles are specified
8926 for a window, then the last style specified is used.
8929 .BI "WindowStyle " "options"
8930 sets attributes (styles) on the selected window. The
8932 are exactly the same as for the
8936 .SS OTHER COMMANDS CONTROLLING WINDOW STYLES
8939 .B "AddButtonStyle \fIbutton\fP \
8942 ] [-- [!] \fIflag\fP \
8945 Adds a button style to
8948 can be a button number, or one of "All", "Left" or "Right".
8950 can be "ActiveUp", "ActiveDown", "InactiveUp" or "InactiveDown",
8951 or "Active" (the same as both "ActiveUp" and "ActiveDown")
8952 or "Inactive" (the same as both "InactiveUp" and "InactiveDown")
8953 or any of these 6 with "Toggled" prepended.
8954 The "Active" states apply to the focused window, the "Inactive"
8955 ones apply to all other windows. The "Up" states apply to the
8956 non pressed buttons, the "Down" ones apply to pressed buttons.
8957 The "Toggled" prefix refers to maximized, shaded or sticky windows
8958 that have the corresponding
8961 Additionally, the following shortcuts may be used: "AllNormal",
8962 "AllToggled", "AllActive", "AllInactive", "AllUp", "AllDown".
8963 They are actually different masks for 4 individual states from
8964 8 total. These are supported too: "AllActiveUp", "AllActiveDown",
8965 "AllInactiveUp", "AllInactiveDown".
8969 is omitted, then the style is added to every state. If the
8970 .IR style " and " flags
8971 are enclosed in parentheses, then multiple
8973 definitions can be placed on a single line.
8975 for additional button styles cannot be changed after definition.
8977 Buttons are drawn in the order of definition, beginning with the
8978 most recent button style, followed by those added with
8979 .BR AddButtonStyle .
8980 To clear the button style stack, change style flags, or for
8981 descriptions of available styles and flags, see the
8985 ButtonStyle 1 Pixmap led.xpm -- Top Left
8986 ButtonStyle 1 ActiveDown HGradient 8 grey \\
8988 ButtonStyle All -- UseTitleStyle
8989 AddButtonStyle 1 ActiveUp (Pixmap a.xpm) \\
8990 ActiveDown (Pixmap b.xpm -- Top)
8991 AddButtonStyle 1 Vector 4 50x30@1 70x70@0 \\
8994 Initially for this example all button states are set to a pixmap.
8995 The second line replaces the "ActiveDown" state with a gradient
8996 (it overrides the pixmap assigned to it in the line before, which
8997 assigned the same style to every state). Then, the
8999 flag is set for all buttons, which causes fvwm to draw any styles
9002 before drawing the buttons. Finally,
9004 is used to place additional pixmaps for both "ActiveUp" and
9005 "ActiveDown" states and a vector button style is drawn on top of
9009 .B "AddTitleStyle [\fIstate\fP\
9011 ] [-- [!] \fIflag\fP \
9013 Adds a title style to the title-bar.
9015 can be "ActiveUp", "ActiveDown", "InactiveUp" or "InactiveDown",
9016 or "Active" (the same as both "ActiveUp" and "ActiveDown")
9017 or "Inactive" (the same as both "InactiveUp" and "InactiveDown")
9018 or any of these 6 with "Toggled" prepended. If
9020 is omitted, then the style is added to every state. If the
9021 .IR style " and " flags
9022 are enclosed in parentheses, then multiple
9024 definitions can be placed on a single line. This command is quite
9027 command (see above).
9029 Title-bars are drawn in the order of definition, beginning with
9032 followed by those added with
9034 To clear the title style stack, change style flags, or for the
9035 descriptions of available styles and flags, see the
9036 .BR TitleStyle " and " ButtonStyle
9040 .BI "AddToDecor " decor
9041 This command is deprecated and will be removed in the future. There
9042 are plans to replace it with a more flexible solution in fvwm-3.0.
9044 Add or divert commands to the decor named
9046 A decor is a name given to the set of commands which affect button
9047 styles, title-bar styles and border styles. If
9049 does not exist it is created; otherwise the existing
9051 is modified. Note: Earlier versions allowed to use the
9052 .BR HilightColor ", " HilightColorset " and " WindowFont
9053 commands in decors. This is no longer possible. Please use the
9056 .IR Hilight... " and " Font
9059 New decors start out exactly like the "default" decor without any
9060 style definitions. A given decor may be applied to a set of
9065 command. Modifying an existing decor affects all windows which
9066 are currently assigned to it.
9069 is similar in usage to the
9070 .BR AddToMenu " and " AddToFunc
9071 commands, except that menus and functions are replaced by
9072 .BR ButtonStyle ", " AddButtonStyle ", " TitleStyle ,
9073 .BR AddTitleStyle " and " BorderStyle
9074 commands. Decors created with
9076 can be manipulated with
9077 .BR ChangeDecor ", " DestroyDecor ", " UpdateDecor
9079 .IB "UseDecor " Style
9082 The following example creates a decor "FlatDecor" and style
9083 "FlatStyle". They are distinct entities:
9085 AddToDecor FlatDecor
9086 + ButtonStyle All \\
9089 + TitleStyle -- flat
9090 + BorderStyle -- HiddenHandles NoInset
9093 UseDecor FlatDecor, HandleWidth 4, \\
9094 ForeColor white, BackColor grey40, \\
9095 HilightFore black, HilightBack grey70
9097 Style xterm UseStyle FlatStyle
9099 An existing window's decor may be reassigned with
9101 A decor can be destroyed with
9104 DestroyDecor FlatDecor
9105 AddToDecor FlatDecor ...
9107 Style FlatStyle UseDecor FlatDecor
9109 and now apply the style again:
9111 Style xterm UseStyle FlatStyle
9115 .B "BorderStyle [\fIstate\fP\
9117 ] [-- [!] \fIflag\fP \
9119 Defines a border style for windows.
9121 can be either "Active" or "Inactive". If
9123 is omitted, then the style is set for both states. If the
9124 .IR style " and " flags
9125 are enclosed in parentheses, then multiple
9127 definitions can be specified per line.
9130 is a subset of the available button styles, and can only be
9132 (uniform pixmaps which match the bevel colors work best this
9133 way) or Colorset. If a
9137 the behavior is negated. If
9139 is not specified, then one can change flags without resetting the
9144 flag hides the corner handle dividing lines on windows with
9145 handles (this option has no effect for NoHandle windows). By
9154 If given, the inner bevel around the window frame is not drawn.
9157 is not specified, the frame looks a little strange.
9160 causes a raised relief pattern to be drawn (default).
9162 causes a sunken relief pattern to be drawn.
9164 inhibits the relief pattern from being drawn.
9166 To decorate the active and inactive window borders with a textured
9167 pixmap, one might specify:
9169 BorderStyle Active TiledPixmap marble.xpm
9170 BorderStyle Inactive TiledPixmap granite.xpm
9171 BorderStyle Active -- HiddenHandles NoInset
9173 To clear the style for both states:
9177 To clear for a single state:
9179 BorderStyle Active Simple
9181 To unset a flag for a given state:
9183 BorderStyle Inactive -- !NoInset
9185 title-bar buttons can inherit the border style with the
9191 .B "ButtonState [\fIActiveDown\fP bool]\
9192 [\fIInactive\fP bool]\
9193 [\fIInactiveDown\fP bool]"
9196 command controls which states of the window titles and title
9197 buttons are used. The default is to use all four states:
9198 "ActiveUp", "ActiveDown", "InactiveUp" and "InactiveDown" (see
9199 .BR ButtonStyle " and " TitleStyle
9202 argument after the key word controls if the designated state is
9203 used ("True") or not ("False"). The "ActiveUp" state cannot be
9204 deactivated. If no arguments are provided or the given arguments
9205 are illegal, the default is restored.
9209 argument is "False", no different button style
9210 for the pressed down buttons used, instead "ActiveUp" state is
9211 used even when button is pressed.
9215 argument is "False", focused and unfocused windows
9216 look similarly, the corresponding "Active" states are always used.
9220 argument is "False" (only applied when
9222 is "True"), the pressed titles and title buttons in non-focused
9223 windows are drawn using "InactiveUp" or "ActiveUp" states
9224 depending on the values of the other key words.
9227 .B "ButtonStyle \fIbutton\fP \
9230 ] [-- [!] \fIflag\fP \
9232 Sets the button style for a title-bar button.
9234 is the title-bar button number between 0 and 9, or one of "All",
9235 "Left", "Right", or "Reset". Button numbering is described in the
9237 command section. If the
9238 .IR style " and " flags
9239 are enclosed in parentheses, then multiple
9241 definitions can be specified per line.
9244 refers to which button state should be set. Button states are
9245 defined as follows: "ActiveUp" and "ActiveDown" refer to the
9246 un-pressed and pressed states for buttons on active windows; while
9247 the "InactiveUp" and "InactiveDown" states denote buttons on
9248 inactive windows. The shortcut "Active" denotes both "ActiveUp" and
9249 "ActiveDown" states. Shortcut "Inactive" denotes both "InactiveUp"
9250 and "InactiveDown" states.
9251 The similar state names like just described, but with the "Toggled"
9252 prefix are used instead for title buttons which have one of the
9253 .IR MwmDecorMax ", " MwmDecorShade ", " MwmDecorStick " or " MwmDecorLayer
9254 hints, if the window is maximized, shaded, sticky or placed on specific
9255 layer, respectively.
9259 Vector 4 50x25@1 85x75@0 15x75@0 50x25@1
9260 + ButtonStyle 6 ToggledActiveUp \\
9261 Vector 4 50x75@0 85x25@1 15x25@0 50x75@0
9262 + ButtonStyle 6 ToggledActiveDown \\
9263 Vector 4 50x75@0 85x25@1 15x25@0 50x75@0
9264 + ButtonStyle 6 ToggledInactive \\
9265 Vector 4 50x75@0 85x25@1 15x25@0 50x75@0
9266 + ButtonStyle 6 - MwmDecorShade
9267 Mouse 0 6 N WindowShade
9269 Additionally, the following shortcuts may be used: "AllNormal",
9270 "AllToggled", "AllActive", "AllInactive", "AllUp", "AllDown".
9271 They are actually different masks for 4 individual states from
9272 8 total. These are supported too: "AllActiveUp", "AllActiveDown",
9273 "AllInactiveUp", "AllInactiveDown".
9278 that particular button state is set. If
9280 is omitted, every state is set. Specifying a style destroys the
9287 is omitted, then state-dependent flags can be set for the primary
9288 button style without destroying the current style. Examples (each
9289 line should be considered independent):
9291 ButtonStyle Left -- flat
9292 ButtonStyle All ActiveUp (-- flat) \\
9295 The first line sets every state of the left buttons to flat, while
9296 the second sets only the "ActiveUp" and "Inactive" states of every
9297 button to flat (only flags are changed; the buttons' individual
9298 styles are not changed).
9300 If you want to reset all buttons to their defaults:
9304 To reset the "ActiveUp" button state of button 1 to the default:
9306 ButtonStyle 1 ActiveUp Default
9308 To reset all button states of button 1 to the default of
9311 ButtonStyle 1 Default 2
9313 For any button, multiple
9315 definitions can be given on one line by enclosing the
9316 .IR style " and " flags
9317 in parentheses. If only one definition per line is given the
9318 parentheses can be omitted.
9321 affect the specified
9327 its behavior is negated. The available state-dependent flags for
9328 all styles are described here (the
9330 entry deals with state-independent flags).
9333 causes a raised relief pattern to be drawn.
9336 causes a sunken relief pattern to be drawn.
9339 inhibits the relief pattern from being drawn.
9342 causes the given button state to render the current title style
9343 before rendering the buttons' own styles. The
9344 .IR Raised ", " Flat " and " Sunk
9346 flags are ignored since they are redundant in this context.
9349 causes the button to inherit the decorated
9353 .IR Raised ", " Sunk " and " Flat
9354 are mutually exclusive, and can be specified for the initial
9357 .IR UseTitleStyle " and " UseBorderStyle
9358 are also mutually exclusive (both can be off however). The
9362 .I UseBorderStyle " and " UseTitleStyle
9366 for the "ActiveDown" and "InactiveDown" states: When a button is
9367 pressed, the relief is inverted. Because of this, to obtain the
9368 raised look in "ActiveDown" or "InactiveDown" states you must
9369 specify the opposite of the desired relief (i.e.
9371 for "ActiveDown" or "InactiveDown"). This behavior is consistent,
9372 but may seem confusing at first. The same applies to the
9375 Button styles are classified as non-destructive, partially
9376 destructive, or fully destructive. Non-destructive styles do not
9377 affect the image. Partially destructive styles can obscure some or
9378 all parts of the underlying image (i.e.
9380 Fully destructive styles obscure the entire underlying image (i.e.
9384 styles). Thus, if stacking styles with
9385 .BR AddButtonStyle " (or " AddTitleStyle
9386 for title-bars), use care in sequencing styles to minimize redraw.
9388 The available styles are:
9390 .IR Simple ", " Default ", " Solid ", " Colorset ", " Vector ,
9391 .IR ?Gradient ", " Pixmap ", " AdjustedPixmap ,
9392 .IR ShrunkPixmap ", " StretchedPixmap ", " TiledPixmap ", " MiniIcon
9394 The description of these styles and their arguments follow:
9398 style does nothing. There are no arguments, and this style is an
9399 example of a non-destructive button style.
9403 style conditionally accepts one argument: a number which specifies
9404 the default button number to load. If the style command given is
9405 .BR ButtonStyle " or " AddButtonStyle ,
9406 the argument is optional (if given, it overrides the current button).
9407 If a command other than
9408 .BR ButtonStyle " or " AddButtonStyle
9409 is used, the number must be specified.
9413 style fills the button with a solid color. The relief border
9414 color is not affected. The color is specified as a single
9415 argument. This style is fully destructive.
9418 .IR Colorset " " cs " [" alpha "]"
9419 style fills the button with the Colorset
9423 argument is a percentage between 0 and 100. It causes fvwm to
9424 merge the colorset background onto the button using this
9425 percentage. If the percentage is 0 the colorset background is
9426 hidden and if it is 100 the colorset background is fully
9427 applied. The default is 100. So, the destructiveness depends on the
9433 .IB X [ offset p]x Y [ offset p]@ C " ..."
9434 style draws a line pattern. Since this is a standard button style,
9439 is a number of point specifications of the form
9440 .IB X [ offset p]x Y [ offset p]@ C " ..."
9442 are point coordinates inside the button, given in percents
9443 (from 0 to 100). An optional absolute
9445 in pixels, can be given as "+<offset>p" for a positive or
9446 "-<offset>p" for a negative offset.
9449 specifies a line color (0 - the shadow color, 1 - the highlight
9450 color, 2 - the background color, 3 - the foreground color, 4 -
9451 only move the point, do not draw). The first point color is not
9452 used. You can use up to 10000 points in a line pattern. This
9453 style is partially destructive.
9455 The specification is a little cumbersome:
9457 ButtonStyle 2 Vector 4 50x30@1 70x70@0 \\
9460 then the button 2 decoration uses a 4-point pattern consisting of
9461 a line from (x=50,y=30) to (70,70) in the shadow color (@0), and
9462 then to (30,70) in the shadow color, and finally to (50,30) in the
9463 highlight color (@1). Is that too confusing? See the fvwm web
9464 pages for some examples with screenshots.
9466 A more complex example of
9469 ButtonStyle 8 Vector 10 45x65@2 45x75@3 \\
9470 20x75@3 20x50@3 35x50@3 35x65@1 35x25@1 \\
9471 75x25@1 75x65@0 35x65@0
9472 ButtonStyle 0 Vector 10 45x65@2 45x75@0 \\
9473 20x75@0 20x50@1 45x50@1 45x65@0 75x65@3 \\
9474 75x25@3 35x25@3 35x47@3
9478 styles denote color gradients. Fill in the question mark with any
9479 one of the defined gradient types. Please refer to the
9481 section for a description of the gradient syntax. The gradient
9482 styles are fully destructive.
9486 style displays a pixmap. A pixmap should be specified as an
9487 argument. For example, the following would give button number 2
9488 the same pixmap for all 4 states (2 active and 2 inactive), and
9489 button number 4 all different pixmaps.
9491 ButtonStyle 2 Pixmap my_pixmap.xpm
9493 ActiveUp (Pixmap activeup.xpm) \\
9494 ActiveDown (Pixmap activedown.xpm) \\
9495 Inactive (Pixmap inactiveup.xpm)
9497 InactiveDown Pixmap inactivedown.xpm
9499 The pixmap specification can be given as an absolute or relative
9502 If the pixmap cannot be found, the button style reverts to
9504 Flags specific to the
9507 .IR Left ", " Right ", "
9508 .IR Top ", and " Bottom .
9509 These can be used to justify the pixmap (default is centered for
9510 both directions). Pixmap transparency is used for the color
9511 "None." This style is partially destructive.
9515 style is similar to the
9517 style. But the image is resized to exactly fit the button.
9521 style is similar to the
9523 style. But if the image is bigger than the button the image is
9524 resized to fit into the button.
9528 style is similar to the
9530 style. But if the image is smaller than the button the image is
9531 resized to cover the button.
9535 style accepts a pixmap to be tiled as the button background. One
9536 pixmap is specified as an argument. Pixmap transparency is not
9537 used. This style is fully destructive.
9541 style draws the window's miniature icon in the button, which is
9546 command. This button style accepts no arguments. Example:
9548 Style * MiniIcon mini-bx2.xpm
9549 Style xterm MiniIcon mini-term.xpm
9550 Style Emacs MiniIcon mini-doc.xpm
9552 ButtonStyle 1 MiniIcon
9557 .BI "ButtonStyle " button " - [!]" flag " ..."
9558 Sets state-independent flags for the specified
9560 State-independent flags affect button behavior. Each
9562 is separated by a space. If a
9564 is prefixed to the flag then the behavior is negated. The special
9567 clears any existing flags.
9569 The following flags are usually used to tell fvwm which buttons
9570 should be affected by mwm function hints (see
9574 command. This is not done automatically since you might have
9575 buttons bound to complex functions, for instance.
9578 should be assigned to title-bar buttons which display a menu. The
9579 default assignment is the leftmost button. When a window with the
9582 option requests not to show this button, it is hidden.
9585 should be assigned to title-bar buttons which minimize or iconify
9586 the window. The default assignment is the second button over from
9587 the rightmost button. When a window with the
9590 option requests not to show this button, it is hidden.
9593 should be assigned to title-bar buttons which maximize the
9594 window. The default assignment is the rightmost button. When a
9598 option requests not to show this button, it is hidden. When the
9599 window is maximized, the vector pattern on the button looks
9603 should be assigned to title-bar buttons which shade the window
9606 command). When the window is shaded, the vector pattern on the
9607 button looks pressed in.
9610 should be assigned to title-bar buttons which make the window
9611 sticky. When the window is sticky, the vector pattern on the
9612 button looks pressed in.
9615 .IB "MwmDecorLayer " layer
9616 should be assigned to title-bar buttons which place the window in
9619 When the window is on that specific layer, the vector pattern on
9620 the button looks pressed in.
9623 .BI "ChangeDecor " decor
9624 This command is deprecated and will be removed in the future. There
9625 are plans to replace it with a more flexible solution in fvwm-3.0.
9627 Changes the decor of a window to
9630 is "Default" or the name of a decor defined with
9634 is invalid, nothing occurs. If called from somewhere in a window
9635 or its border, then that window is affected. If called from the
9636 root window the user is allowed to select the target window.
9638 only affects attributes which can be set using the
9642 ChangeDecor CustomDecor1
9646 .BI "DestroyDecor [" recreate "] " decor
9647 This command is deprecated and will be removed in the future. There
9648 are plans to replace it with a more flexible solution in fvwm-3.0.
9654 so that subsequent references to it are no longer valid. Windows
9657 revert to the "Default" decor. The optional parameter
9659 tells fvwm not to throw away the decor completely but to throw
9660 away only its contents. If the decor is created again later,
9661 windows do not use it before the
9663 style is applied again unless the decor was destroyed with the
9665 option. The decor named "Default" cannot be destroyed.
9667 DestroyDecor CustomDecor1
9671 .BI "TitleStyle [" justification "] [" Height " [" num "]] [" MinHeight " [" num "]]"
9672 Sets attributes for the title-bar. Justifications can be
9673 .IR Centered ", " RightJustified " or " LeftJustified .
9675 sets the title bar's height to an amount in pixels.
9677 sets the minimal height in pixels of the title bar.
9680 the window's font height and no minimal height.
9681 To reset the font height to the
9682 default value, omit the
9688 height is reseted by
9690 or if given with no argument.
9693 TitleStyle LeftJustified Height 24
9697 .B "TitleStyle [\fIstate\fP\
9699 ] [-- [!] \fIflag\fP \
9701 Sets the style for the title-bar.
9703 .BR AddTitleStyle " and " ButtonStyle .
9705 can be one of "ActiveUp", "ActiveDown", "InactiveUp",
9706 or "InactiveDown". Shortcuts like "Active" and "Inactive" are
9707 allowed. The states with the "Toggled" prefix are allowed too,
9708 the title itself does not use "Toggled" states, but these states
9709 are used for the buttons with
9714 is omitted, then the
9716 is added to every state. If parentheses are placed around the
9717 .IR style " and " flags ,
9718 then multiple state definitions can be given per line.
9720 can be omitted so that flags can be set while not destroying the
9727 its behavior is negated. Valid flags for each state include
9728 .IR Raised ", " Flat " and " Sunk
9729 (these are mutually exclusive). The default is
9733 regarding the "ActiveDown" state. Examples:
9735 TitleStyle ActiveUp HGradient 16 navy black
9736 TitleStyle ActiveDown (Solid red -- flat) \\
9737 Inactive (TiledPixmap wood.xpm)
9738 TitleStyle ActiveUp (-- Flat) ActiveDown \\
9739 (-- Raised) InactiveUp (-- Flat) \\
9740 InactiveDown (-- Sunk)
9742 This sets the "ActiveUp" state to a horizontal gradient, the
9743 "ActiveDown" state to solid red, and the "Inactive" states to a
9744 tiled wood pixmap. Finally, "ActiveUp" and "InactiveUp" are set
9745 to look flat, while "ActiveDown" set to be sunk (the
9747 flag for the "ActiveDown" state causes it to appear sunk due to
9748 relief inversion), and "InactiveDown" is set to look raised. An
9749 example which sets flags for all states:
9753 For a flattened look:
9756 ButtonStyle All Active (-- flat) Inactive (-- flat)
9762 styles and arguments:
9764 .IR Simple ", " Default ", " Solid ", " Colorset ", " Vector ,
9765 .IR ?Gradient ", " Pixmap ", " AdjustedPixmap ,
9766 .IR ShrunkPixmap ", " StretchedPixmap ", " TiledPixmap ", " MiniIcon .
9770 command for a description of all these styles and their arguments.
9772 In addition to these styles
9776 option. This allows you to specify different pixmaps, colorsets or
9777 colors for different parts of the titlebar. Some of them are tiled or
9778 stretched to fit a particular space; others are discrete "transition"
9779 images. The definable
9790 Underneath title text
9792 just to the left of the title text
9794 just to the right of the title text
9796 at the far left end of the titlebar
9797 (just after left buttons if any)
9799 at the far right end of the titlebar
9800 (just before right buttons if any)
9802 under buttons in case of UseTitleStyle
9804 under left buttons in case of UseTitleStyle
9806 under right buttons in case of UseTitleStyle
9808 None of these are mandatory except for
9810 (or, if you do not define
9812 you must define both
9813 .IR LeftMain " and " RightMain ")."
9816 pixmaps are defined and
9818 is specified for one or more buttons,
9819 .IR Main ", " LeftMain ", or " RightMain
9820 are used as appropriate.
9822 The syntax for this style type is:
9824 MultiPixmap section style arg, ...
9826 continuing for whatever you want to define. The
9829 .IR TiledPixmap ", " AdjustedPixmap ", " Colorset " or " Solid .
9832 command for the description of these styles.
9833 In the case of a transition section,
9834 .IR LeftEnd ", " LeftOfText ", " RightOfText " or " RightEnd ","
9836 only resize the pixmap in the "y" direction. For the
9837 .IR Colorset " and " Solid
9838 styles a width of the half of the title bar height is assumed
9839 for the transition sections.
9843 MultiPixmap Main AdjustedPixmap foo.xpm, \\
9844 UnderText TiledPixmap bar.xpm, \\
9847 Note that the old syntax is still supported: if the style is omitted,
9849 is assumed and adding "(stretched)" between the section and the
9851 .IR AdjustedPixmap .
9854 .BI "UpdateDecor " [ "decor" ]
9855 This command is deprecated and will be removed in the future. There
9856 are plans to replace it with a more flexible solution in fvwm-3.0.
9858 This command is kept mainly for backward compatibility. Since
9859 all elements of a decor are updated immediately when they are
9860 changed, this command is mostly useless.
9862 Updates window decorations.
9864 is an optional argument which specifies the
9866 to update. If given, only windows which are assigned to that
9869 are updated. This command is useful, for instance, after a
9870 .BR ButtonStyle ", " TitleStyle " or " BorderStyle
9871 (possibly used in conjunction with
9873 Specifying an invalid decor results in all windows being
9874 updated. This command is less disturbing than
9876 but does not affect window style options as
9881 .SS COMMANDS CONTROLLING THE VIRTUAL DESKTOP
9884 .B "Desk \fIarg1\fP \
9888 This command has been renamed. Please see
9893 .BI "DesktopName " desk " name"
9894 Defines the name of the desktop number
9898 This name is used in the
9902 where it override the
9904 configuration option. Moreover, if consecutive names starting from
9905 desktop 0 are defined, then these names can be used by any
9907 compliant application (as a pager).
9910 .BI "DeskTopSize " Horizontal x Vertical
9911 Defines the virtual desktop size in units of the physical screen
9915 .BI "EdgeResistance " "scrolling moving " [ "xinerama-moving" ]
9916 Tells how hard it should be to change the desktop viewport by
9917 moving the mouse over the edge of the screen and how hard it
9918 should be to move a window over the edge of the screen.
9920 The first parameter tells how many milliseconds the pointer must
9921 spend on the screen edge before fvwm moves the viewport. This is
9922 intended for people who use
9926 but find themselves accidentally flipping pages when they do not
9929 The second parameter tells how many pixels over the edge of the
9930 screen a window's edge must move before it actually moves
9931 partially off the screen. By default the viewport is moved a full
9932 page in the requested direction, but if you used
9934 and set any values other than zero they are used instead.
9940 it is still possible to move or resize windows across the edge of
9941 the current screen. By making the first parameter to
9943 10000 this type of motion is impossible. With
9945 less than 10000 but greater than 0 moving over pages becomes
9946 difficult but not impossible. See also
9949 The optional third parameter does the same as the second, but for
9950 individual Xinerama screens. If omitted,
9952 is set to the value of
9956 to zero to ignore individual screen edges. Note that the center of
9957 the window being moved determines the xinerama screen on which the
9958 window should be kept.
9961 .BI "EdgeScroll " horizontal "[" p "] " vertical "[" p "] [" \
9962 wrap "|" wrapx "|" wrapy "]"
9963 Specifies the percentage of a page to scroll when the cursor hits
9964 the edge of a page. A trailing
9966 changes the interpretation to mean pixels. If you do not want any
9967 paging or scrolling when you hit the edge of a page include
9973 file, or possibly better, set the
9977 command. If you want whole pages, use
9982 .IR horizontal " and " vertical
9983 should be positive numbers.
9986 .IR horizontal " and " vertical
9987 percentages are multiplied by 1000 or one of the keywords
9988 .IR wrap ", " wrapx " and " wrapy
9989 is given then scrolling wraps around at the edge of the desktop.
9992 EdgeScroll 100000 100000
9994 is used fvwm scrolls by whole pages, wrapping around at the edge
9998 .BI "EdgeThickness " 0 | 1 | 2
9999 This is the width or height of the invisible window that fvwm
10000 creates on the edges of the screen that are used for the edge
10003 In order to enable page scrolling via the mouse, four windows
10004 called the "pan frames" are placed at the very edge of the
10005 screen. This is how fvwm detects the mouse's presence at the
10006 window edge. Because of the way this works, they need to be at the
10007 top of the stack and eat mouse events, so if you have any kind of
10008 error along the lines of: "mouse clicks at the edge of the screen
10009 do the wrong thing" you're having trouble with the pan frames and
10010 (assuming you do not use the mouse to flip between pages) should
10011 set the EdgeThickness to 0.
10015 completely disables mouse edge scrolling, even while dragging a
10018 gives the smallest pan frames, which seem to work best except on
10026 pixels can sometimes be confusing, for example, if you drag a
10027 window over the edge of the screen, so that it straddles a pan
10028 frame, clicks on the window, near the edge of the screen are
10029 treated as clicks on the root window.
10032 .BI "EwmhBaseStruts " left " " right " " top " " bottom
10033 Where left, right, top and bottom are positive or null integers
10034 which define bands at the edge of the screen.
10036 defines a band on the left of your screen of width
10039 defines a band on the right of your screen of width
10042 defines a band on the top of your screen of height
10046 defines a band on the bottom of your screen of height
10048 The unit is the pixel and the default is 0 0 0 0. These areas
10049 define additional reserved space to the reserved space defined by
10050 some ewmh compliant applications. This is used to compute the
10051 Working Area. See the
10052 .B EXTENDED WINDOW MANAGER HINTS
10053 section for a definition of the Working Area.
10056 .BI "EWMHNumberOfDesktops " num " [" max "]"
10057 This command is useful only for an ewmh compliant pager or taskbar
10058 (as kpager or kicker taskbar) and not for fvwm modules (FvwmPager
10059 or FvwmIconMan). It causes a compliant application to consider at
10062 desktops (desktop 0 to desktop
10064 The optional argument
10066 causes a compliant application to never consider more than
10070 is 0 (the default) there is no limitation. The actual number of
10071 desktops is determined dynamically. It is at least
10073 but it can be d if there is a window on desktop d-1 (or if the
10074 current desktop is desktop d-1) and d is less or equal to
10079 Moreover, a compliant pager can ask to change
10082 This is accepted by fvwm only if this number is
10083 less than or equal to
10087 is null. Note that negative desktops are not supported by the
10088 ewmh specification. The default is 4 0.
10091 .B "GotoDesk \fIprev\fP \
10096 Switches the current viewport to another desktop (workspace,
10099 The command takes 1, 2, 3, or 4 arguments. A single argument is
10100 interpreted as a relative desk number. Two arguments are
10101 understood as a relative and an absolute desk number. Three
10102 arguments specify a relative desk and the minimum and maximum of
10103 the allowable range. Four arguments specify the relative,
10104 absolute, minimum and maximum values. (Desktop numbers can be
10105 negative). If a literal
10107 is given as the single argument, the last visited desk number is
10112 is non zero then the next desktop number is the current desktop
10118 is zero then the new desktop number is
10122 is not present, then the command has no effect.)
10125 .IR min " and " max
10126 are given, the new desktop number is no smaller than
10130 Values out of this range are truncated (if you gave an absolute
10131 desk number) or wrapped around (if you gave a relative desk
10134 The syntax is the same as for
10136 which moves a window to a different desktop.
10138 The number of active desktops is determined dynamically. Only
10139 desktops which contain windows or are currently being displayed
10140 are active. Desktop numbers must be between 2147483647 and
10141 -2147483648 (is that enough?).
10144 .BI "GotoDeskAndPage " prev " | " "desk xpage ypage"
10145 Switches the current viewport to another desktop and page, similar
10147 .BR GotoDesk " and " GotoPage
10148 commands. The new desk is
10150 and the new page is
10151 .RI ( xpage , ypage ).
10154 .B "GotoPage \fIprev\fP \
10155 | [\fIoptions\fP] \
10161 Moves the desktop viewport to page (x,y). The upper left page is
10162 (0,0), the upper right is (M,0), where M is one less than the
10163 current number of horizontal pages specified in the
10165 command. The lower left page is (0,N), and the lower right page
10166 is (M,N), where N is the desktop's vertical size as specified in
10169 command. To switch to a page relative to the current one add a
10172 after any or both numerical arguments.
10177 .IR wrapx " and " wrapy
10178 to wrap around the x or y coordinate when the viewport is moved
10179 beyond the border of the desktop.
10181 To go to the last visited page use
10183 as the first argument. The
10185 function should not be used in a pop-up menu.
10192 # Go to lowest and rightmost page
10195 # Go to last page visited
10198 # Go two pages to the right and one page up
10203 .B "Scroll [\fIhorizonal\fP \
10207 ]] | [\fIreverse\fP\
10209 Scrolls the virtual desktop's viewport by
10211 pages in the x-direction and
10213 pages in the y-direction or starts interactive scrolling of the viewport.
10214 Either or both entries may be negative.
10216 .IR horizontal " and " vertical
10217 values are expressed in percent of pages, so
10221 means to scroll down and right by one full page.
10225 means to scroll right half a page and down a quarter of a page.
10228 function should not be called from pop-up menus. Normally,
10229 scrolling stops at the edge of the desktop.
10232 .IR horizontal " and " vertical
10233 percentages are 100 or more and are multiplied by 1000 then
10234 scrolling wraps around at the edge of the desktop. If
10238 is executed over and over fvwm moves to the next desktop page on
10239 each execution and wraps around at the edge of the desktop, so
10240 that every page is hit in turn.
10244 is appended to each coordinate
10245 .RI ( horizontal " and/or " vertical ),
10246 then the scroll amount is measured in pixels.
10248 Without arguments or the option
10250 is given interactive scrolling takes place. The viewporst
10251 scrolls as the mouse is moved. With the
10253 option scrolling is done in opposite direction of the mouse
10254 movement, and without it scrolling in the same direction as the
10259 Mouse 1 A CM Scroll reverse
10261 gives an effect of grabbing and dragging the viewport with button 1
10269 .BI "Xinerama " bool
10270 Enables Xinerama support if the boolean argument is true and
10271 disables it if the argument is false. Calling this command
10272 without arguments turns on Xinerama support if it was disabled before
10273 and turns it off if it was enabled. For example:
10275 # Turn Xinerama support on, use primary screen 2
10276 XineramaPrimaryScreen 2
10283 .BI "XineramaPrimaryScreen [" primary-screen "]"
10284 Takes an integer number or 'g' or 'c' as its argument. A number
10285 is taken as the number of the Xinerama screen that is to be used
10286 as the primary screen. The primary screen can be used as the
10287 preferred screen to place windows with
10289 XineramaPrimaryScreen <screen number>
10290 Style * StartsOnScreen p
10292 The primary screen is used in some of the modules and for the
10293 default icon box too. Any number that is zero or more is taken as
10294 the primary screen's number. Instead, the letter 'c' indicates to
10295 use the current screen (containing the pointer) whenever the
10296 primary screen is used. This may be very confusing under some
10297 circumstances. With \'g', the global screen is used as the primary
10298 screen, effectively disabling the primary screen. Calling this
10299 function with any other argument (including none) resets the
10300 primary screen to 0.
10303 .BI "XineramaSls [" bool "]"
10304 For multi-screen implementations other than Xinerama, such as
10305 Single Logical Screen, it is possible to simulate a Xinerama
10306 configuration if the total screen seen by fvwm is made up of
10307 equal sized monitors in a rectangular grid. The
10309 command turns SLS support on or off or toggles it to the opposite
10310 state, depending on if the boolean argument is "True", "False" or
10311 "toggle". If no argument is given, this is treated like "toggle".
10312 The default layout uses one by one screens. To configure the
10314 .BR XineramaSlsSize " or " XineramaSlsScreens
10318 .BI "XineramaSlsSize " Horizontal x Vertical
10319 This command configures the layout of the Single Logical screen
10320 feature. It takes two arguments,
10321 .IR Horizontal " and " Vertical
10322 which must be an integer value dividing evenly into the total
10323 desktop width, and height. For an example with two
10324 monitors side by side which appear as one screen through the
10325 X-Server with the right screen as the primary screen, use:
10327 XineramaSlsSize 2x1
10329 XineramaPrimaryScreen 1
10334 .BI "XineramaSlsScreens " "number-of-screens screen-spec ..."
10335 This command configures the layout of the Single Logical screen
10336 feature. Its first argument is the number of screens to use. It
10337 must be followed by exactly this number of
10339 arguments. Each of these can be written either in standard X
10340 geometry format: "<width>x<height>+<x>+<y>" or as a space separated
10341 list of numbers: "x y width height". Both ways of describing
10342 screens can be mixed in a single command. All four numbers must
10345 values specify the origin of the screen in relation to the global
10346 screen's origin while
10347 .IR width " and " height
10348 specify the size of the screen in pixels. No checks are done if
10349 the geometries make sense, so it is possible to define overlapping
10350 screens (with random results) or screens that are not visible at
10353 XineramaSlsScreens 3 \\
10354 512x768+0+0 512x300+512+0 512 300 512 468
10356 XineramaPrimaryScreen 1
10361 .SS COMMANDS FOR USER FUNCTIONS AND SHELL COMMANDS
10364 .B "AddToFunc [\fIname\fP \
10371 Begins or adds to a function definition. Here is an example:
10373 AddToFunc Move-or-Raise I Raise
10377 The function name is "Move-or-Raise", and it could be invoked from a
10378 menu or a mouse binding or key binding:
10380 Mouse 1 TS A Move-or-Raise
10384 must not contain embedded whitespace. No guarantees are made
10385 whether function names with embedded whitespace work or not. This
10386 behavior may also change in the future without further notice.
10387 The letter before the
10389 tells what kind of action triggers the command which follows it.
10391 stands for "Immediate", and is executed as soon as the function is
10394 stands for "Motion", i.e. if the user starts moving the mouse.
10396 stands for "Click", i.e., if the user presses and releases the
10399 stands for "Hold", i.e. if the user presses a mouse button and
10400 holds it down for more than
10404 stands for "Double-click". The action
10406 causes an action to be performed on the button-press, if the
10407 function is invoked with prior knowledge of which window to act
10410 There is a number of predefined symbols that are replaced by
10411 certain values if they appear on the command line. Please refer
10413 .B COMMAND EXPANSION
10414 section for details.
10416 Warning: Please read the comments on executing complex functions
10418 .BR "SCRIPTING AND COMPLEX FUNCTIONS" .
10424 Key F10 R A Function MailFunction \\
10427 and "MailFunction" is
10429 AddToFunc MailFunction
10430 + I Next ($0) Iconify off
10431 + I Next (AcceptsFocus, $0) Focus
10432 + I None ($0) Exec exec $0 $1
10434 Then the last line of the function becomes
10436 + I None (xmh) Exec exec xmh -font fixed
10438 The expansion is performed as the function is executed, so you can
10439 use the same function with all sorts of different arguments. You
10442 Key F11 R A Function MailFunction \\
10447 if you wanted. An example of using "$[w.id]" is:
10449 AddToFunc PrintFunction
10451 + I Exec xdpr -id $[w.id]
10453 Note that "$$" is expanded to '$'.
10455 Another example: bind right mouse button within the window button
10456 number 6 (this is a minimize button for the win95 theme) to
10457 iconify all windows of the same resource:
10459 AddToFunc FuncIconifySameResource "I" \\
10460 All ($0) Iconify on
10461 Mouse 3 6 A FuncIconifySameResource $[w.resource]
10466 As might be expected, this makes the terminal beep.
10469 .BI "DestroyFunc " function
10470 Deletes a function, so that subsequent references to it are no
10471 longer valid. You can use this to change the contents of a
10472 function during a fvwm session. The function can be rebuilt using
10475 DestroyFunc PrintFunction
10480 Prints a message to
10482 Potentially useful for debugging things in your
10485 Echo Beginning style definitions...
10489 .BI "Exec " command
10492 You should not use an ampersand '&' at the end of the command. You
10493 probably want to use an additional "exec" at the beginning of
10495 Without that, the shell that fvwm invokes to run your command
10496 stays until the command exits. In effect, you'll have twice as
10497 many processes running as you need. Note that some shells are
10498 smart enough to avoid this, but it never hurts to include the
10501 The following example binds function key
10503 in the root window, with no modifiers, to the exec function. The
10504 program rxvt is started with an assortment of options.
10507 Key F1 R N Exec exec rxvt -fg yellow -bg blue \\
10510 Note that this function doesn't wait for
10512 to complete, so things like:
10514 Exec "echo AddToMenu ... > /tmp/file"
10517 do not work reliably
10524 .BI "ExecUseShell [" shell "]"
10527 command use the specified shell, or the value of the
10529 environment variable if no shell is specified, instead of the
10530 default Bourne shell
10534 ExecUseShell /usr/local/bin/tcsh
10538 .BI "Function " FunctionName
10539 Used to bind a previously defined function to a key or mouse
10540 button. The following example binds mouse button 1 to a function
10541 called "Move-or-Raise", whose definition was provided as an
10542 example earlier in this man page. After performing this binding
10543 fvwm executes the "move-or-raise" function whenever button 1 is
10544 pressed in a window's title-bar.
10546 Mouse 1 T A Function Move-or-Raise
10552 does not coincide with an fvwm command.
10554 Warning: Please read the comments on executing complex functions
10556 .BR "SCRIPTING AND COMPLEX FUNCTIONS" .
10560 Does nothing. This is used to insert a blank line or separator in
10561 a menu. If the menu item specification is
10563 AddToMenu MyMenu " " Nop
10565 then a blank line is inserted. If it looks like
10569 then a separator line is inserted. Can also be used as the
10570 double-click action for
10571 .BR Menu " or " Popup .
10574 .BI "PipeRead " command " [" quiet "]"
10575 Causes fvwm to read commands from the output of the
10581 as if you typed it on the command line. If the command consists
10582 of more than one word it must be quoted. Useful for building up
10583 dynamic menu entries based on a directories contents, for
10584 example. If the keyword
10586 follows the command no message is produced if the
10592 AddToMenu HomeDirMenu
10593 PipeRead 'for i in $HOME/*; \\
10594 do echo "+ $i Exec xterm -e vi $i"; done'
10599 changes the pointer to a watch cursor by default during
10600 execution. However, some commands, for example xwd, need to take
10601 control of the pointer themselves and do not work. To disable the
10602 watch cursor, use the command prior to
10605 BusyCursor Read off
10610 command executes synchronously. If you want to
10612 something, but need the command to run synchronously,
10613 you might do something like:
10615 PipeRead 'command 1>&2'
10617 The redirection causes any output from the program to go to stderr
10618 instead of being read as a sequence of commands by fvwm.
10620 returns 1 if the given command could be executed or -1 if not
10622 .B CONDITIONAL COMMANDS
10623 for the meaning of return codes).
10626 .BI "Read " filename " [" quiet "]"
10627 Causes fvwm to read commands from the file named
10631 follows the command no message is produced if the file is not
10632 found. If the file name does not begin with a slash ('/'), fvwm
10633 looks in the user's data directory, then the system data
10634 directory. The user's data directory is by default
10636 It can be overridden by exporting
10638 set to any other directory. The
10640 command returns 1 if the given file could be read or -1 if not
10642 .B CONDITIONAL COMMANDS
10643 for the meaning of return codes).
10647 .BI "SetEnv " "variable value"
10648 Set an environment variable to a new value, similar to the shell's
10649 export or setenv command. The
10653 are inherited by processes started directly by fvwm. This can be
10654 especially useful in conjunction with the
10656 module. For example:
10658 SetEnv height HEIGHT
10660 makes the FvwmM4 set variable
10662 usable by processes started by fvwm as the environment variable
10666 includes whitespace, you should enclose it in quotes. If no
10668 is given, the variable is deleted.
10671 .BI "Silent " command
10672 A number of commands require a window to operate on. If
10673 no window was selected when such a function is invoked the user is
10674 asked to select a window. Sometimes this behavior is unwanted,
10675 for example if the function was called by a module and the window
10676 that was selected at first does not exist anymore. You can
10677 prevent this by putting
10679 in front of the fvwm
10681 If a function that needs a window is called with
10683 without a window selected, it simply returns without doing
10686 is used on a user defined function it affects all function and sub
10687 function calls until the original function exits.
10691 is with binding commands
10692 .BR Key ", " PointerKey " and " Mouse ,
10693 this disables error messages.
10696 also disables the error message for non-existent commands. Note:
10697 This command is treated as a prefix to its
10699 Expansion of the command line is done as if
10706 Silent User_defined_function
10707 # do not complain on keyboards without "Help" key
10708 Silent Key Help R A Popup HelpMenu
10712 .BI "UnsetEnv " "variable"
10713 Unset an environment variable, similar to shell's export or
10714 unsetenv command. The
10716 then is removed from the environment array inherited by processes
10717 started directly by fvwm.
10721 This command is intended to be used in fvwm functions only. It
10722 causes execution of a function to pause until a new window matching
10724 appears. This can be a window's name, class, or resource string.
10725 It may contain the wildcards '*' and '?', which are matched in the
10726 usual Unix filename manner. This is particularly useful in the
10727 "InitFunction" if you are trying to start windows on specific desktops:
10729 AddToFunc InitFunction
10730 + I Exec exec xterm -geometry 80x64+0+0
10733 + I Exec exec xmh -font fixed -geometry \\
10738 The above function starts an xterm on the current desk, waits for
10739 it to map itself, then switches to desk 2 and starts an xmh.
10740 After the xmh window appears control moves to desk 0.
10742 Fvwm remains partially functional during a wait, but any input
10743 from the modules is queued up and processed only after the window
10744 appears or the command is aborted. For example, windows can not
10745 be focused with FvwmTaskBar or FvwmWinList during a wait.
10747 You can escape from a
10750 .SM Ctrl-Alt-Escape
10753 is the first modifier). To redefine this key sequence see the
10758 .SS CONDITIONAL COMMANDS
10760 Conditional commands are commands that are only executed if certain
10761 conditions are met. Most conditional commands work on windows,
10763 .BR Next ", " ThisWindow " or " All .
10764 There is one conditional command
10766 that works on global conditions unrelated to windows. The syntax
10767 of the conditions is described below. For readability, the list
10768 of conditions is located at the end of this section.
10772 All commands in this section (unless specifically stated for the
10773 command) also have a return code that can be 1 (if the condition
10774 was met) or 0 (if the condition was not met). Some commands may
10775 return -1 which means that an error occurred and the return code
10778 command returns -2. Additionally, the return codes of commands
10779 run in a complex functions are passed to the invoking complex
10780 function. The return code is used by the
10782 command. Please refer to the commands' description for examples.
10783 The return code can also be accessed through the variable
10785 Non conditional commands do not modify the return code of the last
10786 conditional command. Important note: return codes are only
10787 defined inside functions created with the
10789 command and are not inherited by sub functions. To run a command
10790 without altering the return code, the
10792 command can be used.
10794 .SS The Ring of Windows
10796 Fvwm stores windows in a ring internally. Think of the focused
10797 window as a cursor on the current position in the ring. The
10799 command and many other commands search forwards through the ring
10800 for a matching window, and
10802 searches backwards. The windows in the ring are either ordered by
10803 creation time (if the
10804 .I !FPSortWindowlistByFocus
10806 .IR NeverFocus " or " MouseFocus
10807 styles are used) or by the last time they had the focus.
10809 .SS List of Conditional Commands
10812 .BI "All [" options "] [(" conditions ")] " command
10815 on all windows meeting the conditions. It returns 1 if any window
10816 matches the condition and 0 otherwise. The execution starts at the top of the
10817 window ring and continues towards the bottom. The
10819 can be any combination of
10820 .IR Reverse " and " UseStack .
10823 is given the execution order is reversed. The option
10825 makes All use the stacking order instead of the window ring when walking
10827 .RB "See " Conditions " section below for a list of conditions."
10829 This command implies the conditions
10830 .IR CirculateHit ", " CirculateHitIcon " and " CirculateHitShaded .
10831 They can be turned off by specifying
10836 .BI "Any [(" conditions ")] " command
10839 if any window which satisfies all
10841 exists. The command is run in the context of the root window.
10842 .RB "See " Conditions " section below for a list of conditions."
10845 .BI "Break [levels]"
10846 If the break command is used in a function, function execution is
10847 terminated immediately. Further commands of the function are not
10848 processed. Normally, all nested invocations of complex functions
10849 are left. An optional integer number
10851 may be given to break out of the given number of nested functions
10852 and continue execution of a higher level function.
10855 command always has the return code -2. Example:
10857 AddToFunc PickWindowRaiseAndDeiconify
10859 + I TestRc (Error) Break
10865 .BI "Current [(" conditions ")] " command
10868 on the currently focused window if it satisfies all
10870 .RB "See " Conditions " section below for a list of conditions."
10872 This command implies the conditions
10873 .IR CirculateHit ", " CirculateHitIcon " and " CirculateHitShaded .
10874 They can be turned off by specifying
10880 [\fIFromPointer\fP] \
10882 [(\fIconditions\fP)] \
10888 on a window in the given direction which satisfies all
10890 Normally, the center of the currently focused window or the
10891 context window in which the command was invoked is taken as the
10892 starting point. Lacking such a window, or when the
10894 option is given, the current position of the pointer is taken as
10895 the starting point. The
10897 may be one of "North", "Northeast", "East", "Southeast", "South",
10898 "Southwest", "West", "Northwest" and "Center". Which window
10900 selects depends on angle and distance between the center points of
10901 the windows. Closer windows are considered a better match than
10902 those farther away. The
10904 direction simply selects the window closest to the starting point.
10905 Returns -1 if an invalid direction was given.
10906 .RB "See " Conditions " section below for a list of conditions."
10909 .BI "KeepRc " command
10912 but does not alter the return code of the previous command. Note:
10914 is treated as a prefix to its
10916 Expansion of the command line is done as if
10921 .BI "Next [(" conditions ")] " command
10926 on the next window which satisfies all
10928 If the command is running in a window context, it starts looking
10929 for a matching window from there. Otherwise it starts at the
10931 .RB "See " Conditions " section below for a list of conditions."
10934 .BI "None [(" conditions ")] " command
10937 if no window which satisfies all
10939 exists. The command is run in the context of the root window.
10940 Returns 1 if no window matches the conditions and 0 otherwise.
10941 .RB "See " Conditions " section below for a list of conditions."
10943 This command implies the conditions
10944 .IR CirculateHit ", " CirculateHitIcon " and " CirculateHitShaded .
10945 They can be turned off by specifying
10950 .BI NoWindow " command"
10953 but removes the window context if any. This is not really a
10954 conditional command, but a prefix that may be useful in menu items
10955 that should operate without a window even if such menu is bound to
10956 window decorations.
10959 .BI "Pick [(" conditions ")] " command
10963 if invoked in the context of a window. If invoked in the root
10964 window, it first asks the user to pick a window and then executes
10967 in the context of that window. This avoids annoying multiple
10968 selections with complex functions. The command is executed only
10971 are met. Returns -1 if no window was selected.
10972 .RB "See " Conditions " section below for a list of conditions."
10974 This command implies the conditions
10975 .IR CirculateHit ", " CirculateHitIcon " and " CirculateHitShaded .
10976 They can be turned off by specifying
10981 .BI "PointerWindow [(" conditions ")] " command
10984 if the window under the pointer satisfies all
10986 Returns -1 if there is no window under the pointer.
10987 .RB "See " Conditions " section below for a list of conditions."
10989 This command implies the conditions
10990 .IR CirculateHit ", " CirculateHitIcon " and " CirculateHitShaded .
10991 They can be turned off by specifying
10996 .BI "Prev [(" conditions ")] " command
11001 on the previous window which satisfies all
11003 If the command is running in a window context, it starts looking
11004 for a matching window from there. Otherwise it starts at the
11006 .RB "See " Conditions " section below for a list of conditions."
11009 .B "ScanForWindow \
11010 [\fIFromPointer\fP] \
11013 [(\fIconditions\fP)] \
11019 on a window in the given direction which satisfies all
11021 Normally, the center of the currently focused window or the
11022 context window in which the command was invoked is taken as the
11023 starting point. Lacking such a window, or when the
11025 option is given, the current position of the pointer is taken as
11026 the starting point. The
11028 may be one of "North", "NorthEast", "East", "SouthEast", "South",
11029 "SouthWest", "West", and "NorthWest". Which window
11031 selects depends first on the position along the primary axis given
11034 If any windows have the exact same coordinate along the primary
11035 axis, the secondary direction is used to order the windows. The
11037 may be one of the same set of values as
11041 is not perfectly perpendicular to
11044 returns a failure. When using ScanForWindow repeatedly with the
11045 same arguments, it is guaranteed that all windows matching the
11046 conditions are eventually found. If the focus reaches a limit
11047 along the primary axis, it wraps around to the opposite side.
11048 Returns -1 if an invalid direction was given.
11049 .RB "See " Conditions " section below for a list of conditions."
11052 .BI "Test [(" test-conditions ")] " command
11059 are keywords with possible arguments from the list below
11060 and are separated by commas or whitespace. They include
11061 .IR "Version operator x.y.z" ,
11062 .IR "EnvIsSet varname" ,
11063 .IR "EnvMatch varname pattern" ,
11064 .IR "EdgeHasPointer direction" ,
11065 .IR "EdgeIsActive direction" ,
11079 A test-condition prefixed with "!" is negated.
11082 .I "Version operator x.y.z"
11083 test-condition is fulfilled if the logical condition of the expression is
11097 Test (Version >= 2.5.11) Echo 2.5.11 or later.
11100 .I "EnvIsSet varname"
11101 test-condition is true if the given environment variable is set.
11103 .I "EnvMatch varname pattern"
11104 test-condition is true if
11106 matches the given environment variable value.
11107 The pattern may contain special "*" and "?" chars.
11110 .IB "EdgeHasPointer " [ direction ]
11111 test-condition is true if the edge in the given direction currently
11112 contains the pointer.
11114 .IB "EdgeIsActive " [ direction ]
11115 test-condition is true if the edge in the given direction currently is
11116 active. An edge is active, and can contain a pointer if either a
11117 command is bound to it or edge scroll is available in that
11118 direction. The direction may be one of
11119 .IR " Any", " North", " Top", " Up", " West", " Left", " South", " Bottom",
11120 .IR " Down", " Right" " and " " East" .
11121 If no direction is specified
11127 test-condition is the same as either
11128 .IR Init " or " Restart .
11129 It is only true on startup or restart prior and during
11134 test-condition is the same as either
11135 .IR Quit " or " ToRestart .
11136 It is only valid on shutdown during
11138 function execution.
11144 test-conditions are, well, unconditionally true and false.
11146 Additionally, if a test-condition name is not recognized, the Error
11147 return code is set and the command is not executed.
11153 .IR "X file" " and"
11155 test-conditions test for existence of the given [F]ile (possibly
11156 with [R]ead/[W]rite permissions), e[X]ecutable (in $PATH),
11157 or the [I]mage (in ImagePath).
11161 AddToFunc StartFunction I Test (Init) Exec exec xterm
11163 AddToFunc VerifyVersion
11164 + I Test (Version 2.5.*) Echo 2.5.x detected
11165 + I TestRc (NoMatch) Test (!Version 2.6.*) Echo Future version
11166 + I TestRc (NoMatch) Echo 2.6.x is detected
11168 Test (F $[FVWM_USERDIR]/local-config) Read local-config
11169 Test (X xterm-utf16) Exec exec xterm-utf16
11173 .BI "TestRc [([!]" returncode ")] " command
11176 if the last conditional command returned the value
11178 Instead of the numeric values 0 (no match), 1 (match), -1 (error),
11179 and -2 (break) the symbolic names "NoMatch", "Match", "Error" and
11180 "Break" can be used. If no
11182 is given, the default 0 is assumed. If the return code is
11183 prefixed with '!', the command is executed if
11185 does not match the value returned by the conditional command.
11187 command can only be used inside functions. If the
11189 is another conditional command, the previous return code is
11190 replaced by the new one. Example:
11192 AddToFunc ToggleXterm
11193 + I All (my_xtermwindow) Close
11194 + I TestRc (NoMatch) Exec xterm -T my_xtermwindow
11198 .BI "ThisWindow [(" conditions ")] " command
11200 executes the specified
11202 in the context of the current operand window. If there is no
11203 operand window (it is invoked in the root window), the command is
11206 is never interactive. The command is executed only if the given
11208 are met. It returns -1 if used outside a window context.
11209 .RB "See " Conditions " section below for a list of conditions."
11211 This command implies the conditions
11212 .IR CirculateHit ", " CirculateHitIcon " and " CirculateHitShaded .
11213 They can be turned off by specifying "!CirculateHit"
11217 .B "WindowId [\fIid\fP\
11218 ] [(\fIconditions\fP\
11224 command looks for a specific window
11226 and runs the specified
11228 on it. The second form of syntax retrieves the window id of the
11229 root window of the given
11233 is given, the current screen is assumed. The window indicated by
11235 may belong to a window not managed by fvwm or even a window on a
11236 different screen. Although most commands can not operate on such
11237 windows, there are some exceptions, for example the
11240 Returns -1 if no window with the given id exists.
11241 .RB "See " Conditions " section below for a list of conditions."
11243 This command implies the conditions
11244 .IR CirculateHit ", " CirculateHitIcon " and " CirculateHitShaded .
11245 They can be turned off by specifying
11251 WindowId 0x34567890 Raise
11252 WindowId root 1 WarpToWindow 50 50
11253 WindowId $0 (Silly_Popup) Delete
11255 In the past this command was mostly useful for functions used with
11258 command, or for selective processing of
11260 calls (as in the last example), but currently these handler functions
11261 are called within a window context, so this command is not really
11262 needed in these cases. Still it may be useful if, for example, the
11263 window id should be stored in the environment variable for a further
11266 Pick SetEnv BOOKMARKED_WINDOW $[w.id]
11267 WindowId $[BOOKMARKED_WINDOW] WarpToWindow
11274 that may be given as an argument to any conditional command are a
11275 list of keywords separated by commas or whitespace, enclosed in
11276 parentheses. Unless stated otherwise, conditional commands accept
11277 all the conditions listed below. Note that earlier versions of
11278 fvwm required the conditions to be enclosed in brackets instead of
11279 parentheses (this is still supported for backward compatibility).
11283 may include one or more window names to match to. If more than
11284 one window name is given, all of them must match. The window
11285 name, icon name, class, and resource are considered when
11286 attempting to find a match. Each name may include the wildcards
11287 '*' and '?', and may consist of two or more alternatives,
11288 separated by the character '|', which acts as an OR operator. (If
11289 OR operators are used, they must not be separated by spaces from
11290 the names.) Each window name can begin with '!', which prevents
11292 if any of the window name, icon name, class or resource match.
11293 However, '!' must not be applied to individual names in a group
11294 separated by OR operators; it may only be applied to the beginning
11295 of the group, and then it operates on the whole group.
11299 Next ("Netscape|konqueror|Mozilla*") WarpToWindow 99 90
11301 This goes to the next web browser window, no matter which of the
11302 three named web browsers is being used.
11304 Next ("Mozilla*", "Bookmark*") WarpToWindow 99 90
11306 This goes to Mozilla's bookmark manager window, ignoring other
11307 Mozilla windows and other browsers' bookmark windows.
11309 All ("XTerm|rxvt", !console) Iconify
11311 This iconifies all the xterm and rxvt windows on the current page,
11312 except that the one named "console" (with the -name option to xterm)
11315 Next (!"FvwmPager|FvwmForm*|FvwmButtons") Raise
11316 Next (!FvwmPager, !FvwmForm*, !FvwmButtons) Raise
11318 These two commands are equivalent; either one raises the next window
11319 which is not one of the named fvwm modules.
11321 Any condition can be negated by using a an exclamation mark ('!')
11322 directly in front of its name.
11327 .IR CirculateHitIcon ,
11328 .IR CirculateHitShaded ,
11331 .IR CurrentGlobalPage ,
11332 .IR CurrentGlobalPageAnyDesk ,
11334 .IR CurrentPageAnyDesk ,
11335 .IR CurrentScreen ,
11336 .IR FixedPosition ,
11347 .IR "PlacedByButton n" ,
11348 .IR PlacedByButton3 ,
11354 .IR StickyAcrossDesks ,
11355 .IR StickyAcrossPages ,
11357 .IR StickyAcrossDesksIcon ,
11358 .IR StickyAcrossPagesIcon ,
11364 condition excludes all windows that do not want the input focus
11365 (the application has set the "Input hints" for the window to
11366 False) and do not use the
11370 command. Also, all windows using the
11375 is equivalent to the deprecated option
11380 condition used together with any of the
11382 conditions, windows that do not intersect the Xinerama screen
11383 containing the mouse pointer are considered for a match too. For
11386 # Focus next window on current page,
11387 # regardless of Xinerama screen
11388 Next (CurrentPage, AnyScreen) Focus
11392 .IR CirculateHit " and " CirculateHitIcon
11393 options override the
11394 .IR CirculateSkip " and " CirculateSkipIcon
11396 attributes for normal or iconic windows. The
11397 .I CirculateHitShaded
11398 option overrides the
11399 .I CirculateSkipShaded
11401 All three options are turned on
11404 command. They can be turned off by specifying
11407 Note: Do not confuse these conditions with the style options of
11408 the same name. Specifically,
11410 Style foo CirculateSkip
11411 Next (foo, CirculateHit) ...
11415 Style foo CirculateHit ...
11418 The prior selects windows with the name foo only in the Next
11419 command. In the second example, these windows are always matched
11420 in all conditional commands.
11424 condition matches only windows that are allowed to be closed.
11428 condition matches only windows that are on the current desk.
11431 .I CurrentGlobalPage
11432 condition matches only windows that are on the current page of the
11433 current desk, regardless of whether Xinerama support is enabled or
11434 not. This condition implicitly activates the
11439 .I CurrentGlobalPageAnyDesk
11440 condition matches only windows that are on the current page of any
11441 desk, regardless of whether Xinerama support is enabled or not.
11445 condition matches only windows that are on the current page of the
11446 current desk. If Xinerama support is enabled, it only matches
11447 windows that are at least partially on the Xinerama screen
11448 containing the mouse pointer. This condition implicitly
11454 .IR CurrentPageAnyDesk " and " CurrentScreen
11455 conditions matches only windows that are on the current page of any
11456 desk. If Xinerama support is enabled, they only match windows
11457 that are at least partially on the Xinerama screen containing the
11462 condition excludes all windows that do not have a fixed position,
11463 either set through WM hints or the
11466 .IR FixedPosition .
11469 DestroyFunc ToggleFixedGeometry
11470 AddToFunc ToggleFixedGeometry
11471 + I Pick (FixedPosition) WindowStyle VariablePosition, VariableSize
11472 + I TestRc (NoMatch) WindowStyle FixedPosition, FixedSize
11477 condition excludes all windows that do not have a fixed size,
11478 either set through WM hints or the
11485 matches on the window that currently has the keyboard focus.
11486 This is not useful for the
11488 command but can be used with the other conditional commands.
11492 condition excludes all windows that do not have resize handles.
11496 condition excludes all windows that do not contain the pointer.
11500 condition matches only iconic windows.
11504 condition matches only windows that are allowed to be iconified.
11508 condition matches only windows on the specified layer. The
11509 optional argument of the
11511 condition defaults to the layer of the focused window. The
11520 condition matches only windows that are allowed to be maximized.
11524 condition matches only maximized windows.
11528 condition matches only windows that are overlapped by other windows
11529 on the same layer (or unmanaged windows if the option
11530 .I RaiseOverUnmanaged
11533 command is used). Note that this condition can be slow if you
11534 have many windows or if RaiseOverUnmanaged is used and the
11535 connection to the X server is slow.
11538 .I "PlacedByButton n"
11539 condition is fulfilled if the last interactive motion of the
11543 .IR ManualPlacement )
11544 was ended by pressing mouse button
11548 Mouse 1 T A Function MoveWindow
11550 DestroyFunc MoveWindow
11551 AddToFunc MoveWindow
11553 + C ThisWindow (PlacedByButton 5) WindowShade off
11554 + C TestRc (Match) Maximize on 0 100
11555 + C ThisWindow (PlacedByButton 4) WindowShade on
11560 condition has the same meaning as
11562 3. It remains only for backward compatibility.
11566 condition excludes all windows that have been placed manually or
11567 by using the user or program position hint.
11571 conditions matches only windows that are fully visible on the
11572 current viewport and not overlapped by any other window.
11576 conditions matches only shaded windows (see
11581 .IR "State n" " or " "!State n"
11582 conditions match only windows with the specified integer state set
11583 (or unset). See the
11585 command for details. The argument may range from 0 to 31.
11588 .IR Sticky ", " StickyAcrossDesks " and " StickyAcrossPages
11589 match only windows that are currently sticky, sticky across all
11590 desks or sticky across all pages. Please refer to the
11592 options with the same name and the commands
11593 .BR Stick ", " StickAcrossDesks " and " StickAcrossPages
11597 .IR StickyIcon ", " StickyAcrossDesksIcon " and " StickyAcrossPagesIcon
11598 match only windows that become sticky, sticky across all desks or sticky
11599 across all pages when they are in iconified state.
11603 condition matches only windows that have the "transient"
11604 property set by the application. This it usually the case for
11605 application popup menus and dialogs. The
11607 module can be used to find out whether a specific window is
11612 condition matches only windows that are at least partially
11613 visible on the current viewport and not completely overlapped by
11616 .SS MODULE COMMANDS
11618 Fvwm maintains a database of module configuration lines in a form
11620 .BI "*" "<ModuleName>" ": " "<Config-Resource>"
11624 is either a real module name or an alias.
11626 This database is initially filled from config file (or from
11629 config command), and can be later modified either by user (via
11633 When modules are run, they read appropriate portion of database.
11634 (The concept of this database is similar to one used in X resource
11637 Commands for manipulating module configuration database are
11641 .BI "*" module_config_line
11642 Defines a module configuration.
11643 .I module_config_line
11644 consists of a module name (or a module alias) and a module
11645 resource line. The new syntax allows a delimiter, a colon and
11646 optional spaces, between the module name and the rest of the line,
11647 this is recommended to avoid conflicts.
11649 *FvwmIconBox: MaxIconSize 48x48
11650 *FvwmPager: WindowBorderWidth 1
11651 *FvwmButtons-TopRight: Geometry 100x100-0+0
11652 *FvwmButtons-Bottom: Geometry +0-0
11656 .BI "DestroyModuleConfig " module_config
11657 Deletes module configuration entries, so that new configuration
11658 lines may be entered instead. This also sometimes the only way to
11659 turn back some module settings, previously defined. This changes
11660 the way a module runs during a fvwm session without restarting.
11661 Wildcards can be used for portions of the name as well.
11663 The new non-conflicting syntax allows a delimiter, a colon and
11664 optional spaces between the module name and the rest of the line.
11665 In this case a module name (or alias) can't have wildcards.
11667 DestroyModuleConfig FvwmButtons*
11668 DestroyModuleConfig FvwmForm: Fore
11669 DestroyModuleConfig FvwmIconBox: Max*
11673 .BI "KillModule " modulename " [" modulealias ]
11674 Causes the module which was invoked with name
11676 to be killed. The name may include wildcards. If
11678 is given, only modules started with the given alias are killed.
11680 KillModule FvwmPager # kill all pagers
11682 Module FvwmEvent SoundEvent
11683 KillModule FvwmEvent SoundEvent
11687 .BI "Module " modulename " [" moduleparams ]
11688 Specifies a module with its optional parameters which should be
11689 spawned. Currently several modules, including
11690 .BR FvwmButtons ", " FvwmEvent ", " FvwmForm ", " FvwmGtk ", "
11691 .BR FvwmPager ", " FvwmScript
11692 support aliases. Aliases are useful if more than one instance of
11693 the module should be spawned. Aliases may be configured
11696 syntax described above. To start a module
11700 the following syntax may be used:
11702 Module FvwmForm MyForm
11705 At the current time the available modules (included with fvwm) are
11707 (produces animation effects when a window is iconified or
11710 (an auto raise module),
11712 (to change the background when you change desktops),
11714 (to display a spiffy XPM, XBM or PNG),
11716 (brings up a customizable tool bar),
11718 (a command server to use with shell's FvwmCommand client),
11720 (to execute fvwm commands directly),
11722 (to preprocess your
11726 (to help debug fvwm),
11728 (the place to drag&drop to),
11730 (trigger various actions by events),
11732 (to bring up dialogs),
11736 menus and dialogs),
11738 (like the mwm IconBox),
11740 (a flexible icon manager),
11742 (to get window info),
11744 (to preprocess your
11748 (a mini version of the desktop),
11750 (a Perl manipulator and preprocessor),
11752 (to locate and control obscured windows by using small proxy windows),
11754 (to rearrange windows),
11756 (saves the desktop state in .xinitrc style),
11758 (saves the desktop state in fvwm commands),
11760 (another powerful dialog toolkit),
11762 (puts scrollbars on any window),
11764 (a generic tabbing module),
11766 (a Windows like task bar),
11768 (managed colorsets, obsolete),
11770 (an AfterStep like button bar),
11772 (a configurable fvwm menu listing current windows),
11774 (a window list). These modules have their own man
11775 pages. There may be other modules out on there as well.
11778 Modules can be short lived transient programs or, like
11780 can remain for the duration of the X session. Modules are
11781 terminated by the window manager prior to restarts and quits, if
11782 possible. See the introductory section on modules. The keyword
11786 is distinct from all fvwm commands.
11789 .BI "ModuleListenOnly " modulename " [" moduleparams ]
11790 This command works like the
11792 command, but fvwm never sends any messages to the module. This may
11793 be handy to write a module as a shell script that is triggered by
11794 external events without the burden to answer packets sent by
11795 fvwm. For example, a module written as a shell script may change
11798 module to implement a simple clock.
11801 .BI "ModulePath " path
11802 Specifies a colon separated list of directories in which to search
11803 for modules. To find a module, fvwm searches each directory in
11804 turn and uses the first file found. Directory names on the list
11805 do not need trailing slashes.
11809 may contain environment variables such as
11810 .IR $HOME " (or " ${HOME} ).
11811 Further, a '+' in the
11813 is expanded to the previous value of the
11815 allowing easy appending or prepending to the
11820 ModulePath ${HOME}/lib/fvwm/modules:+
11822 The directory containing the standard modules is available via the
11823 environment variable
11824 .IR $FVWM_MODULEDIR .
11827 .BI "ModuleSynchronous [" "Expect string" "] [" "Timeout secs" "] " modulename
11829 .B ModuleSynchronous
11830 command is very similar to
11832 Fvwm stops processing any commands and user input until the module
11833 sends a string beginning with "NOP FINISHED STARTUP" back to fvwm.
11836 is given fvwm gives up if the module sent no input back to fvwm
11841 option is given, fvwm waits for the given
11844 .B ModuleSynchronous
11845 should only be used during fvwm startup to enforce the order in
11846 which modules are started. This command is intended for use with
11847 the (currently hypothetical) module that should be in place before
11848 other modules are started.
11850 Warning: It is quite easy to hang fvwm with this command, even if
11851 a timeout is given. Be extra careful choosing the string to wait
11852 for. Although all modules in the fvwm distribution send back the
11853 "NOP FINISHED STARTUP" string once they have properly started up,
11854 this may not be the case for third party modules. Moreover, you
11855 can try to escape from a locked
11856 .B ModuleSynchronous
11857 command by using the key sequence
11858 .SM Ctrl-Alt-Escape
11863 .BI "ModuleTimeout " timeout
11864 Specifies how many seconds fvwm waits for a module to respond. If
11865 the module does not respond within the time limit then fvwm kills
11868 must be greater than zero, or it is reset to the default value of
11872 .BI "SendToModule " "modulename string"
11873 Sends an arbitrary string (no quotes required) to all modules,
11874 whose alias or name matching
11876 which may contain wildcards. This only makes sense if the module
11877 is set up to understand and deal with these strings though. Can be
11878 used for module to module communication, or implementation of more
11879 complex commands in modules.
11882 .SS QUIT, RESTART AND SESSION MANAGEMENT COMMANDS
11886 Exits fvwm, generally causing X to exit too.
11890 Causes fvwm to stop managing the screen on which the command was
11895 Causes a session manager (if any) to shutdown the session. This
11896 command does not work for xsm, it seems that xsm does not
11897 implement this functionality. Use Unix signals to manage xsm
11901 .BI "Restart [" window_manager " [" params "]]"
11902 Causes fvwm to restart itself if
11904 is left blank, or to switch to an alternate window manager (or
11905 other fvwm version) if
11907 is specified. If the window manager is not in your default search
11908 path, then you should use the full path name for
11909 .IR window_manager .
11911 This command should not have a trailing ampersand. The command
11912 can have optional parameters with simple shell-like syntax. You
11915 (is expanded to the user's home directory) and environmental
11917 .IR $VAR " or " ${VAR} .
11918 Here are several examples:
11921 Key F1 R N Restart fvwm -s
11922 Key F1 R N Restart ~/bin/fvwm -f $HOME/.fvwm/main
11923 Key F1 R N Restart fvwm1 -s -f .fvwmrc
11924 Key F1 R N Restart xterm -n '"X console"' \\
11925 -T \\"X\\ console\\" -e fvwm1 -s
11927 If you need a native restart, we suggest only to use
11929 command without parameters unless there is a reason not to. If you
11930 still use an old command 'Restart fvwm2' that was correct in 2.2.x,
11931 all current command line arguments are lost. On a restart without
11932 parameters or with --pass-args, they are preserved. Here are some
11933 cases when 'Restart fvwm2' or 'Restart fvwm' cause troubles:
11935 * running fvwm under a session manager
11936 * running fvwm with multi headed displays
11937 * having command line arguments, like
11938 -f themes-rc or -cmd
11939 * if the first fvwm2 in the $PATH is a
11942 This is why we are issuing a warning on an old usage. If you
11943 really want to restart to fvwm with no additional arguments, you
11944 may get rid of this warning by using "Restart fvwm -s" or
11945 "Restart /full/path/fvwm".
11947 Note, currently with multi headed displays, restart of fvwms on
11948 different screens works independently.
11951 .BI "Restart " "--pass-args window_manager"
11954 without parameters but the name for the current window manager is
11955 replaced with the specified
11957 and original arguments are preserved.
11959 This command is useful if you use initial arguments like
11963 and want to switch to another fvwm version without losing the
11967 .BI "Restart " --dont-preserve-state " [" other-params "]"
11970 .BI "Restart [" other-params "]"
11972 but it does not save any window states over the restart.
11974 Without this option,
11976 preserves most per-window state by writing it to a file named
11977 .I .fs-restart-$HOSTDISPLAY
11978 in the user's home directory.
11982 Causes a session manager (if any) to save the session. This
11983 command does not work for xsm, it seems that xsm does not
11984 implement this functionality. Use Unix signals to manage xsm
11988 .BI "SaveQuitSession"
11989 Causes a session manager (if any) to save and then shutdown the
11990 session. This command does not work for xsm, it seems that xsm
11991 does not implement this functionality. Use Unix signals to manage
11997 Colorsets are a powerful method to control colors. Colorsets
11998 create appearance resources that are shared by fvwm and its
11999 modules. When a colorset is modified all parts of fvwm react to
12000 that change. A colorset includes a foreground color, background
12001 color, shadow and highlight color (often based on the background
12002 color), background face (this includes images and all kinds of
12003 gradients). There is a way to render background face and specify
12004 other color operations.
12006 In the 2.4.x versions a special module
12008 was introduced to manage colorsets. Starting with the 2.5.x beta
12009 version, the FvwmTheme functionality was moved to the core fvwm,
12010 so this module became obsolete.
12014 DestroyModuleConfig FvwmTheme: *
12015 *FvwmTheme: Colorset 0 fg black, bg rgb:b4/aa/94
12016 *FvwmTheme: Colorset 1 fg black, bg rgb:a1/b2/c8
12018 corresponds to the new syntax:
12021 Colorset 0 fg black, bg rgb:b4/aa/94
12022 Colorset 1 fg black, bg rgb:a1/b2/c8
12026 .BI "Colorset " num " [" options "]"
12027 Creates or modifies colorset
12029 Colorsets are identified by this number. The number can start at
12030 zero and can be a very large number.
12032 Warning: The highest colorset number used determines memory
12033 consumption. Thus, if you define 'Colorset 100000', the memory for
12034 100001 colorsets is used. Keep your colorset numbers as small as
12037 By convention, colorsets are numbered like this:
12039 # 0 = Default colors
12040 # 1 = Inactive windows
12041 # 2 = Active windows
12042 # 3 = Inactive menu entry and menu background
12043 # 4 = Active menu entry
12044 # 5 = greyed out menu entry (only bg used)
12045 # 6 = module foreground and background
12046 # 7 = hilight colors
12049 If you need to have more colors and do not want to reinvent the
12050 wheel, you may use the convention used in fvwm-themes, it defines
12051 the meaning of the first 40 colorsets for nearly all purposes:
12053 .B http://fvwm-themes.sourceforge.net/doc/colorsets
12055 Each colorset has four colors, an optional pixmap and an optional
12056 shape mask. The four colors are used by modules as the
12057 foreground, background, highlight and shadow colors. When a
12058 colorset is created it defaults to a foreground of black and
12059 background of gray. The background and foreground are marked as
12060 "average" and "contrast" (see later) so that just specifying a
12061 pixmap or gradient gives sensible results.
12064 is a comma separated list containing some of the keywords:
12065 fg, Fore, Foreground,
12066 bg, Back, Background,
12067 hi, Hilite, Hilight,
12070 Pixmap, TiledPixmap, AspectPixmap,
12071 Transparent, RootTransparent,
12072 Shape, TiledShape, AspectShape, NoShape,
12074 Tint, fgTint, bgTint,
12081 .IR fg ", " Fore " and " Foreground
12082 take a color name as an argument and set the foreground color.
12085 may be used to select a color that contrasts well with the
12086 background color. To reset the foreground color to the default
12087 value you can simply omit the color name.
12089 .IR bg ", " Back " and " Background
12090 take a color name as an argument and set the background color. It
12091 also sets the highlight and shadow colors to values that give a 3d
12092 effect unless these have been explicitly set with the options
12093 below. The special name
12095 may be used to select a color that is the average color of the
12096 pixmap. If the pixmap is tinted with the
12098 option, the tint is not taken in account in the computation of the
12099 average color. You should use the
12101 option to get the "real" average color. The background color is
12102 reset to the default value if the color name is omitted.
12104 .IR hi ", " Hilite " and " Hilight
12105 take a color name as an argument and set the highlight color. If
12106 the highlight color is not explicitly set, the default is to
12107 calculate it from the background color. To switch back to the
12108 default behavior the color name can be omitted.
12110 .IR sh ", " Shade " and " Shadow
12111 take a color name as an argument and set the shadow color. If the
12112 shadow color is not explicitly set, the default is to calculate it
12113 from the background color. To switch back to the default behavior
12114 the color name can be omitted.
12117 takes a color name as an argument and sets the color used by the
12118 shadowing font effect. See the
12119 .B FONT SHADOW EFFECTS
12120 section of the fvwm man page. By default this color is computed
12121 from the foreground and background colors. To switch back to the
12122 default the color name can be omitted.
12124 .IR Pixmap ", " TiledPixmap " and " AspectPixmap
12125 take a file name as an argument, search the
12127 and use it as the background pixmap. Any transparent parts are
12128 filled with the background color. Not specifying a file name
12129 removes any existing image from the colorset.
12131 produces repeated copies of the image with no scaling,
12133 causes the image to be stretched to fit whatever object the
12134 colorset is applied to and
12136 stretches to fit but retains the image aspect ratio.
12139 creates a transparent background pixmap. The pixmap is used as a
12140 window background to achieve root transparency. For this you
12142 .I ParentalRelativity
12146 A subsequent root background change may be detected or not, this
12147 depends on the program used to set the background. If you use
12148 fvwm-root, xsetbg (xli), FvwmBacker with solid or colorset colors
12149 or a recent version of Esetroot (>= 9.2) a background change is
12150 detected. If background changes are not detected (e.g., if you use
12151 xv or xsetroot) you can force detection by using the -d option of
12154 xv -root -quit mybg.png; fvwm-root -d
12156 Due to the way X implements transparency no guarantees can be made
12157 that the desired effect can be achieved. The application may even
12158 crash. If you experience any problems with this option, do not
12161 Using outline move and resize (see the
12166 option) as well as setting the
12167 .I WindowShadeShrinks
12168 style may help. The transparency achieved with
12170 depends on whether the colorset is applied to the foreground or
12171 the background of a window. In the second case the transparency is
12172 relative to the parent window of the window on which the colorset
12173 is defined. For example:
12175 Colorset 12 VGradient 200 grey30 grey60
12176 Colorset 17 Transparent
12177 *FvwmIconMan: Colorset 12
12178 *FvwmIconMan: PlainColorset 17
12180 gives an IconMan with a vertical grey gradient background and the
12181 buttons use the background (by transparency). To obtain a (root)
12182 transparent IconMan:
12184 Colorset 12 Transparent
12185 Colorset 17 Transparent
12186 Colorset 18 Transparent
12187 Colorset 19 Transparent
12189 *FvwmIconMan: Colorset 12
12190 *FvwmIconMan: PlainColorset 17
12191 *FvwmIconMan: FocusColorset 18
12192 *FvwmIconMan: IconColorset 19
12194 The Colorset IconMan option defines the IconMan window background,
12195 but the PlainColorset and the FocusColorset are drawn on the
12196 foreground. So, the transparency of the IconMan buttons is
12197 achieved by drawing nothing. Now if this IconMan is swallowed in
12200 FvwmButtons:(Colorset 10, Swallow \\
12201 "FvwmIconMan" 'FvwmIconMan')
12207 and it is transparent relative to
12211 uses Colorset 10 as background. If you want root transparency use
12215 .BR FvwmButtons ", " FvwmIconMan ", " FvwmIdent ", " FvwmScroll
12218 are relatively simple. There is one main colorset option which
12219 defines the background of the window and the other colorsets (if
12220 any) are drawn on the foreground. The case of
12221 .BR FvwmWinList " and " FvwmProxy
12224 all the colorsets are drawn on the foreground and with
12226 the two colorsets refer to the window backgrounds.
12228 is more complicated as almost everything in the pager are windows
12229 with some parental relations (the mini windows are the child and
12230 the desktops are the parents and all this is complicated by the
12231 hilighted page). So, the colorsets apply to the background of
12232 these windows. You should experiment. For
12233 .BR FvwmForm " and " FvwmScript
12234 the situation is similar. There is a main window (a child of the
12235 root window) which corresponds to the main colorset and most of
12236 the widgets are windows which are children of the main window.
12238 may work or not with the
12240 option. When the colorset is drawn on the foreground
12242 should work. In some cases, tinting may be very slow. Tinting may
12243 work with fvwm menu (without animation). Tinting may work better
12244 if your X server has backing store enabled (try xdpyinfo to see if
12245 this the case). There is a chance that the backing store support
12246 of your X server does not work well with the terrible hack used to
12247 Tint the ParentRelative Pixmap. So, to get tinted root
12248 transparency it is more safe to use the
12252 .IR RootTransparent " [ " buffer " ] "
12253 creates a root transparent background. To make this option work,
12254 you must use an Esetroot compatible program, fvwm-root with the
12255 --retain-pixmap option or FvwmBacker with the RetainPixmap option
12256 (and colorset or solid backgrounds). The
12258 keyword is useful only when the
12260 option is used too. This speeds up creation of windows which use
12261 the colorset (useful for fvwm menus) at the cost of memory
12262 usage. It also speeds up opaque move and resize which can be
12263 unacceptably slow without
12265 However, this option may add a lot of memory to your X server
12266 (depending on the size of the image used to set the
12267 background). In summary, using outline move and resize for modules
12268 which use such a colorset may be a good idea.
12270 .IR Shape ", " TiledShape " and " AspectShape
12271 take a file name as an argument, search the
12273 and use it as the shape bitmap.
12275 produces repeated copies of the bitmap with no scaling,
12277 causes the bitmap to be stretched to fit whatever object the
12278 colorset is applied to and
12280 stretches to fit but retains the bitmap aspect ratio. If the file
12281 is a pixmap in xpm format, the shape mask of the pixmap is used.
12283 Warning: Due to the way X11 implements shapes you cannot take back
12284 making windows shaped. You may have to restart fvwm or the shaped
12288 creates a pixmap and stretches it to fit the window.
12290 may be one of HGradient, VGradient, DGradient, BGradient,
12291 SGradient, CGradient, RGradient or YGradient. The gradient types
12292 are as follows: H is horizontal; V is vertical; D is diagonal
12293 from top left to bottom right; B is a backwards diagonal from
12294 bottom left to top right; S is concentric squares; C is concentric
12295 circles; R is a radar like pattern and Y is a Yin Yang style (but
12297 Please refer to the
12299 section for the syntax of gradients.
12302 takes 2 arguments, a color and a percentage between 0 and 100. It
12303 causes the image defined using
12307 to be tinted with the specified color using the percentage. If the
12308 image is transparent
12310 tints only the image part. Unfortunately, a colorset background
12311 specified using the
12313 option can give strange results. See the
12315 option for details. With no arguments this option removes the
12319 takes 2 arguments, a color and a percentage between 0 and 100. It
12320 causes the color defined using
12322 to be tinted with the specified color using the percentage. With
12323 no arguments this option removes the tint.
12326 takes 2 arguments, a color and a percentage between 0 and 100. It
12327 causes the color defined using
12329 to be tinted with the specified color using the percentage. If the
12333 colors are not specified, they are recomputed from the tinted bg
12334 color. With no arguments this option removes the tint.
12337 takes a percentage between 0 and 100 as an argument. It causes
12338 fvwm to merge the image defined using
12344 color using the percentage. If the percentage is 0 the image is
12345 hidden and if it is 100 the image is displayed as usual (no
12346 merge). The default is 100 and it is restored if no argument is
12350 takes a percentage between 0 and 100 as an argument. It causes
12351 fvwm to merge the text and the colorset background using the
12352 percentage. If the percentage is 0 the text is hidden and if it is
12353 100 the text is displayed as usual (no merge). This option has an
12354 effect only with fonts loaded by Xft, see the
12355 .B FONT NAMES AND FONT LOADING
12356 section. The default is 100 and it is restored if no argument is
12360 causes fvwm to dither the image defined using
12364 This is useful only with displays with depth less than or equal to
12365 16 (i.e., on displays which can only display less than 65537
12366 colors at once). The dithering effect lets you simulate having
12367 more colors available that you actually have.
12369 causes fvwm to do not dither the images.
12371 is the default if the depth is less than or equal to 8 (a screen
12372 with 256 colors or less). In depth 15 (32768 colors) and 16 (65536
12373 colors), the default is
12375 however this effect can be useful with images which contain a lot
12376 of close colors. For example a fine gradient looks more smooth.
12379 takes 2 arguments, a color and a percentage between 0 and 100. It
12380 causes fvwm or a module to tint the "icons" which are rendered
12381 into the colorset background with the specified color using a
12382 percentage. Here "icons" means, fvwm Icons, fvwm menu icons,
12383 MiniIcons which represent applications in various modules, images
12384 loaded by modules (e.g., images specified by the
12387 button option) ...etc. With no arguments this option removes the
12391 takes a percentage between 0 and 100 as an argument. It causes
12392 fvwm to merge the "icons" which are rendered into the colorset
12393 background using this percentage. The default is 100 and it is
12394 restored if no argument is given.
12397 It is equivalent to use "Tint a_color rate" and "Alpha a" if a =
12398 100 and the bg color is a_color. This equivalence does not hold
12399 for IconAlpha and IconTint as the background can be an image or a
12400 gradient (and not a uniform color background).
12401 However, in some cases you can achieve (almost) the same effect by
12402 using IconTint in the place of IconAlpha. This is preferable as,
12403 in general, IconAlpha generates more redrawing than IconTint.
12406 removes the shape mask from the colorset while
12408 removes the background pixmap or gradient.
12413 Colorset 3 fg tan, bg navy
12416 If necessary this creates colorsets 0, 1, 2 and 3 and then changes
12417 colorset 3 to have a foreground of tan, a background of navy.
12420 Colorset 3 bg "navy blue"
12423 changes the background color of colorset 3 to navy blue. The
12424 foreground and pixmap are unchanged.
12427 Colorset 3 AspectPixmap large_murky_dungeon.xpm
12433 Colorset 3 bg Average
12436 Sets the background color and the relief colors to match the
12437 background pixmap. This is the default setting but it must be used
12438 if a background color was specified and is now not required.
12440 Colorset 3 YGradient 200 3 blue 1000 navy 1 blue 1000 navy
12442 Adds a Yin Yang gradient background pixmap to colorset 3. If the
12443 background is set to average it is recomputed along with the
12444 foreground if that is set to contrast.
12448 FvwmCommand "Colorset 7 fg navy, bg gray"
12451 FvwmCommand "Colorset 7 fg gray"
12453 FvwmCommand "Colorset 7 fg navy"
12457 Makes colorset 7 blink.
12459 The color names used in colorsets are saved as fvwm variables which
12460 can be substituted in any fvwm command. For example:
12462 AddToFunc InitFunction
12463 + I Exec exec xterm -fg $[fg.cs0] -bg $[bg.cs0]
12465 Where $[fg.cs0] is the foreground color of colorset zero. Please
12467 .B COMMAND EXPANSION
12468 section for more information.
12471 .B CleanupColorsets
12472 Resets a definition of all colorsets.
12475 .SS COLOR GRADIENTS
12477 A color gradient is a background that changes its color gradually
12478 from one hue to a different one. Color gradients can be used by
12479 various commands and modules of fvwm. There are eight types of
12482 is a horizontal gradient,
12486 is diagonal from top left to bottom right,
12488 is backwards diagonal from bottom left to top right,
12490 is concentric squares,
12492 is concentric circles,
12494 is a radar like pattern and
12496 is a Yin Yang style (but without the dots).
12498 The color gradient syntax has two forms:
12501 .BI "?Gradient " "colors start-color end-color"
12502 This form specifies a linear gradient. The arguments denote the
12505 to allocate (between 2 and 1000), the initial color and the final
12510 TitleStyle VGradient 20 \\
12511 rgb:b8/ce/bc rgb:5b/85/d0
12515 .BI "?Gradient " "colors segments color length color" " [" "length color" "] ..."
12516 The second form specifies a nonlinear gradient. The arguments are:
12517 the total number of
12519 to allocate (between 2 and 1000), then the number of
12521 For each segment, specify the starting
12525 then the ending color. Each subsequent segment begins with the
12526 second color of the last segment. The lengths may be any
12527 non-negative integers. The length of one segment divided by the
12528 sum of all segments lengths is the fraction of the colors that
12529 are used for the segment.
12534 MenuStyle * MenuFace DGradient \\
12535 128 2 lightgrey 50 blue 50 white
12537 # 20% gradient from red to blue,
12538 # 30% from blue to black,
12539 # 50% from black to grey
12540 MenuStyle * MenuFace DGradient 100 3 Red 20 Blue 30 \\
12543 # 50% from blue to green, then
12544 # 50% from yellow to red
12545 Colorset 0 HGradient \\
12546 128 3 Blue 1000 Green 1 Yellow 1000 Red
12553 Fvwm starts on this display unless the
12558 Set by fvwm to the directory containing the standard fvwm modules.
12561 Used to determine the user's data directory for reading and
12562 sometimes writing personal files. If this variable is not already
12563 set, it is set by fvwm to $HOME/.fvwm, which is the default user's
12567 Fvwm tries to contact this session manager.
12569 .I SESSION_MANAGER_NAME
12570 This is used mainly to determine xsm running to work around its
12571 bug. If this variable is set to "xsm", DiscardCommand is set as
12572 xsm expects it and not as XSMP requires. If you run fvwm under
12573 xsm, you should set this variable to "xsm", otherwise old state
12574 files are not removed.
12577 If this is set, fvwm saves its session data in this
12578 directory. Otherwise it uses
12580 Note, the state files are named
12582 and normally are removed automatically when not used anymore.
12586 Robert Nation with help from many people, based on twm code, which
12587 was written by Tom LaStrange. After Robert Nation came Charles
12588 Hines, followed by Brady Montz. Currently fvwm is developed by a
12589 number of people on the fvwm-workers mailing list.
12593 Fvwm and all the modules, scripts and other files coming with the
12594 distribution are subject to the
12596 General Public License (GPL). Please refer to the
12598 file that came with fvwm for details.
12602 As of fvwm version 2.4.0 there were exactly 71.8 unidentified
12603 bugs. Since then 22.825 bugs have been fixed. Assuming that there
12604 are at least 10 unidentified bugs for every identified one, that
12605 leaves us with 71.8 - 22.825 + 10 * 22.825 = 277.225 unidentified
12606 bugs. If we follow this to its logical conclusion we will have an
12607 infinite number of unidentified bugs before the number of bugs can
12608 start to diminish, at which point the program will be bug-free.
12609 Since this is a computer program infinity = 3.4028e+38 if you
12610 do not insist on double-precision. At the current rate of bug
12611 discovery we should expect to achieve this point in 4.27e+27
12612 years. I guess we better plan on passing this thing on to our
12615 Known bugs can be found in the fvwm bug tracking system
12616 (accessible from the fvwm home page).
12618 Bug reports can be sent to the fvwm-workers mailing list at
12619 @FVWMWORKERSLIST@ (see the
12621 or reported through the bug tracking system.
12623 The official fvwm homepage is
12624 .BR @FVWMHOMEPAGE@ .