1 ======================================================================
2 Fvwm Frequently Asked Questions
3 ======================================================================
5 Last updated 20 Jan 2009 for unstable release 2.5.26 and stable
10 0. *The* most frequently asked questions :)
12 0.1 A few minutes after fvwm is started my keyboard and
13 mouse bindings stop working. What can I do?
14 0.2 I use XMMS, but it ignores some window styles.
15 0.3 I like transparency. What can I do?
19 1.1 What does fvwm stand for?
20 1.2 Where do I find the current versions of fvwm?
21 1.3 Any WWW Sites about fvwm?
22 1.4 Where do I ask questions about fvwm?
23 1.5 What are the differences between fvwm 1.xx and 2.xx?
24 1.6 What's the relative memory usage for the various window
26 1.7 Why the rename of the various files (fvwm2, .fvwm2rc,
28 1.8 When will fvwm release X.Y.Z be ready?
32 2.1 I want to use fvwm, but I don't have root access on my
33 machine. Can I still install and run it?
34 2.2 I'm trying to use fvwm under CDE/COSE, but encountering
35 difficulties. Any suggestions?
36 2.3 I'm trying to compile fvwm under SunOS using cc, but the
37 compiler is having lots of problems. What gives?
38 2.4 I want colored icons, but they won't work. Why not?
39 When I run configure, it reports "no" to "Have XPM
40 support?" How can I get XPM support?
41 2.5 I'm a sysadmin, and if I wanted to force fvwm to read a
42 system rc file and then the user's rc file, how would I
44 2.6 I'm a sysadmin, and if I wanted fvwm to look for all of
45 its rc files in a hidden directory, say ~/.fvwm, much
46 like CDE does, how could I do that?
47 2.7 How can I use fvwm with GNOME version <= 1?
48 2.8 How can I use fvwm with GNOME version >= 2 or KDE
51 3. Features, Configuration, Functions & Commands
53 3.1 I use fvwm on a RedHat Linux system and can't figure out
54 how to change my fvwm configuration. I've read the fvwm
55 man page but when I edit my .fvwm2rc nothing seems to
56 happen. What's going on?
57 3.2 Is it possible to raise a window when I click into the
58 window itself, not just the border?
59 3.3 How do I get Alt-Tab behavior like another GUI?
60 3.4 What's the difference between the Focus and FlipFocus
62 3.5 You can bind mouse movements to keystrokes, how about
64 3.6 I'd like to bind a key to paste/use the current
65 selection, how can I do that?
66 3.7 Will fvwm ever support a separate colormap for each
68 3.8 I really like the horizontal bars that appear on the
69 title bars of sticky windows. Can I get those on other
71 3.9 How do I set the Sun keyboard key xxxx to an fvwm
72 command? Or more generally, I'm having problems defining
73 key bindings for fvwm - what can I do?
74 3.10 My .fvwmrc from version 1.xx no longer works. What do I
76 3.11 What happened to the fvwm 1.xx 'include' command?
77 3.12 How do I get window titles on sub windows of ...
78 3.13 I just upgraded to version >= 2.3.2, and my
79 configuration settings disappeared! How do I get them
81 3.14 Some applications (e.g. Eterm) don't use the icon I
82 defined for them. Why?
83 3.15 I don't like the gaps in my icon box when I de-iconify
84 an application. Is there some kind of auto arrange
86 3.16 How do I set up an fvwm menu item that shuts down my
88 3.17 Although the Recapture command is obsolete, do I still
89 need it to apply certain style changes?
90 3.18 When my specific window (or all windows) pops up, I want
91 it to get focus/be moved/be resized/be closed/be
93 3.19 When my specific window (or all windows) is closed, I
94 want to switch desks/wrap to my app X/popup a menu/start
96 3.20 I have a multi head setup (multiple screens used under
97 X). How can I tell fvwm to use different configurations
99 3.21 How do I maximize a window but not cover up FvwmTaskBar?
100 3.22 Why my close button looks pressed in maximized windows?
101 Why don't buttons show on the titlebar of some windows?
102 3.23 How to define transparent menus?
103 3.24 How to define transparent modules?
104 3.25 How to define transparent decorations?
105 3.26 How about transparent applications too?
106 3.27 How can I define emacs type multi-keystroke fvwm bindings?
107 3.28 How do I remove all decorations from a window?
108 3.29 What's the best way to make on-the-fly config changes?
109 3.30 How can I toggle a window's layer?
113 4.1 I'm using FvwmButtons (or GoodStuff in 1.xx), and
114 sometimes the buttons stay depressed, and other times
115 they don't. Why is that?
116 4.2 When having FvwmButtons swallow an app, is it possible
117 to have button presses assigned to actions as well? For
118 instance, I'd like to swallow xload and have a button
119 press pop up an xterm, or swallow xbiff and have a
120 button press bring up the list of messages.
121 4.3 I'm seeing odd things when trying to preprocess files
122 with the FvwmM4/Cpp module...
123 4.4 I heard about this FvwmFileMgr module. Where can I find
125 4.5 I used to use GoodStuff in fvwm 1.xx, but it's not in
126 the 2.xx distribution. What do I use now?
127 4.6 I want to have the sub panels in FvwmButtons not at
128 their default position near the button but somewhere
129 else on the screen. Is this possible?
130 4.7 How can I open a sub panel or push buttons in
131 FvwmButtons with a keyboard shortcut?
133 5. Development, Known Problems & Bug Reports
135 5.1 I'd really like to see neat feature XYZ in
136 fvwm. Wouldn't that be cool? I even have a patch. When
138 5.2 How do I create/submit/apply patches?
139 5.3 How do I submit a bug report?
140 5.4 I have a window that is behaving unexpectedly under
141 fvwm, but just fine under (whatever other window
142 manager), or I have just some random bug. What do I do?
143 5.5 Why do NumLock, CapsLock and ScrollLock interfere with
144 ClickToFocus and/or my mouse bindings?
145 5.6 Menus with gradient backgrounds flicker or are very
147 5.7 Why won't the StartIconic style work with {Netscape,
149 5.8 How do I capture the output (e.g. errors) of fvwm?
150 5.9 I try to run some program under fvwm, but it dies with
151 an X11 error like BadAccess. The same program works
152 just fine under MWM or OLWM. What's going on?
153 5.10 Every time I update my install, my currently running
154 fvwm session dies. Why is that?
155 5.11 After I restart fvwm certain windows or icons raise
156 above all other windows and cannot be lowered by any
157 means. One example are the shortcuts of KFM (the KDE
158 file manager). What can I do about that?
159 5.12 The StartsOnPage style does not work for me. Why?
160 5.13 Some modules can not be started when I restart fvwm.
161 5.14 I'm running Rational Rose and fvwm ignores its windows.
162 5.15 Although I use the WindowListSkip style for my modules
163 they still show up in FvwmIconMan, FvwmWinList etc.
164 5.16 When I Maximize an application, sometimes I get gaps
165 around the edges, and other times I don't. What's going
170 6.1 What exactly is the difference between a DESK, a PAGE,
172 6.2 I'd really like {NeXT, Win95, etc} look and feel. Are
173 you going to support that?
174 6.3 Where can I get more XPMs for icons?
175 6.4 Linux XF86 virtual screen size & fvwm interaction...
176 6.5 I know this question doesn't have to do with fvwm, but
177 what happened to to rxvt and rclock which Rob Nation
178 used to support? Where can I find them now?
179 6.6 How do I set the background with fvwm?
180 6.7 When I use Fvwm, my XYZ isn't the right color. What's
182 6.8 I just got a mouse with 57 buttons. How do I make Fvwm
184 6.9 Why does fvwm change my X Cursor theme?
186 7. Hints and Examples from the Developers
188 7.1 An easy way to test new configurations.
189 7.2 Using shell commands for configuration.
190 7.3 How to start applications on a page or desk other than
192 7.4 How to start applications on a page or desk other than
193 the current without moving the viewport to the new page
195 7.5 A more efficient MWM menu style.
196 7.6 Placing menus on the screen.
197 7.7 Are you flipping pages by accident when moving the mouse
198 close to the border of the screen?
199 7.8 Lining up your windows and icons.
200 7.9 Moving the mouse/focus/page with the keyboard.
201 7.10 The cat safe desktop :-)
202 7.11 Lowering and moving windows.
203 7.12 Toggling windows on and off.
204 7.13 Starting applications by clicking on an icon (also known
205 as "docking" applications).
206 7.14 Positioning a window using arithmetic.
207 7.15 Hiding the mouse pointer.
208 7.16 Finding the mouse pointer.
209 7.17 Autohiding FvwmButtons or other windows.
210 7.18 Using application screenshots as icon or mini icon
213 ======================================================================
214 0 - The most frequently asked question
215 ======================================================================
217 0.1 A few minutes after fvwm is started my keyboard and mouse
218 bindings stop working. What can I do?
220 A: Probably your NumLock, CapsLock or ScrollLock key is pressed. See
221 Q 5.5 for more details.
223 Trivia: In all my years as an fvwm developer this has been by far the
224 most frequently asked question. Whoever can solve this problem so
225 that this question is never asked again will be mentioned in big
226 letters on the fvwm home page :-)
228 ----------------------------------------------------------------------
230 0.2 I use XMMS, but it ignores some window styles.
232 A: XMMS wants to do everything by itself and overrides many
233 settings of the window manager. Check the options menu in XMMS
234 and if that does not help, ask the XMMS people about it at
238 *Please* do not ask XMMS questions on the fvwm mailing lists
239 and do not report XMMS related bugs before you tried the XMMS
240 mailing lists. No offense meant, but we really have more
241 important things to do than providing user support for third
244 ----------------------------------------------------------------------
246 0.3 I like transparency. What can I do?
248 A: See questions 3.23, 3.24, 3.25, 3.26 that deal with transparency.
250 Also see configurations supplied in fvwm-themes package, some
251 themes use transparent menus, modules and/or decorations. E.g.:
253 http://fvwm-themes.sf.net/screenshots/full/transparent.png
254 http://fvwm-themes.sf.net/screenshots/full/transparent.jpg
257 ======================================================================
259 ======================================================================
261 1.1 What does fvwm stand for?
263 A: "Fill_in_the_blank_with_whatever_f_word_you_like_at_the_time
264 Virtual Window Manager". Rob Nation (the original Author of fvwm)
265 doesn't really remember what the F stood for originally, so we
266 have several potential answers:
268 Feeble, Fabulous, Famous, Fast, Foobar, Fantastic, Flexible,
269 F!@#$%, Flashy, fvwm (the GNU recursive approach), Free, Final,
270 Funky, Fred's (who the heck is Fred?), Freakin', Flawed,
271 Father-of-all, Feivel (the mouse from "An American Tail"),
272 Frungy (hey, where does that come from?), Floppy, Foxy,
273 Frenzied, Funny, Fumbling etc.
275 Just pick your Favorite (hey, there's another one!), which will of
276 course change depending on your mood and whether or not you've run
277 across any bugs recently. I prefer Fabulous or Fantastic myself,
278 although I often use F!@#$% or Freakin' while debugging...
280 Recently 'Feline' is becoming popular. Perhaps this has something
281 to do with the discovery that four of the six core developers have
282 cats (averaging 1.17 cats)? Miaow.
284 Know what? I found another one while stroking my cats: FEEDING :-)
287 http://fvwm.org/fvwm-cats/
289 ----------------------------------------------------------------------
291 1.2 Where do I find the current versions of fvwm?
293 A: New main distribution site (official + beta code):
295 ftp://ftp.fvwm.org/pub/fvwm/
300 ftp://sunsite.unc.edu/pub/Linux/X11/window-managers/
301 ftp://ftp.cs.columbia.edu/pub/cheah/
304 ftp://unix.hensa.ac.uk/pub/walnut.creek/FreeBSD/incoming/
305 ftp://ftp.jussieu.fr/pub/X11/fvwm/
306 ftp://ftp.loria.fr/pub/unix/fvwm/
308 By the way, 1.24r was the last released version of the 1.xx series
309 and the first official release of 2.xx is 2.2. As of 2.2, an odd
310 second digit denotes development releases and even numbers denote
313 ----------------------------------------------------------------------
315 1.3 Any WWW Sites about fvwm?
317 A: Yup. The official site is:
321 There are links on the official site to other related fvwm sites.
323 ----------------------------------------------------------------------
325 1.4 Where do I ask questions about fvwm?
327 A: If your local fvwm maintainer can't help you, then try the fvwm
328 mailing list. The fvwm discussion mailing list address is:
332 And there is an announce mailing list as well:
334 fvwm-announce@fvwm.org
336 They are maintained by Jason Tibbitts, and are Majordomo based
337 mailing lists. To subscribe to the list, send "subscribe fvwm" in
338 the body of a message to <list>-request@fvwm.org. For example, to
339 subscribe to the fvwm mailing list, send a request to
340 fvwm-request@fvwm.org.
342 To unsubscribe from a list, send "unsubscribe fvwm" in the body
343 of a message to <list>-request@fvwm.org. To report problems, send
344 mail to fvwm-owner@fvwm.org.
346 Here's the list descriptions and instructions directly from Jason:
348 ------------------------------------------------------------------
354 This list is for discussion relating to the fvwm window manager,
355 which is intended to have a small memory footprint and a rich
356 feature set, be extremely customizable and extendible and have a
357 high degree of Motif MWM compatibility. All relevant discussion
358 is encouraged. Posting of binaries or irrelevant discussion is
359 strongly frowned upon. Posting of short patches (less than 200
360 lines) is acceptable, but all patches should also be sent to the
361 fvwm-workers list (see Q5.2, below) for inspection and possible
362 inclusion in the distribution.
368 To send a message to the list, mail to fvwm@fvwm.org. For help on
369 dealing with the mailing list software (for getting the archives or
370 other files which may be made available) send the message "help" to
371 fvwm-request@fvwm.org. If you have problems with the mailing list
372 itself and need to talk to a human, send mail to
373 fvwm-owner@fvwm.org. This address is for mailing list issues only;
374 reports on the fvwm software will be sent to /dev/null.
376 Archives of previous messages are available; to get them send the
377 above mentioned help message and investigate the "index" and "get"
378 commands or ftp them from
379 ftp://ftp.fvwm.org/pub/fvwm/list-archive/.
384 This list is for announcements relating to the fvwm window manager,
385 which is intended to have a small memory footprint and a rich
386 feature set, be extremely customizable and extendible and have a
387 high degree of Motif MWM compatibility.
389 Replies to messages from this list are set by default to go the
390 fvwm discussion list, fvwm@fvwm.org.
392 The current fvwm distribution is available for ftp at
393 ftp://ftp.fvwm.org/pub/fvwm/
394 ------------------------------------------------------------------
396 ----------------------------------------------------------------------
398 1.5 What are the differences between fvwm 1.xx and 2.xx?
400 A: A lot. To name a few general ones:
401 - Bug fixes. 1.xx is not worked on at all any more.
402 - Better rc file format. No longer order dependent.
403 - More flexible and powerful. For example, many previously
404 global options now operate on a per window group level
406 - More and better modules.
407 - M4 preprocessing is no longer part of the fvwm exec, but
408 rather has been moved to a module. There is also a module
409 to use cpp too. See the FvwmM4 and FvwmCpp man pages.
411 Be sure to check the NEWS file for new or changed features too.
413 ----------------------------------------------------------------------
415 1.6 What's the relative memory usage for the various window managers
418 A: Here's a little table comparing some of them. It was done on an
419 AIX based IBM RS6000 model 355 using the same number of windows (3)
420 and XSession to switch between the window managers, and I used
421 'top' to show the values:
424 545K 652K fvwm2 (fvwm 2.0.35)
425 457K 528K fvwm (fvwm 1.24rb)
426 856K 960K ctwm (ctwm 3.2p1)
427 1004K 1156K mwm (mwm 1.2)
429 263K 328K aixwm (a simple ugly window manager included w/ aix)
431 Note: This information is terribly outdated.
433 ----------------------------------------------------------------------
435 1.7 Why the rename of the various files (fvwm2, .fvwm2rc, fvwm2.man)?
437 A: Some people find this annoying, but it was done for several reasons:
439 - so both 1.xx and 2.xx can be installed for use, in case some
440 people at the same site would rather stay at 1.xx
441 - the syntax of the rc files is pretty different and
442 completely incompatible
443 - when people ask questions, if they explicitly mention their
444 .fvwm2rc file I know that they are running one of the 2.xx
445 versions, since they rarely mention exactly what version
448 Note, starting from 2.5.1, the executable fvwm2 became fvwm again.
449 Also, starting from 2.5.11, the default config file is either
450 personal ~/.fvwm/config or system wide $datadir/fvwm/config.
451 So, we completely returned to the "fvwm" name.
453 ----------------------------------------------------------------------
455 1.8 When will fvwm release X.Y.Z be ready?
457 A: This is always a difficult question to answer. We work on fvwm on
458 a volunteer basis. Things get done when we have the time.
460 Joining the fvwm-workers mailing list might prove instructive.
463 ======================================================================
465 ======================================================================
467 2.1 I want to use fvwm, but I don't have root access on my machine.
468 Can I still install and run it?
470 A: Very easily, using the '--prefix' flag at configure time.
472 Suppose your home directory is /home/sam. After unpacking the
473 fvwm sources, do "./configure --prefix=/home/sam [other options as
474 needed]'. Now, after building ("make") and installing ("make
475 install"), you will find the binaries in /home/sam/bin, the
476 man pages in /home/sam/man, etc. The modules will be in
477 /home/sam/libexec, and fvwm binary will have this module path
480 ----------------------------------------------------------------------
482 2.2 I'm trying to use fvwm under CDE/COSE, but encountering
483 difficulties. Any suggestions?
485 A: Sure - here's one from Graeme McCaffery:
488 Finally I have found out how to run fvwm properly from CDE 8-))
489 (thanks to Lars Sodergren).
491 First set your home session in Dtwm. That usually is an empty
492 session, though you could have the CDE session manager remember
493 what your desktop was like instead of FvwmSaveDesk etc..
495 Then you have to set two resources in .Xdefaults:
497 Dtsession*wmStartupCommand: /home/orion/spxgm/bin/Fvwm
498 Dtsession*waitWmTimeout: 1
500 In this case I run fvwm from a shell script so that library
501 variables etc are set properly for everyone. The waitWmTimeout
502 tells the session manager how long to wait until it starts the
503 window manager. I've set it to 1 second. By default it's 60
506 Finally you have to quit with
508 /usr/dt/bin/dtaction ExitSession (or whatever your path is for dtaction)
510 Now you can happily use CDE programs and fvwm.
513 On the other hand, here is a link to a web page that describes
514 how to add multiple window managers to the CDE login menu:
516 http://twirl.mcc.ac.uk/~zzassgl/wm.html
518 ----------------------------------------------------------------------
520 2.3 I'm trying to compile fvwm under SunOS using cc, but the compiler
521 is having lots of problems. What gives?
523 A: cc under SunOS is not an ANSI C compiler. Try using acc or gcc
526 ----------------------------------------------------------------------
528 2.4 I want colored icons, but they won't work. Why not?
529 When I run configure, it reports "no" to "Have XPM support?" How
530 can I get XPM support?
532 A: Fvwm uses the XPM (X PixMap) library to provide support for colored
533 and shaped icons. XPM doesn't ship with the basic X distribution
534 as provided by The Open Group or XFree86. However, many vendors
535 will bundle it as a standard component anyway. If not, you can get
536 a copy of the source from ftp://ftp.x.org/contrib/libraries/ and
539 If you have XPM on your system, there are a number of ways
540 configure could still decide not to use it.
542 First, if you've installed XPM in a non-standard place (not in the
543 normal system or X11 directories--say in /opt/xpm or /usr/local or
544 similar) then you need to tell configure where to look. Use the
545 --with-xpm-library and --with-xpm-includes options (see
546 INSTALL.fvwm). Typically configure will say "Xpm library or header
547 not found" if this is the problem.
549 Second, your version of XPM may be too old. Fvwm requires XPM 3.4g
550 or better. Typically configure will say "Xpm library version is
551 too old!" if this is the problem. In that case, you'll need to
552 install a newer version.
554 Third, XPM may be mis-installed on your system. If configure says
555 " Xpm library version and header file version don't match!" then
556 this may be the problem. Either use the --with-xpm-library and
557 --with-xpm-includes options to specify more precisely what you
558 want, or try re-installing XPM.
560 Last, there could be a linker error. This is especially common on
561 systems where XPM may be built as a shared library and installed in
562 a non-standard directory (Solaris is a good example). There are
563 some notes about building using shared libraries in the
566 If you can't figure it out, contact the fvwm mailing list. Please
567 be sure to provide the type of hardware and operating system you're
568 using, how you invoked configure, and extract the lines dealing
569 with XPM from the config.log file and include that.
571 ----------------------------------------------------------------------
573 2.5 I'm a sysadmin, and if I wanted to force fvwm to read a system rc
574 file and then the user's rc file, how would I do that?
576 A: Well, you could probably do something like this. Have the first
577 line of everyone's ~/.fvwm/config or ~/.fvwm/.fvwm2rc files be
578 'Read global.config' and have global.config reside in
579 "$datadir"/fvwm (the value of $datadir is set on ./configure step).
581 ----------------------------------------------------------------------
583 2.6 I'm a sysadmin, and if I wanted fvwm to look for all of its rc
584 files in a hidden directory, say ~/.fvwm, much like CDE does, how
587 A: Fvwm now supports ~/.fvwm search directory by default.
589 This could be probably done similarly to Q2.5 above. The system rc
590 "$datadir"/fvwm/config (or system.fvwm2rc) could do something like:
600 or whatever breakdown you deemed appropriate, and you would have
601 default versions of these in "$datadir"/fvwm/ that it could find
602 in case the user was missing one of them and you wanted to supply
605 ----------------------------------------------------------------------
607 2.7 How can I use fvwm with GNOME (version <= 1)?
609 A: Since the latest fvwm versions are mostly GNOME compliant, you may
610 simply run GNOME applications, like panel, gmc, gnome-terminal and
611 all others with fvwm.
613 The included fvwm-menu-desktop script (with a massive man page)
614 will help you build fvwm menus for gnome applications.
616 To ensure you run fvwm and not gnome-session, create .Xclients file
617 in your home directory and put a call to fvwm in it. The file
618 ~/.xinitrc can be used for the same purpose if you want to bypass
619 any system-wide logic installed by your distributor or sysadmin.
621 An alternative solution is to run fvwm inside of
622 /usr/bin/gnome-session. After you start gnome-session (don't start
623 fvwm yourself), go to the foot menu in the GNOME panel, then choose
626 System menus / Settings / Desktop / Window Manager
628 and create an entry for fvwm. Fvwm supports session management.
630 If you run gnome-session, SessionInitFunction and
631 SessionRestartFunction are called instead of InitFunction and
632 RestartFunction, see the fvwm man page.
634 StartFunction, for running modules, is called as usual.
637 Here are examples of the GNOME Window Manager hints support in
640 o If you run gnome panel inside fvwm without GNOME support, you
641 can't fully use GNOME pager applets (if at all); with GNOME
642 support you can correctly see pages/desks and move windows
643 between them inside applets. You can also use the GNOME Tasklist
644 applet and manage your windows using it.
646 o If you run gmc and bind GnomeButton (see the man page), you can
647 pass root clicks to a gnome application (i.e. to gmc in this
650 ----------------------------------------------------------------------
652 2.8 How can I use fvwm with GNOME version >= 2 or KDE version >= 2?
654 A: Most standard applications work as any other application with
655 fvwm. However, some features and special applications such as
656 panels, pagers, taskbars and desktops need a special
657 support. Interaction between the window manager, the desktop
658 environment and applications is standardized in the Extended Window
659 Manager Hints specification. fvwm supports this specification since
660 the 2.5.x series (GNOME, GTK, KDE and QT since their version
661 2). See the "Extended Window Manager Hints" section of the fvwm
662 manual page and the commands and styles which start with "EWMH" for
665 You can use fvwm as the GNOME window manager. For this, start GNOME
666 (gnome-session). The game is to replace the running window manager
667 (sawfish or metacity by default) by fvwm. You may try to type "fvwm
668 --replace&" in a terminal. If this does not work kill fvwm and open
669 the session properties dialog (run "gnome-session-properties&" in a
670 terminal) and change, in the second tab, the metacity (or sawfish)
671 Style value from "Restart" to "Normal" (do not forget to "Apply"
672 this change), so that gnome-session won't restart it when you kill
673 it. Then, run "killall metacity; sleep 1; fvwm &" in a
674 terminal. After you have succeeded starting fvwm you just have to
675 save your session (say via GNOME session logout). The next time you
676 start gnome-session, fvwm will be used (and you do not need to save
677 the session again at logout). Note that if you use gnome-smproxy,
678 and run an FvwmButtons which swallows some applications which use
679 the old session protocol these applications are restarted by
680 gnome-session and FvwmButtons at session restart which can cause
683 You can also use fvwm as the KDE window manager. KDE is started by
684 a shell script called "startkde". This script starts ksmserver
685 which starts the window manager (kwin by default). To start fvwm
686 you should add the option "-w fvwm" to the ksmserver command line
687 (close to the end of the script). You may copy startkde to
688 startkde_fvwm somewhere in your path, edit startkde_fvwm and
689 finally replace startkde by startkde_fvwm in your X startup script
690 (e.g., ~/.xinitrc, ~/.Xclients or ~/.xsession). Note that ksmserver
691 does not support the fvwm Restart command. You should use "Restart
692 fvwm" for restarting fvwm. But if you do that it is a bad idea to
693 save the session later.
695 ======================================================================
696 3 - Features, Configuration, Functions & Commands
697 ======================================================================
699 3.1 I use fvwm on a RedHat Linux system and can't figure out how to
700 change my fvwm configuration. I've read the fvwm man page but
701 when I edit my .fvwm2rc nothing seems to happen. What's going
704 A: RedHat Linux installs the X server accompanied (by default) by a
705 configuration management system. In earlier releases it was called
706 TheNextLevel and in more recent releases it's called
707 AnotherLevel. For further information about TheNextLevel, consult
708 RedHat's documentation in /usr/doc/TheNextLevel/. For information
709 about AnotherLevel, do a 'man AnotherLevel'.
711 ----------------------------------------------------------------------
713 3.2 Is it possible to raise a window when I click into the window
714 itself, not just the border?
716 A: Any version later than 2.0.46 (i.e. 2.1.0 or later) has this
717 feature. In the 2.2.x series, use:
719 GlobalOpts MouseFocusClickRaises
721 With the later 2.3.x betas and after use:
723 Style * MouseFocusClickRaises
725 ----------------------------------------------------------------------
727 3.3 How do I get Alt-Tab behavior like another GUI?
729 A: The built in command WindowList provides a very close approximation
730 to the Alt-Tab feature found in another GUI. It doesn't look the
731 same but the following fvwm/config sample will provide a similar
734 Key Tab A M WindowList Root c c NoDeskSort
736 Starting with release 2.3.2, the above key binding is built-in.
738 Starting with release 2.3.15 you can hold the alt key down and keep
739 hitting tab. A single alt-tab selects the previous window. The
740 remainder of this FAQ entry describes releases prior to 2.3.2.
742 Hitting Alt-Tab will pop up the WindowList menu. Unlike another
743 GUI you should not keep the Alt key held down, the menu will stay
744 up until you hit Return/Enter/Space or Escape. You can change
745 focus to a window on the menu by using the up and down arrow keys
746 to move the menu selection and then hitting Return or
747 Enter. Hitting Escape will close the menu without doing anything.
748 The WindowList menu has hot keys assigned for the first 26 windows
749 and you can use the hot key to go directly to the window.
751 The menu invoked with the above line will show all windows in most
752 recently focused order unless you have used the Focus command (see
753 Q3.4). It shows each windows name and geometry with some extra
754 flags to indicate Sticky, OnTop and iconified windows.
756 A simpler style can be used with the following:
758 Key Tab A M WindowList Root c c CurrentDesk, NoGeometry
760 This will just list the windows on the current desk (titles only).
762 The other GUI has the feature of selecting the previous window if
763 Alt-TAB is hit and released quickly. This behavior can be exactly
764 duplicated with 2.5.1 or later but not with earlier fvwm versions.
766 Key Tab A M WindowList Root c c \
767 CurrentDesk, NoGeometry, CurrentAtEnd, IconifiedAtEnd
769 Similar functionality can be assigned to hitting Alt-TAB twice in
770 quick succession (like a double click for keys):
772 DestroyFunc my_dbltab2
776 DestroyFunc my_dbltab
778 + I Prev (CurrentDesk) my_dbltab2
780 Key Tab A M WindowList Root c c \
781 CurrentDesk, NoGeometry my_dbltab
783 There are a lot of options to the WindowList command to control
784 which windows are listed in which order and it may not be possible
785 to set conditions for the Prev command to reliably select the
786 second item when double keying. The WindowList command has no
787 parallel for CurrentPage, Transient, Visible, Maximized, Raised,
788 and pattern matching. The Prev conditions have no parallel for
789 OnTop, Alphabetic and desk sorting. The WindowList menu respects
790 the WindowListSkip style attribute whereas Prev respects the
791 CirculateSkip and CirculateSkipIcon style attributes.
793 ----------------------------------------------------------------------
795 3.4 What's the difference between the Focus and FlipFocus commands?
797 A: Both of these commands change the keyboard focus to the target
798 window. They differ only in the way they affect the internally
799 held list of windows. This list is used by the Next, Prev and
800 WindowList commands. The list is normally sorted in most recently
801 focused order with new windows being added to the end. The
802 FlipFocus command plucks the target window from the list and
803 inserts it at the beginning, The Focus command rotates the list
804 around until the target window is at the beginning. The behavior
805 of FlipFocus is also used when changing focus with the mouse and
806 the automatic focus changing when using ClickToFocus style.
808 If you never use the Focus command the list will remain in most
809 recently focused order. If you do use the Focus command the list
810 will gradually get back to most recently focused order as you use
813 The Focus command is very useful in conjunction with the Next and
816 Key KP_Add A M Next (AcceptsFocus, CurrentDesk, !Iconic) Focus
817 Key KP_Subtract A M Prev (AcceptsFocus, CurrentDesk, !Iconic) Focus
819 Or for fvwm versions earlier than 2.4.1:
821 Key KP_Add A M Next [CurrentDesk !Iconic] Focus
822 Key KP_Subtract A M Prev [CurrentDesk !Iconic] Focus
824 These bindings allow you to circulate the focus around the windows
825 on the current desk in both directions. If Prev FlipFocus were
826 used the focus would toggle between the top two windows on the
829 If you have several windows on a desk and you want to set the
830 circulation order for the Next and Prev commands you should focus
831 on the windows using the mouse or FlipFocus in the order you want.
832 Fvwm will learn the order and use it for the Next and Prev
833 commands. If you subsequently use the mouse to focus or FlipFocus
834 the order will be lost.
836 ----------------------------------------------------------------------
838 3.5 You can bind mouse movements to keystrokes, how about mouse
841 A: Although fvwm has commands for binding movements to keystrokes,
842 controlling the pointer with the keyboard should really be handled
843 by the X server. The following is an excerpt of the X FAQ on this
846 If you have the X Keyboard (XKB) Extension, you can enable mouse
847 keys, which makes it possible to generate mouse motion and button
848 events using the keyboard. Events generated by MouseKeys are
849 completely transparent -- they will work with any application
850 that connects to a server that has the X Keyboard Extension,
851 regardless of whether the application itself uses XKB.
853 XKB is enabled by default in X11R6.1.
855 First, set up the Num Lock key so that Shift+Num_Lock
858 $ xmodmap -e "keysym Num_Lock = Num_Lock Pointer_EnableKeys"
860 (XFree86 3.1.2E is based on R6.1 and has the X Keyboard
861 Extension; it also has a binding to Pointer_EnableKeys in
862 its default keymap. You use Alt+Shift+Num_Lock to toggle
863 MouseKeys on and off. If you are using an earlier release
864 of X or XFree86, you won't have XKB and the instructions
865 will not work. See http://www.XFree86.org/FAQ for more
868 You might also have to turn off server num lock for this to
869 work. Now press "Shift+Num_Lock" to enable MouseKeys. When
872 o) The keypad arrow keys move the pointer
873 o) The keypad '5' key behaves like the 'default' pointer
875 o) The keypad '0' key locks the default pointer button
877 o) The keypad '.' key unlock the default pointer button
879 o) The keypad '+' key double-clicks the default pointer
881 o) The keypad '/' key sets the 'default' button to Button1
882 o) The keypad '*' key sets the default button to Button2
883 o) The keypad '-' key sets the default button to Button3
885 This is the default configuration, but the mechanism allows
886 for nearly infinite configurability.
888 [thanks to Erik Fortune (erik@westworld.engr.sgi.com), 6/96]
890 ----------------------------------------------------------------------
892 3.6 I'd like to bind a key to paste/use the current selection, how can
895 A: You can't directly with fvwm, but there may be a solution that is
896 more generally applicable - use the program 'xcb' available at
897 ftp://ftp.x.org/contrib/utilities/ or from your favorite mirror.
898 It could probably be used to get the desired effect or close to
899 it. This is most useful for running programs and passing the
900 selection to them (e.g. - invoke your favorite browser with the
901 current selection as the URL). To get a semi-generic paste
902 facility to work, you'll probably need to use 'xse' (see Q3.5). If
903 anyone comes up with a good example of this, please send it to the
904 fvwm mailing list for inclusion here.
906 ----------------------------------------------------------------------
908 3.7 Will fvwm ever support a separate colormap for each desktop?
910 A: Doubtful, although I'd like to see it too. I believe that it'd be
911 possible to change the default colormap whenever you switch desks,
912 which would give programs started when that desk is active that
913 colormap, how would you deal with windows being moved across desks?
915 Plus fvwm itself needs certain colormap entries for all of its
916 drawing (borders, menus, etc), so these colors would have to be
917 pre-allocated in all of the colormaps, or something like that.
919 While this all *might* be technically possible, I don't feel that
920 it's really feasible right now (too much code bloat and
921 complexity), especially since most color hog programs
922 (i.e. Netscape) allow you to have them install private colormaps.
924 I may explore this a little at some point in the future though.
926 ----------------------------------------------------------------------
928 3.8 I really like the horizontal bars that appear on the title bars
929 of sticky windows. Can I get those on other windows as well?
931 A: Yes. For release 2.3.14 and after, put the line
933 Style * StippledTitle
935 in your fvwm/config (or .fvwm2rc). For earlier releases use
937 GlobalOpts StipledTitles
939 (Yes, the spelling was inconsistent.)
941 ----------------------------------------------------------------------
943 3.9 How do I set the Sun keyboard key xxxx to an fvwm command? Or
944 more generally, I'm having problems defining key bindings for
945 fvwm - what can I do?
947 A: From Jon Mountjoy, one of fvwm's users:
948 - Function keys on Sun Keyboard on Top Row are F1 - F8
949 - Keys on the function keypad on the Left of the Sun Keyboard
950 are F11 == Stop, F12 == Again, ..., F20 == Cut
954 # Function keys on Sun Keyboard on Top Row
955 Key F1 A N Exec me(netscape) &
956 Key F2 A N Exec me(netscape -install) &
957 Key F5 A N Exec makex(Adder)
958 Key F6 A N Exec makex(Lambda)
959 Key F7 A N Exec makex(Castor)
960 Key F8 A N Exec xterm -T Local &
962 # Keys on the function keypad on the Left of the Sun Keyboard:
963 # F11 = Stop, F12 = Again, ..., F20 = Cut
964 Key F11 AWF N Next (!iconic, CurrentPage) Focus
965 Key F12 AWF N Prev (!iconic, CurrentPage) Focus
966 Key F13 WF N Maximize 100 100
967 Key F15 WF N RaiseLower ""
968 Key F17 WIF N Iconify ""
969 Key F18 WF N Stick ""
970 Key F20 WIF N Delete ""
971 Key Help AWF N Iconify ""
973 A more general solution is to use xev (usually distributed w/ X11)
974 or xkeycaps (an X11 interface to xmodmap written by Jamie Zawinski,
975 available from ftp.x.org) to find out what the keysym for whatever
976 key you want REALLY is, and use that for binding fvwm commands.
978 ----------------------------------------------------------------------
980 3.10 My .fvwmrc from version 1.xx no longer works. What do I do?
982 A: Start with a new one or convert your old one. This can be done by
983 hand or with a little help from the 'fvwm-convert-2.2' in the
986 And here is a list of rc file command changes compiled by Makoto
987 'MAR_kun' MATSUSHITA <matusita@ics.es.osaka-u.ac.jp>. It may or
988 may not be 100% accurate or complete, especially as changes evolve,
989 but it's a good start.
991 Note that there have been some changes in 2.1.x and up that are not
992 reflected in the conversion script yet.
994 ** Fvwm-1.xx commands ** ** Fvwm-2.0.x equivalent **
996 AppsBackingStore (obsoleted)
997 AutoRaise delay (obsoleted, use FvwmAuto)
998 BackingStore (obsoleted)
999 BoundaryWidth Width Style (BorderWidth width)
1000 ButtonStyle button# WidthxHeight <-
1001 CenterOnCirculate (obsoleted)
1002 CirculateSkip windowname Style (CirculateSkip)
1003 CirculateSkipIcons Style (CirculateSkipIcon)
1005 ClickToFocus Style (ClickToFocus)
1006 Cursor cursor_num cursor_type CursorStyle context cursornum
1007 DecorateTransients Style (DecorateTransient)
1008 DeskTopScale Scale (obsoleted, use FvwmPager)
1009 DeskTopSize HorizontalxVertical <-
1010 DontMoveOff (obsoleted)
1011 EdgeResistance scrolling moving <-
1012 EdgeScroll horizontal vertical <-
1013 Font fontname MenuStyle (arg4)
1014 Function FunctionName AddToFunc (not compatible)
1015 HiBackColor colorname Style (HilightFore color)
1016 HiForeColor colorname Style (HilightFore color)
1017 Icon windowname bitmap-file Style (Icon iconname-file)
1018 IconBox left top right bottom Style (IconBox l t r b)
1019 IconFont fontname Style (IconFont fontname)
1020 IconPath path ImagePath path
1021 Key keyname Context Modifiers Function <-
1022 Lenience Style (Lenience)
1023 MenuBackColor colorname MenuStyle (arg2)
1024 MenuForeColor colorname MenuStyle (arg1)
1025 MenuStippleColor colorname MenuStyle (arg3)
1026 Module ModuleName <-
1028 Mouse Button Context Modifiers Function <-
1029 MWMBorders Style (MWMBorder)
1030 MWMButtons Style (MWMButtons)
1031 MWMDecorHints Style (MWMDecor)
1032 MWMFunctionHints Style (MWMFunctions)
1033 MWMHintOverride Style (HintOverride)
1034 MWMMenus MenuStyle (arg5)
1035 NoBorder windowname Style (NoBorder)
1036 NoBoundaryWidth Width Style (HandleWidth width)
1037 NoPPosition Style (NoPPosition)
1038 NoTitle windowname Style (NoTitle)
1039 OpaqueMove percentage OpaqueMoveSize percentage
1040 OpaqueResize (obsoleted)
1041 Pager X_Location Y_Location (obsoleted, use FvwmPager)
1042 PagerForeColor colorname (obsoleted, use FvwmPager)
1043 PagerBackColor colorname (obsoleted, use FvwmPager)
1044 PagerFont fontname (obsoleted, use FvwmPager)
1045 PagingDefault pagingdefaultvalue (obsoleted)
1046 PixmapPath ImagePath path
1047 Popup PopupName AddToMenu (not compatible)
1048 RandomPlacement Style (RandomPlacement)
1049 SaveUnders (obsoleted)
1050 SloppyFocus Style (SloppyFocus)
1051 SmartPlacement Style (SmartPlacement)
1052 StartsOnDesk windowname desk-number Style (StartsOnDesk desk-number)
1053 StaysOnTop windowname Style (StaysOnTop)
1054 StdBackColor colorname Style (BackColor color)
1055 StdForeColor colorname Style (ForeColor color)
1056 StickyBackColor colorname (obsoleted)
1057 StickyForeColor colorname (obsoleted)
1058 Sticky windowname Style (Sticky)
1059 StickyIcons Style (StickyIcon)
1060 StubbornIcons (obsoleted)
1061 StubbornIconPlacement (obsoleted)
1062 StubbornPlacement (obsoleted)
1063 Style windowname options <-
1064 SuppressIcons Style (NoIcon)
1065 WindowFont fontname Style (Font fontname)
1066 WindowListSkip windowname Style (WindowListSkip)
1069 ** fvwm-1 built-in functions ***
1072 CirculateDown [ name window_name ] Next (not compatible)
1073 CirculateUp [ name window_name ] Prev (not compatible)
1075 CursorMove horizontal vertical <-
1079 Exec name command <-
1083 Iconify [ value ] <-
1085 Maximize [ horizontal vertical ] <-
1086 Module name ModuleName Module ModuleName
1095 Restart name WindowManagerName <-
1097 Scroll horizonal vertical <-
1099 TogglePage (obsoleted)
1101 Warp [ name window_name ] Next or Prev (not compatible)
1102 WindowsDesk new_desk (obsoleted, use MoveToDesk)
1103 WindowList arg1 arg2 <-
1105 *** New in fvwm-2 **
1125 Menu menu-name double-click-action
1128 Next (conditions) command
1129 None (arguments) command
1132 Prev (conditions) command
1145 (more functions are being added from time to time, so please check
1146 the man page and the NEWS file too).
1148 ----------------------------------------------------------------------
1150 3.11 What happened to the fvwm 1.xx 'include' command?
1152 A: It was actually part of the M4 preprocessing. You can use the
1153 'Read' builtin to get the same effect, or use the FvwmM4 module.
1155 ----------------------------------------------------------------------
1157 3.12 How do I get window titles on sub windows of ... (e.g.
1160 A: These windows are known as 'transient' windows because of their
1161 short lived nature. To get the window decorations for transient
1162 windows you can use the Style command:
1164 Style * DecorateTransient
1166 or to switch it off:
1168 Style * NakedTransient
1170 ----------------------------------------------------------------------
1172 3.13 I just upgraded to version >= 2.3.2, and my configuration
1173 settings disappeared! How do I get them back?
1175 A: The directory for system-wide configuration files changed from
1176 ${sysconfdir} (/usr/local/etc, unless set otherwise at configure
1177 time) to a subdirectory, ${sysconfdir}/fvwm. Move your config
1178 files by hand and restart fvwm.
1180 This change was made because fvwm now installs several files into
1183 ----------------------------------------------------------------------
1185 3.14 Some applications (e.g. Eterm) don't use the icon I defined for
1188 A: Eterm provides its own icon and fvwm does not know if it is a plain
1189 icon or if Eterm wants to draw into it (like xbiff does when you
1190 get new mail). You can explicitly override the application
1191 provided icon with a style command:
1193 Style <application-name> IconOverride
1195 ----------------------------------------------------------------------
1197 3.15 I don't like the gaps in my icon box when I de-iconify an
1198 application. Is there some kind of auto arrange function?
1200 A: Assuming you are using the IconBox option of the Style command
1201 this can be done with a tricky fvwm function. Put the
1202 DeiconifyAndRearrange function below in your configuration file:
1204 DestroyFunc DeiconifyAndRearrange
1205 AddToFunc DeiconifyAndRearrange
1207 + C All (CurrentPage, Iconic) PlaceAgain Icon
1209 This works with fvwm-2.5.3 and later. Older fvwm releases can
1210 achieve the same effect with:
1212 DestroyFunc DeiconifyAndRearrange
1213 AddToFunc DeiconifyAndRearrange
1215 + C All (CurrentPage, Iconic) RecaptureWindow
1217 However, as the Recapture and RecaptureWindow commands may be
1218 removed in the future, please use PlaceAgain instead of
1219 Recapture if possible.
1221 Also, replace all places where you call the Iconify builtin
1222 function to de-iconify an icon with a call to the new function.
1223 For example, replace
1225 DestroyFunc IconFunc
1234 DestroyFunc IconFunc
1236 + C DeiconifyAndRearrange
1239 + D DeiconifyAndRearrange
1243 Mouse 1 I A Iconify off
1247 Mouse 1 I A DeiconifyAndRearrange
1249 ----------------------------------------------------------------------
1251 3.16 How do I set up an fvwm menu item that shuts down my Linux
1254 A: Write a little shell script to run the shutdown command.
1256 Install sudo on your system (see the man page, etc.)
1258 Set up the sudoers config file to allow you, your wife, etc. to run
1259 that script with root permissions.
1261 Add a menu item to your fvwm root menu (or wherever) that invokes
1262 "sudo /my/script/name".
1264 ----------------------------------------------------------------------
1266 3.17 Although the Recapture command is obsolete, do I still need it
1267 to apply certain style changes?
1269 A: Excerpt from the man page:
1271 There are many commands that affect look and feel of specific,
1272 some or all windows, like Style, Mouse, the FvwmTheme module (for
1273 fvwm 2.4.x), Colorsets and many others. For performance reasons
1274 such changes are not applied immediately but only when fvwm is idle,
1275 i.e. no user interaction or module input is pending. Specifically,
1276 new Style options that are set in a function are not applied until
1277 after the function has completed. This can sometimes lead to
1278 unwanted effects. To force that all pending changes are applied
1279 immediately, use the UpdateStyles, Refresh or RefreshWindow commands.
1281 ----------------------------------------------------------------------
1283 3.18 When my specific window (or all windows) pops up, I want it to
1284 get focus/be moved/be resized/be closed/be shaded... How?
1286 A: The following discusses a general solution, you should substitute
1287 the application names used in the examples as well as fvwm commands
1288 (Move, Iconify, Close) with the ones you need. To get resource
1289 names of an application you want to catch, use FvwmIdent module.
1291 The first possible approach to achieve what you want is to have a
1292 separate function to start your application, like:
1294 DestroyFunc StartKedit
1295 AddToFunc StartKedit
1298 + I Next (kedit) Resize 100p 200p
1300 This approach has 3 problems:
1301 1) You need to use StartKedit function to start your application,
1302 this will not work if you start it from the command line.
1303 2) If for some reason the application is not started, fvwm waits
1304 for it in Wait, you will need to press Ctrl-Alt-Esc.
1305 3) If you have more than one kedit window, it is not guaranteed
1306 that the right one is resized.
1308 But this approach has one plus - it also enables any fvwm commands
1309 that you may want to issue before executing your command. For
1310 example, to start kedit window iconic, but not affect its
1311 subwindows, you can use:
1313 DestroyFunc StartAppIconic
1314 AddToFunc StartAppIconic
1315 + I Style $0 StartIconic
1318 + I Style $0 StartNormal
1321 StartAppIconic kedit /tmp/my.txt
1324 The second approach is to use FvwmEvent, this solves the first two
1325 problems (in fvwm 2.2) or all three problems (in fvwm 2.3 and
1328 The sample to use with fvwm 2.2.3+ versions (this resizes the newly
1329 created window "My Window", supposing you have only one such
1332 DestroyModuleConfig FvwmEvent*
1333 *FvwmEvent add_window SetGeometryForMyWindow
1335 DestroyFunc SetGeometryForMyWindow
1336 AddToFunc SetGeometryForMyWindow
1337 + I Next ("My Window") Move +10p +10p
1338 + I Next ("My Window") Resize 100p 200p
1340 AddToFunc StartFunction I Module FvwmEvent
1342 The sample to use with fvwm 2.3.21 to 2.4.15 versions (consider to
1343 upgrade and use the version below). This moves a newly created
1344 window named "My Window", and warps a pointer to all new windows
1345 regardless of their name:
1347 *FvwmEvent-NewWindow: Cmd
1348 *FvwmEvent-NewWindow: PassId
1349 *FvwmEvent-NewWindow: StartDelay 4
1350 *FvwmEvent-NewWindow: add_window FuncFocusWindow
1352 DestroyFunc FuncFocusWindow
1353 AddToFunc FuncFocusWindow
1354 + I WindowId $0 ("My Window") Move 200p 100p
1355 + I WindowId $0 Focus
1356 + I WindowId $0 WarpToWindow
1358 AddToFunc StartFunction I FvwmEvent FvwmEvent-NewWindow
1360 And finally the suggested configuration for 2.5.7+ and
1361 2.4.16+. This moves a newly created window named "My Window", and
1362 wraps a pointer to all new windows regardless of their name:
1364 *FvwmEvent-NewWindow: StartDelay 4
1365 *FvwmEvent-NewWindow: add_window FuncFocusWindow
1367 DestroyFunc FuncFocusWindow
1368 AddToFunc FuncFocusWindow
1369 + I ThisWindow ("My Window") Move 200p 100p
1373 AddToFunc StartFunction I FvwmEvent FvwmEvent-NewWindow
1375 ----------------------------------------------------------------------
1377 3.19 When my specific window (or all windows) is closed, I want to
1378 switch desks/wrap to my app X/popup a menu/start app X... How?
1380 A: Please read the answer to the previous question to understand
1383 Again, there are two approaches. The first is good in one kind of
1384 situations, bad in others:
1386 DestroyFunc StartKedit
1387 AddToFunc StartKedit
1388 + I Exec kedit; xmessage -name DummyWindow -g +10000+10000 "dummy"
1389 + I Wait DummyWindow
1390 + I Exec xmessage -timeout 10 "Sorry, you can't close kedit"
1393 The second approach is to use FvwmEvent:
1395 *FvwmEvent-OldWindow: Cmd
1396 *FvwmEvent-OldWindow: PassId
1397 *FvwmEvent-OldWindow: destroy_window FuncPopupMyMenu
1399 DestroyFunc FuncPopupMyMenu
1400 AddToFunc FuncPopupMyMenu
1401 # go to the desk 0 when any window is closed
1403 # popup my menu when "panel" is closed
1404 + I WindowId $0 ("panel") Popup MenuFvwmRoot
1406 AddToFunc StartFunction I FvwmEvent FvwmEvent-OldWindow
1408 ----------------------------------------------------------------------
1410 3.20 I have a multi head setup (multiple screens used under X). How
1411 can I tell fvwm to use different configurations for the screens?
1413 A: Fvwm spawns itself into all found screens unless -s command line
1414 parameter is specified, as explained in the man page. All spawned
1415 fvwm processes by default use the same configuration on each
1416 screen. There are several ways to change the default behavior.
1418 Write your configuration file as you would if you had only one
1419 screen. Then move the screen specific lines into separate
1420 configuration files and call them, for example, config.<screen>
1421 where <screen> is the screen number. Usually this will be 0 for
1422 the main screen and 1 for the secondary screen. Place the screen
1423 specific files in the $HOME/.fvwm directory or whatever you set
1424 $FVWM_USERDIR to. Now add this line to your config file:
1426 Read config.$[screen]
1428 The $[screen] will be replaced with the number of the screen each
1429 instance of fvwm is started on.
1432 Another method, which should work for older fvwm versions as well,
1433 is to specify a separate file for each screen explicitly. For
1434 this, start a separate fvwm for each screen in your .xinitrc (or
1437 fvwm -s -d :0.0 -f config-0 &
1438 fvwm -s -d :0.1 -f config-1 &
1439 fvwm -s -d :0.2 -f config-2
1441 Note that only the last command is without a trailing ampersand.
1442 If you wish, config-* files may all include "Read config-common".
1444 ----------------------------------------------------------------------
1446 3.21 How do I maximize a window but not cover up FvwmTaskBar?
1448 A: Instead of Maximize use "Maximize 100 -30p" where 30 is the width
1449 of your FvwmTaskBar.
1451 Or use EwmhBaseStruts in Fvwm 2.5.x or later.
1453 ----------------------------------------------------------------------
1455 3.22 Why my close button looks pressed in maximized windows?
1456 Why don't buttons show on the titlebar of some windows?
1458 A: Fvwm has some builtin idea of what the buttons do, and some
1459 applications can request that certain buttons not be shown.
1460 For example, it's normal for Fvwm to suppress the iconify button
1461 (builtin button 4, the second button from the right) on a
1462 transient (dialog) window.
1466 Style * DecorateTransient
1468 tells fvwm you want titles and buttons on transient windows.
1470 Style * MwmFunctions
1472 tells fvwm to accept application hints to hide certain buttons.
1474 ButtonStyle 2 - Clear MWMDecorMin
1476 says button 2 performs the minimize (iconify) function.
1480 makes any mouse button on button 2 iconify the window.
1481 Buttons won't show until some action is assigned to them using
1482 Mouse or Key commands.
1484 Things to look for in the man page are:
1486 DecorateTransient, MwmDecorXXX, MwmFunctions
1488 So, if you use Windows-like buttons, then redefine button hints:
1490 ButtonStyle 1 - Clear MWMDecorMenu
1491 ButtonStyle 2 - Clear
1492 ButtonStyle 4 - Clear MWMDecorMax
1493 ButtonStyle 6 - Clear MWMDecorMin
1495 Finally, this command makes button relief to follow the state:
1499 ----------------------------------------------------------------------
1501 3.23 How to define transparent menus?
1503 A: First, it may help to read about colorsets in fvwm and FvwmTheme
1506 We speak about transparency, not translucency here. This means
1507 the background of the parent window (for example the root window)
1508 will be used for our "transparent" areas, this is not always the
1509 window under our "transparent" window. However, it is possible
1510 to get a real transparency (i.e. translucency) by applying one
1511 patch and using new Colorset Translucent option the patch adds.
1512 We do not discuss this here, however you may get this patch with
1513 README.patch included from:
1515 http://fvwm-themes.sf.net/patch/
1518 To define a transparent colorset, use something like:
1520 Colorset 23 Transparent, fg rgb:ff/ff/c4, bg darkgray
1522 (you may use any other number greater than 0 instead of 23)
1524 There is another way to define transparent colorset, by using
1525 RootTransparent instead of Transparent, but please remember,
1526 you should use a good utility to set the root background image,
1527 like "fvwm-root -r" or "Esetroot" or "wmsetbg", otherwise
1528 RootTransparent will not work:
1530 Colorset 23 RootTransparent, fg rgb:ff/ff/c4, bg darkcyan
1532 The good thing about RootTransparent is that it is possible to
1533 automatically calculate the average background color (used for
1534 highlighting/shading) and efficiently tint the visible part of the
1535 root image using something like:
1537 Colorset 23 RootTransparent, fg rgb:ff/ff/c4, bg average, \
1538 Tint black 20, bgTint black 20
1540 If you have enough memory, you may use "RootTransparent buffer"
1541 to speed up transparent menus, modules or decorations.
1543 If you are not sure whether you use "fvwm-root -r" or similar
1544 utility to set the root background, do not use RootTransparent
1545 option, use Transparent option without tinting, and set the bg
1548 Once a transparent colorset is defined, use it in menus:
1550 MenuStyle * MenuColorset 23
1552 See the man pages for a more complete explanation of colorsets.
1554 ----------------------------------------------------------------------
1556 3.24 How to define transparent modules?
1558 A: See question 3.23 to learn how to define a transparent colorset
1559 (you may reuse the same transparent colorset or define separate
1560 colorsets for different modules).
1562 Then read the man page for your specific module that you want to
1563 make transparent and specify this transparent colorset(s), like:
1565 *FvwmPager: Colorset * 23
1566 *FvwmButtons: Colorset 23
1567 *FvwmIconMan: Colorset 23
1569 Style FvwmPager ParentalRelativity
1570 Style FvwmButtons ParentalRelativity
1571 Style FvwmIconMan ParentalRelativity
1573 A side note: the ParentalRelativity option is not always needed.
1574 It is not needed if you use RootTransparent or you never intend to
1575 move a module inside its parent, or you swallow a module, since
1576 FvwmButtons adds ParentalRelativity automatically for swallowed
1577 fvwm modules. Otherwise you need Style ParentalRelativity for
1578 transparent windows, but doing this for all windows is overhead.
1580 Note, that previously "Pixmap none" option was used to define
1581 transparency; Pixmap option is obsolete, use colorsets instead.
1583 If you swallow FvwmPager (or FvwmIconMan) into FvwmButtons, then
1584 you may configure both FvwmPager and FvwmButtons to be transparent
1585 or just one of them to be transparent, depending on what you want
1588 ----------------------------------------------------------------------
1590 3.25 How to define transparent decorations?
1592 A: See question 3.23 to learn how to define a transparent colorset.
1593 Only RootTransparent method works for transparent decorations!
1594 This basically means that you should use external utilities like
1595 "wmsetbg" or "Esetroot" to set background in JPG/GIF/TIFF format
1596 and our utility "fvwm-root -r" for XPM/PNG images.
1598 To get transparent decorations, use a configuration like this:
1600 AddToFunc StartFunction
1601 + I Exec fvwm-root -r $HOME/wallpapers/sea.png
1603 Colorset 41 RootTransparent buffer, fg white, bg average, \
1604 Tint cyan 15, bgTint cyan 15 # tint is optional
1605 Colorset 42 RootTransparent buffer, fg white, bg average, \
1606 Tint red 15, bgTint red 15 # tint is optional
1608 Style * Colorset 41, HilightColorset 42 # to use fg and bg
1609 BorderStyle Inactive Colorset 42 -- flat
1610 BorderStyle Active Colorset 41 -- flat
1611 TitleStyle AllInactive Colorset 42 -- flat
1612 TitleStyle AllActive Colorset 41 -- flat
1613 ButtonStyle All -- UseTitleStyle flat
1615 It is possible to define partially transparent decorations too.
1616 You may achieve this by adding "AddTitleStyle Colorset NN PP",
1617 or even "TitleStyle Colorset NN PP". Please read the man page.
1618 Also search in fvwm-themes to see whether some theme provides
1619 the window decoration look similar to what you want to achieve.
1621 ----------------------------------------------------------------------
1623 3.26 How about transparent applications too?
1625 A: This is not really an fvwm related question, you should find X
1626 applications supporting transparency and read their documentation.
1628 Depending on the application you should set the root image in one
1629 or another way. Usually utilities like fvwm-root (with possible
1630 "-r" parameter), Esetroot or wmsetbg should be used.
1632 There is a wide range of terminal emulators that may be configured
1633 to be transparent, like Eterm, aterm, gnome-terminal and others.
1634 Here is an example command line:
1636 aterm -ls -sh 70 -bg black -fg white -tr +sb -fn 7x14 -fb 7x14bold
1638 Some applications have transparent theme, e.g. gkrellm and xmms.
1640 Some applications may show text on the root image, e.g. root-tail.
1642 There are a lot of other applications supporting transparency not
1643 listed here, search in FreshMeat, http://freshmeat.net/.
1645 ----------------------------------------------------------------------
1647 3.27 How can I define emacs type multi-keystroke fvwm bindings?
1649 A: In emacs, keys can be set up as prefix keys, so that once
1650 you type the prefix key, a subsequent key has a special meaning.
1651 For example, Control-a would normally go to the beginning of a line
1652 but Control-c Control-a might do something completely different.
1653 There are at least 2 ways to do the same thing with fvwm.
1655 The simplest technique is to use the prefix key to invoke a menu
1656 and then use the menu hot keys as the second key in the binding.
1657 Since menu hot keys don't include modifiers, you can only use plain
1658 keys for the second key in the sequence.
1660 This second technique lets you use any key for the second key but
1661 only works with 2.5.x or later.
1662 This approach invokes a function on the first key that defines the
1663 action of the second key for a short time and then removes it:
1665 DestroyFunc Ctrl-Alt-F-Action
1666 AddToFunc Ctrl-Alt-F-Action
1667 + I Key X A A Exec xterm
1668 + I Key C A A Exec xcalc
1669 # optionally popup a prompt window here
1670 + I Schedule 5000 Key X A A -
1671 + I Schedule 5000 Key C A A -
1673 # Press Ctrl-Alt-F and then "x" or "c"
1674 Key F A CM Ctrl-Alt-F-Action
1676 With this, you press the second key in 5 seconds otherwise the
1677 binding for the second key is removed.
1680 With fvwm-2.5.24 or later (using SendToModule) a much better
1683 SendToModule buttons-alias PressButton A 1
1685 This would send the FvwmButtons instance "button-alias" a command
1686 to invoke the action that button "A" has as though the button were
1687 clicked with mouse button 1. For instance:
1689 *button-alias: (Id A, Title "My Button", Action (Mouse 1) \
1692 ----------------------------------------------------------------------
1694 3.28 How do I remove all decorations from a window?
1697 A: I see this a lot on IRC. Most people try and do this:
1699 Style * !Title, BorderWidth 0
1701 This doesn't always work because many forget about a window having
1702 having handles -- which sit on the border. If a window has defined
1703 handles, then these effectively override any of border settings --
1704 especially the "BorderWidth" option. But there are Handle
1705 equivalents, hence the correct way to remove decorations from a window
1708 Style * !Title, !Borders, !Handles
1710 To set the BorderWidth of a window which has handles:
1712 Style * HandleWidth 5
1714 ----------------------------------------------------------------------
1716 3.29 What's the best way to make on-the-fly config changes?
1718 A: Often is the case, one might want to make config changes to fvwm.
1719 Adding them to the .fvwm2rc file (or in more recent releases
1720 .fvwm/.fvwm2rc or ~/.fvwm/config) and then restarting fvwm is one
1721 way -- but this has problems with memory, especially with Colorset
1722 definitions being redeclared, etc.
1724 The better approach to making changes is instead to use FvwmConsole
1725 which is a way of making live changes to fvwm configs. When you're
1726 satisfied that they're correct, then you can add them to your fvwm
1727 config file so that they're there the next time fvwm loads, thus
1728 reducing the need to restart fvwm.
1730 ----------------------------------------------------------------------
1732 3.30 How can I toggle a window's layer?
1734 A: Usually what people want from this, is a means of making a window
1735 stay on top for a time, and then putting it back in the layer it
1738 This is best achieved with a function, as in:
1740 DestroyFunc ToggleLayer
1741 AddToFunc ToggleLayer
1742 + I ThisWindow (Layer 6) Layer
1743 + I TestRc (NoMatch) Layer 0 6
1745 This function first of all checks to see if the window that's going
1746 to be toggled is in layer 6 (which in this context is assumed to be
1747 the layer which is used for the style StaysOnTop -- see the
1748 DefaultLayers command for more information), and if it is, to put it
1749 in the layer it was previously in.
1751 Otherwise, if we didn't do it (because the window in question was in
1752 any other layer), the window is put in layer 6.
1754 This function can be bound in the usual way, either via the Pick
1755 command to some key/mouse binding, or bound to a button on the
1758 ======================================================================
1760 ======================================================================
1762 4.1 I'm using FvwmButtons (or GoodStuff in 1.xx), and sometimes the
1763 buttons stay depressed, and other times they don't. Why is that?
1765 A: From the FvwmButtons man page:
1767 If command is an fvwm Exec command, then the button
1768 will remain pushed in until a window whose name or
1769 class matches the quoted portion of the command is
1770 encountered. This is intended to provide visual
1771 feedback to the user that the action he has requested
1772 will be performed. If the quoted portion contains no
1773 characters, then the button will pop out immediately.
1774 Note that users can continue pressing the button, and
1775 re-executing the command, even when it looks "pressed
1778 ----------------------------------------------------------------------
1780 4.2 When having FvwmButtons swallow an app, is it possible to have
1781 button presses assigned to actions as well? For instance, I'd
1782 like to swallow xload and have a button press pop up an xterm, or
1783 swallow xbiff and have a button press bring up the list of
1786 A: Yes, with the alpha release 2.5.0 or any later release. For older
1789 The button presses normally get passed through to the swallowed
1790 application, but if you put a title on the button, you can
1791 assign actions to that. Here's an example that someone sent to
1792 the mailing list once:
1795 Title 'System Info', \
1796 Swallow "xload" 'Exec xload', \
1797 Action(Mouse 1) 'Exec xosview -cua0 -net 200 -ul -l -geometry 325x325', \
1798 Action(Mouse 2) 'Exec xcpustate -interval 1 -bg "#a4978e" -fg black', \
1799 Action(Mouse 3) 'Exec rxvt -fg "khaki" -bg "dark olive green" \
1800 -fat -n top -T Top -7 -e top' )
1802 And you could come up with something similar for xbiff (untested):
1805 Title 'Check Mail' Swallow "xbiff" 'Exec xbiff', \
1806 Action(Mouse 1) 'Exec from | xmessage -file -' )
1808 plus you could bind another button (say Mouse 3) to run your
1811 Sometime in the future I'll probably try and fix it so that you can
1812 actually assign a button press over the application itself...
1814 ----------------------------------------------------------------------
1816 4.3 I'm seeing odd things when trying to preprocess files with the
1817 FvwmM4/Cpp module...
1819 A: Yup, I imagine that you might be. Things like the InitFunction not
1820 being called or windows that were running before fvwm started not
1821 getting their Borders & Style options set, etc.
1823 The reason for all this is because of the fact that FvwmM4 is a
1824 module. Fvwm won't be looking at the commands coming back from
1825 the module until after it hits the main loop of the code, AFTER the
1826 startup is all done and it has already tried to execute the
1829 To force synchronous execution of FvwmM4/Cpp use:
1831 ModuleSynchronous FvwmM4/Cpp -lock filename
1833 See the man page for more details.
1835 ----------------------------------------------------------------------
1837 4.4 I heard about this FvwmFileMgr module. Where can I find it?
1839 A: The FvwmFileMgr module disappeared because a file manager doesn't
1840 need to be integrated with a window manager and something like xfm
1841 does a much better job. I recommend you pick that up instead (from
1842 ftp.x.org or your favorite mirror).
1844 ----------------------------------------------------------------------
1846 4.5 I used to use GoodStuff in fvwm 1.xx, but it's not in the 2.xx
1847 distribution. What do I use now?
1849 A: GoodStuff was renamed to FvwmButtons. Same module, new name (that
1850 fits in with the other modules naming convention).
1852 ----------------------------------------------------------------------
1854 4.6 I want to have the sub panels in FvwmButtons not at their default
1855 position near the button but somewhere else on the screen. Is
1858 A: Yes, but not with the current implementation of the panels. Please
1859 read question 7.12 for instructions.
1861 ----------------------------------------------------------------------
1863 4.7 How can I open a sub panel or push buttons in FvwmButtons
1864 with a keyboard shortcut?
1866 A: FvwmButtons does not support keyboard shortcuts itself. Since
1867 fvwm version 2.3.24 the FakeClick command can be used to
1868 simulate a click in the FvwmButtons window:
1870 fvwm-2.3.24 or later:
1872 DestroyFunc press_fvwmbuttons
1873 AddToFunc press_fvwmbuttons
1874 + I Next (FvwmButtons, CirculateHit) WarpToWindow $1 $2
1875 + I FakeClick depth 2 press $0 release $0
1877 fvwm-2.5.1 or later (moves the pointer back to the original
1880 DestroyFunc press_fvwmbuttons
1881 AddToFunc press_fvwmbuttons
1882 + I SetEnv pointer_x $[pointer.x]
1883 + I SetEnv pointer_y $[pointer.y]
1884 + I Next (FvwmButtons, CirculateHit) WarpToWindow $1 $2
1885 + I FakeClick depth 2 press $0 release $0
1886 + I WindowId root WarpToWindow $[pointer_x]p $[pointer_y]p
1888 With this function, you can warp the pointer to the desired
1889 button to press and simulate a click. Call it with
1891 press_fvwmbuttons btn xoff yoff
1893 | | |___ y offset of the button
1894 | |________ x offset of the button
1895 |_____________ button to press
1897 For example, if the button of a panel is at 30% of FvwmButtons'
1898 width and 10% of its height and you want to simulate mouse
1901 press_fvwmbuttons 1 30 10
1903 You can bind this to a key. For example:
1905 Key f1 a n press_fvwmbuttons 1 30 10
1907 Note that this solution does not work well if the mouse is moved at
1910 With fvwm-2.5.24 or later (using SendToModule) a much better
1913 SendToModule buttons-alias PressButton A 1
1915 This would send the FvwmButtons instance "button-alias" a command
1916 to invoke the action that button "A" has as though the button were
1917 clicked with mouse button 1. For instance:
1919 *button-alias: (Id A, Title "My Button", Action (Mouse 1) \
1923 ======================================================================
1924 5 - Development, Known Problems & Bug Reports
1925 ======================================================================
1927 5.1 I'd really like to see neat feature XYZ in fvwm. Wouldn't
1928 that be cool? I even have a patch. When can it be added?
1930 A: If you plan to write a patch, *please*, first of all fetch the
1931 latest development release from our web site or better yet use CVS
1932 as described in http://fvwm.org/documentation/dev_cvs.php. It is
1933 also a good idea to contact the fvwm-workers list. At times,
1934 patches for older releases may prove completely worthless, e.g.
1935 because the fix has already been integrated, a feature already
1936 added or removed or simply because the code is very different to
1937 the code you patches. You will do yourself and us a great favor.
1938 Otherwise all your hard work may be wasted.
1940 People are always requesting or suggesting new features (many of
1941 which are great ideas and where a lot of the current features came
1942 from). One of the more common ones for example is Windows 95 look
1943 and feel (although since this was first written, that particular
1944 feature has actually been indirectly implemented via several
1945 appearance-affecting features).
1947 I'd like to make a statement about this. fvwm is supposed to be
1948 small, fast, powerful, and flexible, and sometimes tradeoffs have
1949 to be made here. The module interface helps here, as a lot of
1950 features that not everyone wants or needs don't have to be in the
1951 main module consuming resources for those people that don't want or
1954 So if you have a suggestion (or a patch), please think of a way to
1955 make it as small and generic as possible if you feel it belongs in
1958 If you plan to make a patch, please contact the fvwm-workers
1959 mailing list first. From time to time we are changing the code in
1960 a very disruptive way and if you create a patch to a version before
1961 such changes were made we will all have a hard time to integrate
1962 the patch. Most of the time we will ask you to update the patch
1963 for the current code anyway.
1965 Bear in mind that we make no guarantees that we'll add any
1966 requested feature or apply any submitted patches to the official
1967 version, but please don't let this dissuade you from submitting
1968 them. We like to get new ideas and we're always curious to see how
1969 someone would implement a given feature, even if we never plan to
1970 put it in fvwm. Also, we may choose to re-implement any patches
1971 submitted, which may change the syntax, functionality, etc. Please
1972 don't take offense from that, as we mean no offense and we
1973 generally have a good reason (at least by our way of thinking) for
1976 ----------------------------------------------------------------------
1978 5.2 How do I create/submit/apply patches?
1980 A: First of all, please read the first section of the answer to Q5.1!
1982 Please add proper entries to the ChangeLog file(s) and possibly to
1983 NEWS and AUTHORS files whenever you submit a patch. The ChangeLog
1984 lists *all* changed files and functions along with a useful
1985 explanation of the change details. The NEWS file mentions all
1986 user-visible changes, including bug fixes. Also, do not forget to
1987 write a section for the man page if the patch includes new
1990 You can find more detailed instructions for working with the
1991 fvwm sources in the files doc/DEVELOPERS and doc/CONVENTIONS in
1992 CVS or the tarballs.
1994 Creating a patch against CVS sources (preferable) -
1996 1) Execute "cvs update -AdP" to ensure there are no conflicts
1997 with the most recent sources.
1998 2) Don't forget to update the ChangeLog file (see below) and
1999 all manual pages if needed.
2000 3) In the base cvs directory run: cvs diff -u >myfeature.patch
2002 Creating a patch against released sources -
2004 1) Copy the original file(s) to the same name with the
2005 additional extension of .orig (or something like that).
2006 2) Update the ChangeLog file. If you use (x)emacs, move the
2007 cursor into the function you changed and hit <ctrl>-x 4 a.
2008 This will generate an empty ChangeLog entry in the right
2009 file (there are several ChangeLogs). Add a description of
2010 what you did. Do this each time you change a function or
2011 file (for changes outside of functions). You should update
2012 the AUTHORS and NEWS files too if appropriate.
2013 Please take the time to add the ChangeLog entries, it makes
2014 our work a lot easier.
2015 3) Run diff with either the -c (context) or -u (unified)
2016 switch on the sets of files, with the .orig file FIRST. I
2017 prefer unified diff's because they are smaller, but
2018 sometimes they aren't as readable (and some diff versions
2019 don't support unified diffs), so either context or unified
2020 diffs are fine (but please, no "plain" diffs).
2022 ex: cp fvwm.c fvwm.c.orig ; <edit> ; diff -u fvwm.c.orig fvwm.c
2024 Submitting a patch -
2026 Mail it to the fvwm-workers mailing list
2027 <fvwm-workers@fvwm.org>.
2029 If your patch is large you should compress it (preferably with
2030 gzip). Should it still be larger than 25k you might want to
2031 to place it on a web page and email the URL to the mailing
2032 list or ask on the fvwm-workers list first.
2034 Be sure to read the answer to Q5.1.
2036 Don't forget the ChangeLog and the documentation.
2040 Get a copy of the program 'patch' from your favorite source,
2041 such as ftp://ftp.gnu.org/gnu/patch/, compile it, and then
2042 follow its directions (generally just cd into the appropriate
2043 directory and run 'patch < patchfile').
2045 ----------------------------------------------------------------------
2047 5.3 How do I submit a bug report?
2049 A: Please do not report any 'bugs' related to XMMS to the fvwm the fvwm
2050 mailing lists but send them to the XMMS developers instead.
2052 Please write a DETAILED description of your problem. By detailed we
2053 mean more than just "my window isn't behaving right" or
2056 - If you want a template for a bug report, see the "fvwm-bug"
2057 shell script that comes with fvwm.
2058 - Describe the problem as best you can, preferably with
2059 suggestions on how to reproduce it easily
2060 - If applicable, include information from:
2061 xwininfo (preferably w/ the -all option)
2065 - What exact version of fvwm you are running.
2066 - What OS & version you are running under
2067 - What version of X11 are you running under, and is it an MIT
2068 server or a vendor specific server (e.g. the OpenWindow X
2070 - How was fvwm compiled (compiler & version, options, etc)
2071 - What settings do you have in your config file that may be
2074 This should be sent to the fvwm-workers mailing list.
2076 ----------------------------------------------------------------------
2078 5.4 I have a window that is behaving unexpectedly under fvwm, but
2079 just fine under (whatever other window manager), or I have just
2080 some random bug. What do I do?
2082 A: First, check your rc file and your .Xdefaults to make sure that
2083 something blatantly obvious in there isn't causing the problem.
2084 Second, *PLEASE PLEASE PLEASE* check the FAQ, BUGS, TODO, and man
2085 pages. Finally, check the official WWW page and the mailing list
2086 archives (which have a search facility) stored there.
2088 If you still can't figure it out, report your problem as a bug
2091 ----------------------------------------------------------------------
2093 5.5 Why do NumLock, CapsLock and ScrollLock interfere with
2094 ClickToFocus and/or my mouse bindings?
2096 A: Because they are treated as modifiers. You can use the
2097 IgnoreModifiers command to turn individual modifiers off for
2098 bindings. With XFree86 and fvwm version 2.4.0 or above, the
2103 If you changed your modifiers manually or are using a different
2104 X server use the 'xmodmap' command to find out which modifiers
2105 correspond to the keys you want to switch off.
2107 This command creates a lot of extra network traffic, depending
2108 on your CPU, network connection, the number of Key, Mouse or
2109 PointerKey commands in your configuration file and the number
2110 of modifiers you want to ignore. If you do not have a
2111 lightning fast machine or very few bindings you should not
2112 ignore more than two modifiers. So do not ignore scroll-lock
2113 if you have no problem with it.
2115 A better way to solve this problem is to modify the keyboard
2116 mapping of your X server. The commands
2118 xmodmap -e "clear Lock"
2119 xmodmap -e "clear Mod2"
2120 xmodmap -e "clear Mod5"
2122 remove the CapsLock, NumLock and ScrollLock from the keyboard
2123 map. Pressing these keys has no effect then. To re-add them
2126 xmodmap -e "add Lock = Caps_Lock"
2127 xmodmap -e "add Mod2 = Num_Lock"
2128 xmodmap -e "add Mod5 = Scroll_Lock"
2130 Fvwm has to be restarted to use the changes made by
2131 xmodmap. Please refer to the man page of the xmodmap command
2132 for further details. If you disable the CapsLock key in your
2133 keyboard map in this way, you can speed up fvwm a bit by
2134 removing the Lock modifier from the list of ignored modifiers:
2139 Since we all occasionally press NumLock or ScrollLock, it makes
2140 sense to redefine some main bindings to work with any modifiers.
2141 I.e. consider to replace something like this in your configuration:
2143 Mouse 1 R N Menu MenuFvwmRoot
2147 Mouse 1 R A Menu MenuFvwmRoot
2149 ----------------------------------------------------------------------
2151 5.6 Menus with gradient backgrounds flicker or are very slow.
2153 A: The flickering is caused by fvwm constantly redrawing the menus
2154 when a sub menu pops up or down. One way to help this is to use
2155 a X server with backing storage (XFree86 has backing storage
2156 support, I don't know about other servers but I guess that any
2157 decent X server has it). If your Xserver is started with the
2158 -bs option, remove it. If not try the -wm option, for example:
2162 You may have to adapt this example to your system (e.g. if you
2163 use xinit to start X).
2165 If that doesn't help, either because your X server does not have
2166 backing storage or because system resources are limited, make
2167 sure sub menus do not overlap the parent menu:
2169 MenuStyle <stylename> PopupOffset 1 100
2171 Unfortunately this does not work properly with the fvwm
2174 For the speed problem both suggestions above might help too.
2175 Another thing to try is to turn hilighting of the active menu
2176 item other than by foreground color off. Put these lines in your
2177 fvwm/config after the menu styles have been defined:
2179 MenuStyle <stylename> Hilight3DOff, HilightBackOff
2180 MenuStyle <Stylename> ActiveFore <preferred color>
2182 ----------------------------------------------------------------------
2184 5.7 Why won't the StartIconic style work with {Netscape, etc.}?
2186 A: The application won't allow it. This has only been observed with
2187 Netscape. When Netscape starts up, fvwm starts the main window in
2188 the iconic state. Netscape immediately issues another MapRequest,
2189 to which the window manager must respond by de-iconifying the
2190 window, according to the ICCCM rules. (Netscape can be persuaded
2191 to start iconic, however, by invoking it with the -iconic command
2194 ----------------------------------------------------------------------
2196 5.8 How do I capture the output (e.g. errors) of fvwm?
2198 A: Errors are reported to the standard error file. You can redirect
2199 standard error to a file when fvwm is started: "fvwm 2>
2200 fvwm-errors". X sessions started by xdm often redirect errors to a
2201 file named ".xsession-errors".
2203 Alternatively, FvwmConsole or "FvwmForm FvwmForm-Talk" modules
2204 will display error messages.
2206 ----------------------------------------------------------------------
2208 5.9 I try to run some program under fvwm, but it dies with an X11
2209 error like BadAccess. The same program works just fine under MWM
2210 or OLWM. What's going on?
2212 A: The error message usually looks something like this:
2214 X Error of failed request: BadAccess (attempt to access private
2216 Major opcode of failed request: 28 (X_GrabButton)
2217 Serial number of failed request: 1595
2218 Current serial number in output stream: 1596
2220 Well, this is telling you that there is a conflict in key/button
2221 assignments. In your config you have bound some key/button that
2222 this program really wants to bind to an action, but it can't since
2223 fvwm has already done so (but you weren't doing it in the rc file
2224 for your previous window manager). Figure out what the offending
2225 key binding is and remove it from your fvwm/config, or temporarily
2226 via "FvwmForm FvwmForm-Talk" by removing the fvwm binding (see the
2227 man page for the Key & Mouse commands).
2229 ----------------------------------------------------------------------
2231 5.10 Every time I update my install, my currently running fvwm
2232 session dies. Why is that?
2234 A: Many OSes swap the program from memory via the image on the disk,
2235 and if you overwrite it, and then the current one tries to swap
2236 something back into memory before you restart, it'll core dump. To
2237 avoid this, rename your old executables or move them to some other
2238 directory. The 'mv' command preserves the inode so it won't
2239 core dump, but then when you restart fvwm it'll pick up the new
2242 ----------------------------------------------------------------------
2244 5.11 After I restart fvwm certain windows or icons raise above
2245 all other windows and cannot be lowered by any means. One
2246 example are the shortcuts of KFM (the KDE file manager).
2247 What can I do about that?
2249 A: Some applications use so called 'override redirect' windows that
2250 are not (and cannot be) managed by the window manager. By
2251 convention as defined in the ICCCM, such windows must only be
2252 displayed for a very short time. KFM and possibly other
2253 applications ignore this convention and use permanent 'override
2254 redirect' windows, e.g. the KFM shortcuts. Fvwm can not easily
2255 detect these windows when it restarts and places the windows
2256 managed by fvwm below them.
2258 However, since fvwm version 2.3.8 there is a command that will
2259 help you, although it might cause trouble with other applications
2260 using 'override redirect' windows. We can't make any promises
2261 since KFM is violating the conventions and the applications may
2262 violate them in different ways.
2264 Now the command. Put this anywhere in your config file:
2266 BugOpts RaiseOverUnmanaged on
2268 ----------------------------------------------------------------------
2270 5.12 The StartsOnPage style does not work for me. Why?
2272 A: Many applications request a specific position where they want to
2273 appear (the so called 'program specified position'). Unless fvwm
2274 is told explicitly to ignore this, the program specified position
2275 overrides the StartsOnPage style. Use this line in your
2280 ----------------------------------------------------------------------
2282 5.13 Some modules can not be started when I restart fvwm.
2284 A: You may see the following error message on the console:
2286 [fvwm][PositiveWrite]: <<ERROR>> Failed to read descriptor:
2288 - terminate signal=N
2290 It means that fvwm has given up waiting for one of its modules to
2291 reply, and so has killed it. The length of the timeout is a
2292 configuration parameter - try adding
2296 to your config file. The units are in seconds and the default
2299 This problem will only occur on slow machines or high system load
2300 (many open windows).
2303 ----------------------------------------------------------------------
2305 5.14 I'm running Rational Rose and fvwm ignores its windows.
2307 A: This problem might occur on other applications besides the one
2310 The symptoms as reported by Raymond Toy are:
2312 I've been using fvwm for ages and it's always worked for me just
2313 fine. However, I've started using Rational Rose for Solaris. fvwm
2314 seems to get completely confused.
2316 o Fvwm doesn't draw any frames around the Rose window like it
2317 does for all other windows (except for those I explicit said
2320 o The Rose window is always on top. Nothing I do can bring
2321 another window above the Rose window.
2323 o Using fvwm's identify window module shows nothing. No identify
2324 window pops up showing the window info.
2326 o Focus sometimes seems to be lost. (I have focus follows
2327 mouse). I have to move the mouse out of the window and back in
2328 to get focus. Sometimes I also have to click in the window to
2331 The annoying thing is that this all seems to work with CDE and
2332 dtwm. I don't want to have to switch to dtwm so any hints or
2333 pointers on where to look to get fvwm to understand this window
2334 would help me a lot.
2337 Heres what we found out:
2339 Rational Rose uses software from Mainsoft that lets MS Windows
2340 applications be recompiled to run on UNIX.
2342 There are 2 Mainsoft Knowledgebase pages that relate to UNIX
2345 http://www.mainsoft.com/kb_mainwin/kbmw0027.html
2346 http://dev.mainsoft.com/Default.aspx?tabid=58 [KBMW0034]
2348 These pages suggest that you export MWWM=allwm or MWWM=MWM before
2349 starting the application. The first page is missing, but can be
2350 found using http://web.archive.org.
2354 This works just fine! Setting MWWM=allwm, Rose comes
2355 up like a normal X app where the WM draws the borders.
2356 With MWWM=MWM, it works ok too except that for the main
2357 window, no borders are drawn by the WM and Rose draws
2358 its own borders (I have fvwm respecting MWM decor
2359 hints). (This is correct as mentioned by the
2360 Knowledgebase pages above.) I don't recall what Rose
2361 looks like with dtwm, but I suspect it's quite close to
2364 Next we had Klaus Zeitler report that the Rational Rose official
2365 startup script is explicitly setting ALLWM to nothing. This makes
2366 it more difficult for an individual user to set this variable.
2367 If you can, you can just modify the script, otherwise, your other
2368 alternative is to copy the script somewhere where you can modify it
2369 and run it from there.
2371 ----------------------------------------------------------------------
2373 5.15 Although I use the WindowListSkip style for my modules they
2374 still show up in FvwmIconMan, FvwmWinList etc.
2376 A: Make sure you have
2378 *FvwmIconMan: UseWinList true
2380 in your config file. If that does not help, the modules you are
2381 using may not match the fvwm executable. Recompile and reinstall
2382 everything and the problem should go away.
2384 ----------------------------------------------------------------------
2386 5.16 When I Maximize an application, sometimes I get gaps around
2387 the edges, and other times I don't. What's going on?
2389 A: The ICCCM specification allows applications to specify certain
2390 properties the window manager should honor, such as aspect
2391 ratio (PAspect) or increments to be resized in (PResizeInc). Of
2392 course, sometimes these properties won't perfectly match the
2393 size of your desktop (or ewmh struts), if that should happen,
2396 In general, the application will have a good reason for doing
2397 this (for example, a terminal window may not want to have only
2398 part of a column visible), but you can make fvwm ignore the
2401 Style * ResizeHintOverride
2403 ======================================================================
2405 ======================================================================
2407 6.1 What exactly is the difference between a DESK, a PAGE, and the
2410 A: Our naming convention is sometimes a source of confusion, and when
2411 discussing problems and the like it's good to maintain a consistent
2412 meaning. To illustrate how features of fvwm should be referred to
2413 - fvwm has multiple disjoint DESKTOPS, each of which is comprised
2414 of M by N PAGES, which are each the size of the physical SCREEN.
2415 The physical SCREEN acts as a viewport over one of the PAGES of the
2416 current DESK. Here's a picture to clarify (also, take a look at
2417 the FvwmPager module):
2420 +----------+----------+ +----------+----------+
2422 | Page 0 0 | Page 1 0 | | | |
2425 +----------+----------+ +----------+----------+
2426 |+--------+| | | | |
2427 ||Page 0 1|| Page 1 1 | | | |
2429 |+--------+| | | | |
2430 +----------+----------+ +----------+----------+
2432 It shows two 2 x 2 DESKTOPS. If the current DESK were number 0,
2433 and the current PAGE were 0 1, the SCREEN would show only the
2434 windows located there, plus any sticky ones.
2436 Desktops are numbered consecutively, beginning with 0. The user is
2437 not responsible for creating new desktops, those details are
2438 handled inside fvwm. To display the different desktops, the user
2439 can configure key bindings that determine which desktop is
2440 displayed. For example, to have the combinations Meta-1 to Meta-4
2441 display desktop numbers 0 to 3, one would add this to her config:
2443 Key 1 A M GotoDesk 0
2444 Key 2 A M GotoDesk 1
2445 Key 3 A M GotoDesk 2
2446 Key 4 A M GotoDesk 3
2448 The same can be done for pages. For example, if each desktop has
2449 a size of 2 by to pages you could bind Meta-F1 to Meta-F4 to
2453 Key F1 A M GotoPage 0 0
2454 Key F2 A M GotoPage 1 0
2455 Key F3 A M GotoPage 0 1
2456 Key F4 A M GotoPage 1 1
2458 It is also a good idea to create a pager that displays several
2459 desktops, side by side. This command displays the first 4
2462 Module FvwmPager 0 3
2464 Or if you prefer to see only the current desktop in the pager:
2466 Module FvwmPager * *
2468 ----------------------------------------------------------------------
2470 6.2 I'd really like {OpenWindows, NeXT, Win95, Mac, etc} look and
2471 feel. Are you going to support that?
2473 A: This is not our primary mission, but we think fvwm does a pretty
2474 good job of producing these appearances.
2476 You may want to take a look at the
2477 http://fvwm-themes.sourceforge.net/
2480 ----------------------------------------------------------------------
2482 6.3 Where can I get more XPMs for icons?
2484 A: If you want more color icons, grab the ones out of the ctwm
2485 distribution (also at ftp.x.org) which has a lot of nice ones. You
2486 can also find more in other distributions at ftp.x.org, and at
2487 http://www.sct.gu.edu.au/~anthony/icons/ (which has a lot, I
2490 Icons used to be distributed along with fvwm. Now there is a basic
2491 set of icons available at the fvwm web site. You might find some
2492 links at the fvwm web site to other sources of icons.
2494 You may want to take a look at the
2495 http://wm-icons.sourceforge.net/
2498 ----------------------------------------------------------------------
2500 6.4 Linux XF86 virtual screen size & fvwm interaction...
2502 A: Turn off the Linux Virtual Screen stuff in your XF86Config file if
2503 you don't like it. The XFree86 virtual screen feature and hardware
2504 panning support in certain video cards is a pretty useless kludge
2505 when you're using a window manager that implements virtual
2508 ----------------------------------------------------------------------
2510 6.5 I know this question doesn't have to do with fvwm, but what
2511 happened to to rxvt and rclock which Rob Nation used to support?
2512 Where can I find them now?
2514 A: The official home for rxvt is:
2516 http://www.rxvt.org/
2518 and rclock can be found in that rxvt distribution as well.
2520 ----------------------------------------------------------------------
2522 6.6 How do I set the background with fvwm?
2524 A: Setting the background image is not really part of the window
2525 manager. If you are using one of the Linux distributions, most
2526 likely, some part of the distribution is setting the background for
2529 There is a program shipped with fvwm (fvwm-root, previously known
2530 as xpmroot) that you can use to set the background to an XPM or PNG
2531 image. Other programs like "xv", "xli", "xloadimage", "display",
2532 "feh" and "Esetroot", may be used too, they support some image
2533 formats that fvwm-root does not.
2535 If you just want a static image on your background, you might
2536 invoke one of these programs from your .xsession or .xinitrc file.
2537 You can also invoke one of these programs from the StartFunction in
2540 The fvwm module FvwmBacker can be used to change the background
2541 depending on the desk you are currently on by calling an external
2542 program. One big disadvantage of external programs is that
2543 changing the background on the fly can be pretty slow. FvwmBacker
2544 can use the image defined in a colorset and cached by fvwm for fast
2545 background changing. For example:
2547 Colorset 10 TiledPixmap foo.xpm
2548 Colorset 11 Pixmap bar.png
2549 FvwmBacker: Command (Desk *, Page * 0) Colorset 10
2550 FvwmBacker: Command (Desk *, Page * 1) Colorset 11
2552 However, fvwm can handle only xpm, xbm and png images. Other
2553 formats must be converted before they can be used in fvwm.
2555 If you want to set a different background per screen (i.e., you're
2556 using Xinerama), then the program "Nitrogen" can be used to do
2557 that. See: http://projects.l3ib.org/nitrogen/
2559 ----------------------------------------------------------------------
2561 6.7 When I use Fvwm, my XYZ isn't the right color. Whats wrong?
2563 A: Under this heading we've had questions about FvwmForm being all
2564 white, icons not displaying and messages about being unable to
2567 Older hardware uses something called 8 bit color. You can also
2568 mis-configure newer hardware so that it's only using 8 bit color.
2569 When you use 8 bit color, your display can only have 256 colors on
2572 This is explained in excruciating detail in the
2573 http://www.sunhelp.org/faq/FrameBuffer.html
2575 If your display can support more than 256 colors, that's the way to
2576 go. Look up the documentation for your X server. You may want to
2579 If you are stuck with 8 bit color, fvwm can help. In the 2.2.x
2580 releases, you can use the "ColorLimit" command to reduce the number
2581 of colors Fvwm uses in icons. In the 2.3.x releases and later,
2582 ColorLimiting is automatic, but you still might want to use this
2583 command to further reduce color use.
2585 Other things you may want to do:
2587 - Always run Netscape with the "-install" argument.
2589 - If you use an image on your screen background, reduce the number
2590 of colors it uses. For xv add the "-nc nn" argument. For
2591 xli use the "-colors nn" argument.
2593 - Don't use color gradients.
2595 - Some applications are color hungry. Beware of anything TK based,
2596 and FrameMaker in its default setting.
2598 If you still have problems after this, try the fvwm mailing list.
2600 ----------------------------------------------------------------------
2602 6.8 I just got a mouse with 57 buttons. How do I make Fvwm use them?
2604 A: Okay, we know you don't have 57 buttons, but we've seen reports
2605 of up to 7 so far. Starting with Fvwm 2.4.0 Fvwm supports all
2606 five mouse buttons that X officially supports, and since
2607 2.5.11, up to 9 buttons are supported by default.
2611 To use more than 9 buttons (up to 31), modify the file
2612 libs/defaults.h. Replace
2614 #define NUMBER_OF_EXTENDED_MOUSE_BUTTONS 9
2618 #define NUMBER_OF_EXTENDED_MOUSE_BUTTONS 15
2622 To use more than 5 buttons, modify the file libs/defaults.h.
2625 #define NUMBER_OF_MOUSE_BUTTONS 5
2629 #define NUMBER_OF_MOUSE_BUTTONS 7
2631 Then recompile and reinstall fvwm. However, the buttons with
2632 numbers higher than 5 do not work as well as 1 to 5. This is
2633 because X does not provide the necessary interface to handle more
2634 than 5 buttons in some functions. This means that some
2635 functionality is not available with buttons 6 and higher.
2637 The maximum possible number you can use is 31. Any higher value
2638 will probably not work and possibly even crash fvwm or its modules.
2640 ----------------------------------------------------------------------
2642 6.9 Why does fvwm change my X Cursor theme?
2644 A: It doesn't. There is a standard set of cursors that should
2645 always be available to applications, such as crosshair, left_ptr,
2646 arrow, pencil, and so on. Your theme should provide each of these
2647 cursors, but some don't. When something (for example, an
2648 application or fvwm) requests a cursor that your theme does not
2649 provide, X falls back to the default. If you are seeing fvwm
2650 using cursors that do not match your theme, you should use
2651 CursorStyle to change to a cursor that is available, or find a
2652 more complete theme. Note that fvwm does not control what cursors
2653 your applications request.
2655 ======================================================================
2656 7 - Hints and Examples from the Developers
2657 ======================================================================
2659 7.1 An easy way to test new configurations.
2661 Did you know that you do not need to restart X or fvwm to see what
2662 most configuration commands do? There are several modules
2663 that allow you to issue fvwm commands at any time. Among
2664 these are FvwmCommand, "FvwmForm FvwmForm-Talk" and FvwmConsole.
2665 Personally I use FvwmCommand and FvwmConsole.
2667 When you run FvwmConsole you get a shell like window where you can
2668 type configuration commands that are sent to fvwm. Just add an
2669 entry to some menu that starts it:
2672 + "FvwmConsole" Module FvwmConsole
2674 Using FvwmCommand is a bit more tricky. To use it you need to
2675 start a server in your config by adding this line:
2679 Make sure FvwmCommand is in your search path. Now you can enter
2680 commands on the command line of your favorite shell:
2682 FvwmCommand "MenuStyle * Font 6x9"
2684 Note that you have to quote the command. The advantage of
2685 FvwmCommand over FvwmConsole is that you can use your shell with
2686 all its features to run commands (command completion and history
2687 for example). The disadvantage is that it is a bit slow since a
2688 new FvwmCommand has to be started for each command.
2690 Other related modules and commands are FvwmScript and PipeRead.
2692 ----------------------------------------------------------------------
2694 7.2 Using shell commands for configuration.
2696 Sometimes you might want to use the output of a shell command or
2697 script in your config. For example you might need a menu that
2698 has all filenames in a certain directory as its entries. You can
2699 use the PipeRead command and the FvwmCommand module. I recommend
2700 using PipeRead since creating twenty menu items takes a
2701 considerable amount of time with FvwmCommand.
2703 Example from my config:
2705 # make the background menu
2706 DestroyFunc MakeBackgroundMenu
2707 AddToFunc MakeBackgroundMenu
2708 + I DestroyMenu BackgroundMenu
2709 + I AddToMenu BackgroundMenu Backgrounds Title
2710 + I PipeRead 'for i in `/bin/ls $HOME/.fvwm/backgrounds/*.bg.*`; \
2711 do echo -e AddToMenu BackgroundMenu `basename $i | sed -e \
2712 "s/\.bg\..*$//"` Function SetDefaultBackground $i; done'
2714 # set the default background
2715 DestroyFunc SetDefaultBackground
2716 AddToFunc SetDefaultBackground
2717 + I Exec echo -e $0 > $HOME/.fvwm/background
2720 # set a new background
2721 DestroyFunc SetBackground
2722 AddToFunc SetBackground
2723 + I Exec test -r $HOME/.fvwm/background && xv -root -quit -viewonly \
2724 `cat $HOME/.fvwm/background|tr -d "\n"`
2726 # activate setting from last session and build the menu
2727 AddToFunc StartFunction
2729 + I MakeBackgroundMenu
2732 The MakeBackgroundMenu function builds a menu that contains an item
2733 for every file that matches the pattern "*.bg.*" in the directory
2734 $HOME/.fvwm/backgrounds. The suffix .bg.* is removed. When I
2735 select an item the file is displayed in the background using
2736 xv. Furthermore the path and filename are stored in
2737 $HOME/.fvwm/background. When I start my next fvwm session the
2738 filename is fetched from there so I get the background from my last
2741 I have an even more complex setup for color palettes.
2743 ----------------------------------------------------------------------
2745 7.3 How to start applications on a page or desk other than the
2748 Use the 'StartsOnDesk' or 'StartsOnPage' style in your config:
2750 Style Netscape* StartsOnPage 0 1
2754 Style Netscape* StartsOnDesk 1
2756 Any window with a title that begins with 'Netscape' will be placed
2757 on page 0 1 (desk 1). You will probably want to use these options
2760 Style * RecaptureHonorsStartsOnPage, CaptureHonorsStartsOnPage
2762 If you want to start applications on a different page in the
2763 background without switching to this page, use the 'SkipMapping'
2766 Style Netscape* StartsOnPage 0 1, SkipMapping
2768 ----------------------------------------------------------------------
2770 7.4 How to start applications on a page or desk other than the
2771 current without moving the viewport to the new page or desk.
2773 Use the SkipMapping style:
2775 Style Netscape* StartsOnPage 0 1, SkipMapping
2777 ----------------------------------------------------------------------
2779 7.5 A more efficient MWM menu style.
2781 Perhaps you have noticed that with the MWM menu style your sub
2782 menus are shown as soon as the pointer enters their menu items,
2783 even if you just want to scroll down the list. You can prevent
2784 this with the 'PopupDelay' and 'PopupDelayed' options of the
2788 MenuStyle PopupDelayed, PopupDelay 80
2790 The sub menu will be shown 80 milliseconds after the pointer enters
2791 the menu item. You will hardly notice the delay. Note that 80 ms
2792 is just long enough to move through the menu with auto repeat on my
2793 cursor keys. You may have to experiment with this number to get it
2796 ----------------------------------------------------------------------
2798 7.6 Placing menus on the screen.
2800 Do you have to close windows or move the pointer all over the
2801 screen to find some part of the background where you can bring up
2802 your main menu (or any other root menu)?
2804 Then you should use a keyboard shortcut. For example
2806 Key space A M Menu root c c main_menu
2808 in your config gives you the menu 'main_menu' in the center of the
2809 screen when you press Alt-space. Or you might want a shortcut to
2812 Key space A SM Menu root c c WindowMenu
2814 You can place menus anywhere you like, not just where the mouse
2815 pointer is. Please read the section for the 'Menu' command in the
2818 ----------------------------------------------------------------------
2820 7.7 Are you flipping pages by accident when moving the mouse close to
2821 the border of the screen?
2823 You can disable page flipping with the EdgeScroll command:
2827 in your config turns it off.
2829 ----------------------------------------------------------------------
2831 7.8 Lining up your windows and icons.
2833 The SnapAttraction and SnapGrid commands really help to keep your
2834 desktop tidy. With SnapAttraction windows (or icons or both) are
2835 'attracted' to each other. When you drag a window (icon) and it
2836 comes close to another window (icon) it clings to it without a gap
2837 between the borders. Put this command in your config:
2839 SnapAttraction 8 SameType
2841 This means windows cling to other windows if they get closer than
2842 8 pixels and icons cling to icons. Or if you just want it for
2845 SnapAttraction 8 Windows
2849 SnapAttraction 8 Icons
2851 Or if you want icons to cling to windows and vice versa:
2853 SnapAttraction 8 All
2856 The SnapGrid command is a big help too:
2860 in your config tells fvwm to use a grid of 8 pixels to place
2861 windows and icons. Try it and see if you like it.
2863 Hint: It might be a good idea to use a divisor of your desktop
2864 width and height for SnapGrid.
2866 ----------------------------------------------------------------------
2868 7.9 Moving the mouse/focus/page with the keyboard.
2870 Try these key bindings for mouse movement:
2872 # shift-<direction> to move a few pixels
2873 Key Left A S CursorMove -1 0
2874 Key Right A S CursorMove +1 +0
2875 Key Up A S CursorMove +0 -1
2876 Key Down A S CursorMove +0 +1
2878 # shift-meta-<direction> to move 1/4 page
2879 Key Left A SM Scroll -25 +0
2880 Key Right A SM Scroll +25 +0
2881 Key Up A SM Scroll +0 -25
2882 Key Down A SM Scroll +0 +25
2884 or these to flip pages
2886 # shift-control-<direction> to move a full page
2887 Key Left A SC CursorMove -10 +0
2888 Key Right A SC CursorMove +10 +0
2889 Key Up A SC CursorMove +0 -10
2890 Key Down A SC CursorMove +0 +10
2892 # Alt-Fn to go to a specific page (like on the Linux console)
2893 Key F1 A M GotoPage 0 0
2894 Key F2 A M GotoPage 1 0
2895 Key F3 A M GotoPage 0 1
2896 Key F4 A M GotoPage 1 1
2898 or to change the focus to a window in a specific direction:
2900 # number keys on keypad to move the focus
2901 Key KP_1 A C Direction SouthWest (AcceptsFocus) Focus
2902 Key KP_2 A C Direction South (AcceptsFocus) Focus
2903 Key KP_3 A C Direction SouthEast (AcceptsFocus) Focus
2904 Key KP_4 A C Direction West (AcceptsFocus) Focus
2905 Key KP_6 A C Direction East (AcceptsFocus) Focus
2906 Key KP_7 A C Direction NorthWest (AcceptsFocus) Focus
2907 Key KP_8 A C Direction North (AcceptsFocus) Focus
2908 Key KP_9 A C Direction NorthEast (AcceptsFocus) Focus
2910 ----------------------------------------------------------------------
2912 7.10 The cat safe desktop ^_^
2914 If your cats keep stepping on your keyboard while you are brewing
2915 another cup of coffee, one of these hints may help:
2917 Use 'Style * MouseFocus' and move the mouse pointer over the
2918 background when you go away.
2920 If you can't do without your 'SloppyFocus' you can move the
2921 mouse pointer into a window that takes no keyboard input and
2922 give it the focus (e.g. FvwmButtons or a console message
2923 window). A true fanatic creates a separate window with a picture
2924 of his cat for this ^_^
2926 ----------------------------------------------------------------------
2928 7.11 Lowering and moving windows.
2930 In some configurations moving a window with the middle mouse
2931 button lowers the window after moving it. Lowering it before
2932 moving gives you a nice visual effect:
2934 Mouse 2 T A Function MoveOrLower
2936 DestroyFunc MoveOrLower
2937 AddToFunc MoveOrLower
2943 ----------------------------------------------------------------------
2945 7.12 Toggling windows on and off.
2947 It is often desirable to have a menu item or perhaps a button in
2948 FvwmButtons or FvwmWharf that launches an application when used
2949 the first time and closes it if used a second time. Although it
2950 is not obvious how to do this, it is possible. Let's assume you
2951 need a menu item that toggles an FvwmConsole window on and off.
2953 Then put the following lines in your config (for fvwm-2.5.11 or
2956 DestroyFync ToggleFvwmConsole
2957 AddToFunc ToggleFvwmConsole
2958 + I ToggleWindow FvwmConsole "Module FvwmConsole"
2960 # Application toggling function
2961 # First argument is the window name, second argument is the
2962 # command to start the application.
2963 DestroyFunc ToggleWindow
2964 AddToFunc ToggleWindow
2965 + I None ($$0, CirculateHit) $$1
2966 + I TestRc (Match) Break
2967 + I Next (currentpage, visible, !iconic, $$0, CirculateHit) Close
2968 + I TestRc (Match) Break
2969 + I Next ($$0, CirculateHit) Function MakeVisible
2972 DestroyFunc MakeVisible
2973 AddToFunc MakeVisible
2981 To invoke the function, you can add it to a menu
2983 AddToMenu <some menu>
2984 + "toggle FvwmConsole" Function ToggleFvwmConsole
2986 Or if you prefer a button in the button bar:
2988 *FvwmButtons: (Action ToggleFvwmConsole)
2990 The lines with MoveToDesk, MoveToPage and Raise will bring the
2991 window to the top of the current page if it is not visible
2992 instead of closing it. The generic function ToggleWindow can be
2993 reused to toggle all kinds of windows.
2995 If you want to toggle one specific window, e.g. an xterm, but
2996 still want to have other xterms that are not toggled, you must
2997 give the window an unique name:
2999 DestroyFunc RunXMessages
3000 AddToFunc RunXMessages
3001 + I Exec exec xterm -T XMessages -n XMessages \
3002 -e tail -f /var/adm/?* ~/.X.err
3004 DestroyFunc ToggleXMessages
3005 AddToFunc ToggleXMessages
3006 + I ToggleWindow XMessages RunXMessages
3008 Keep in mind that these functions simply check if a window with
3009 the specified name exists. They will happily close manually
3010 opened windows or launch an application multiple times if the
3011 application is slow to start (e.g. like netscape).
3013 For fvwm-2.5.10 or earlier, these functions should work too:
3015 DestroyFunc ToggleFvwmConsole
3016 AddToFunc ToggleFvwmConsole
3017 + I None (FvwmConsole, CirculateHit) FvwmConsole
3018 + I Next (FvwmConsole, CirculateHit, CurrentPage, Visible) Close
3019 + I Next (FvwmConsole, CirculateHit) MoveToDesk
3020 + I Next (FvwmConsole, CirculateHit) MoveToPage
3021 + I Next (FvwmConsole, CirculateHit) Raise
3023 DestroyFunc ToggleXMessages
3024 AddToFunc ToggleXMessages
3025 + I None (XMessages, CirculateHit) Exec exec \
3026 xterm -T XMessages -n XMessages -e tail -f /var/adm/?* ~/.X.err
3027 + I Next (XMessages, CirculateHit) Close
3029 ----------------------------------------------------------------------
3031 7.13 Starting applications by clicking on an icon (also known as
3032 "docking" applications).
3034 Normally an icon represents a minimized application. If you
3035 want to turn that around, and launch applications by clicking
3036 on icons we can't stop you. Heres a way to do that using
3039 # FvwmButtons icon launcher:
3040 DestroyFunc Launcher
3042 + I DestroyModuleConfig $0Launch: *
3043 + I *$0Launch: Geometry 64x68
3044 + I *$0Launch: Columns 1
3045 + I *$0Launch: Rows 4
3046 + I *$0Launch: Frame 0
3047 + I *$0Launch: (1x3+0+0, Icon $1, Action (Mouse 1) `Exec $2`)
3048 + I *$0Launch: Pixmap none
3049 + I *$0Launch: (1x1+0+3, Font 9x15, Fore White, Back DarkBlue, \
3050 Title $0, Action (Mouse 1) `Exec $2`)
3051 + I Style $0Launch HandleWidth 0, NoTitle
3052 + I Module FvwmButtons $3 $0Launch
3054 Launcher RXVT xterm.xpm "rxvt -bg black" "-g +0+0"
3055 Launcher XV xv.xpm "xv" "-g +0+100"
3057 Also, GNOME and KDE have desktop icon applications gmc and kfm,
3058 which enable this functionality. These applications may be run
3059 under fvwm. Nautilus (version >= 2) and kdesktop may be run under
3060 fvwm version 2.5.1 or better.
3062 ----------------------------------------------------------------------
3064 7.14 Positioning a window using arithmetic.
3066 This example shows how to center a window on the screen. Note
3067 how is uses PipeRead and the shell construct $(()) in order to
3070 DestroyFunc CenterWindow
3071 AddToFunc CenterWindow
3072 + I ThisWindow Piperead "echo Move \
3073 +$(( $[vp.width]/2-$[w.width]/2 ))p \
3074 +$(( $[vp.height]/2-$[w.height]/2 ))p"
3076 If you had a window named "MyWindow" you would center it using
3079 Next (MyWindow) CenterWindow
3081 ThisWindow may be removed, it is only needed to avoid errors when
3082 CenterWindow is called without a window context. (In which case
3083 see the Pick command.)
3085 With fvwm release 2.5.11, you can place windows in the center of
3086 the screen using "Style X CenterPlacement".
3088 But with fvwm release 2.5.22 and greater CenterPlacement is
3089 deprecated over the use of PositionPlacement style which allows for
3090 not only centering windows, but positioning windows anywhere on the
3091 screen using the same arguments as the Move command. But in terms of
3094 Style MyWindow PositionPlacement Center
3096 ----------------------------------------------------------------------
3098 7.15 Hiding the mouse pointer.
3100 Some users don't like the mouse pointer getting in the way of
3101 what they are looking at. You might want to search for and
3102 install the "unclutter" program. Unclutter hides the mouse
3103 pointer after you haven't moved the mouse for a while.
3105 If you find unclutter causes the pointer to flash on and off
3106 or move around on its own, run unclutter with the -noevents
3109 ----------------------------------------------------------------------
3111 7.16 Finding the mouse pointer.
3113 Sometimes its hard to see the mouse pointer. Here is a way to
3116 Key Super_L A A Exec xmessage -name "SmallBlob" -bg red \
3117 -fg white -nearmouse -timeout 1 'I am here!'
3118 Style SmallBlob UsePPosition, NoTitle, NoHandles, BorderWidth 10
3120 ----------------------------------------------------------------------
3122 7.17 Autohiding FvwmButtons or other windows.
3124 Some applications have a feature usually called "autohiding"
3125 which allows to withdraw a window to a location where it does
3126 not use precious desktop space. It is possible to write some
3127 small functions in fvwm that can hide any window you like:
3129 fvwm-2.5.11 or later:
3131 # The autohiding functions
3132 DestroyFunc autohide
3134 + I ThisWindow ($0) Deschedule $[w.id]
3135 + I ThisWindow ($0) KeepRc ThisWindow (shaded) WindowShade off
3136 + I TestRc (!Match) All ($0, !shaded) autohide_hide $1 $2
3138 DestroyFunc autohide_hide
3139 AddToFunc autohide_hide
3140 + I Schedule $0 $[w.id] WindowShade $1
3141 + I Schedule $0 $[w.id] Deschedule $[w.id]
3144 AddToFunc StartFunction
3145 + I Module FvwmAuto 1 -menter enter_handler
3147 # Add the windows you want to autohide
3148 DestroyFunc enter_handler
3149 AddToFunc enter_handler
3150 + I autohide FvwmButtons 500 S
3152 # | | |___ Shade direction (optional)
3153 # | |_______ Hide delay (milliseconds)
3154 # |___________________ Unique window name/resource
3156 Simply add any windows you like to the enter_handler function
3157 as in the example above. The autohide function is called with
3158 two or three parameters. The first one is the window's name or
3159 class, which must be unique. The second is the delay in
3160 milliseconds before the window is hidden after the pointer
3161 leaves it, and the last - optional - one indicates the
3162 direction in which it is hidden (N, S, E, W, NW, NE, SW or SE).
3164 You can find a slightly more complicated version below. The
3165 difference is that showing the window does not happen
3166 immediately, but can be delayed too.
3168 fvwm-2.5.11 or later:
3170 DestroyFunc autohide
3172 + I ThisWindow ($0) Deschedule $[w.id]
3173 + I TestRc (!Match) Deschedule -$[w.id]
3174 + I ThisWindow ($0) KeepRc ThisWindow (shaded) \
3176 + I TestRc (!Match) All ($0, !shaded) autohide_hide $2 $3
3178 DestroyFunc autohide_show
3179 AddToFunc autohide_show
3180 + I Schedule $0 -$[w.id] WindowShade $1 off
3181 + I Schedule $0 -$[w.id] Deschedule $[w.id]
3182 + I Schedule $0 -$[w.id] Deschedule -$[w.id]
3184 DestroyFunc autohide_hide
3185 AddToFunc autohide_hide
3186 + I Schedule $0 $[w.id] WindowShade $1 on
3187 + I Schedule $0 $[w.id] Deschedule $[w.id]
3188 + I Schedule $0 $[w.id] Deschedule -$[w.id]
3190 AddToFunc StartFunction
3191 + I Module FvwmAuto 1 -menter enter_handler
3193 DestroyFunc enter_handler
3194 AddToFunc enter_handler
3195 + I autohide FvwmButtons 250 500 S
3197 # | | | |__ Shade direction (optional)
3198 # | | |______ Hide delay
3199 # | |__________ Show delay
3200 # |______________________ Unique window name/resource
3202 These functions work too in 2.5.8 to 2.5.10, but you may have
3203 to remove the KeepRc command from the autohide function in both
3206 ----------------------------------------------------------------------
3208 7.18 Using application screenshots as icon or mini icon
3211 With a bit of scripting magic, fvwm can take a screenshot of an
3212 application window when it's iconified, resize it, and use it as
3213 the application's icon. However, there are some applications that
3214 can do it on their own, which is the recommended method.
3216 With xterm, you can use the +ai (active icon) option on the command
3221 There is a live-icon elisp package for XEmacs. Put this in your
3222 XEmacs configuration file:
3224 (load-library "live-icon")
3225 ; Control size, same as max icon size, uncomment if you want
3227 ;(setq live-icon-max-height 48)
3228 ;(setq live-icon-max-width 48)
3230 Make sure you are not using the style IconOverride for these
3231 applications. It disables the use of active icons. There may be
3232 other applications with similar features.
3235 Assuming you want application thumbnails as icons provided by fvwm,
3236 you need fvwm 2.5.8 or later, as this solution requires the
3237 WindowStyle command, and you should have the ImageMagick utilities
3238 available in your $PATH <URL:http://www.imagemagick.org/>.
3240 The function below provides a Replacement for the Iconify command
3241 called Thumbnail, which you can use in your bindings and raises
3242 each window, takes a screenshot and attempts to set the screenshot
3243 as the window's Icon. Taking a screenshot may take a couple of
3244 seconds. The window is iconified immediately, but the new
3245 thumbnail is activated when the screenshot is ready.
3247 Note that a screenshot can only be made reliably from the visible
3248 parts of a window. So if the window is halfway off screen, on a
3249 different desk, or buried beneath other windows, the thumbnail may
3250 be smaller than expected or be empty in the hidden parts. There is
3251 no way to prevent this.
3253 The same solution should work for mini icons. Just replace the
3254 word "icon" with "miniicon" everywhere.
3256 DestroyFunc Thumbnail
3259 + I ThisWindow (!Shaded, Iconifiable, !Iconic) PipeRead \
3260 "xwd -silent -id $[w.id] | convert -scale 64 -frame 1x1 \
3261 -mattecolor black -quality 0 xwd:- \
3262 png:$[FVWM_USERDIR]/icon.tmp.$[w.id].png \
3263 && echo WindowStyle IconOverride, \
3264 Icon $[FVWM_USERDIR]/icon.tmp.$[w.id].png \
3268 You can use FvwmEvent to remove the Icons when each window is
3269 returned to its non Iconic state.
3271 DestroyFunc DeThumbnail
3272 AddToFunc DeThumbnail
3273 + I Exec rm -f $[FVWM_USERDIR]/icon.tmp.$[w.id].png
3274 + I DestroyWindowStyle
3276 *FvwmEvent: deiconify DeThumbnail
3278 AddToFunc StartFunction I Module FvwmEvent
3280 If you cannot use DestroyWindowStyle as you require it for some
3281 other purpose, you can save the window's current Icon, and restore
3282 it when required, this solution requires fvwm 2.5.9 or later.
3284 The Thumbnail function should look like this:
3286 DestroyFunc Thumbnail
3289 + I SetEnv Icon-$[w.id] $[w.iconfile]
3290 + I ThisWindow (!Shaded, Iconifiable, !Iconic) PipeRead \
3291 "xwd -silent -id $[w.id] | convert -scale 64 -frame 1x1 \
3292 -mattecolor black -quality 0 xwd:- \
3293 png:$[FVWM_USERDIR]/icon.tmp.$[w.id].png \
3294 && echo WindowStyle IconOverride, \
3295 Icon $[FVWM_USERDIR]/icon.tmp.$[w.id].png \
3299 And then the Icon is restored with this function:
3301 DestroyFunc DeThumbnail
3302 AddToFunc DeThumbnail
3303 + I PipeRead "echo WindowStyle Icon \\$\\[Icon-$[w.id]\\]"
3304 + I UnsetEnv Icon-$[w.id]
3305 + I Exec rm -f $[FVWM_USERDIR]/icon.tmp.$[w.id].png
3307 These Icons can also survive a Restart by adding this check to your
3310 AddToFunc StartFunction I Test (Restart) All (Iconic) \
3311 Test (f $[FVWM_USERDIR]/icon.tmp.$[w.id].png) WindowStyle \
3312 IconOverride, Icon $[FVWM_USERDIR]/icon.tmp.$[w.id].png
3314 You can also check for any remaining icons left behind and remove
3315 them in your ExitFunction:
3317 DestroyFunc ExitFunction
3318 AddToFunc ExitFunction I Test (!ToRestart) \
3319 Exec rm -f $[FVWM_USERDIR]/icon.tmp.*
3321 The same solution should work for mini icons. Just replace the
3322 word "icon" with "miniicon" everywhere.
3324 ----------------------------------------------------------------------