* FAQ: Add hot-spot information.
[fvwm.git] / docs / FAQ
blob5997aa165ce2a4b03fd476d61cced2091a7d3018
1 ======================================================================
2                    FVWM Frequently Asked Questions
3 ======================================================================
5 Last updated Apr 25, 2002 for unstable release 2.5.2 and stable release 2.4.8.
7 Contents
9 0. *The* most frequently asked question :)
11      0.1  A few minutes after fvwm is started my keyboard and mouse
12           bindings stop working.  What can I do?
14 1. About Fvwm
16      1.1  What does FVWM stand for?
17      1.2  Where do I find the current versions of fvwm?
18      1.3  Any WWW Sites about FVWM?
19      1.4  Where do I ask questions about FVWM?
20      1.5  What are the differences between FVWM 1.xx and 2.xx?
21      1.6  What's the relative memory usage for the various window managers
22           out there?
23      1.7  Why the rename of the various files (fvwm2, .fvwm2rc,
24           fvwm2.man)?
25      1.8  When will fvwm release X.Y.Z be ready?
27 2. Installation
29      2.1  I want to use FVWM, but I don't have root access on my
30           machine.  Can I still install and run it?
31      2.2  I'm trying to use fvwm under CDE/COSE, but encountering
32           difficulties.  Any suggestions?
33      2.3  I'm trying to compile FVWM under SunOS using cc, but the compiler
34           is having lots of problems.  What gives?
35      2.4  I want colored icons, but they won't work.  Why not?
36           When I run configure, it reports "no" to "Have XPM support?"  How
37           can I get XPM support?
38      2.5  I'm a sysadmin, and if I wanted to force fvwm to read a
39           system rc file and then the user's rc file, how would I do
40           that?
41      2.6  I'm a sysadmin, and if I wanted fvwm to look for all of
42           its rc files in a hidden directory, say ~/.fvwm, much like
43           CDE does, how could I do that?
44      2.7  How can I use FVWM with GNOME?
46 3. Features, Configuration, Functions & Commands
48      3.1  I use FVWM on a RedHat Linux system and can't figure out how to
49           change my FVWM configuration.  I've read the FVWM man page but when
50           I edit my .fvwm2rc nothing seems to happen.  What's going on ?
51      3.2  Is it possible to raise a window when I click into the
52           window itself, not just the border?
53      3.3  How do I get Alt-Tab behavior like another GUI?
54      3.4  What's the difference between the Focus and FlipFocus commands?
55      3.5  You can bind mouse movements to keystrokes, how about mouse
56           presses?
57      3.6  I'd like to bind a key to paste/use the current selection,
58           how can I do that?
59      3.7  Will FVWM ever support a separate colormap for each desktop?
60      3.8  I really like the horizontal bars that appear on the title bars of
61           sticky windows.  Can I get those on other windows as well?
62      3.9  How do I set the Sun keyboard key xxxx to an FVWM command?
63           Or more generally, I'm having problems defining key
64           bindings for FVWM - what can I do?
65     3.10  My .fvwmrc from version 1.xx no longer works.  What do I do?
66     3.11  What happened to the FVWM 1.xx 'include' command?
67     3.12  How do I get window titles on sub windows of ...
68     3.13  I just upgraded to version >= 2.3.2, and my configuration settings
69           disappeared!  How do I get them back?
70     3.14  Some applications (e.g. Eterm) don't use the icon I defined for them.
71           Why?
72     3.15  I don't like the gaps in my icon box when I de-iconify an
73           application.  Is there some kind of auto arrange function?
74     3.16  How do I set up an fvwm menu item that shuts down my Linux machine?
75     3.17  Although the Recapture command is obsolete, do I still need it to
76           apply certain style changes?
77     3.18  When my specific window (or all windows) pops up, I want it to
78           get focus/be moved/be resized/be closed/be shaded...  How?
79     3.19  When my specific window (or all windows) is closed, I want to
80           switch desks/wrap to my app X/popup a menu/start app X...  How?
81     3.20  I have a multi head setup (multiple screens used under X).  How
82           can I tell fvwm to use different configurations for the screens?
84 4. Modules
86      4.1  I'm using FvwmButtons (or GoodStuff in 1.xx), and sometimes the
87           buttons stay depressed, and other times they don't.  Why is that?
88      4.2  When having FvwmButtons swallow an app, is it possible to
89           have button presses assigned to actions as well?  For
90           instance, I'd like to swallow xload and have a button press
91           pop up an xterm, or swallow xbiff and have a button press
92           bring up the list of messages.
93      4.3  I'm seeing odd things when trying to preprocess files with
94           the FvwmM4/Cpp module...
95      4.4  I heard about this FvwmFileMgr module.  Where can I find it?
96      4.5  I used to use GoodStuff in FVWM 1.xx, but it's not in the 2.xx
97           distribution.  What do I use now?
98      4.6  I want to have the sub panels in FvwmButtons not at their default
99           position near the button but somewhere else on the screen.  Is this
100           possible?
102 5. Development, Known Problems & Bug Reports
104      5.1  I'd really like to see neat feature XYZ in FVWM.
105           Wouldn't that be cool?  I even have a patch.  When can it
106           be added?
107      5.2  How do I create/submit/apply patches?
108      5.3  How do I submit a bug report?
109      5.4  I have a window that is behaving unexpectedly under FVWM, but just
110           fine under (whatever other window manager), or I have just some
111           random bug.  What do I do?
112      5.5  Why do NumLock, CapsLock and ScrollLock interfere with
113           ClickToFocus and/or my mouse bindings?
114      5.6  Menus with gradient backgrounds flicker or are very slow.
115      5.7  Why won't the StartIconic style work with {Netscape, etc.}?
116      5.8  How do I capture the output (e.g. errors) of fvwm?
117      5.9  I try to run some program under FVWM, but it dies with an
118           X11 error like BadAccess.  The same program works just fine
119           under MWM or OLWM.  What's going on?
120     5.10  Every time I update my install, my currently running fvwm
121           session dies.  Why is that?
122     5.11  After I restart fvwm certain windows or icons raise above
123           all other windows and cannot be lowered by any means.  One
124           example are the shortcuts of KFM (the KDE file manager).
125           What can I do about that?
126     5.12  The StartsOnPage style does not work for me.  Why?
127     5.13  Some modules can not be started when I restart fvwm.
128     5.14  I'm running Rational Rose and fvwm ignores its windows.
129     5.15  Although I use the WindowListSkip style for my modules they
130           still show up in FvwmIconMan, FvwmWinList etc.
132 6. Miscellaneous
134      6.1  What exactly is the difference between a DESK, a PAGE, and
135           the SCREEN?
136      6.2  I'd really like {NeXT, Win95, etc} look and feel.  Are you
137           going to support that?
138      6.3  Where can I get more XPMs for icons?
139      6.4  Linux XF86 virtual screen size & fvwm interaction...
140      6.5  I know this question doesn't have to do with FVWM, but what
141           happened to to rxvt and rclock which Rob Nation used to
142           support?  Where can I find them now?
143      6.6  How do I set the background with fvwm?
144      6.7  When I use Fvwm ... isn't the right color.  Whats wrong?
145      6.8  I just got a mouse with 57 buttons.  How do I make Fvwm
146           use them?
148 7. Hints and Examples from the Developers
150      7.1  An easy way to test new configurations.
151      7.2  Using shell commands for configuration.
152      7.3  How to start applications on a page or desk other than the
153           current.
154      7.4  How to start applications on a page or desk other than the
155           current without moving the viewport to the new page or desk.
156      7.5  A more efficient MWM menu style.
157      7.6  Placing menus on the screen.
158      7.7  Are you flipping pages by accident when moving the mouse
159           close to the border of the screen?
160      7.8  Lining up your windows and icons.
161      7.9  Moving the mouse/focus/page with the keyboard.
162     7.10  The cat safe desktop :-)
163     7.11  Lowering and moving windows.
164     7.12  Toggling windows on and off.
165     7.13  How do I start applications by clicking on an icon.
166     7.14  How do I define the hot-spot in an XPM cursor.
169 ======================================================================
170                 0 - The most frequently asked question
171 ======================================================================
173 0.1  A few minutes after fvwm is started my keyboard and mouse
174      bindings stop working.  What can I do?
176 A: Probably your NumLock, CapsLock or ScrollLock key is pressed.  See
177    Q 5.5 for more details.
179 Trivia: In all my years as an fvwm developer this has been by far the
180    most frequently asked question.  Whoever can solve this problem so
181    that this question is never asked again will be mentioned in big
182    letters on the fvwm home page :-)
184 ======================================================================
185                             1 - About Fvwm
186 ======================================================================
188 1.1  What does FVWM stand for?
190 A: "Fill_in_the_blank_with_whatever_f_word_you_like_at_the_time
191    Virtual Window Manager".  Rob Nation (the original Author of FVWM)
192    doesn't really remember what the F stood for originally, so we
193    have several potential answers:
195      Feeble, Fabulous, Famous, Fast, Foobar, Fantastic, Flexible,
196      F!@#$%, Flashy, FVWM (the GNU recursive approach), Free, Final,
197      Funky, Fred's (who the heck is Fred?), Freakin', Flawed,
198      Father-of-all, Feivel (the mouse from "An American Tail"),
199      Frungy (hey, where does that come from?), Floppy, Foxy,
200      Frenzied, Funny, Fumbling etc.
202    Just pick your Favorite (hey, there's another one!), which will of
203    course change depending on your mood and whether or not you've run
204    across any bugs recently.  I prefer Fabulous or Fantastic myself,
205    although I often use F!@#$% or Freakin' while debugging...
207    Recently 'Feline' is becoming popular.  Perhaps this has something
208    to do with the discovery that four of the six core developers have
209    cats (averaging 1.17 cats)?  Miaow.
211    Know what? I found another one while stroking my cats: FEEDING :-)
213    Check this link:
214    _+_A HREF="http://fvwm.org/fvwm-cats/"_-_fvwm-cats_+_/A_-_
216 ----------------------------------------------------------------------
218 1.2  Where do I find the current versions of fvwm?
220 A: New main distribution site (official + beta code):
222                 ftp://ftp.fvwm.org/pub/fvwm/
224    Alternate sites:
226             USA:
227                 ftp://sunsite.unc.edu/pub/Linux/X11/window-managers/
228                 ftp://ftp.cs.columbia.edu/pub/cheah/
230             Europe:
231                 ftp://unix.hensa.ac.uk/pub/walnut.creek/FreeBSD/incoming/
232                 ftp://ftp.jussieu.fr/pub/X11/fvwm/
233                 ftp://ftp.loria.fr/pub/unix/fvwm/
235    BTW, 1.24r was the last released version of the 1.xx series and the
236    first official release of 2.xx is 2.2.  As of 2.2, an odd second
237    digit denotes development releases and even numbers denote stable
238    releases.
240 ----------------------------------------------------------------------
242 1.3  Any WWW Sites about FVWM?
244 A: Yup.  The official site is:
246         http://www.fvwm.org/
248    There are links on the official site to other related fvwm sites.
250 ----------------------------------------------------------------------
252 1.4  Where do I ask questions about FVWM?
254 A: If your local FVWM maintainer can't help you, then the newsgroup
255    comp.windows.x.apps is a good place, but the fvwm mailing list is
256    usually better.  The new FVWM discussion mailing list address is:
258                            fvwm@fvwm.org
260    And there is an announce mailing list as well:
262                        fvwm-announce@fvwm.org
264    They are maintained by Jason Tibbitts, and are Majordomo based
265    mailing lists.  To subscribe to the list, send "subscribe fvwm" in
266    the body of a message to <list>-request@fvwm.org.  For example, to
267    subscribe to the fvwm mailing list, send a request to
268    fvwm-request@fvwm.org.
270    To unsubscribe from a list, send "unsubscribe fvwm" in the body of a
271    message to <list>-request@fvwm.org.  To report problems, send mail to
272    fvwm-owner@fvwm.org.
274    Here's the list descriptions and instructions directly from Jason:
276    ------------------------------------------------------------------
277    (fvwm)
279    Description
280    -----------
282    This list is for discussion relating to the FVWM window manager,
283    which is intended to have a small memory footprint and a rich
284    feature set, be extremely customizable and extendable and have a
285    high degree of Motif MWM compatibility.  All relevant discussion
286    is encouraged.  Posting of binaries or irrelevant discussion is
287    strongly frowned upon.  Posting of short patches (less than 200
288    lines) is acceptable, but all patches should also be sent to the
289    fvwm-workers list (see Q5.2, below) for inspection and possible
290    inclusion in the distribution.
293    Instructions
294    ------------
296    To send a message to the list, mail to fvwm@fvwm.org.  For help on
297    dealing with the mailing list software (for getting the archives or
298    other files which may be made available) send the message "help" to
299    fvwm-request@fvwm.org.  If you have problems with the mailing list
300    itself and need to talk to a human, send mail to fvwm-owner@fvwm.org.
301    This address is for mailing list issues only; reports on the FVWM
302    software will be sent to /dev/null.
304    Archives of previous messages are available; to get them send the
305    above mentioned help message and investigate the "index" and "get"
306    commands or ftp them from ftp://ftp.fvwm.org/pub/fvwm/list-archive/.
309    (fvwm-announce)
311    This list is for announcements relating to the FVWM window manager,
312    which is intended to have a small memory footprint and a rich
313    feature set, be extremely customizable and extendable and have a
314    high degree of Motif MWM compatibility.
316    Replies to messages from this list are set by default to go the
317    FVWM discussion list, fvwm@fvwm.org.
319    The current FVWM distribution is available for ftp at
320    ftp://ftp.fvwm.org/pub/fvwm/
321    ------------------------------------------------------------------
323 ----------------------------------------------------------------------
325 1.5  What are the differences between FVWM 1.xx and 2.xx?
327 A: A lot.  To name a few general ones:
328         - Bug fixes.  1.xx is not worked on at all any more.
329         - Better rc file format.  No longer order dependent.
330         - More flexible and powerful.  For example, many previously
331           global options now operate on a per window group level
332           instead.
333         - More and better modules.
334         - M4 preprocessing is no longer part of the fvwm exec, but
335           rather has been moved to a module.  There is also a module
336           to use cpp too.  See the FvwmM4 and FvwmCpp man pages.
338    Be sure to check the NEWS file for new or changed features too.
340 ----------------------------------------------------------------------
342 1.6  What's the relative memory usage for the various window managers
343      out there?
345 A: Here's a little table comparing some of them.  It was done on an
346    AIX based IBM RS6000 model 355 using the same number of windows (3)
347    and XSession to switch between the window managers, and I used
348    'top' to show the values:
350       SIZE   RES
351       545K  652K fvwm2 (fvwm 2.0.35)
352       457K  528K fvwm  (fvwm 1.24rb)
353       856K  960K ctwm  (ctwm 3.2p1)
354      1004K 1156K mwm   (mwm 1.2)
355       543K  632K twm   (???)
356       263K  328K aixwm (a simple ugly window manager included w/ aix)
358    Note: This information is terribly outdated.
360 ----------------------------------------------------------------------
362 1.7  Why the rename of the various files (fvwm2, .fvwm2rc, fvwm2.man)?
364 A: Some people find this annoying, but let me say that I did that for
365    several reasons:
367         - so both 1.xx and 2.xx can be installed for use, in case some
368           people at the same site would rather stay at 1.xx
369         - the syntax of the rc files is pretty different and
370           completely incompatible
371         - when people ask questions, if they explicitly mention their
372           .fvwm2rc file I know that they are running one of the 2.xx
373           versions, since they rarely mention exactly what version
374           they are running.
376    Note, starting from 2.5.1, the executable fvwm2 became fvwm again.
378 ----------------------------------------------------------------------
380 1.8  When will fvwm release X.Y.Z be ready?
382 A: This is always a difficult question to answer.  We work on fvwm on
383    a volunteer basis.  Things get done when we have the time.
385    Joining the fvwm-workers mailing list might prove instructive.
388 ======================================================================
389                            2 - Installation
390 ======================================================================
392 2.1  I want to use FVWM, but I don't have root access on my machine.
393      Can I still install and run it?
395 A: Very easily, using the '--prefix' flag at configure time.
397    Suppose your home directory is /home/sam.  After unpacking the
398    fvwm sources, do "./configure --prefix=/home/sam [other options as
399    needed]'.  Now, after building ("make") and installing ("make
400    install"), you will find the binaries in /home/sam/bin, the
401    man pages in /home/sam/man, etc.  The modules will be in
402    /home/sam/libexec, and fvwm binary will have this module path
403    built in.
405 ----------------------------------------------------------------------
407 2.2  I'm trying to use fvwm under CDE/COSE, but encountering
408      difficulties.  Any suggestions?
410 A: Sure - here's one from Graeme McCaffery:
412    -----
413      Finally I have found out how to run fvwm properly from CDE 8-))
414      (thanks to Lars Sodergren).
416      First set your home session in Dtwm.  That usually is an empty
417      session, though you could have the CDE session manager remember
418      what your desktop was like instead of FvwmSaveDesk etc..
420      Then you have to set two resources in .Xdefaults:
422        Dtsession*wmStartupCommand: /home/orion/spxgm/bin/Fvwm
423        Dtsession*waitWmTimeout: 1
425      In this case I run fvwm from a shell script so that library
426      variables etc are set properly for everyone.  The waitWmTimeout
427      tells the session manager how long to wait until it starts the
428      window manager.  I've set it to 1 second.  By default it's 60 seconds.
430      Finally you have to quit with
432        /usr/dt/bin/dtaction ExitSession (or whatever your path is for dtaction)
434      Now you can happily use CDE programs and fvwm.
435    -----
437      On the other hand, here is a link to a web page that describes how to
438      add multiple window managers to the CDE login menu:
440        _+_A HREF="http://twirl.mcc.ac.uk/~zzassgl/wm.html"_-_CDE login Link_+_/A_-_
442 ----------------------------------------------------------------------
444 2.3  I'm trying to compile FVWM under SunOS using cc, but the compiler
445      is having lots of problems.  What gives?
447 A: cc under SunOS is not an ANSI C compiler.  Try using acc or gcc
448    instead.
450 ----------------------------------------------------------------------
452 2.4  I want colored icons, but they won't work.  Why not?
453      When I run configure, it reports "no" to "Have XPM support?"  How
454      can I get XPM support?
456 A: FVWM uses the XPM (X PixMap) library to provide support for colored
457    and shaped icons.  XPM doesn't ship with the basic X distribution as
458    provided by The Open Group or XFree86.  However, many vendors will
459    bundle it as a standard component anyway.  If not, you can get a copy
460    of the source from ftp://ftp.x.org/contrib/libraries/ and build it
461    yourself.
463    If you have XPM on your system, there are a number of ways configure
464    could still decide not to use it.
466    First, if you've installed XPM in a non-standard place (not in the
467    normal system or X11 directories--say in /opt/xpm or /usr/local or
468    similar) then you need to tell configure where to look.  Use the
469    --with-xpm-library and --with-xpm-includes options (see
470    INSTALL.fvwm).  Typically configure will say "Xpm library or header
471    not found" if this is the problem.
473    Second, your version of XPM may be too old.  FVWM requires XPM 3.4g
474    or better.  Typically configure will say "Xpm library version is too
475    old!" if this is the problem.  In that case, you'll need to install a
476    newer version.
478    Third, XPM may be mis-installed on your system.  If configure says "
479    Xpm library version and header file version don't match!" then this
480    may be the problem.  Either use the --with-xpm-library and
481    --with-xpm-includes options to specify more precisely what you want,
482    or try re-installing XPM.
484    Last, there could be a linker error.  This is especially common on
485    systems where XPM may be built as a shared library and installed in a
486    non-standard directory (Solaris is a good example).  There are some
487    notes about building using shared libraries in the INSTALL.fvwm
488    file.
490    If you can't figure it out, contact the FVWM mailing list.  Please be
491    sure to provide the type of hardware and operating system you're
492    using, how you invoked configure, and extract the lines dealing with
493    XPM from the config.log file and include that.
495 ----------------------------------------------------------------------
497 2.5  I'm a sysadmin, and if I wanted to force fvwm to read a system rc
498      file and then the user's rc file, how would I do that?
500 A: Well, you could probably do something like this:
502         - have the first line of everyone's .fvwm2rc be 'Read
503           global.fvwm2rc' and have global.fvwm2rc reside in your
504           defined "datadir"/fvwm (from the ./configure step).
506 ----------------------------------------------------------------------
508 2.6  I'm a sysadmin, and if I wanted fvwm to look for all of its rc
509      files in a hidden directory, say ~/.fvwm, much like CDE does, how
510      could I do that?
512 A: FVWM now supports ~/.fvwm search directory by default.
514    This could be probably done similarly to Q2.5 above.  The system rc
515    file "sysconfdir"/system.fvwm2rc (or "datadir"/fvwm/system.fvwm2rc)
516    could do something like:
518         Read Init      quiet
519         Read Decors    quiet
520         Read Styles    quiet
521         Read Functions quiet
522         Read Menus     quiet
523         Read Keys      quiet
524         Read Modules   quiet
526    or whatever breakdown you deemed appropriate, and you would have
527    default versions of these in {"datadir"}/fvwm/ that it could find in
528    case the user was missing one of them and you wanted to supply defaults.
530 ----------------------------------------------------------------------
532 2.7  How can I use FVWM with GNOME?
534 A: Since the latest fvwm versions are mostly GNOME compliant, you may
535    simply run GNOME applications, like panel, gmc, gnome-terminal and
536    all others on top of the pure FVWM.
538    The included fvwm-menu-desktop script with a massive man page may
539    help you build a list of gnome applications in fvwm menus.
541    To ensure you will run FVWM and not gnome-session, create .Xclients
542    file in your home directory and put a call to fvwm in it.
543    The file ~/.xinitrc can be used for the similar purposes if you want
544    to bypass any system-wide logic put by your distributor or sysadmin.
547    An alternative solution is to run FVWM inside of /usr/bin/gnome-session.
548    After you start gnome-session (don't start FVWM yourself), go to the
549    foot menu in the GNOME panel, then choose
551      System menus / Settings / Desktop / Window Manager
553    and create an entry for FVWM.  FVWM supports session management.
555    If you run gnome-session, SessionInitFunction and SessionRestartFunction
556    are called instead of InitFunction and RestartFunction, see the man page.
557    StartFunction, where we suggest to run modules, is called as usual.
560    Here are examples of the GNOME Window Manager hints support in FVWM:
562    o If you run gnome panel inside fvwm without GNOME support, you can't
563      fully use GNOME pager applets (if at all); with such support you can
564      see right pages/desks and move windows between them inside applets.
565      You can also use Tasklist applet and manage your windows using it.
567    o If you run gmc and bind GnomeButton (see the man page), you can pass
568      root clicks to a gnome application (i.e. to gmc in this case).
571 ======================================================================
572           3 - Features, Configuration, Functions & Commands
573 ======================================================================
575 3.1  I use FVWM on a RedHat Linux system and can't figure out how to
576      change my FVWM configuration.  I've read the FVWM man page but when
577      I edit my .fvwm2rc nothing seems to happen.  What's going on?
579 A: RedHat Linux installs the X server accompanied (by default) by a
580    configuration management system.  In earlier releases it was called
581    TheNextLevel and in more recent releases it's called AnotherLevel.
582    For further information about TheNextLevel, consult RedHat's
583    documentation in /usr/doc/TheNextLevel/.  For information about
584    AnotherLevel, do a 'man AnotherLevel'.
586 ----------------------------------------------------------------------
588 3.2  Is it possible to raise a window when I click into the window
589      itself, not just the border?
591 A: Any version later than 2.0.46 (i.e. 2.1.0 or later) has this
592    feature.  In the 2.2.x series, use:
594      GlobalOpts MouseFocusClickRaises
596 With the later 2.3.x betas and after use:
598      Style * MouseFocusClickRaises
600 ----------------------------------------------------------------------
602 3.3  How do I get Alt-Tab behavior like another GUI?
604 A: The built in command WindowList provides a very close approximation
605    to the Alt-Tab feature found in another GUI.  It doesn't look the
606    same but the following .fvwm2rc sample will provide a similar
607    interface:
609       Key Tab A M WindowList Root c c NoDeskSort
611    Starting with release 2.3.2, the above key binding is built-in.
613    Starting with release 2.3.15 you can hold the alt key down and
614    keep hitting tab.  A single alt-tab selects the previous window.
615    The remainder of this FAQ entry describes releases prior to 2.3.2.
617    Hitting Alt-Tab will pop up the WindowList menu.  Unlike another GUI
618    you should not keep the Alt key held down, the menu will stay up
619    until you hit Return/Enter/Space or Escape.  You can change focus to
620    a window on the menu by using the up and down arrow keys to move the
621    menu selection and then hitting Return or Enter.  Hitting Escape will
622    close the menu without doing anything.  The WindowList menu has hot
623    keys assigned for the first 26 windows and you can use the hot key to
624    go directly to the window.
626    The menu invoked with the above line will show all windows in
627    most recently focused order unless you have used the Focus
628    command (see Q3.4).  It shows each windows name and geometry
629    with some extra flags to indicate Sticky, OnTop and iconified
630    windows.
632    A simpler style can be used with the following:
634       Key Tab A M WindowList Root c c CurrentDesk NoGeometry
636    This will just list the windows on the current desk (titles only).
638    The other GUI has the feature of selecting the previous window if
639    Alt-TAB is hit and released quickly.  This behavior cannot be exactly
640    duplicated but similar functionality can be assigned to hitting
641    Alt-TAB twice in quick succession (like a double click for keys):
643       DestroyFunc my_dbltab2
644       AddToFunc my_dbltab2 "I" WindowListFunc $w
645       DestroyFunc my_dbltab
646       AddToFunc my_dbltab "I" Prev (CurrentDesk) my_dbltab2
647       Key Tab A M WindowList Root c c CurrentDesk NoGeometry my_dbltab
649    There are a lot of options to the WindowList command to control which
650    windows are listed in which order and it may not be possible to set
651    conditions for the Prev command to reliably select the second item
652    when double keying.  The WindowList command has no parallel for
653    CurrentPage, Transient, Visible, Maximized, Raised, and pattern
654    matching.  The Prev conditions have no parallel for OnTop, Alphabetic
655    and desk sorting.  The WindowList menu respects the WindowListSkip
656    style attribute whereas Prev respects the CirculateSkip and
657    CirculateSkipIcon style attributes.
659 ----------------------------------------------------------------------
661 3.4  What's the difference between the Focus and FlipFocus commands?
663 A: Both of these commands change the keyboard focus to the target
664    window.  They differ only in the way they affect the internally held
665    list of windows.  This list is used by the Next, Prev and WindowList
666    commands.  The list is normally sorted in most recently focused order
667    with new windows being added to the end.  The FlipFocus command plucks
668    the target window from the list and inserts it at the beginning, The
669    Focus command rotates the list around until the target window is at
670    the beginning.  The behavior of FlipFocus is also used when changing
671    focus with the mouse and the automatic focus changing when using
672    ClickToFocus style.
674    If you never use the Focus command the list will remain in most
675    recently focused order.  If you do use the Focus command the list will
676    gradually get back to most recently focused order as you use
677    FlipFocus.
679    The Focus command is very useful in conjunction with the Next and
680    Prev commands.  e.g.
682       Key KP_Add A M Next (AcceptsFocus CurrentDesk !Iconic) Focus
683       Key KP_Subtract A M Prev (AcceptsFocus CurrentDesk !Iconic) Focus
685    Or for fvwm versions earlier than 2.4.1:
687       Key KP_Add A M Next [CurrentDesk !Iconic] Focus
688       Key KP_Subtract A M Prev [CurrentDesk !Iconic] Focus
690    These bindings allow you to circulate the focus around the windows on
691    the current desk in both directions.  If Prev FlipFocus were used the
692    focus would toggle between the top two windows on the window list.
694    If you have several windows on a desk and you want to set the
695    circulation order for the Next and Prev commands you should focus on
696    the windows using the mouse or FlipFocus in the order you want.  Fvwm
697    will learn the order and use it for the Next and Prev commands.  If
698    you subsequently use the mouse to focus or FlipFocus the order will
699    be lost.
701 ----------------------------------------------------------------------
703 3.5  You can bind mouse movements to keystrokes, how about mouse
704      presses?
706 A: Although fvwm has commands for binding movements to keystrokes,
707    controlling the pointer with the keyboard should really be handled by
708    the X server.  The following is an excerpt of the X FAQ on this topic:
711       If you have the X Keyboard (XKB) Extension, you can enable mouse keys,
712       which makes it possible to generate mouse motion and button events
713       using the keyboard.  Events generated by MouseKeys are completely
714       transparent -- they will work with any application that connects to a
715       server that has the X Keyboard Extension, regardless of whether the
716       application itself uses XKB.
718       XKB is enabled by default in X11R6.1.
720       First, set up the Num Lock key so that Shift+Num_Lock toggles mouse keys:
722        xmodmap -e "keysym Num_Lock = Num_Lock Pointer_EnableKeys"
724       (XFree86 3.1.2E is based on R6.1 and has the X Keyboard Extension;
725       it also has a binding to Pointer_EnableKeys in its default keymap.
726       You use Alt+Shift+Num_Lock to toggle MouseKeys on and off.  If you
727       are using an earlier release of X or XFree86, you won't have XKB and
728       the instructions will not work.  See http://www.XFree86.org/FAQ for
729       more information.)
731       You might also have to turn off server num lock for this to work.
732       Now press "Shift+Num_Lock" to enable MouseKeys.  When MouseKeys are on:
734       o)   The keypad arrow keys move the pointer
735       o)   The keypad '5' key behaves like the 'default' pointer button
736       o)   The keypad '0' key locks the default pointer button (for easy
737            dragging)
738       o)   The keypad '.' key unlock the default pointer button (to release
739            a drag)
740       o)   The keypad '+' key double-clicks the default pointer button.
741       o)   The keypad '/' key sets the 'default' button to Button1
742       o)   The keypad '*' key sets the default button to Button2
743       o)   The keypad '-' key sets the default button to Button3
745       This is the default configuration, but the mechanism allows for nearly
746       infinite configurability.
748       [thanks to Erik Fortune (erik@westworld.engr.sgi.com), 6/96]
752 ----------------------------------------------------------------------
754 3.6  I'd like to bind a key to paste/use the current selection, how can
755      I do that?
757 A: You can't directly with fvwm, but there may be a solution that is
758    more generally applicable - use the program 'xcb' available at
759    ftp://ftp.x.org/contrib/utilities/ or from your favorite mirror.  It
760    could probably be used to get the desired effect or close to it.
761    This is most useful for running programs and passing the selection to
762    them (e.g. - invoke your favorite browser with the current selection as
763    the URL).  To get a semi-generic paste facility to work, you'll
764    probably need to use 'xse' (see Q3.5).  If anyone comes up with a
765    good example of this, please send it to the fvwm mailing list for
766    inclusion here.
768 ----------------------------------------------------------------------
770 3.7  Will FVWM ever support a separate colormap for each desktop?
772 A: Doubtful, although I'd like to see it too.  I believe that it'd be
773    possible to change the default colormap whenever you switch desks,
774    which would give programs started when that desk is active that
775    colormap, how would you deal with windows being moved across desks?
777    Plus fvwm itself needs certain colormap entries for all of its
778    drawing (borders, menus, etc), so these colors would have to be
779    pre-allocated in all of the colormaps, or something like that.
781    While this all *might* be technically possible, I don't feel that
782    it's really feasible right now (too much code bloat and
783    complexity), especially since most color hog programs (i.e. Netscape)
784    allow you to have them install private colormaps.
786    I may explore this a little at some point in the future though.
788 ----------------------------------------------------------------------
790 3.8  I really like the horizontal bars that appear on the title bars of
791      sticky windows.  Can I get those on other windows as well?
793 A: Yes.  For release 2.3.14 and after,
794    put the line
796      Style * StippledTitle
798    in your .fvwm2rc.  For earlier releases use
800      GlobalOpts StipledTitles
802    (Yes the spelling was inconsistent.)
804 ----------------------------------------------------------------------
806 3.9  How do I set the Sun keyboard key xxxx to an FVWM command?  Or
807      more generally, I'm having problems defining key bindings for FVWM
808      - what can I do?
810 A: From Jon Mountjoy, one of FVWM's users:
811      - Function keys on Sun Keyboard on Top Row are F1 - F8
812      - Keys on the function keypad on the Left of the Sun Keyboard
813        are F11 == Stop, F12 == Again, ..., F20 == Cut
815      His Example:
817      # Function keys on Sun Keyboard on Top Row
818      Key F1     A     N       Exec me(netscape) &
819      Key F2     A     N       Exec me(netscape -install) &
820      Key F5     A     N       Exec makex(Adder)
821      Key F6     A     N       Exec makex(Lambda)
822      Key F7     A     N       Exec makex(Castor)
823      Key F8     A     N       Exec xterm -T Local &
825      # Keys on the function keypad on the Left of the Sun Keyboard:
826      # F11 = Stop, F12 = Again, ..., F20 = Cut
827      Key F11    AWF   N       Next (!iconic CurrentPage) Focus
828      Key F12    AWF   N       Prev (!iconic CurrentPage) Focus
829      Key F13    WF    N       Maximize     100 100
830      Key F15    WF    N       RaiseLower ""
831      Key F17    WIF   N       Iconify ""
832      Key F18    WF    N       Stick ""
833      Key F20    WIF   N       Delete ""
834      Key Help   AWF   N       Iconify ""
836    A more general solution is to use xev (usually distributed w/ X11)
837    or xkeycaps (an X11 interface to xmodmap written by Jamie Zawinski,
838    available from ftp.x.org) to find out what the keysym for whatever
839    key you want REALLY is, and use that for binding fvwm commands.
841 ----------------------------------------------------------------------
843 3.10  My .fvwmrc from version 1.xx no longer works.  What do I do?
845 A: Start with a new one or convert your old one.  This can be done by
846    hand or with a little help from the 'fvwm-convert-2.2' in the
847    utils directory.
849    And here is a list of rc file command changes compiled by Makoto
850    'MAR_kun' MATSUSHITA <matusita@ics.es.osaka-u.ac.jp>.  It may or
851    may not be 100% accurate or complete, especially as changes evolve,
852    but it's a good start.
854    Note that there have been some changes in 2.1.x and up that are
855    not reflected in the conversion script yet.
857    ** Fvwm-1.xx commands **                   ** Fvwm-2.0.x equivalent **
859    AppsBackingStore                           (obsoleted)
860    AutoRaise delay                            (obsoleted, use FvwmAuto)
861    BackingStore                               (obsoleted)
862    BoundaryWidth Width                        Style (BorderWidth width)
863    ButtonStyle button# WidthxHeight           <-
864    CenterOnCirculate                          (obsoleted)
865    CirculateSkip windowname                   Style (CirculateSkip)
866    CirculateSkipIcons                         Style (CirculateSkipIcon)
867    ClickTime delay                            <-
868    ClickToFocus                               Style (ClickToFocus)
869    Cursor  cursor_num cursor_type             CursorStyle context cursornum
870    DecorateTransients                         Style (DecorateTransient)
871    DeskTopScale Scale                         (obsoleted, use FvwmPager)
872    DeskTopSize HorizontalxVertical            <-
873    DontMoveOff                                (obsoleted)
874    EdgeResistance scrolling moving            <-
875    EdgeScroll horizontal vertical             <-
876    Font fontname                              MenuStyle (arg4)
877    Function FunctionName                      AddToFunc (not compatible)
878    HiBackColor colorname                      Style (HilightFore color)
879    HiForeColor colorname                      Style (HilightFore color)
880    Icon windowname bitmap-file                Style (Icon iconname-file)
881    IconBox left top right bottom              Style (IconBox l t r b)
882    IconFont fontname                          Style (IconFont fontname)
883    IconPath path                              ImagePath path
884    Key keyname Context Modifiers Function     <-
885    Lenience                                   Style (Lenience)
886    MenuBackColor colorname                    MenuStyle (arg2)
887    MenuForeColor colorname                    MenuStyle (arg1)
888    MenuStippleColor colorname                 MenuStyle (arg3)
889    Module ModuleName                          <-
890    ModulePath path                            <-
891    Mouse Button Context Modifiers Function    <-
892    MWMBorders                                 Style (MWMBorder)
893    MWMButtons                                 Style (MWMButtons)
894    MWMDecorHints                              Style (MWMDecor)
895    MWMFunctionHints                           Style (MWMFunctions)
896    MWMHintOverride                            Style (HintOverride)
897    MWMMenus                                   MenuStyle (arg5)
898    NoBorder windowname                        Style (NoBorder)
899    NoBoundaryWidth Width                      Style (HandleWidth width)
900    NoPPosition                                Style (NoPPosition)
901    NoTitle windowname                         Style (NoTitle)
902    OpaqueMove percentage                      OpaqueMoveSize percentage
903    OpaqueResize                               (obsoleted)
904    Pager  X_Location Y_Location               (obsoleted, use FvwmPager)
905    PagerForeColor colorname                   (obsoleted, use FvwmPager)
906    PagerBackColor colorname                   (obsoleted, use FvwmPager)
907    PagerFont fontname                         (obsoleted, use FvwmPager)
908    PagingDefault pagingdefaultvalue           (obsoleted)
909    PixmapPath                                 ImagePath path
910    Popup PopupName                            AddToMenu (not compatible)
911    RandomPlacement                            Style (RandomPlacement)
912    SaveUnders                                 (obsoleted)
913    SloppyFocus                                Style (SloppyFocus)
914    SmartPlacement                             Style (SmartPlacement)
915    StartsOnDesk windowname desk-number        Style (StartsOnDesk desk-number)
916    StaysOnTop windowname                      Style (StaysOnTop)
917    StdBackColor colorname                     Style (BackColor color)
918    StdForeColor colorname                     Style (ForeColor color)
919    StickyBackColor colorname                  (obsoleted)
920    StickyForeColor colorname                  (obsoleted)
921    Sticky windowname                          Style (Sticky)
922    StickyIcons                                Style (StickyIcon)
923    StubbornIcons                              (obsoleted)
924    StubbornIconPlacement                      (obsoleted)
925    StubbornPlacement                          (obsoleted)
926    Style windowname options                   <-
927    SuppressIcons                              Style (NoIcon)
928    WindowFont fontname                        Style (Font fontname)
929    WindowListSkip windowname                  Style (WindowListSkip)
930    XORvalue number                            <-
932    ** fvwm-1 built-in functions ***
934    Beep                                       <-
935    CirculateDown [ name window_name ]         Next (not compatible)
936    CirculateUp [ name window_name ]           Prev (not compatible)
937    Close                                      <-
938    CursorMove horizonal vertical              <-
939    Delete                                     <-
940    Desk arg1 arg2                             <-
941    Destroy                                    <-
942    Exec name command                          <-
943    Focus                                      <-
944    Function                                   <-
945    GotoPage  x y                              <-
946    Iconify [ value ]                          <-
947    Lower                                      <-
948    Maximize [  horizontal vertical ]          <-
949    Module name ModuleName                     Module ModuleName
950    Move [ x y ]                               <-
951    Nop                                        <-
952    Popup                                      <-
953    Quit                                       <-
954    Raise                                      <-
955    RaiseLower                                 <-
956    Refresh                                    <-
957    Resize [ x y ]                             <-
958    Restart  name WindowManagerName            <-
959    Stick                                      <-
960    Scroll horizonal vertical                  <-
961    Title                                      <-
962    TogglePage                                 (obsoleted)
963    Wait name                                  <-
964    Warp [ name window_name ]                  Next or Prev (not compatible)
965    WindowsDesk new_desk                       (obsoleted, use MoveToDesk)
966    WindowList arg1 arg2                       <-
968    *** New in fvwm-2 **
970    All
971    AnimatedMove
972    BugOpts
973    BusyCursor
974    DefaultColors
975    DefaultColorset
976    DefaultFont
977    DefaultIcon
978    DefaultLayers
979    Destroy
980    DestroyMenu
981    EdgeThickness
982    Emulate
983    EscapeFunc
984    ExecUseShell
985    HideGeometryWindow
986    KillModule
987    Layer
988    Menu menu-name double-click-action
989    MoveToDesk
990    MoveToPage
991    Next (conditions) command
992    None (arguments) command
993    Pick
994    PointerKey
995    Prev (conditions) command
996    QuitSession
997    Read filename
998    Recapture
999    RecaptureWindow
1000    SaveQuitSession
1001    SaveSession
1002    Silent
1003    SnapAttraction
1004    SnapGrid
1005    StrokeFunc
1006    XORPixmap
1007    +
1008    (more functions are being added from time to time, so please check
1009     the man page and the NEWS file too).
1011 ----------------------------------------------------------------------
1013 3.11  What happened to the FVWM 1.xx 'include' command?
1015 A: It was actually part of the M4 preprocessing.  You can use the 'Read'
1016    builtin to get the same effect, or use the FvwmM4 module.
1018 ----------------------------------------------------------------------
1020 3.12  How do I get window titles on sub windows of ... (e.g. Netscape)?
1022 A: These windows are known as 'transient' windows because of their
1023    short lived nature.  To get the window decorations for transient
1024    windows you can use the Style command:
1026      Style * DecorateTransient
1028    or to switch it off:
1030      Style * NakedTransient
1032 ----------------------------------------------------------------------
1034 3.13  I just upgraded to version >= 2.3.2, and my configuration settings
1035       disappeared!  How do I get them back?
1037 A: The directory for system-wide configuration files changed from
1038    ${sysconfdir} (/usr/local/etc, unless set otherwise at configure time)
1039    to a subdirectory, ${sysconfdir}/fvwm.  Move your config files by hand
1040    and restart FVWM.
1042    This change was made because FVWM now installs several files into this
1043    directory.
1045 ----------------------------------------------------------------------
1047 3.14  Some applications (e.g. Eterm) don't use the icon I defined for them.
1048       Why?
1050 A: Eterm provides its own icon and fvwm does not know if it is a plain
1051    icon or if Eterm wants to draw into it (like xbiff does when you get
1052    new mail).  You can explicitly override the application provided
1053    icon with a style command:
1055      Style <application-name> IconOverride
1057 ----------------------------------------------------------------------
1059 3.15  I don't like the gaps in my icon box when I de-iconify an
1060       application.  Is there some kind of auto arrange function?
1062 A: Assuming you are using the IconBox option of the Style command
1063    this can be done with a tricky fvwm function.  Put the
1064    DeiconifyAndRearrange function below in your configuration file:
1066      AddToFunc DeiconifyAndRearrange
1067       + C Iconify off
1068       + C All (CurrentPage Iconic) PlaceAgain Icon
1070    This works with fvwm-2.5.3 and later.  Older fvwm releases can
1071    achieve the same effect with
1073      AddToFunc DeiconifyAndRearrange
1074       + C Iconify off
1075       + C All (CurrentPage Iconic) RecaptureWindow
1077    However, as the Recapture and RecaptureWindow commands may be
1078    removed in the future, please use PlaceAgain instead of
1079    Recapture if possible.
1081    Also, replace all places where you call the Iconify builtin
1082    function to de-iconify an icon with a call to the new function.
1083    For example, replace
1085      AddToFunc IconFunc
1086       + C Iconify off
1087       + M Raise
1088       + M Move
1089       + D Iconify off
1091    with
1093      AddToFunc IconFunc
1094       + C DeiconifyAndRearrange
1095       + M Raise
1096       + M Move
1097       + D DeiconifyAndRearrange
1099    and
1101      Mouse 1 I A Iconify off
1103    with
1105      Mouse 1 I A DeiconifyAndRearrange
1107 ----------------------------------------------------------------------
1109 3.16  How do I set up an fvwm menu item that shuts down my Linux machine?
1111 A: Write a little shell script to run the shutdown command.
1113    Install sudo on your system (see the man page, etc.)
1115    Set up the sudoers config file to allow you, your wife, etc.  to run
1116    that script with root permissions.
1118    Add a menu item to your FVWM root menu (or wherever) that invokes
1119    "sudo /my/script/name".
1121 ----------------------------------------------------------------------
1123 3.17  Although the Recapture command is obsolete, do I still need it to
1124       apply certain style changes?
1126 A: Excerpt from the man page:
1128    There are many commands that affect look and feel of specific,
1129    some or all windows, like Style, Mouse, the FvwmTheme module and
1130    many others.  For performance reasons such changes are not applied
1131    immediately but only when fvwm is idle, i.e. no user interaction
1132    or module input is pending.  Specifically, new Style options that
1133    are set in a function are not applied until after the function has
1134    completed.  This can sometimes lead to unwanted effects.  To force
1135    that all pending changes are applied immediately, use the
1136    UpdateStyles, Refresh or RefreshWindow commands.
1138 ----------------------------------------------------------------------
1140 3.18  When my specific window (or all windows) pops up, I want it to
1141       get focus/be moved/be resized/be closed/be shaded...  How?
1143 A: The following discusses a general solution, you should substitute
1144    the application names used in the examples as well as fvwm commands
1145    (Move, Iconify, Close) with the ones you need.  To get resource
1146    names of an application you want to catch, use FvwmIdent module.
1148    The first possible approach to achieve what you want is to have a
1149    separate function to start your application, like:
1151      DestroyFunc StartKedit
1152      AddToFunc   StartKedit
1153      + I Exec kedit
1154      + I Wait kedit
1155      + I Next (kedit) Resize 100p 200p
1157    This approach has 3 problems:
1158      1) You need to use StartKedit function to start your application,
1159         this will not work if you start it from the command line.
1160      2) If for some reason the application is not started, FVWM waits
1161         for it in Wait, you will need to press Ctrl-Alt-Esc.
1162      3) If you have more than one kedit window, it is not guaranteed
1163         that the right one is resized.
1165    But this approach has one plus - it also enables any fvwm commands
1166    that you may want to issue before executing your command.  For example,
1167    to start kedit window iconic, but not affect its subwindows, you can use:
1169      DestroyFunc StartAppIconic
1170      AddToFunc   StartAppIconic
1171      + I Style $0 StartIconic
1172      + I Exec exec $0 $1
1173      + I Wait $0
1174      + I Style $0 StartNormal
1176      StartAppIconic kedit /tmp/my.txt
1179    The second approach is to use FvwmEvent, this solves the first two
1180    problems (in fvwm 2.2) or all three problems (in fvwm 2.3 and later).
1182    The sample to use with fvwm 2.2.3+ versions (this resizes the newly
1183    created window "My Window", supposing you have only one such window):
1185      DestroyModuleConfig FvwmEvent*
1186      *FvwmEvent add_window SetGeometryForMyWindow
1188      DestroyFunc SetGeometryForMyWindow
1189      AddToFunc   SetGeometryForMyWindow
1190      + I Next ("My Window") Move +10p +10p
1191      + I Next ("My Window") Resize 100p 200p
1193      AddToFunc StartFunction I Module FvwmEvent
1195    The sample to use with fvwm 2.3.21+ versions (this moves a newly
1196    created window "My Window" only, and switches to all new windows):
1198      *FvwmEvent-NewWindow: Cmd
1199      *FvwmEvent-NewWindow: PassId
1200      *FvwmEvent-NewWindow: StartDelay 4
1201      *FvwmEvent-NewWindow: add_window FuncFocusWindow
1203      DestroyFunc FuncFocusWindow
1204      AddToFunc   FuncFocusWindow
1205      + I WindowId $0 ("My Window") Move 200p 100p
1206      + I WindowId $0 Focus
1207      + I WindowId $0 WarpToWindow
1209      AddToFunc StartFunction I FvwmEvent FvwmEvent-NewWindow
1211 ----------------------------------------------------------------------
1213 3.19  When my specific window (or all windows) is closed, I want to
1214       switch desks/wrap to my app X/popup a menu/start app X...  How?
1216 A: Please read the answer to the previous question to understand better.
1218    Again, there are two approaches.  The first is good in one kind of
1219    situations, bad in others:
1221      DestroyFunc StartKedit
1222      AddToFunc   StartKedit
1223      + I Exec kedit; xmessage -name DummyWindow -g +10000+10000 "dummy"
1224      + I Wait DummyWindow
1225      + I Exec xmessage -timeout 10 "Sorry, you can't close kedit"
1226      + I StartKedit
1228    The second approach is to use FvwmEvent:
1230      *FvwmEvent-OldWindow: Cmd
1231      *FvwmEvent-OldWindow: PassId
1232      *FvwmEvent-OldWindow: destroy_window FuncPopupMyMenu
1234      DestroyFunc FuncPopupMyMenu
1235      AddToFunc   FuncPopupMyMenu
1236      # go to the desk 0 when any window is closed
1237      + I GotoDesk 0
1238      # popup my menu when "panel" is closed
1239      + I WindowId $0 ("panel") Popup MenuFvwmRoot
1241      AddToFunc StartFunction I FvwmEvent FvwmEvent-OldWindow
1243 ----------------------------------------------------------------------
1245 3.20  I have a multi head setup (multiple screens used under X).  How
1246       can I tell fvwm to use different configurations for the screens?
1248 A: FVWM spawns itself into all found screens unless -s command line
1249    parameter is specified, as explained in the man page.  All spawned
1250    fvwm processes by default use the same configuration on each screen.
1251    There are several ways to change the default behavior.
1253    Write your configuration file as you would if you had only one
1254    screen.  Then move the screen specific lines into separate
1255    configuration files and call them, for example, .fvwm2rc.<screen>
1256    where <screen> is the screen number.  Usually this will be 0 for
1257    the main screen and 1 for the secondary screen.  Place the screen
1258    specific files in the $HOME/.fvwm directory or whatever you set
1259    $FVWM_USERDIR to.  Now add this line to your .fvwm2rc:
1261      Read .fvwm2rc.$[screen]
1263    The $[screen] will be replaced with the number of the screen each
1264    instance of fvwm is started on.
1267    Another method, which should work for older fvwm versions as well,
1268    is to specify a separate file for each screen explicitly.  For this,
1269    start a separate fvwm for each screen in your .xinitrc (or .Xclients):
1271      fvwm -s -d :0.0 -f .fvwm2rc-0 &
1272      fvwm -s -d :0.1 -f .fvwm2rc-1 &
1273      fvwm -s -d :0.2 -f .fvwm2rc-2
1275    Note that only the last command is without a trailing ampersand.
1276    If you wish, .fvwm2rc-* files may all include line
1277    "Read .fvwm2rc-common".
1280 ======================================================================
1281                              4 - Modules
1282 ======================================================================
1284 4.1  I'm using FvwmButtons (or GoodStuff in 1.xx), and sometimes the
1285      buttons stay depressed, and other times they don't.  Why is that?
1287 A: From the FvwmButtons man page:
1289        If command is an fvwm Exec command, then the button
1290        will remain pushed in until a window whose name or
1291        class matches the quoted portion of the command is
1292        encountered.  This is intended to provide visual
1293        feedback to the user that the action he has requested
1294        will be performed.  If the quoted portion contains no
1295        characters, then the button will pop out immediately.
1296        Note that users can continue pressing the button, and
1297        re-executing the command, even when it looks "pressed
1298        in."
1300 ----------------------------------------------------------------------
1302 4.2  When having FvwmButtons swallow an app, is it possible to have
1303      button presses assigned to actions as well?  For instance, I'd
1304      like to swallow xload and have a button press pop up an xterm, or
1305      swallow xbiff and have a button press bring up the list of
1306      messages.
1308 A: Yes, with the alpha release 2.5.0 or any later release.  For older
1309    releases, read on.
1311    The button presses normally get passed through to the swallowed
1312    application, but if you put a title on the button, you can
1313    assign actions to that. Here's an example that someone sent to
1314    the mailing list once:
1316    *FvwmButtons(1x4,       \
1317      Title           'System Info', \
1318      Swallow         "xload" 'Exec xload', \
1319      Action(Mouse 1) 'Exec xosview -cua0 -net 200 -ul -l -geometry 325x325', \
1320      Action(Mouse 2) 'Exec xcpustate -interval 1 -bg "#a4978e" -fg black', \
1321      Action(Mouse 3) 'Exec rxvt -fg "khaki" -bg "dark olive green" \
1322                            -fat -n top -T Top -7 -e top' )
1324    And you could come up with something similar for xbiff (untested):
1326    *FvwmButtons(1x2, \
1327      Title 'Check Mail' Swallow "xbiff" 'Exec xbiff', \
1328      Action(Mouse 1) 'Exec from | xmessage -file -' )
1330    plus you could bind another button (say Mouse 3) to run your
1331    mail program.
1333    Sometime in the future I'll probably try and fix it so that you can
1334    actually assign a button press over the application itself...
1336 ----------------------------------------------------------------------
1338 4.3  I'm seeing odd things when trying to preprocess files with the
1339      FvwmM4/Cpp module...
1341 (A: This is partly fixed in version 2.2, and virtually fixed in 2.4)
1343 A: Yup, I imagine that you might be.  Things like the InitFunction not
1344    being called or windows that were running before FVWM started not
1345    getting their Borders & Style options set, etc.
1347    The reason for all this is because of the fact that FvwmM4 is a
1348    module.  Fvwm won't be looking at the commands coming back from
1349    the module until after it hits the main loop of the code, AFTER the
1350    startup is all done and it has already tried to execute the
1351    InitFunction.
1353    There are two possible solutions:
1355         - Start all your applications inside an InitFunction, or
1356         - Put a Recapture in the end of your .fvwm2rc
1358    Version 2.2 has a partial fix that makes FvwmCpp/FvwmM4 work if it is
1359    the only -cmd or -f command line argument specified.
1361      fvwm -cmd "FvwmCpp .fvwmrc.cpp"
1363    will work but the following is unreliable
1365      fvwm -f /usr/local/X11/etc/system.fvwm2rc -cmd "FvwmCpp .fvwmrc.cpp"
1367    Version 2.4 has a more compete fix that makes the above line work
1368    reliably: any module started by command line arguments is assumed to be
1369    a module that sends back config commands.  All command line modules
1370    have to quit before fvwm will proceed on to the InitFunction and
1371    setting border decorations and styles.  There is a potential deadlock
1372    if you start a module other than FvwmCpp/FvwmM4 but there is a timeout
1373    so fvwm will eventually get going.
1375 ----------------------------------------------------------------------
1377 4.4  I heard about this FvwmFileMgr module.  Where can I find it?
1379 A: The FvwmFileMgr module disappeared because a file manager doesn't
1380    need to be integrated with a window manager and something like xfm
1381    does a much better job.  I recommend you pick that up instead (from
1382    ftp.x.org or your favorite mirror).
1384 ----------------------------------------------------------------------
1386 4.5  I used to use GoodStuff in FVWM 1.xx, but it's not in the 2.xx
1387      distribution.  What do I use now?
1389 A: GoodStuff was renamed to FvwmButtons.  Same module, new name (that
1390    fits in with the other modules naming convention).
1392 ----------------------------------------------------------------------
1394 4.6  I want to have the sub panels in FvwmButtons not at their default
1395      position near the button but somewhere else on the screen.  Is this
1396      possible?
1398 A: Yes, but not with the current implementation of the panels.  Please
1399    read question 7.12 for instructions.
1401 ======================================================================
1402             5 - Development, Known Problems & Bug Reports
1403 ======================================================================
1405 5.1  I'd really like to see neat feature XYZ in FVWM.  Wouldn't
1406      that be cool?  I even have a patch.  When can it be added?
1408 A: If you plan to write a patch, *please*, first of all fetch the
1409    latest development release from our web site or better yet use CVS
1410    as described in http://www.fvwm.org/cvs.html.  It is also a good
1411    idea to contact the fvwm-workers list.  At times, patches for
1412    older releases may prove completely worthless, e.g. because the
1413    fix has already been integrated, a feature already added or
1414    removed or simply because the code is very different to the code
1415    you patches.  You will do yourself and us a great favour.
1416    Otherwise all your hard work may be wasted.
1418    People are always requesting or suggesting new features (many of
1419    which are great ideas and where a lot of the current features came
1420    from).  One of the more common ones for example is Windows 95 look
1421    and feel (although since this was first written, that particular
1422    feature has actually been indirectly implemented via several
1423    appearance-affecting features).
1425    I'd like to make a statement about this.  FVWM is supposed to be
1426    small, fast, powerful, and flexible, and sometimes tradeoffs have
1427    to be made here.  The module interface helps here, as a lot of
1428    features that not everyone wants or needs don't have to be in the
1429    main module consuming resources for those people that don't want or
1430    need them.
1432    So if you have a suggestion (or a patch), please think of a way to
1433    make it as small and generic as possible if you feel it belongs in
1434    the main module.  Please have a look at the enhancements that are
1435    listed in our bug tracking system (see Q5.3).
1437    If you plan to make a patch, please contact the fvwm-workers mailing
1438    list first.  From time to time we are changing the code in a very
1439    disruptive way and if you create a patch to a version before such
1440    changes were made we will all have a hard time to integrate the
1441    patch.  Most of the time we will ask you to update the patch for the
1442    current code anyway.
1444    Bear in mind that we make no guarantees that we'll add any requested
1445    feature or apply any submitted patches to the official version, but
1446    please don't let this dissuade you from submitting them.  We like to
1447    get new ideas and we're always curious to see how someone would
1448    implement a given feature, even if we never plan to put it in fvwm.
1449    Also, we may choose to re-implement any patches submitted, which may
1450    change the syntax, functionality, etc.  Please don't take offense
1451    from that, as we mean no offense and we generally have a good reason
1452    (at least by our way of thinking) for our actions...
1454 ----------------------------------------------------------------------
1456 5.2  How do I create/submit/apply patches?
1458 A: First of all, please read the first section of the answer to Q5.1!
1460    Creating a patch against CVS sources (preferrable) -
1462         1) Execute "cvs update -AdP" to ensure there are no conflicts
1463            with the most recent sources.
1464         2) Don't forget to update the ChangeLog file (see below) and
1465            all manual pages if needed.
1466         3) In the base cvs directory run: cvs diff -u >myfeature.patch
1468    Creating a patch against released sources -
1470         1) Copy the original file(s) to the same name with the
1471            additional extension of .orig (or something like that).
1472         2) Update the ChangeLog file.  If you use (x)emacs, move the
1473            cursor into the function you changed and hit <ctrl>-x 4 a.
1474            This will generate an empty ChangeLog entry in the right
1475            file (there are several ChangeLogs).  Add a description of
1476            what you did.  Do this each time you change a function or
1477            file (for changes outside of functions).  You should update
1478            the AUTHORS and NEWS files too if appropriate.
1479            Please take the time to add the ChangeLog entries, it makes
1480            our work a lot easier.
1481         3) Run diff with either the -c (context) or -u (unified)
1482            switch on the sets of files, with the .orig file FIRST.  I
1483            prefer unified diff's because they are smaller, but
1484            sometimes they aren't as readable (and some diff versions
1485            don't support unified diffs), so either context or unified
1486            diffs are fine (but please, no "plain" diffs).
1488         ex: cp fvwm.c fvwm.c.orig ; <edit> ; diff -u fvwm.c.orig fvwm.c
1490    Submitting a patch -
1492         Mail it to the fvwm-workers mailing list <fvwm-workers@fvwm.org>.
1494         If your patch is large you should compress it (preferably
1495         with gzip).  Should it still be larger than 25k you might want
1496         to to place it on a web page and email the URL to the mailing
1497         list or ask on the fvwm-workers list first.
1499         Be sure to read the answer to Q5.1.
1501         Don't forget the ChangeLog and the documentation.
1503    Applying a patch -
1505         Get a copy of the program 'patch' from your favorite source,
1506         such as ftp://ftp.gnu.org/gnu/patch/, compile it, and then
1507         follow its directions (generally just cd into the appropriate
1508         directory and run 'patch < patchfile').
1510 ----------------------------------------------------------------------
1512 5.3  How do I submit a bug report?
1514 A: Please enter a DETAILED description of your problem in our web-based
1515    bug-tracking system.  You can find a link on our web page (see Q1.3).
1516    By detailed we mean more than just "my window isn't behaving right" or
1517    "I found a bug":
1519         - First of all: use our bug tracking system! You will find
1520           a link to it on our main web page (see Q1.3).  If for some
1521           reason the bug tracking system doesn't work for you, please
1522           use the fvwmbug.sh shell script that comes with fvwm.
1523         - Describe the problem as best you can, preferably with
1524           suggestions on how to reproduce it easily
1525         - If applicable, include information from:
1526                 xwininfo (preferably w/ the -all option)
1527                 xprop
1528                 FvwmIdent
1529                 xdpyinfo (maybe)
1530         - What exact version of FVWM you are running.
1531         - What OS & version you are running under
1532         - What version of X11 are you running under, and is it an MIT
1533           server or a vendor specific server (e.g. the OpenWindow X
1534           server under SunOS)
1535         - How was FVWM compiled (compiler & version, options, etc)
1536         - What settings do you have in your .fvwm2rc that may be
1537           pertinent.
1539 ----------------------------------------------------------------------
1541 5.4  I have a window that is behaving unexpectedly under FVWM, but just
1542      fine under (whatever other window manager), or I have just some
1543      random bug.  What do I do?
1545 A: First, check your rc file and your .Xdefaults to make sure that
1546    something blatantly obvious in there isn't causing the problem.
1547    Second, *PLEASE PLEASE PLEASE* check the FAQ, BUGS, TODO, and man
1548    pages.  Finally, check the official WWW page and the mailing list
1549    archives (which have a search facility) stored there.
1551    If you still can't figure it out, report your problem to our bug
1552    tracking system (see Q5.3).
1554 ----------------------------------------------------------------------
1556 5.5  Why do NumLock, CapsLock and ScrollLock interfere with
1557      ClickToFocus and/or my mouse bindings?
1559 A: Because they are treated as modifiers.  You can use the
1560    IgnoreModifiers command to turn individual modifiers off for
1561    bindings.  With XFree86 and fvwm version 2.4.0 or above, the
1562    right command is
1564      IgnoreModifiers L25
1566    If you changed your modifiers manually or are using a different
1567    X server use the 'xmodmap' command to find out which modifiers
1568    correspond to the keys you want to switch off.
1570    This command creates a lot of extra network traffic, depending
1571    on your CPU, network connection, the number of Key, Mouse or
1572    PointerKey commands in your configuration file and the number
1573    of modifiers you want to ignore.  If you do not have a
1574    lightning fast machine or very few bindings you should not
1575    ignore more than two modifiers.  So do not ignore scroll-lock
1576    if you have no problem with it.
1578    A better way to solve this problem is to modify the keyboard
1579    mapping of your X server.  The commands
1581      xmodmap -e "clear Lock"
1582      xmodmap -e "clear Mod2"
1583      xmodmap -e "clear Mod5"
1585    remove the CapsLock, NumLock and ScrollLock from the keyboard
1586    map.  Pressing these keys has no effect then.  To re-add them
1587    try this:
1589      xmodmap -e "add Lock = Caps_Lock"
1590      xmodmap -e "add Mod2 = Num_Lock"
1591      xmodmap -e "add Mod5 = Scroll_Lock"
1593    Fvwm has to be restarted to use the changes made by
1594    xmodmap.  Please refer to the man page of the xmodmap command
1595    for further details.  If you disable the CapsLock key in your
1596    keyboard map in this way, you can speed up fvwm a bit by
1597    removing the Lock modifier from the list of ignored modifiers:
1599      IgnoreModifiers
1601 ----------------------------------------------------------------------
1603 5.6  Menus with gradient backgrounds flicker or are very slow.
1605 A: The flickering is caused by fvwm constantly redrawing the menus
1606    when a sub menu pops up or down.  One way to help this is to use
1607    a X server with backing storage (XFree86 has backing storage
1608    support, I don't know about other servers but I guess that any
1609    decent X server has it).  If your Xserver is started with the
1610    -bs option, remove it.  If not try the -wm option, for example:
1612      startx -- -wm
1614    You may have to adapt this example to your system (e.g. if you
1615    use xinit to start X).
1617    If that doesn't help, either because your X server does not have
1618    backing storage or because system resources are limited, make
1619    sure sub menus do not overlap the parent menu:
1621      MenuStyle <stylename> PopupOffset 1 100
1623    Unfortunately this does not work properly with the fvwm
1624    menu style.
1626    For the speed problem both suggestions above might help too.
1627    Another thing to try is to turn hilighting of the active menu
1628    item other than by foreground color off.  Put these lines in your
1629    .fvwm2rc after the menu styles have been defined:
1631      MenuStyle <stylename> Hilight3DOff, HilightBackOff
1632      MenuStyle <Stylename> ActiveFore <preferred color>
1634 ----------------------------------------------------------------------
1636 5.7  Why won't the StartIconic style work with {Netscape, etc.}?
1638 A: The application won't allow it.  This has only been observed with
1639    Netscape.  When Netscape starts up, FVWM starts the main window in
1640    the iconic state.  Netscape immediately issues another MapRequest,
1641    to which the window manager must respond by de-iconifying the
1642    window, according to the ICCCM rules.  (Netscape can be persuaded to
1643    start iconic, however, by invoking it with the -iconic command line
1644    flag.)
1646 ----------------------------------------------------------------------
1648 5.8  How do I capture the output (e.g. errors) of fvwm?
1650 A: Errors are reported to the standard error file.  You can redirect
1651    standard error to a file when fvwm is started: "fvwm 2> fvwm-errors".
1652    X sessions started by xdm often redirect errors to a file named
1653    ".xsession-errors".
1655    Alternatively, FvwmConsole or "FvwmForm FvwmForm-Talk" modules
1656    will display error messages.
1658 ----------------------------------------------------------------------
1660 5.9  I try to run some program under FVWM, but it dies with an X11
1661      error like BadAccess.  The same program works just fine under MWM
1662      or OLWM.  What's going on?
1664 A: The error message usually looks something like this:
1666         X Error of failed request:  BadAccess (attempt to access private
1667         resource denied)
1668          Major opcode of failed request:  28 (X_GrabButton)
1669          Serial number of failed request:  1595
1670          Current serial number in output stream:  1596
1672    Well, this is telling you that there is a conflict in key/button
1673    assignments.  In your .fvwm2rc you have bound some key/button that
1674    this program really wants to bind to an action, but it can't since
1675    FVWM has already done so (but you weren't doing it in the rc file
1676    for your previous window manager).  Figure out what the offending
1677    key binding is and remove it from your .fvwm2rc, or temporarily via
1678    "FvwmForm FvwmForm-Talk" by removing the FVWM binding (see the man
1679    page for the Key & Mouse commands).
1681 ----------------------------------------------------------------------
1683 5.10  Every time I update my install, my currently running fvwm session
1684       dies.  Why is that?
1686 A: Many OSes swap the program from memory via the image on the disk,
1687    and if you overwrite it, and then the current one tries to swap
1688    something back into memory before you restart, it'll core dump.  To
1689    avoid this, rename your old executables or move them to some other
1690    directory.  The 'mv' command preserves the inode so it won't
1691    core dump, but then when you restart fvwm it'll pick up the new
1692    copy.
1694 ----------------------------------------------------------------------
1696 5.11  After I restart fvwm certain windows or icons raise above
1697       all other windows and cannot be lowered by any means.  One
1698       example are the shortcuts of KFM (the KDE file manager).
1699       What can I do about that?
1701 A: Some applications use so called 'override redirect' windows that
1702    are not (and cannot be) managed by the window manager.  By
1703    convention as defined in the ICCCM, such windows must only be
1704    displayed for a very short time.  KFM and possibly other
1705    applications ignore this convention and use permanent 'override
1706    redirect' windows, e.g. the KFM shortcuts.  Fvwm can not easily
1707    detect these windows when it restarts and places the windows
1708    managed by fvwm below them.
1710    However, since fvwm version 2.3.8 there is a command that will
1711    help you, although it might cause trouble with other applications
1712    using 'override redirect' windows.  We can't make any promises
1713    since KFM is violating the conventions and the applications may
1714    violate them in different ways.
1716    Now the command.  Put this anywhere in your .fvwm2rc file:
1718      BugOpts RaiseOverUnmanaged on
1720 ----------------------------------------------------------------------
1722 5.12  The StartsOnPage style does not work for me.  Why?
1724 A: Many applications request a specific position where they want to
1725    appear (the so called 'program specified position').  Unless fvwm
1726    is told explicitly to ignore this, the program specified position
1727    overrides the StartsOnPage style.  Use this line in your
1728    configuration file:
1730      Style * NoPPosition
1732 ----------------------------------------------------------------------
1734 5.13  Some modules can not be started when I restart fvwm.
1736 A: You may see the following error message on the console:
1738      [FVWM][PositiveWrite]: <<ERROR>> Failed to read descriptor:
1739      - data available=N
1740      - terminate signal=N
1742    It means that fvwm has given up waiting for one of its modules to
1743    reply, and so has killed it.  The length of the timeout is a
1744    configuration parameter - try adding
1746      ModuleTimeout 10
1748    to your .fvwm2rc file.  The units are in seconds and the default
1749    value is 5.
1751    This problem will only occur on slow machines or high system load
1752    (many open windows).
1755 ----------------------------------------------------------------------
1757 5.14  I'm running Rational Rose and fvwm ignores its windows.
1759 A: This problem might occur on other applications besides the one
1760    mentioned.
1762    The symptoms as reported by Raymond Toy are:
1764      I've been using FVWM for ages and it's always worked for me just
1765      fine.  However, I've started using Rational Rose for Solaris.  FVWM
1766      seems to get completely confused.
1768      o FVWM doesn't draw any frames around the Rose window like it does for
1769        all other windows (except for those I explicit said not to).
1771      o The Rose window is always on top.  Nothing I do can bring another
1772        window above the Rose window.
1774      o Using FVWM's identify window module shows nothing.  No identify
1775        window pops up showing the window info.
1777      o Focus sometimes seems to be lost.  (I have focus follows mouse).  I
1778        have to move the mouse out of the window and back in to get focus.
1779        Sometimes I also have to click in the window to get focus.
1781      The annoying thing is that this all seems to work with CDE and dtwm.
1782      I don't want to have to switch to dtwm so any hints or pointers on
1783      where to look to get FVWM to understand this window would help me a
1784      lot.
1786    Heres what we found out:
1788    Rational Rose uses software from Mainsoft that lets MS Windows
1789    applications be recompiled to run on UNIX.
1791    There are 2 Mainsoft Knowledgebase pages that relate to UNIX
1792    window managers:
1794    _+_A HREF="http://www.mainsoft.com/kb_mainwin/kbmw0027.html"
1795    _-_http://www.mainsoft.com/kb_mainwin/kbmw0027.html_+_/A_-_
1796    _+_A HREF="http://www.mainsoft.com/kb_mainwin/kbmw0034.html"
1797    _-_http://www.mainsoft.com/kb_mainwin/kbmw0034.html_+_/A_-_
1799    These pages suggest that you export MWWM=allwm or MWWM=MWM before
1800    starting the application.
1802    Raymond reports:
1804      This works just fine!   Setting MWWM=allwm, Rose  comes
1805      up like a normal X app where  the WM draws the borders.
1806      With MWWM=MWM, it works ok too except that for the main
1807      window,  no borders are drawn  by the WM and Rose draws
1808      it's own  borders (I  have  fvwm respecting   MWM decor
1809      hints).  (This   is     correct  as mentioned by    the
1810      Knowledgebase pages above.)   I don't  recall what Rose
1811      looks like with dtwm, but I suspect it's quite close to
1812      all MWWM=MWM.
1814    Next we had Klaus Zeitler report that the Rational Rose official
1815    startup script is explictly setting ALLWM to nothing.  This makes
1816    it more difficult for an individual user to set this variable.
1817    If you can, you can just modify the script, otherwise, your other
1818    alternative is to copy the script somewhere where you can modify it
1819    and run it from there.
1821 ----------------------------------------------------------------------
1823 5.15  Although I use the WIndowListSkip style for my modules they
1824       still show up in FvwmIconMan, FvwmWinList etc.
1826 A: Make sure you have
1828      *FvwmIconMan*UseWinList true
1830    in you .fvwm2rc file.  If that does not help, the modules you are
1831    using may not match the fvwm executable.  Recompile and reinstall
1832    everything and the problem should go away.
1834 ======================================================================
1835                           6 - Miscellaneous
1836 ======================================================================
1838 6.1  What exactly is the difference between a DESK, a PAGE, and the
1839      SCREEN?
1841 A: Our naming convention is sometimes a source of confusion, and when
1842    discussing problems and the like it's good to maintain a consistent
1843    meaning.  To illustrate how features of fvwm should be referred to
1844    - fvwm has multiple disjoint DESKTOPS, each of which is comprised
1845    of M by N PAGES, which are each the size of the physical SCREEN.
1846    The physical SCREEN acts as a viewport over one of the PAGES of the
1847    current DESK.  Here's a picture to clarify (also, take a look at
1848    the FvwmPager module):
1850              Desk 0                     Desk 1
1851      +----------+----------+    +----------+----------+
1852      |          |          |    |          |          |
1853      | Page 0 0 | Page 1 0 |    |          |          |
1854      |          |          |    |          |          |
1855      |          |          |    |          |          |
1856      +----------+----------+    +----------+----------+
1857      |+--------+|          |    |          |          |
1858      ||Page 0 1|| Page 1 1 |    |          |          |
1859      ||        ||          |    |          |          |
1860      |+--------+|          |    |          |          |
1861      +----------+----------+    +----------+----------+
1863    It shows two 2 x 2 DESKTOPS.  If the current DESK were number 0,
1864    and the current PAGE were 0 1, the SCREEN would show only the
1865    windows located there, plus any sticky ones.
1867    Desktops are numbered consecutively, beginning with 0.  The user is
1868    not responsible for creating new desktops, those details are
1869    handled inside fvwm.  To display the different desktops, the user
1870    can configure key bindings that determine which desktop is
1871    displayed.  For example, to have the combinations Meta-1 to Meta-4
1872    display desktop numbers 0 to 3, one would add this to .fvwm2rc:
1874      Key 1 A M GotoDesk 0
1875      Key 2 A M GotoDesk 1
1876      Key 3 A M GotoDesk 2
1877      Key 4 A M GotoDesk 3
1879    The same can be done for pages.  For example, if each desktop has
1880    a size of 2 by to pages you could bind Meta-F1 to Meta-F4 to
1881    flip pages:
1883      DeskTopSize 2x2
1884      Key F1 A M GotoPage 0 0
1885      Key F2 A M GotoPage 1 0
1886      Key F3 A M GotoPage 0 1
1887      Key F4 A M GotoPage 1 1
1889    It is also a good idea to create a pager that displays several
1890    desktops, side by side.  This command displays the first 4 desktops:
1892      Module FvwmPager 0 3
1894    Or if you prefer to see only the current desktop in the pager:
1896      Module FvwmPager * *
1898 ----------------------------------------------------------------------
1900 6.2  I'd really like {OpenWindows, NeXT, Win95, Mac, etc} look and
1901      feel.  Are you going to support that?
1903 A: This is not our primary mission, but we think fvwm does a pretty
1904    good job of producing these appearances.
1906    You may want to take a look at the
1907    _+_A HREF="http://fvwm-themes.sourceforge.net/"_-_fvwm-themes_+_/A_-_
1908    package.
1910 ----------------------------------------------------------------------
1912 6.3  Where can I get more XPMs for icons?
1914 A: If you want more color icons, grab the ones out of the ctwm
1915    distribution (also at ftp.x.org) which has a lot of nice ones.  You
1916    can also find more in other distributions at ftp.x.org, and at
1917    http://www.sct.gu.edu.au/~anthony/icons/ (which has a lot, I
1918    believe).
1920    Icons used to be distributed along with fvwm.  Now there is a basic
1921    set of icons available at the fvwm web site.  You might find some
1922    links at the fvwm web site to other sources of icons.
1924    You may want to take a look at the
1925    _+_A HREF="http://wm-icons.sourceforge.net/"_-_wm-icons_+_/A_-_
1926    package.
1928 ----------------------------------------------------------------------
1930 6.4  Linux XF86 virtual screen size & fvwm interaction...
1932 A: Turn off the Linux Virtual Screen stuff in your XF86Config file if
1933    you don't like it.  The XFree86 virtual screen feature and hardware
1934    panning support in certain video cards is a pretty useless kludge when
1935    you're using a window manager that implements virtual desktops.
1937 ----------------------------------------------------------------------
1939 6.5  I know this question doesn't have to do with FVWM, but what
1940      happened to to rxvt and rclock which Rob Nation used to support?
1941      Where can I find them now?
1943 A: The official home for rxvt is:
1945      http://www.rxvt.org/
1947    and rclock can be found in that rxvt distribution as well.
1949 ----------------------------------------------------------------------
1951 6.6  How do I set the background with fvwm?
1953 A: Setting the background image is not really part of the window
1954    manager.  If you are using one of the Linux distributions,
1955    most likely, some part of the distribution is setting the background
1956    for you.
1958    There is a program shipped with fvwm (fvwm-root, previously known as
1959    xpmroot) that you can use to set the background to XPM or PNG image.
1960    Other programs like "xv", "xli", "xloadimage", and "display" may be
1961    used too, they support some image formats that fvwm-root does not.
1963    If you just want a static image on your background, you might invoke
1964    one of these programs from your .xsession or .xinitrc file.  You can
1965    also invoke one of these programs from the InitFunction in your
1966    .fvwm2rc.
1968    The fvwm module FvwmBacker can be used to change the background
1969    depending on the desk you are currently on.
1971 ----------------------------------------------------------------------
1973 6.7  When I use Fvwm ... isn't the right color.  Whats wrong?
1975 A: Under this heading we've had questions about FvwmForm being all
1976    white, icons not displaying and messages about being unable to
1977    allocate colors.
1979    Older hardware uses something called 8 bit color.  You can also
1980    misconfigure newer hardware so that its only using 8 bit color.
1981    When you use 8 bit color, your display can only have 256 colors on
1982    it at once.
1984    This is explained in excruciating detail in the
1985    _+_A HREF="http://www.sunhelp.org/faq/FrameBuffer.html"_-_Frame Buffer FAQ_+_/A_-_
1987    If your display can support more than 256 colors, that's the way to
1988    go.  Look up the documentation for your X server.  You may want to
1989    start with "man X".
1991    If you are stuck with 8 bit color, fvwm can help.  In the 2.2.x
1992    releases, you can use the "ColorLimit" command to reduce the number
1993    of colors Fvwm uses in icons.  In the 2.3.x releases and later,
1994    ColorLimiting is automatic, but you still might want to use this
1995    command to further reduce color use.
1997    Other things you may want to do:
1999    - Always run Netscape with the "-install" argument.
2001    - If you use an image on your screen background, reduce the number
2002      of colors it uses.  For xv add the "-nc nn" argument.  For
2003      xli use the "-colors nn" argument.
2005    - Don't use color gradients.
2007    - Some applications are color hungry.  Beware of anything TK based,
2008      and FrameMaker in its default setting.
2010    If you still have problems after this, try the fvwm mailing list.
2012 ----------------------------------------------------------------------
2014 6.8  I just got a mouse with 57 buttons.  How do I make Fvwm use them?
2016 A: OK, 93 is a joke, we know you don't have 93 buttons, but we've
2017    seen reports of up to 7 so far.  Starting with Fvwm 2.4.0
2018    Fvwm supports all five mouse buttons that X officially
2019    supports.  To increase the number of buttons that Fvwm can handle,
2020    you have to modify the file libs/defaults.h:
2022    Replace
2024      #define NUMBER_OF_MOUSE_BUTTONS               5
2026    with
2028      #define NUMBER_OF_MOUSE_BUTTONS               7
2030    and recompile and reinstall fvwm.  However, the buttons with numbers
2031    higher than 5 do not work as well as 1 to 5.  This is because X
2032    does not provide the necessary interface to handle more that 5
2033    buttons in all functions.  This means that some functionality is
2034    not available with buttons 6 and higher.
2036    The maximum possible number you can use is 31.  Any higher value
2037    will probably not work and possibly even crash fvwm or its modules.
2039 ======================================================================
2040               7 - Hints and Examples from the Developers
2041 ======================================================================
2043 7.1  An easy way to test new configurations.
2045    Did you know that you do not need to restart X or fvwm to see what
2046    most configuration commands do? There are several modules
2047    that allow you to issue fvwm commands at any time.  Among
2048    these are FvwmCommand, "FvwmForm FvwmForm-Talk" and FvwmConsole.
2049    Personally I use FvwmCommand and FvwmConsole.
2051    When you run FvwmConsole you get a shell like window where you can
2052    type configuration commands that are sent to fvwm.  Just add an
2053    entry to some menu that starts it:
2055      AddToMenu main_menu
2056       + "FvwmConsole" Module FvwmConsole
2058    Using FvwmCommand is a bit more tricky.  To use it you need to start
2059    a server in your .fvwm2rc by adding this line:
2061      Module FvwmCommandS
2063    Make sure FvwmCommand is in your search path.  Now you can enter
2064    commands on the command line of your favorite shell:
2066      FvwmCommand "MenuStyle * Font 6x9"
2068    Note that you have to quote the command.  The advantage of
2069    FvwmCommand over FvwmConsole is that you can use your shell with
2070    all its features to run commands (command completion and history
2071    for example).  The disadvantage is that it is a bit slow since a new
2072    FvwmCommand has to be started for each command.
2074    Other related modules and commands are FvwmScript and PipeRead.
2076 ----------------------------------------------------------------------
2078 7.2  Using shell commands for configuration.
2080    Sometimes you might want to use the output of a shell command or
2081    script in your .fvwm2rc.  For example you might need a menu that has
2082    all filenames in a certain directory as its entries.  You can use
2083    the PipeRead command and the FvwmCommand module.  I recommend using
2084    PipeRead since creating twenty menu items takes a considerable
2085    amount of time with FvwmCommand.
2087    Example from my .fvwm2rc:
2089      # make the background menu
2090      AddToFunc MakeBackgroundMenu
2091       + "I" DestroyMenu BackgroundMenu
2092       + "I" AddToMenu BackgroundMenu Backgrounds Title
2093       + "I" PipeRead 'for i in `/bin/ls $HOME/.fvwm2/backgrounds/*.bg.*`; \
2094             do echo -e AddToMenu BackgroundMenu `basename $i | sed -e \
2095             "s/\.bg\..*$//"` Function SetDefaultBackground $i; done'
2097      # set the default background
2098      AddToFunc SetDefaultBackground
2099       + "I" Exec echo -e $0 > $HOME/.fvwm2/background
2100       + "I" Function SetBackground
2102      # set a new background
2103      AddToFunc SetBackground
2104       + "I" Exec test -r $HOME/.fvwm2/background && xv -root -quit -viewonly \
2105             `cat $HOME/.fvwm2/background|tr -d "\n"`
2107      # activate setting from last session and build the menu
2108      AddToFunc InitFunction
2109       + "I" Function SetBackground
2110       + "I" Function MakeBackgroundMenu
2113    The MakeBackgroundMenu function builds a menu that contains an item
2114    for every file that matches the pattern "*.bg.*" in the directory
2115    $HOME/.fvwm2/backgrounds.  The suffix .bg.* is removed.  When I
2116    select an item the file is displayed in the background using xv.
2117    Furthermore the path and filename are stored in
2118    $HOME/.fvwm2/background.  When I start my next fvwm session the
2119    filename is fetched from there so I get the background from my last
2120    session.
2122    I have an even more complex setup for color palettes.
2124 ----------------------------------------------------------------------
2126 7.3  How to start applications on a page or desk other than the current.
2128    Use the 'StartsOnDesk' or 'StartsOnPage' style in your .fvwm2rc:
2130      Style Netscape* StartsOnPage 0 1
2132    or
2134      Style Netscape* StartsOnDesk 1
2136    Any window with a title that begins with 'Netscape' will be placed
2137    on page 0 1 (desk 1).  You will probably want to use these options
2138    too:
2140      Style * RecaptureHonorsStartsOnPage, CaptureHonorsStartsOnPage
2142    If you want to start applications on a different page in the
2143    background without switching to this page, use the 'SkipMapping'
2144    style:
2146      Style Netscape* StartsOnPage 0 1, SkipMapping
2148 ----------------------------------------------------------------------
2150 7.4  How to start applications on a page or desk other than the current
2151      without moving the viewport to the new page or desk.
2153    Use the SkipMapping style:
2155      Style Netscape* StartsOnPage 0 1, SkipMapping
2157 ----------------------------------------------------------------------
2159 7.5  A more efficient MWM menu style.
2161    Perhaps you have noticed that with the MWM menu style your sub
2162    menus are shown as soon as the pointer enters their menu items, even
2163    if you just want to scroll down the list.  You can prevent this with
2164    the 'PopupDelay' and 'PopupDelayed' options of the MenuStyle
2165    command:
2167      MenuStyle mwm
2168      MenuStyle PopupDelayed, PopupDelay 80
2170    The sub menu will be shown 80 milliseconds after the pointer enters
2171    the menu item.  You will hardly notice the delay.  Note that 80 ms
2172    is just long enough to move through the menu with auto repeat on my
2173    cursor keys.  You may have to experiment with this number to get it
2174    right.
2176 ----------------------------------------------------------------------
2178 7.6  Placing menus on the screen.
2180    Do you have to close windows or move the pointer all over the
2181    screen to find some part of the background where you can bring up
2182    your main menu (or any other root menu)?
2184    Then you should use a keyboard shortcut.  For example
2186      Key  space A M   Menu root c c main_menu
2188    in your .fvwm2rc gives you the menu 'main_menu' in the center of
2189    the screen when you press Alt-space.  Or you might want a shortcut
2190    to the window menu:
2192      Key  space A SM  Menu root c c WindowMenu
2194    You can place menus anywhere you like, not just where the mouse
2195    pointer is.  Please read the section for the 'Menu' command in the
2196    man page.
2198 ----------------------------------------------------------------------
2200 7.7  Are you flipping pages by accident when moving the mouse close to
2201      the border of the screen?
2203    You can disable page flipping with the EdgeScroll command:
2205      EdgeScroll 0 0
2207    in your .fvwm2rc turns it off.
2209 ----------------------------------------------------------------------
2211 7.8  Lining up your windows and icons.
2213    The SnapAttraction and SnapGrid commands really help to keep your
2214    desktop tidy.  With SnapAttraction windows (or icons or both) are
2215    'attracted' to each other.  When you drag a window (icon) and it
2216    comes close to another window (icon) it clings to it without a gap
2217    between the borders.  Put this command in your .fvwm2rc:
2219      SnapAttraction 8 SameType
2221    This means windows cling to other windows if they get closer than
2222    8 pixels and icons cling to icons.  Or if you just want it for
2223    windows/icons use
2225      SnapAttraction 8 Windows
2227    or
2229      SnapAttraction 8 Icons
2231    Or if you want icons to cling to windows and vice versa:
2233      SnapAttraction 8 All
2236    The SnapGrid command is a big help too:
2238      SnapGrid 8
2240    in your .fvwm2rc tells fvwm to use a grid of 8 pixels to place
2241    windows and icons.  Try it and see if you like it.
2243    Hint: It might be a good idea to use a divisor of your desktop
2244    width and height for SnapGrid.
2246 ----------------------------------------------------------------------
2248 7.9  Moving the mouse/focus/page with the keyboard.
2250    Try these key bindings for mouse movement:
2252      # shift-<direction> to move a few pixels
2253      Key   Left   A   S   CursorMove -1 0
2254      Key   Right  A   S   CursorMove +1 +0
2255      Key   Up     A   S   CursorMove +0 -1
2256      Key   Down   A   S   CursorMove +0 +1
2258      # shift-meta-<direction> to move 1/4 page
2259      Key   Left   A   SM  Scroll -25 +0
2260      Key   Right  A   SM  Scroll +25 +0
2261      Key   Up     A   SM  Scroll +0  -25
2262      Key   Down   A   SM  Scroll +0  +25
2264    or these to flip pages
2266      # shift-control-<direction> to move a full page
2267      Key   Left   A   SC  CursorMove -10 +0
2268      Key   Right  A   SC  CursorMove +10 +0
2269      Key   Up     A   SC  CursorMove +0  -10
2270      Key   Down   A   SC  CursorMove +0  +10
2272      # Alt-Fn to go to a specific page (like on the Linux console)
2273      Key F1 A M GotoPage 0 0
2274      Key F2 A M GotoPage 1 0
2275      Key F3 A M GotoPage 0 1
2276      Key F4 A M GotoPage 1 1
2278    or to change the focus to a window in a specific direction:
2280      # number keys on keypad to move the focus
2281      Key KP_1 A C Direction SouthWest Focus
2282      Key KP_2 A C Direction South Focus
2283      Key KP_3 A C Direction SouthEast Focus
2284      Key KP_4 A C Direction West Focus
2285      Key KP_6 A C Direction East Focus
2286      Key KP_7 A C Direction NorthWest Focus
2287      Key KP_8 A C Direction North Focus
2288      Key KP_9 A C Direction NorthEast Focus
2290 ----------------------------------------------------------------------
2292 7.10  The cat safe desktop ^_^
2294    If your cats keep stepping on your keyboard while you are brewing
2295    another cup of coffee, one of these hints may help:
2297      Use 'Style * MouseFocus' and move the mouse pointer over the
2298      background when you go away.
2300      If you can't do without your 'SloppyFocus' you can move the
2301      mouse pointer into a window that takes no keyboard input and
2302      give it the focus (e.g. FvwmButtons or a console message
2303      window).  A true fanatic creates a separate window with a picture
2304      of his cat for this ^_^
2306 ----------------------------------------------------------------------
2308 7.11  Lowering and moving windows.
2310    In some configurations moving a window with the middle mouse
2311    button lowers the window after moving it.  Lowering it before
2312    moving gives you a nice visual effect:
2314      Mouse  2 T A  Function MoveOrLower
2316      AddToFunc MoveOrLower
2317       + "Click"         Lower
2318       + "Motion"        Lower
2319       + "Motion"        Move
2320       + "DoubleClick"   Lower
2322 ----------------------------------------------------------------------
2324 7.12  Toggling windows on and off.
2326    It is often desirable to have a menu item or perhaps a button in
2327    FvwmButtons or FvwmWharf that launches an application when used
2328    the first time and closes it if used a second time.  Although it
2329    is not obvious how to do this, it is possible.  Let's assume you
2330    need a menu item that toggles an FvwmConsole window on and off.
2331    Then put the following lines in your .fvwm2rc:
2333      AddToFunc ToggleFvwmConsole
2334      + I None (FvwmConsole, CirculateHit) Module FvwmConsole
2335      + I Next (FvwmConsole, CirculateHit, CurrentPage, Visible) Close
2336      + I Next (FvwmConsole, CirculateHit) MoveToDesk
2337      + I Next (FvwmConsole, CirculateHit) MoveToPage
2338      + I Next (FvwmConsole, CirculateHit) Raise
2340      AddToMenu <some menu>
2341      + "toggle FvwmConsole" Function ToggleFvwmConsole
2343    Or if you prefer a button in the button bar:
2345      *FvwmButtons: (Action ToggleFvwmConsole)
2347    The lines with MoveToDesk, MoveToPage and Raise will bring the
2348    window to the top of the current page if it is not visible
2349    instead of closing it.
2351    If you want to toggle one specific window, e.g. an xterm, but
2352    still want to have other xterms that are not toggled, you must
2353    give the window an unique name:
2355      AddToFunc ToggleXMessages
2356      + I None (XMessages, CirculateHit) Exec exec \
2357         xterm -T XMessages -n XMessages -e tail -f /var/adm/?* ~/.X.err
2358      + I Next (XMessages, CirculateHit) Close
2360    (CirculateHit is needed for windows with Style CirculateSkip.)
2361    Or for a toggling Netscape button:
2363      AddToFunc ToggleNetscape
2364      + I None (Navigator) Exec exec netscape
2365      + I All (Navigator) Close
2367    Keep in mind that these functions simply check if a window with
2368    the specified name exists.  They will happily close manually
2369    opened windows or launch an application multiple times if the
2370    application is slow to start (e.g. like netscape).
2372 ----------------------------------------------------------------------
2374 7.13  How do I start applications by clicking on an icon.
2376    Normally an icon represents a minimized application.
2377    If you want to turn that around, and launch applications by clicking
2378    on icons we can't stop you.  Heres a way to do that using
2379    FvwmButtons:
2381      # FvwmButtons icon launcher:
2382      DestroyFunc Launcher
2383      AddToFunc Launcher
2384      + I DestroyModuleConfig $0Launch: *
2385      + I *$0Launch: Geometry 64x68
2386      + I *$0Launch: Columns 1
2387      + I *$0Launch: Rows    4
2388      + I *$0Launch: Frame   0
2389      + I *$0Launch: (1x3+0+0, Icon $1, Action (Mouse 1) `Exec $2`)
2390      + I *$0Launch: Pixmap none
2391      + I *$0Launch: (1x1+0+3, Font 9x15, Fore White, Back DarkBlue, \
2392                     Title $0, Action (Mouse 1) `Exec $2`)
2393      + I Style $0Launch HandleWidth 0, NoTitle
2394      + I Module FvwmButtons $3 $0Launch
2395      # Examples:
2396      Launcher RXVT xterm.xpm "rxvt -bg black" "-g +0+0"
2397      Launcher XV   xv.xpm    "xv"   "-g +0+100"
2399    Also, GNOME and KDE have desktop icon applications gmc and kfm, which
2400    enable this functionality.  These applications may be run under FVWM.
2402 ----------------------------------------------------------------------
2404     7.14  How do I define the hot-spot in an XPM cursor.
2406    Fvwm allows you to use a pixmap as a mouse cursor.  For example,
2407    the command:
2409      CursorStyle ROOT xterm.xpm
2411    Sets the root mouse cursor to the image of a terminal.
2412    Normally the actual pixel the mouse cursor points to is the center
2413    of the pixmap.  This pixel in the mouse cursor is called the
2414    hot-spot.  If you want the hot-spot to be somewhere other than
2415    the center of the image, you can use a GUI that supports setting
2416    the hot-spot, or you can edit the XPM file with an editor.
2418    If the XPM image is in version 3 format, there's a line that contains
2419    the width, height, number of colors and the characters per color
2420    in the image:
2422      static char * image_name [] = {
2423      "64 38 8 1",
2425    To put the hot-spot in the upper left, change this to:
2427      static char * image_name [] = {
2428      "64 38 8 1 0 0 XPMEXT",
2430    Notice that the hot-spot is an offset, relative to zero.