fvwm - F(?) Virtual Window Manager for X11
SYNOPSIS
fvwm [ options ]
DESCRIPTION
Fvwm is a window manager for X11. It is a derivative of
twm, redesigned to minimize memory consumption, provide a
3-D look to window frames, and provide a simple virtual
desktop. Memory consumption is estimated at about one-
half to one-third the memory consumption of twm, due pri-
marily to a redesign of twm's method of storing mouse
bindings. In addition, many of the configurable options of
twm have been removed.
The name "FVWM" used to stand for something, but I forgot
what. (Feeble, famous, foobar? It doesn't really matter,
this is an acronym based society anyway.)
SPECIAL NOTE FOR XFREE86 USERS
XFree86 provides a virtual screen whose operation can be
confusing when used in conjunction with fvwm. With XFree86
all windows which appear on the virtual screen actually
get drawn into video memory (whether or not they appear on
the physical screen), so the virtual screen size is lim-
ited by available video memory.
With fvwm's virtual desktop, windows which do not appear
on the screen do not actually get drawn into video RAM.
The size of the virtual desktop is limited to about 32,000
by 32,000 pixels, but it is probably impractical to use a
virtual desktop more than about 5 times the visible screen
in each direction. Note that memory usage is a function
of the number of windows which exist - the size of the
desktop makes no difference.
When becoming familiar with fvwm it is recommended that
you disable XFree86's virtual screen by setting the vir-
tual screen size to the physical screen size. After you
become familiar with fvwm you may want to re-enable
XFree86's virtual screen.
COPYRIGHTS
Since fvwm is derived from twm code it shares twm's copy-
rights.
fvwm is copyright 1988 by Evans and Sutherland Computer
Corporation, Salt Lake City, Utah, and 1989 by the Mas-
sachusetts Institute of Technology, Cambridge, Mas-
sachusetts, All rights reserved. It is also copyright 1993
ware and its documentation for any purpose and without fee
is hereby granted, provided that the above copyright
notice appear in all copies and that both that copyright
notice and this permission notice appear in supporting
documentation, and that the names of Evans & Sutherland
and M.I.T. not be used in advertising in publicity per-
taining to distribution of the software without specific,
written prior permission.
ROBERT NATION, EVANS & SUTHERLAND, AND M.I.T. DISCLAIM ALL
WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
EVENT SHALL EVANS & SUTHERLAND OR M.I.T. BE LIABLE FOR ANY
SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TOR-
TUOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
OR PERFORMANCE OF THIS SOFTWARE.
ANATOMY OF A WINDOW
Fvwm puts a decorative border around most windows. This
border consists of a bar on each side and a small "L"
shaped section on each corner. There is an additional top
bar called the title bar which is used to display the name
of the window. In addition, there are up to 10 title-bar
buttons. The top, side, and bottom bars are collectively
known as the side-bars. The corner pieces are called the
frame.
Unless the standard defaults files are modified, pressing
mouse button 1 in the title or side-bars will begin a move
operation on the window. Pressing button 1 in the corner
frame pieces will begin a resize operation. Pressing but-
ton 2 anywhere in the border brings up an extensive list
of window operations.
Up to ten title-bar buttons may exist. Their use is com-
pletely user definable. The default configuration has a
title-bar button on each side of the title-bar. The one on
the left is used to bring up a list of window options,
regardless of which mouse button is used. The one on the
right is used to iconify the window. The number of title-
bar buttons used depends on which ones have mouse actions
bound to them. See the section on the "Mouse" configura-
tion parameter below.
THE VIRTUAL DESKTOP
Fvwm provides multiple virtual desktops for users who wish
to use them. The screen is a viewport onto a desktop which
one desktop for each application, when view applications
are distinct). Since each desktop can be larger than the
physical screen, windows which are larger than the screen
or large groups of related windows can easily be viewed.
The size of the virtual desktops can be specified at
start-up. All virtual desktops must be the same size. The
total number of distinct desktops need not be specified,
but is limited to approximately 4 billion total. All win-
dows on the current desktop can be displayed in a Pager, a
miniature view of the current desktop. Windows which are
not on the current desktop can be listed, along with their
geometries, in a window list, accessible as a pop-up menu.
"Sticky" windows are windows which transcend the virtual
desktop by "Sticking to the screen's glass." They always
stay put on the screen. This is convenient for things
like clocks and xbiff's, so you only need to run one such
gadget and it always stays with you.
Window geometries are specified relative to the current
viewport. That is:
xterm -geometry +0+0
will always show up in the upper-left hand corner of the
visible portion of the screen. It is permissible to spec-
ify geometries which place windows on the virtual desktop,
but off the screen. For example, if the visible screen is
1000 by 1000 pixels, and the desktop size is 3x3, and the
current viewport is at the upper left hand corner of the
desktop, then invoking:
xterm -geometry +1000+1000
will place the window just off of the lower right hand
corner of the screen. It can be found by moving the mouse
to the lower right hand corner of the screen and waiting
for it to scroll into view. There is currently no way to
cause a window to map onto a desktop other than the cur-
rently active desk.
A geometry specified as something like:
xterm -geometry -5-5
will generally place the window's lower right hand corner
5 pixels from the lower right corner of the visible por-
tion of the screen. Not all applications support window
geometries with negative offsets.
Some applications, like xterm and xfontsel, allow the user
xterm -xrm "*Desk:1"
will start an xterm on desk number 1. Not all applications
understand this option, however.
INITIALIZATION
During initialization, fvwm will search for a configura-
tion file which describes key and button bindings, and a
few other things. The format of these files will be
described later. First, fvwm will search for a file named
.fvwmrc in the users home directory. Failing that, it will
look for /usr/lib/X11/fvwm/system.fvwmrc for system-wide
defaults. If that file is not found, fvwm will exit.
Fvwm will set two environment variables which will be
inherited by its children. These are $DISPLAY which
describes the display on which fvwm is running. $DISPLAY
may be unix:0.0 or :0.0, which doesn't work too well when
passed through rsh to another machine, so $HOSTDISPLAY
will also be set and will use a network-ready description
of the display. $HOSTDISPLAY will always use the TCP/IP
transport protocol (even for a local connection) so $DIS-
PLAY should be used for local connections, as it may use
Unix-domain sockets, which are faster.
SHAPED WINDOWS
If you typically use shaped windows such as xeyes or
oclock, you have several options. You can make them all
undecorated (NoBorder oclock and NoTitle oclock, for exam-
ple) or you can use the default configuration and leave
them decorated, in which case a decorative border and a
solid-color backdrop are shown. Alternately, you can com-
pile in the SHAPE extensions by changing a flag in the
Makefile, in which case you get the shaped window with no
backdrop, and a title bar floats above the window. The
shaped window extensions increase the window manager's
memory consumption by about 60 Kbytes when no shaped win-
dows are present but have little effect when shaped win-
dows are present.
ICONS
The basic Fvwm configuration uses monochrome bitmap icons,
similar to twm. If XPM extensions are compiled in, then
color icons similar to ctwm, MS-Windows, or the Macintosh
icons can be used. In order to use these options you will
need the XPM package, as described in the Makefile.noImake
and the Imakefile.
MODULES
A module is a separate program which runs as a separate
Unix process but transmits commands to fvwm to execute.
Future releases are expected to provide a means for these
modules to extract window information from fvwm. Users
can write their own modules to do any weird or bizarre
manipulations without affecting the integrity of fvwm
itself.
Modules MUST be spawned by fvwm so that it can set up two
pipes for fvwm and the module to communicate with. The
pipes will already be open for the module when it starts
and the file descriptors for the pipes are provided as
command line arguments.
Modules can be spawned during fvwm initialization via the
Module option, or at any time during the X session by use
of the Module built-in. Modules can exist for the duration
of the X session, or can perform a single task and exit.
If the module is still active when fvwm is told to quit,
then fvwm will close the communication pipes and wait to
receive a SIGCHLD from the module, indicating that it has
detected the pipe closure and has exited. If modules fail
to detect the pipe closure fvwm will exit after approxi-
mately 30 seconds anyway. The number of simultaneously
executing modules is limited by the operating system's
maximum number of simultaneously open files, usually
between 60 and 256.
Modules simply transmit text commands to the fvwm built-in
command engine. Text commands are formatted just as in the
case of a mouse binding in the .fvwmrc setup file. Certain
auxiliary information is also transmitted, as in the sam-
ple module GoodStuff. The GoodStuff module is documented
in its own man page.
ICCCM COMPLIANCE
Fvwm attempts to be ICCCM 1.1 compliant. As of this
(1.20l) colormap handling is not completely ICCCM compli-
ant. In addition, ICCCM states that it should be possible
for applications to receive ANY keystroke, which is not
consistent with the keyboard shortcut approach used in
fvwm and most other window managers.
M4 PREPROCESSING
If fvwm is compiled with the M4 option, fvwm uses m4(1) to
preprocess its setup files before parsing. This way you
can use m4 macros to perform operations at runtime. This
For example, depending on your mood, you might want dif-
ferent color schemes. One way of doing this is by using
the -m4opt to specify your mood. For a sunny mood use
-m4opt -DSunny; for a dark mood use -m4opt -DDark. Your
.fvwmrc file might then contain:
ifdef(`Sunny',`
StdForeColor Black
StdBackColor LightSkyBlue
HiForeColor yellow
HiBackColor PeachPuff1
PagerBackColor BlanchedAlmond ')
ifdef(`Dark',`
StdForeColor Black
StdBackColor #60a0c0
HiForeColor black
HiBackColor #c06077
PagerBackColor #5c54c0
PagerForeColor orchid
StickyForeColor Black
StickyBackColor #60c0a0 ')
The following m4 symbols are predefined by fvwm:
BITS_PER_RGB The number of significant bits in
an RGB color. (log base 2 of the
number of distinct colors that can
be created. This is often differ-
ent from the number of colors that
can be displayed at once.)
CLASS Your visual class. Will return
one of StaticGray, GrayScale,
StaticColor, PseudoColor, True-
Color, DirectColor, or, if it can-
not determine what you have, Non-
Standard.
CLIENTHOST The machine that is running the
clients.
COLOR This will be either 'Yes' or 'No'.
This is just a wrapper around the
CLASS definition. Returns 'Yes'
on *Color and 'No' on StaticGray
and GrayScale.
FVWMDIR This is set to the path where the
modules were configured to be
version of fvwm.
HEIGHT The height of your display in pix-
els.
HOME The user's home directory.
Obtained from the environment.
HOSTNAME The canonical hostname running the
clients (ie. a fully-qualified
version of CLIENTHOST).
OPTIONS This is a string of compile time
options used. Each option is sep-
arated from the other by a space.
PLANES The number of bit planes your dis-
play supports in the default root
window.
RELEASE The release number of your X
server. For MIT X11R5 this is 5.
REVISION The X minor protocol revision. As
seen by ProtocolRevision(3).
SERVERHOST This variable is set to the name
of the machine that is running the
X server.
TWM_TYPE Tells which twm offshoot is run-
ning. It will always be set to
the string "fvwm" in this program.
This is useful for protecting
parts of your .twmrc file that
fvwm proper won't understand (like
WorkSpaces) so that it is still
usable with other twm programs.
USER The name of the user running the
program. Obtained from the envi-
ronment.
VENDOR The vendor of your X server. For
example: MIT X Consortium.
VERSION The X major protocol version. As
seen by ProtocolVersion(3).
WIDTH The width of your display in pix-
els.
Y_RESOLUTION The Y resolution of your display
in pixels per meter.
You may well find that if you research the m4(1) manual
well and understand the power of m4, this will be a very
useful and powerful tool. But if you use any of the sym-
bols which are predefined by m4, you are in severe danger!
For example, Sun's m4 predefines include, so if you use
that name in your .fvwmrc, you are out of luck. The cor-
rect solution to this problem is to put a set of quotes
around the troublesome word: `include'.
To help alleviate this problem, the following options may
be useful. To change the quoting characters used by m4,
use the options -m4-squote and -m4-equote. Be sure to
specify both options otherwise m4 will be confused. When
these are given, a changequote macro is given before the
users fvwmrc file is processed.
NOTE: Some versions of m4 are broken with respect to
changing quoting characters and included files. When the
quoting strings are longer than one character, the macro
"include(<<file>>)", where "<<" and ">>" are the quoting
characters, contains extra characters around the contents
of the included file. This will confuse fvwm. SunOS
4.1.3 is known to have this problem.
If you are using GNU m4 an additional option is available.
By specifying -m4-prefix when starting fvwm, m4 is
instructed to prefix all builtin macros with m4_. Thus,
include becomes m4_include.
The availability of the m4 preprocessing is subject to the
compilation define M4.
OPTIONS
These are the command line options that are recoginzed by
fvwm:
-f config_file
Causes fvwm to use config_file in the user's home
directory instead of .fvwmrc as the window manager
configuration file.
-debug Puts X transactions in synchronous mode, which dra-
matically slows things down, but guarantees that
fvwm's internal error messages are correct.
-d displayname
Manage the display called "displayname" instead of
-s On a multi-screen display, run fvwm only on the
screen named in the $DISPLAY environment variable
or provided through the -d option. Normally, fvwm
will attempt to start up on all screens of a multi-
screen display.
-version
Print the version of fvwm to stderr.
The following options are available only if fvwm is com-
piled with the M4 option.
-no-m4 Do not use m4 to preprocess the .fvwmrc. The
default is to preprocess the startup file using
m4(1).
-m4-prefix
If GNU m4 is available, cause m4 to prefix all
builtin commands with m4_.
-m4opt option
Pass this option to m4. The option can be any
string of characters without spaces. This option
can occur multiple times. If GNU m4 is available,
DO NOT pass the -P option here. Use -m4-prefix
instead.
-m4-squote string
Use this given string as the starting quote charac-
ters. You must also specify -m4-equote.
-m4-equote string
Use this given string as the ending quote charac-
ters. You must also specify -m4-squote.
-m4prog path
Use path as the location of the desired m4 proces-
sor. By default, m4prog is set to "m4" which must
exist somewhere on the user's path. This option
allows the user to explicitly choose the version of
m4 to use.
CONFIGURATION FILES
The configuration file is used to describe mouse and but-
ton bindings, colors, the virtual display size, and
related items. This section describes the configuration
options. Lines beginning with '#' will be ignored by fvwm.
Lines starting with '*' are expected to contain module
configuration commands (rather than configuration commands
for fvwm itself).
Causes application windows to request backing
store. This option compromises the ICCCM compliance
of the window manager. While this option can speed
things up in an X-terminal, where redraws of win-
dows are expensive, it may not help much on regular
workstations.
AutoRaise delay
Enables auto-raising of windows and specifies the
time delay (in milliseconds) between when a window
acquires the input focus and when it is automati-
cally raised. This option works in focus-follows-
mouse mode, and in click-to-focus mode if the focus
is changed by clicking in the application window
instead of a decoration window. In click-to-focus
mode, you can suppress the raise-on-focus behavior
by specifying a negative delay value.
BackingStore
Causes fvwm decorations to request backing store.
See the discussion on AppsBackingStore.
BoundaryWidth Width
Changes the boundary width on decorated windows to
the specified value. The default is 6 pixels.
The Style command provides another (more general)
method for specifying BoundaryWidth.
ButtonStyle button# WidthxHeight
Defines the rectangular decoration shape to be used
in a title-bar button. button# is the title-bar
button number, and is between 0 and 9. A descrip-
tion of title-bar button numbers is given in the
Mouse section below. Width is the percentage of
the full button width which is to be used. Height
is the percentage of the full height to be used.
Negative numbers cause the shading to be inverted.
And that's not all! If you use a line like:
ButtonStyle : 2 4 50x30@1 70x70@0 30x70@0 50x30@1
then the button 2 decoration will use a 4-point
pattern consisting of a line from (x=50,y=30) to
(70,70) in the shadow color (@0), and then to
(30,70) in the shadow color, and finally to (50,30)
in the highlight color (@1). Is that too confusing?
When circulating, the desktop page containing the
window which the pointer is moving to is automati-
cally selected. If CenterOnCirculate is selected
then fvwm will do its best to center the target
window in the desktop viewport, rather than just
lining up to the closest page.
CirculateSkip windowname
Causes windows with the indicated name to be
skipped over when the circulate-up or circulate-
down functions are invoked. windowname can be a
window's name or its class.
The Style command provides another (more general)
method for specifying CirculateSkip.
CirculateSkipIcons
Causes circulate and warp operations to skip over
iconified windows.
ClickTime delay
Specifies the maximum delay (in milliseconds)
between a button press and a button release for the
Function built-in to consider the action a mouse
click. The default delay is 150 milliseconds.
ClickToFocus
Normally keyboard input goes to the window the
mouse pointer is in. If this option is set the key-
board input stays with one window until the mouse
is clicked with the pointer positioned in a new
window.
Cursor cursor_num cursor_type
This provides a very awkward way of changing cursor
styles. Cursor_num tells which cursor you are
changing, and is a number between 0 and 12, as fol-
lows:
0 POSITION - used when initially placing windows.
1 TITLE - used in a window title-bar.
2 DEFAULT - used in windows that don't set their cursor.
3 SYS - used in one of the title-bar buttons.
4 MOVE - used when moving or resizing windows.
5 WAIT - used during an EXEC builtin command.
6 MENU - used in menus.
7 SELECT - used for various builtin commands such as iconify.
10 RIGHT - used in the right side-bar of a window.
11 BOTTOM - used in the bottom side-bar of a window.
12 LEFT - used in the left side-bar of a window.
13 TOP_LEFT - used in the top left corner of a window.
14 TOP_RIGHT - used in the top right corner of a window.
15 BOTTOM_LEFT - used in the bottom left corner of a window.
16 BOTTOM_RIGHT - used in the bottom right corner of a window.
The cursor_type argument is a number which tells
the cursor shape to use. The available numbers can
be found in /usr/include/X11/cursorfont.h and are
currently even numbers between 0 and 152. At the
current time, the following cursor types are avail-
able:
0 X_cursor 2 arrow
4 based_arrow_down 6 based_arrow_up
8 boat 10 bogosity
12 bottom_left_corner 14 bottom_right_corner
16 bottom_side 18 bottom_tee
20 box_spiral 22 center_ptr
24 circle 26 clock
28 coffee_mug 30 cross
32 cross_reverse 34 crosshair
36 diamond_cross 38 dot
40 dotbox 42 double_arrow
44 draft_large 46 draft_small
48 draped_box 50 exchange
52 fleur 54 gobbler
56 gumby 58 hand1
60 hand2 62 heart
64 icon 66 iron_cross
68 left_ptr 70 left_side
72 left_tee 74 leftbutton
76 ll_angle 78 lr_angle
80 man 82 middlebutton
84 mouse 86 pencil
88 pirate 90 plus
92 question_arrow 94 right_ptr
96 right_side 98 right_tee
100 rightbutton 102 rtl_logo
104 sailboat 106 sb_down_arrow
108 sb_h_double_arrow 110 sb_left_arrow
112 sb_right_arrow 114 sb_up_arrow
116 sb_v_double_arrow 118 shuttle
120 sizing 122 spider
124 spraycan 126 star
128 target 130 tcross
132 top_left_arrow 134 top_left_corner
136 top_right_corner 138 top_side
140 top_tee 142 trek
144 ul_angle 146 umbrella
DecorateTransients
Causes transient windows, which are normally left
undecorated, to be given the usual fvwm decora-
tions. Note that some pop-up windows, such as the
xterm menus, are not managed by the window manager
and still do not receive decorations.
DeskTopScale Scale
Defines the virtual desktop scale with respect to
the screen.
DeskTopSize HorizontalxVertical
Defines the virtual desktop size in units of the
physical screen size.
DontMoveOff
Prevents windows from being moved off or initially
placed off of the desktop. A few programs will not
work correctly if you use this option. This only
keeps windows from being completely lost off the
edge of the desktop. It insists on keeping 16 pix-
els on the desktop but doesn't care a bit about
keeping the whole window on the desk. See EdgeRe-
sistance if you don't like having windows partially
off the screen.
EdgeResistance scrolling moving
Tells how hard it should be to change the desktop
viewport by moving the mouse over the edge of the
screen and how hard it should be to move a window
over the edge of the screen.
The first parameter tells how milliseconds the
pointer must spend on the screen edge before fvwm
will move the viewport. This is intended for people
who use "EdgeScroll 100 100" but find themselves
accidentally flipping pages when they don't want
to.
The second parameter tells how many pixels over the
edge of the screen a window's edge must move before
it actually moves partially off the screen.
Note that, with "EdgeScroll 0 0", it is still pos-
sible to move or resize windows across the edge of
impossible. With EdgeResistance less than 10000 but
greater than 0 moving over pages becomes difficult
but not impossible.
EdgeScroll horizontal vertical
Specifies the percentage of a page to scroll when
the cursor hits the edge of a page. If you don't
want any paging or scrolling when you hit the edge
of a page include "EdgeScroll 0 0" in your .fvwmrc
file. If you want whole pages, use "EdgeScroll 100
100". Both horizontal and vertical should be posi-
tive numbers.
If the horizontal and vertical percentages are mul-
tiplied by 1000 then scrolling will wrap around at
the edge of the desktop. If "EdgeScroll 100000
100000" is used fvwm will scroll by whole pages,
wrapping around at the edge of the desktop.
Font fontname
Makes fvwm use font fontname instead of "fixed" for
menus, the resize indicators, and icon labels (if
IconFont is not specified).
Function FunctionName
Starts the definition of a complex function, com-
posed of the fvwm built-in functions, which will
later be bound to a mouse button or key. Function-
Name must be enclosed in quotes. Function entries
are included on lines following the Function key-
word. The definition ends with the key word End-
Function. Function entries are specified as shown
in the following example. The first word on each
line is the built-in function which will be per-
formed, followed the type of event which should
trigger the action (enclosed in quotes), followed
by any additional arguments needed by the built-in
function. Menus can be specified by using the Popup
built-in as long as the menu was defined earlier in
the configuration file.
The trigger actions which are recognized are Imme-
diate, Motion, Click, and DoubleClick. Immediate
actions are executed as soon as the function is
activated, even if a window has not been selected.
If there are actions other than immediate ones,
fvwm will wait to see if the user is clicking, dou-
ble-clicking, or dragging the mouse. After the
decision is made, fvwm will execute only the built-
If the following example were bound to button 1 in
a window title-bar, then, when button 1 is pressed,
fvwm would wait 150 msec to see if the button is
released. If the button is not released fvwm will
start a move operation. When the move operation is
complete a raise operation will be performed. If a
button release is detected then fvwm will wait
another 150 msec for a second click. If only one
click is detected then the window will be raised.
If two clicks are detected the window will be
alternately raised and lowered. The 150 msec wait
duration can be altered using the ClickTime option.
Function "Move-or-Raise"
Move "Motion"
Raise "Motion"
Raise "Click"
RaiseLower "DoubleClick"
EndFunction
The clicking and double clicking concepts do not
carry through to using keyboard shortcuts.
Two special functions exist: InitFunction and
RestartFunction. The InitFunction will be called
when fvwm is started for the first time in any X
session and can be used to start modules, set back-
ground patterns, and begin programs. The restart
function will be called when fvwm is restarted. It
can be used to start modules and set background
patterns but probably should not be used to start
programs.
HiBackColor colorname
Sets the background color of the selected window to
colorname. When using a monochrome screen this
option is ignored and white is used.
HiForeColor colorname
Sets the color of the selected window's title to
colorname. When using a monochrome screen this
option is ignored and black is used.
Icon windowname bitmap-file
Specifies the bitmap to be used for a window when
it is iconified. The windowname can be an applica-
tion's window name or class name and must be
enclosed in quotes. The bitmap-file is either the
bitmap/pixmap is used in preference to any icon
supplied by the window itself.
If fvwm is compiled with XPM support for color
icons then bitmap can be an XPM pixmap file.
windowname should be enclosed in double quotes but
bitmap-file should not. Environment variables
should not be used in the bitmap-file specifica-
tion.
If windowname is an empty string then the specified
file is the default icon, and will be used if no
other icon bitmap or pixmap can be found:
Icon "" my-favorite-icon
The Style command provides another (more general)
method for specifying Icon.
IconBox left top right bottom
Defines regions of the screen in which to place
icons. Up to four icon boxes can be defined. If an
IconBox line is provided then icons will automati-
cally be placed in them, if possible. Each time a
window is iconified a new place is found for it.
Icon boxes are searched for space going left to
right, then top to bottom. Icons will not be auto-
placed on top of other icons but they may be placed
underneath application windows. If left or right is
negative, then fvwm will add the screen width to
it. If top or bottom is negative, then fvwm will
add the screen height to it. NOTE: -0 is not parsed
as the right or bottom pixel on the screen. You
have to use -1 instead.
If no IconBox line is provided or all icon boxes
are full, then fvwm will place icons near the cur-
rent pointer location.
IconFont fontname
Makes fvwm use font fontname for icon labels. If
omitted, the menu font (specified by the Font con-
figuration parameter) will be used instead.
IconPath path
Specifies a colon separated list of full path names
of directories where bitmap (monochrome) icons can
built, then m4 will want to mangle the word
"include" which will frequently show up in the
IconPath or PixmapPath command. To fix this add
undefine(`include') prior to the IconPath command.
Key keyname Context Modifiers Function
Binds a keyboard key to a specified fvwm built-in
function. Definition is the same as for a mouse
binding except that the mouse button number is
replaced with a key name. The keyname is one of the
entries from /usr/include/X11/keysymdef.h, with the
leading XK_ omitted. The Context and Modifiers
fields are defined as in the mouse binding.
Binding a key to a title-bar button will not cause
that button to appear unless a mouse binding also
exists.
Lenience
The ICCCM states that if an application sets the
input field of the wm_hints structure to False,
then it never wants the window manager to give it
the input focus. The only application that I know
of which needs this is sxpm, and that is a silly
bug with a trivial fix and has no overall effect on
the program anyway. Rumor is that some older appli-
cations have problems too.
If this parameter is set then fvwm will ignore this
ICCCM convention.
MenuBackColor colorname
Sets the menu background color. When using
monochrome this option is ignored. This option is
only available if fvwm is compiled with MENUCOLOR
defined.
MenuForeColor colorname
Sets the menu foreground color. When using
monochrome this option is ignored. This option is
only available if fvwm is compiled with MENUCOLOR
defined.
MenuStippleColor colorname
Sets the color for shaded out entries in menus (for
functions which are not allowed on the currently
selected window). When using monochrome this option
MENUCOLOR defined.
Module ModuleName
Specifies a module which should be spawned during
initialization. At the current time the available
modules are FvwmAudio, FvwmBacker, FvwmBanner,
FvwmClean, FvwmDebug, FvwmIconBox, FvwmIdent, Fvwm-
Pager, FvwmSave, FvwmSaveDesk, FvwmScroll, FvwmWin-
List, and GoodStuff. These modules have their own
man pages. Module can also be used as a built-in.
Modules can be short lived transient programs or,
like GoodStuff, can remain for the duration of the
X session. Modules will be terminated by the window
manager prior to restarts and quits, if possible.
See the introductory section on modules.
ModulePath
Specifies a colon separated list of paths for fvwm
to search when looking for a module to load. Indi-
vidual directories do not need trailing slashes.
Mouse Button Context Modifiers Function
Defines a mouse binding. Button is the mouse button
number. If Button is zero then any button will per-
form the specified function. Context describes
where the binding applies. Valid contexts are R for
the root window, W for an application window, T for
a window title bar, S for a window side, top, or
bottom bar, F for a window frame (the corners), I
for an Icon window, or 0 through 9 for title-bar
buttons, or any combination of these letters. A is
for any context except for title-bar buttons. For
instance, a context of FST will apply when the
mouse is anywhere in a window's border except the
title-bar buttons.
Modifiers is any combination of N for no modifiers,
C for control, S for shift, M for Meta, or A for
any modifier. For example, a modifier of SM will
apply when both the Meta and shift keys are down.
X11 modifiers mod1 through mod5 are represented as
the digits 1 through 5.
Function is one of fvwm's built-in functions.
The title bar buttons are numbered with odd num-
bered buttons on the left side of the title bar and
even numbers on the right. Smaller-numbered buttons
are displayed toward the outside of the window
mary, the buttons are numbered:
1 3 5 7 9 0 8 6 4 2
The highest odd numbered button which has an action
bound to it determines the number of buttons drawn
on the left side of the title bar. The highest even
number determines the number or right side buttons
which are drawn. Actions can be bound to either
mouse buttons or keyboard keys.
MWMBorders
Substitutes MWM style 1 pixel wide relief lines
instead of fvwm's 2 pixel borders.
MWMButtons
Disables button press feedback for all decorations
except the title bar and title-bar buttons, as in
MWM.
MWMDecorHints
Causes fvwm to read the MOTIF_WM_HINTS atom from
application windows and to parse and attempt to
replicate the Motif behavior with regard to window
decorations. Note that mwm allows function hints
to affect window decorations but these effects are
not replicated by this option.
MWMFunctionHints
Causes fvwm to read the MOTIF_WM_HINTS atom from
application windows and to parse and attempt to
replicate the Motif behavior with regard to allowed
window functions. Unlike mwm, which simply removes
prohibited functions from the window's menus, fvwm
simply shades out the prohibited functions. Also,
because fvwm implements some functions in user
defined macros that mwm implements internally, the
mapping of prohibited functions is partially based
on the menu item label.
MWMHintOverride
If MWMFunctionHints is used then maximization and
iconfication are prohibited for transients. Also,
windows can specify that the window manager should
not destroy or delete them. Since these MWM rules
are kind of stupid, especially with regard to the
transient windows, I provide this MWMHintOverride
can go ahead and select that item and it will oper-
ate as expected.
The override should be used cautiously because some
applications will break if you override their mwm
hints.
MWMMenus
Substitutes MWM look and feel menus in place of the
standard fvwm versions. This option also triggers
a few other mwm-style options, such as centering
the size/resize window on the screen, instead of
leaving it in the upper left, and switches the
resize-on-initial-placement trigger action to
shift-button-1 instead of the twm style press-but-
ton-2
NoBorder windowname
Keeps fvwm from putting decorative borders on win-
dows named windowname. This command has no effect
on the title-bar. This is handy for clocks and
similar gadgets that you don't want to take up too
much space. windowname can be a window's name or
its class.
If you specify both NoBorder windowname and NoTitle
windowname for the same window in your .fvwmrc file
the window will be completely undecorated.
Windowname can contain the wildcards "*" and "?"
which match window names in the normal Unix file-
name matching manner. Actual "*", "?", and "\"
characters in a window name can be entered by pre-
ceding the character with a "\".
The Style command provides another (more general)
method for specifying NoBorder.
NoBoundaryWidth Width
Changes the width of the decorations for windows
with no titles and no borders. The default is 1.
Any positive or zero value is acceptable. Decora-
tions for these undecorated windows have the same
context as the side-bars on normally decorated win-
dows.
The Style command provides another (more general)
method for specifying NoBoundaryWidth.
Instructs fvwm to ignore the PPosition field when
adding new windows. Adherence to the PPosition
field is required for some applications, but if you
don't have one of those its a real headache.
NoTitle windowname
Keeps fvwm from putting a title-bar in the decora-
tions for windows named windowname. This is handy
for clocks and similar gadgets that you don't want
to take up too much space. windowname can be a win-
dow's name or its class.
Windowname can contain the wildcards "*" and "?"
which match window names in the normal Unix file-
name matching manner. Actual "*", "?", and "\"
characters in a window name can be entered by pre-
ceding the character with a "\".
The Style command provides another (more general)
method for specifying NoTitle.
OpaqueMove percentage
Tells fvwm the maximum size window with which
opaque window movement should be used. The percent-
age is percent of the total screen area. With
"OpaqueMove 0" all windows will be moved using the
traditional rubber-band outline. With "OpaqueMove
100" all windows will be move as solid windows. The
default is "OpaqueMove 5", which allows small win-
dows to be moved in an opaque manner but large win-
dows are moved as rubber-bands.
OpaqueResize
Causes resize operations to be done with the window
itself instead of an outline.
Pager X_Location Y_Location
Enables a paging style of moving across the desk-
top. A Pager window (not a pop-up) will appear at
(X_Location, Y_Location). Miniature versions of all
the non-sticky windows on the virtual desktop are
shown in the pager. The color of the miniature
version is the same as the color of the full-size
window's border.
In the Pager window, pressing mouse button 1 will
move the desktop viewport to the selected page (in
click-to-focus mode; it will also move the keyboard
begin a window move, using the miniature to quickly
move the window anywhere on the desktop. Pressing
button 3 will move the top-left corner of the view-
port to the location of the button press, even if
it does not line up with a page. Dragging button 3
will cause the selected viewport to scroll as you
move the pointer. The Pager is automatically sticky
but does not automatically stay on top.
PagerForeColor colorname
Causes the pager foreground color to be colorname
instead of black. This is the color used to high-
light the current viewport in the pager window. On
a monochrome screen this option is ignored. If the
NO_PAGER option is set when building fvwm this
option is unavailable.
PagerBackColor colorname
Causes the pager background color to be colorname
instead of white. On a monochrome screen this
option is ignored. If the NO_PAGER option is set
when building fvwm this option is unavailable.
PagerFont fontname
Makes fvwm use font fontname for writing window
icon names in the window's representation in the
pager. If this option is omitted no names are writ-
ten in the pager windows.
PagingDefault pagingdefaultvalue
Tells fvwm if it should start up with paging
enabled or disabled. "PagingDefault 0" will start
fvwm with paging disabled; "PagingDefault 1" will
start fvwm with paging enabled by default.
PixmapPath path
Specifies a colon separated list of full path names
of directories where pixmap (color) icons can be
found. Each path should start with a slash.
Popup PopupName
Starts the definition of a pop-up menu which will
later be bound to a mouse button or key. PopupName
must be enclosed in quotes. Menu entries are
included on lines following the Popup keyword. The
menu definition ends with the key word EndPopup.
the built-in function which will be performed, fol-
lowed by the caption (enclosed in quotes) which
will be shown in the menu, followed by any addi-
tional arguments needed by the built-in function.
Sub-menus can be specified by using the Popup
built-in as long as the sub-menu was defined ear-
lier in the configuration file.
Popup "Window Ops"
Title "Window Ops"
Move "Move"
Resize "Resize"
Raise "Raise"
Lower "Lower"
Iconify "(De)Iconify"
Nop " "
Destroy "Destroy"
Title "HARDCOPY"
Exec "Hardcopy" exec xdpr &
Exec "Hardcopy RV" exec xdpr -rv &
EndMenu
Note that if a tab character is embedded in the
caption of a menu entry then the text following the
tab will be entered into a second column in the
menu and the entire menu will be left-adjusted.
This is intended for shortcut labeling. The tab
character must really be a tab. If it is expanded
into spaces it will not work! For example:
Popup "Window Ops"
Title "Window Ops Alt-F1"
.
.
.
Is the start of a left adjusted menu. Alt-F1 will
be placed toward the right side of the menu.
Shortcut keys may be specified in the menu defini-
tion by preceding the character with an ampersand.
The ampersand will not be displayed but the charac-
ter after it will be displayed underlined, and if
the user presses the corresponding key then that
item will be activated as if the user had clicked
on it with the mouse. Only alphabetic and numeric
characters may be used as shortcut keys. The shift
state of the keyboard is ignored when testing
shortcut characters. For example:
Popup "Window Ops"
Maximize "Ma&ximise" 100 100
lined and pressing the 'x' key will cause the cur-
rent window to be maximized. Shortcut keys are not
operative unless MENU_HOTKEYS was defined when
building fvwm. If WINDOWLIST_HOTKEYS was also
defined then hot keys are automatically added to
the WindowList when it is displayed.
RandomPlacement
Causes windows which would normally require user
placement to be automatically placed in ever-so-
slightly random locations. For the best of all
possible worlds use both RandomPlacement and Smart-
Placement.
SaveUnders
Causes the fvwm decoration frames to request save-
unders. This can significantly improve the perfor-
mance during opaque moves but it causes a signifi-
cant increase in memory usage.
SloppyFocus
This focusing mode is like focus-follows-mouse (the
default) except that the focus will not be removed
from a window until your mouse enters a new window.
Exiting a window to enter the root window will
leave the focus unchanged.
SmartPlacement
Causes windows which would normally require user
placement to be automatically placed in a smart
location - a location in which they do not overlap
any other windows on the screen. If no such posi-
tion can be found user placement or random place-
ment will be used as a fall-back method. For the
best of all possible worlds use both RandomPlace-
ment and SmartPlacement.
StartsOnDesk windowname desk-number
This command causes windows whose name or class is
windowname to be initially placed on desktop number
desk-number. windowname should be enclosed in dou-
ble quotes. If the window requires interactive
placement, an outline will be displayed on the cur-
rent desk but the window will appear on the speci-
fied desk.
Windowname can contain the wildcards "*" and "?"
characters in a window name can be entered by pre-
ceding the character with a "\".
The Style command provides another (more general)
method for specifying StartsOnDesk.
StaysOnTop windowname
These windows always try to stay on top of the
other windows. This might be handy for clocks or
mailboxes that you would always like to be visible.
If the window is explicitly lowered it will not try
to force its way back to the top until it is
explicitly raised. windowname can be a window's
name or its class.
Windowname can contain the wildcards "*" and "?"
which match window names in the normal Unix file-
name matching manner. Actual "*", "?", and "\"
characters in a window name can be entered by pre-
ceding the character with a "\".
The Style command provides another (more general)
method for specifying StaysOnTop.
StdBackColor colorname
Sets the background color for menus and non-
selected windows to colorname. When using a
monochrome screen this option is ignored and white
is used.
The Style command provides another (more general)
method for specifying StdBackColor.
StdForeColor colorname
Sets the foreground color for menus and non-
selected window titles to colorname. When using a
monochrome screen this option is ignored and black
is used.
The Style command provides another (more general)
method for specifying StdForeColor.
StickyBackColor colorname
Sets the background color for non-selected sticky
windows to colorname. When using a monochrome
screen this option is ignored and white is used.
Only available if -DMORE_COLORS is used when com-
piling.
Sets the foreground color for non-selected sticky
window titles to colorname. When using a monochrome
screen this option is ignored and black is used.
Only available if -DMORE_COLORS is used when com-
piling.
Sticky windowname
Sticky windows "stick to the screen's glass." That
is, they don't move the the viewport into the vir-
tual desktop changes. windowname can be a window's
name or its class.
Windowname can contain the wildcards "*" and "?"
which match window names in the normal Unix file-
name matching manner. Actual "*", "?", and "\"
characters in a window name can be entered by pre-
ceding the character with a "\".
The Style command provides another (more general)
method for specifying Sticky.
StickyIcons
Causes icons to always stick to the screen's glass.
That is, icons always follow you around the desk-
top. When a window is de-iconified it gets un-
stuck. Some people find this a useful way of moving
windows around.
StubbornIcons
Changes de-iconification behavior a bit. Instead of
having windows always de-iconify themselves on the
current page they de-iconify into their original
position.
StubbornIconPlacement
When used with IconBoxes, causes icons to avoid
placing themselves underneath existing windows.
StubbornPlacement
When using SmartPlacement, causes new windows to
avoid placing themselves over icons.
Style windowname options
This command is intended to replace the commands
NoBorder, NoTitle, StartsOnDesk, Sticky, StaysOn-
Top, Icon, WindowListSkip, CirculateSkip, Suppres-
ble and comprehensive command. This command is
used to set attributes of a window to values other
than the default or to set the window manager
default styles.
windowname can be a window's name, class, or
resource string. It can contain the wildcards *
and/or ?, which are matched in the usual Unix file-
name manner.
options is a comma separated list containing some
or all of the keywords BorderWidth, Han-
dleWidth,NoIcon/Icon, NoTitle/Title, NoHandles/Han-
dles, WindowListSkip/WindowListHit, Circu-
lateSkip/CirculateHit, StaysOnTop/StaysPut,
Sticky/Slippery, StartIconic/StartNormal, Color,
ForeColor, BackColor, StartsOnDesk/StartsAnyWhere,
IconTitle/NoIconTitle, and NoButton/Button.
In the above list some options are listed as style-
option/opposite-style-option. The opposite-style-
option for entries that have them describes the
fvwm default behavior and can be used if you want
to change the fvwm default behavior.
Icon takes an (optional) unquoted string argument
which is the icon bitmap or pixmap to use.
StartsOnDesk takes a numeric argument which is the
desktop number on which the window should be ini-
tially placed.
BorderWidth takes a numeric argument which is the
width of the border to place the window if it does
not have resize-handles.
HandleWidth takes a numeric argument which is the
width of the border to place the window if it does
have resize-handles.
Button and NoButton take a numeric argument which
is the number of the title-bar button which is to
be included/omitted.
Color takes two arguments. The first is the window-
label text color and the second is the window deco-
ration's normal background color. The two colors
are separated with a slash. If the use of a slash
causes problems then the seperate ForeColor and
BackColor options can be used.
# Change default fvwm behavior to no title-bars on windows!
# Also define a default icon.
Style "*" NoTitle,Icon unknown1.xpm, BorderWidth 4,HandleWidth 5
# now, window specific changes:
Style "Fvwm*" NoHandles,Sticky,WindowListSkip,BorderWidth 0
Style "Fvwm Pager" StaysOnTop, BorderWidth 0
Style "*lock" NoHandles,Sticky,StaysOnTop,WindowListSkip
Style "xbiff" Sticky, WindowListSkip
Style "GoodStuff" NoHandles,Sticky,WindowListSkip
Style "sxpm" NoHandles
Style "makerkit"
# Put title-bars back on xterms only!
Style "xterm" Title, Color black/grey
Style "rxvt" Icon term.xpm
Style "xterm" Icon rterm.xpm
Style "xcalc" Icon xcalc.xpm
Style "xbiff" Icon mail1.xpm
Style "xmh" Icon mail1.xpm, StartsOnDesk 2
Style "xman" Icon xman.xpm
Style "matlab" Icon math4.xpm, StartsOnDesk 3
Style "xmag" Icon magnifying_glass2.xpm
Style "xgraph" Icon graphs.xpm
Style "GoodStuff" Icon toolbox.xpm
Style "Maker" StartsOnDesk 1
Style "signal" StartsOnDesk 3
Note that all properties for a window will be OR'ed
together. In the above example "FvwmPager" gets the
property StaysOnTop via an exact window name match
but also gets NoHandles, Sticky, and WindowListSkip
by a match to "Fvwm*". It will get NoTitle by
virtue of a match to "*". If conflicting styles are
specified for a window, then the last style speci-
fied will be used.
If the NoIcon attribute is set then the specified
window will simply disappear when it is iconified.
The window can be recovered through the window-
list. If Icon is set without an argument then the
NoIcon attribute is cleared but no icon is speci-
fied. An example which allows only the FvwmPager
module icon to exist:
Style "*" NoIcon
Style "Fvwm Pager" Icon
Prevents icon windows from being created or drawn.
When used with the window-list this provides a sort
of icon manager.
The Style command provides another (more general)
method for specifying SuppressIcons.
WindowFont fontname
Makes fvwm use font fontname instead of "fixed" for
the window title bar.
WindowListSkip windowname
Causes windows with the indicated name to be left
out of the window list.
Windowname can contain the wildcards "*" and "?"
which match window names in the normal Unix file-
name matching manner. Actual "*", "?", and "\"
characters in a window name can be entered by pre-
ceding the character with a "\".
The Style command provides another (more general)
method for specifying WindowListSkip.
XORvalue number
Changes the value with which bits are XOR'ed when
doing rubber-band window moving or resizing. Set-
ting this value is a trial-and-error process.
BUILT IN FUNCTIONS
Fvwm supports a set of built-in functions which can be
bound to keyboard or mouse buttons:
Beep Makes the computer beep.
CirculateDown [ name window_name ]
Causes the pointer to move to the next window in
the list of windows for which CirculateSkip has not
not been specified.
If the optional arguments are supplied then the
focus will move to the first window whose name (or
icon name or class) matches window_name. The
optional argument name is required if window_name
is supplied and is enclosed in quotes. This argu-
ment is the name which appears in menus if the
CirculateUp [ name window_name ]
Causes the pointer to move to the previous window
in the list of windows for which CirculateSkip has
not not been specified.
If the optional arguments are supplied then the
focus will move to the first window whose name (or
icon name or class) matches window_name. The
optional argument name is required if window_name
is supplied and is enclosed in quotes. This argu-
ment is the name which appears in menus if the
function is called from a menu, but serves no pur-
pose if the function is not called from a menu
Here's an example that move the focus to an xterm
window when Alt-F1 is pressed:
Key F1 A M CirculateUp "whatever" xterm
Close If the window accepts the delete window protocol a
message is sent to the window asking it to grace-
fully remove itself. If the window does not under-
stand the delete window protocol then the window is
destroyed.
CursorMove horizonal vertical
Moves the mouse pointer by horizontal pages in the
X direction and vertical pages in the Y direction.
Either or both entries may be negative. Both hori-
zontal and vertical values are expressed in percent
of pages, so "CursorMove 100 100" means to move
down and left by one full page. "CursorMove 50 25"
means to move left half a page and down a quarter
of a page. The CursorMove function should not be
called from pop-up menus.
Delete Sends a message to a window asking that it remove
itself, frequently causing the application to exit.
Desk arg1 arg2
Changes to another desktop (workspace, room).
If arg1 is non zero then the next desktop number
will be the current desktop number plus arg1. Desk-
top numbers can be negative.
arg2.
The number of active desktops is determined dynami-
cally. Only desktops which contain windows or are
currently being displayed are active. Desktop num-
bers must be between 2147483647 and -2147483648 (is
that enough?).
Destroy
Destroys a window. Guaranteed to get rid of the
window, but is a fairly violent way to terminate an
application.
Exec name command
Executes command. command is not quoted but name
is. name is the name that appears in a menu, if
that is where the function is called from. name is
required even if the function is not called from a
menu.
The following example binds function key F1 in the
root window, with no modifiers, to the exec func-
tion. The program rxvt will be started with an
assortment of options.
Key F1 R N Exec "rxvt" exec rxvt -fg yellow -bg blue -e /bin/tcsh &
Focus Moves the viewport or window as needed to make the
selected window visible. Sets the keyboard focus
to the selected window. Raises the window if
needed to make it visible. Warps the pointer into
the selected window in focus-follows-mouse mode.
Does not de-iconify. This function is primarily for
use with a module such as FvwmWinList.
Function
Used to bind a previously defined function to a key
or mouse button.
The following example binds mouse button 1 to a
function called "Move-or-Raise", whose definition
was provided as an example earlier in this man
page. After performing this binding fvwm will exe-
cute to move-or-raise function whenever button 1 is
Mouse 1 T A Function "Move-or-Raise"
GotoPage x y
Moves the desktop viewport to page (x,y). The upper
left page is (0,0), the upper right is (N,0), where
N is one less than the current number of horizontal
pages specified in the DeskTopSize command. The
lower left page is (0,M), and the lower right page
is (N,M), where M is the desktop's vertical size as
specified in the DeskTopSize command. The GotoPage
function should not be used in a pop-up menu.
Iconify [ value ]
Iconifies a window if it is not already iconified
or de-iconifies it if it is already iconified. If
the optional argument value is positive the only
iconification will be allowed. It the optional
argument is negative only de-iconification will be
allowed.
Lower Allows the user to lower a window.
Maximize [ horizontal vertical ]
Without its optional arguments Maximize causes the
window to alternately switch from a full-screen
size to its normal size.
With the optional arguments horizontal and verti-
cal, which are expressed as percentage of a full
screen, the user can control the new size of the
window. If horizontal is greater than 0 then the
horizontal dimension of the window will be set to
horizontal*screen_width/100. The vertical resizing
is similar. For example, the following will add a
title-bar button to switch a window to the full
vertical size of the screen:
Mouse 0 4 A Maximize 0 100
The following causes windows to be stretched to the
full width:
Mouse 0 4 A Maximize 100 0
This makes a window that is half the screen size in
Mouse 0 4 A Maximize 50 50
Values larger than 100 can be used with caution.
If the letter "p" is appended to each coordinate
(horizontal and/or vertical), then the scroll
amount will be measured in pixels.
Module name ModuleName
Specifies a module which should be spawned. Modules
can be short lived transient programs or can remain
for the duration of the X session. Modules will be
terminated by the window manager prior to restarts
and quits, if possible. name is a double-qouted
string which has absolutely no significance, but
must exist.
Move [ x y ]
Allows the user to move a window. If called from
somewhere in a window or its border, then that win-
dow will be moved. If called from the root window
then the user will be allowed to select the target
window.
If the optional arguments x and y are provided,
then the window will be moved so that its upper
left corner is at location (x,y). The units of x
and y are percent-of-screen, unless a letter "p" is
appended to each coordinate, in which case the
location is specified in pixels.
Examples:
Mouse 1 T A Move
Mouse 2 T A Move 10 10
Mouse 3 T A Move 10p 10p
In the first example, an interactive move is indi-
cated. In the second, the window whose title-bar is
selected will be moved so that its upper left hand
corner is 10 percent of the screen width in from
the left of the screen, and 10 percent down from
the top. The final example moves the window to
coordinate (10,10) pixels.
Nop Does nothing. This is used to insert a blank line
or separator in a menu. If the menu item specifica-
tion is Nop " ", then a blank line is inserted. If
Popup This built-in has two purposes: to bind a menu to a
key or mouse button, and to bind a sub-menu into a
menu. The formats for the two purposes differ
slightly.
To bind a previously defined pop-up menu to a key
or mouse button:
The following example binds mouse buttons 2 and 3
to a pop-up called "Window Ops", whose definition
was provided as an example earlier in this man
page. The menu will pop up if the buttons 2 or 3
are pressed in the window frame, side-bar, or
title-bar, with no modifiers (none of shift, con-
trol, or meta).
Mouse 2 FST N Popup "Window Ops"
Mouse 3 FST N Popup "Window Ops"
Pop-ups can be bound to keys through the use of
the key modifier. Pop-ups can be operated without
using the mouse by binding to keys and operating
via the up arrow, down arrow, and enter keys.
To bind a previously defined pop-up menu to another
menu, for use as a sub-menu:
The following example defines a sub menu, "Quit-
Verify" and binds it into a main menu, called
"Utilities":
Popup "Quit-Verify"
Title "Really Quit Fvwm?"
Quit "Yes, Really Quit"
Restart "Restart Fvwm" fvwm
Nop ""
Nop "No, Don't Quit"
EndPopup
Popup "Utilities"
Title "Utilities"
Exec "Xterm" exec xterm &
Exec "Rxvt" exec rxvt &
Exec "Top" exec rxvt -T Top -n Top -e top &
Exec "Calculator" exec xcalc &
Exec "Xman" exec xman &
Exec "Xmag" exec xmag &
Nop ""
Popup "Exit Fvwm" Quit-Verify
EndPopup
in which they are bound. Sub-menu nesting can be
arbitrarily deep.
Quit Exits fvwm, generally causing X to exit too.
Raise Allows the user to raise a window.
RaiseLower
Alternately raises and lowers a window.
Refresh
Causes all windows on the screen to redraw them-
selves.
Resize [ x y ]
Allows the user to resize a window.
If the optional arguments x and y are provided,
then the window will be moved so that its upper
left corner is at location (x,y). The units of x
and y are percent-of-screen, unless a letter "p" is
appended to each coordinate, in which case the
location is specified in pixels.
Restart name WindowManagerName
Causes fvwm to restart itself if WindowManagerName
is "fvwm", or to switch to an alternate window man-
ager if WindowManagerName is other than "fvwm". If
the window manager is not in your default search
path, then you should use the full path name for
WindowManagerName.
WindowManagerName is not quoted but name is. name
is the name that appears in a menu, if that is
where the function is called from. name is required
even if the function is not called from a menu.
This command should not have a trailing ampersand
or any command line arguments and should not make
use of any environmental variables. Of the follow-
ing examples, the first three are sure losers, but
the third is OK:
Key F1 R N Restart " " fvwm &
Key F1 R N Restart " " $(HOME)/bin/fvwm
Stick Makes a window sticky if it is not already sticky,
or non-sticky if it is already sticky.
Scroll horizonal vertical
Scrolls the virtual desktop's viewport by horizon-
tal pages in the x-direction and vertical pages in
the y-direction. Either or both entries may be neg-
ative. Both horizontal and vertical values are
expressed in percent of pages, so "Scroll 100 100"
means to scroll down and left by one full page.
"Scroll 50 25" means to scroll left half a page and
down a quarter of a page. The scroll function
should not be called from pop-up menus. Normally,
scrolling stops at the edge of the desktop.
If the horizontal and vertical percentages are mul-
tiplied by 1000 then scrolling will wrap around at
the edge of the desktop. If "Scroll 100000 0" is
executed over and over fvwm will move to the next
desktop page on each execution and will wrap around
at the edge of the desktop, so that every page is
hit in turn.
If the letter "p" is appended to each coordinate
(horizontal and/or vertical), then the scroll
amount will be measured in pixels.
Title Does nothing. This is used to insert a title line
in a popup or menu.
TogglePage
Temporarily disables edge scrolling. Edge scrolling
can be re-enabled by calling this again.
Wait name
This built-in is intended to be used in fvwm func-
tions only. It causes execution of a function to
pause until a new window name name appears. Fvwm
remains fully functional during a wait. This is
particularly useful in the InitFunction if you are
trying to start windows on specific desktops:
Function "InitFunction"
Exec "I" exec xterm -geometry 80x64+0+0
Wait "I" xterm
Wait "I" xmh
Desk "I" 0 0
EndFunction
The above function starts an xterm on the current
desk, waits for it to map itself, then switches to
desk 2 and starts an xmh. After the xmh window
appears control moves to desk 0.
Warp [ name window_name ]
Same as CirculateDown but de-iconifies any iconi-
fied windows as it focuses on them.
WindowsDesk new_desk
Moves the selected window the the desktop specified
as new_desk.
WindowList arg1 arg2
Generates a pop-up menu (and pops it up) in which
the title and geometry of each of the windows cur-
rently on the desk top are shown. The geometry of
iconified windows is shown in brackets. Selecting
an item from the window list pop-up menu will cause
that window to be moved onto the desktop if it is
currently not on it, will move the desktop viewport
to the page containing the upper left hand corner
of the window, will de-iconify the window if it is
iconified, and will raise the window.
If arg1 is an even number then the windows will be
listed using the window name (the name that shows
up in the title-bar). If it is odd then the win-
dow's icon name is used.
If arg1 is less than 2 then all windows on all
desktops (except those listed in WindowListSkip
directives) will be shown.
If arg1 is 2 or 3 then only windows on the current
desktop will be shown.
If arg1 is 4 or 5 then only windows on desktop num-
ber arg2 will be shown.
KEYBOARD SHORTCUTS
All (I think) window manager operations can be performed
from the keyboard so mouseless operation should be possi-
ble. In addition to scrolling around the virtual desktop
to keys. Once a built-in function is started the pointer
is moved by using the up, down, left, and right arrows,
and the action is terminated by pressing return. Holding
down the shift key will cause the pointer movement to go
in larger steps and holding down the control key will
cause the cursor movement to go in smaller steps. Standard
emacs and vi cursor movement controls (^n, ^p, ^f, ^b, and
^j, ^k, ^h, ^l) can be used instead of the arrow keys.
SUPPLIED CONFIGURATION
A sample configuration file, system.fvwmrc, is supplied
with the fvwm distribution. It is well commented and can
be used as a source of examples for fvwm configuration.
USE ON MULTI-SCREEN DISPLAYS
If the -s command line argument is not given, fvwm will
automatically start up on every screen on the specified
display. After fvwm starts each screen is treated indepen-
dently. Restarts of fvwm need to be performed separately
on each screen. The use of EdgeScroll 0 0 is strongly rec-
ommended for multi-screen displays.
You may need to quit on each screen to quit from the X
session completely.
Multi-screen support is only available if fvwm is compiled
with -DMULTIPLE_SCREENS
BUGS
As of fvwm 0.99 there were exactly 39.342 unidentified
bugs. Identified bugs have mostly been fixed, though.
Since then 9.34 bugs have been fixed. Assuming that there
are at least 10 unidentified bugs for every identified
one, that leaves us with 39.342 - 9.32 + 10 * 9.34 =
123.402 unidentified bugs. If we follow this to its logi-
cal conclusion we will have an infinite number of uniden-
tified bugs before the number of bugs can start to dimin-
ish, at which point the program will be bug-free. Since
this is a computer program infinity = 3.4028e+38 if you
don't insist on double-precision. At the current rate of
bug discovery we should expect to achieve this point in
3.37e+27 years. I guess I better plan on passing this
thing on to my children....
Binding a key to a window decoration but not to the window
itself is discouraged because when the key-press event
finally gets to the window it will be marked as SYNTHETIC
AUTHOR
Robert Nation with help from many people, based on twm
code, which was written by Thomas LaStrange.
Man(1) output converted with
man2html