VMSAPPS help entry source for FVWM
! -------------------------------- cut here ------------------------------
1 FVWM
fvwm - F(?) Virtual Window Manager for X11
fvwm [ options ]
2 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 con-
sumption is estimated at about one-half to one-third the memory
consumption of twm, due primarily 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.)
2 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 limited 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 ineach 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 virtual screen size to the
physical screen size. After you become familiar with fvwm you may
want to re-enable XFree86's virtual screen.
2 Copyrights
Since fvwm is derived from twm code it shares twm's copyrights.
fvwm is copyright 1988 by Evans and Sutherland Computer Corporation,
Salt Lake City, Utah, and 1989 by the Massachusetts Institute of
Technology, Cambridge, Massachusetts, All rights reserved. It is also
copyright 1993 and 1994 by Robert Nation.
Permission to use, copy, modify, and distribute this software 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
pertaining 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 TORTUOUS ACTION,
ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
SOFTWARE.
2 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 button 2 anywhere in the border brings up an
extensive list of window operations.
Up to ten title-bar buttons may exist. Their use is completely 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" configuration parameter below.
2 The_Virtual_DESKTOP
Fvwm provides multiple virtual desktops for users who wish to use
them. The screen is a viewport onto a desktop which may be larger
than the screen. Several distinct desktops can be accessed (concept:
one desktop for each project, or 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 windows 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 specify 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 currently 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 portion of the screen. Not
all applications support window geometries with negative offsets.
Some applications, like xterm and xfontsel, allow the user to specify
the start-up desk on the command line:
xterm -xrm "*Desk:1"
will start an xterm on desk number 1. Not all applications understand
this option, however.
2 Initialization
During initialization, fvwm will search for a configuration 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 the 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 $DISPLAY should be used for local
connections, as it may use Unix-domain sockets, which are faster.
2 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 example) 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
compile 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
windows are present but have little effect when shaped windows are
present.
2 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.
If both the SHAPE and XPM options are compiled in you will get shaped
color icons, which are very spiffy.
!! 2 MODULES
!! A module is a separate program which runs as a separate Unix pro-
!! cess but transmits commands to fvwm to execute. Future releases
!! are expected to provide a means for these modules to extract win-
!! dow 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 com-
!! mand engine. Text commands are formatted just as in the case of a
!! mouse binding in the .fvwmrc setup file. Certain auxiliary infor-
!! mation is also transmitted, as in the sample module GoodStuff.
!! The GoodStuff module is documented in its own man page.
!!
2 ICCCM_Compliance
Fvwm attempts to be ICCCM 1.1 compliant. As of this (1.20l) colormap
handling is not completely ICCCM compliant. 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.
2 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 makes it very easy to work with
different displays with different characteristics.
For example, depending on your mood, you might want different 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 dis-
tinct colors that can be created. This
is often different from the number of
colors that can be displayed at once.)
CLASS Your visual class. Will return one of
StaticGray, GrayScale, StaticColor, Pseu-
doColor, TrueColor, DirectColor, or, if
it cannot 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 defin-
ition. Returns 'Yes' on *Color and 'No'
on StaticGray and GrayScale.
FVWMDIR This is set to the path where the modules
were configured to be installed.
FVWM_VERSION This is a string containing the version
of fvwm.
HEIGHT The height of your display in pixels.
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 separated from the
other by a space.
PLANES The number of bit planes your display
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 running. It
will always be set to the string "fvwm"
in this program. This is useful for pro-
tecting 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 environment.
VENDOR The vendor of your X server. For exam-
ple: MIT X Consortium.
VERSION The X major protocol version. As seen by
ProtocolVersion(3).
WIDTH The width of your display in pixels.
X_RESOLUTION The X resolution of your display in pix-
els per meter.
Y_RESOLUTION The Y resolution of your display in pix-
els 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 symbols 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
correct 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(<>)", 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.
2 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 dramatically
slows things down, but guarantees that fvwm's internal error
messages are correct.
-d displayname
Manage the display called "displayname" instead of the name
obtained from the environment variable $DISPLAY.
-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 compiled 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 com-
mands 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 characters. You
must also specify -m4-equote.
-m4-equote string
Use this given string as the ending quote characters. You
must also specify -m4-squote.
-m4prog path
Use path as the location of the desired m4 processor. 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.
2 Configuration_FILES
The configuration file is used to describe mouse and button 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).
AppsBackingStore
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 windows 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 automatically 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 description 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 con-
sisting 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? See the sample system.fvwmrc.
CenterOnCirculate
When circulating, the desktop page containing the window
which the pointer is moving to is automatically 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 but-
ton 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 keyboard input stays with
one window until the mouse is clicked with the pointer posi-
tioned 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 follows:
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.
8 DESTROY - used for DESTROY and DELETE built-ins.
9 TOP - used in the top side-bar of a window.
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
the X11 cursorfont.h and are currently even numbers
between 0 and 152. At the current time, the following cursor
types are available:
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
148 ur_angle 150 watch
152 xterm
DecorateTransients
Causes transient windows, which are normally left
undecorated, to be given the usual fvwm decorations. 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 pixels on the desktop but doesn't care a bit
about keeping the whole window on the desk. See EdgeResis-
tance 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 possible to
move or resize windows across the edge of the current
screen. By making the first parameter to EdgeResistance
10000 this type of motion is 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 verti-
cal should be positive numbers.
If the horizontal and vertical percentages are multiplied 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, composed of the
fvwm built-in functions, which will later be bound to a
mouse button or key. FunctionName must be enclosed in
quotes. Function entries are included on lines following
the Function keyword. The definition ends with the key word
EndFunction. Function entries are specified as shown in the
following example. The first word on each line is the
built-in function which will be performed, 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 con-
figuration file.
The trigger actions which are recognized are Immediate,
Motion, Click, and DoubleClick. Immediate actions are exe-
cuted 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 click-
ing, double-clicking, or dragging the mouse. After the deci-
sion is made, fvwm will execute only the built-ins from the
function definition whose trigger action matches the action
performed by the user.
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 RestartFunc-
tion. 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 background 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 color-
name. 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 application's window
name or class name and must be enclosed in quotes. The
bitmap-file is either the full path name to a standard X11
bitmap file or a file in the IconPath or PixmapPath. The
specified 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 specification.
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 pro-
vided then icons will automatically 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 nega-
tive, 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 current pointer loca-
tion.
IconFont fontname
Makes fvwm use font fontname for icon labels. If omitted,
the menu font (specified by the Font configuration parame-
ter) will be used instead.
IconPath path
Specifies a colon separated list of full path names of
directories where bitmap (monochrome) icons can be found.
Each path should start with a slash. Note: if the M4 patches
are included when fvwm is 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 the 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 but-
ton 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 applica-
tion 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 applications
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 func-
tions which are not allowed on the currently selected win-
dow). When using monochrome this option is ignored and a
stipple pattern is used. This option is only available if
fvwm is compiled with MENUCOLOR defined.
Module ModuleName
Specifies a module which should be spawned during initiali-
zation. At the current time the available modules are
FvwmAudio, FvwmBacker, FvwmBanner, FvwmClean, FvwmDebug,
FvwmFileMgr, FvwmIconBox, FvwmIdent, FvwmPager, FvwmSave,
FvwmSaveDesk, FvwmScroll, FvwmWinList, 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 introduc-
tory section on modules.
ModulePath
Specifies a colon separated list of paths for fvwm to search
when looking for a module to load. Individual 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 perform the specified
function. Context describes where the binding applies.
Valid contexts are R for the root window, W for an applica-
tion 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 numbered 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 while larger-numbered buttons appear
toward the middle of the window (0 is short for 10). In sum-
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 func-
tions. 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 iconfica-
tion 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 MWMHin-
tOverride option. When it is used menu items will be shaded
out if MWM would prohibit their use, but the user can go
ahead and select that item and it will operate as expected.
The override should be used cautiously because some applica-
tions 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-button-2
NoBorder windowname
Keeps fvwm from putting decorative borders on windows 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 win-
downame 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 filename matching manner.
Actual "*", "?", and "\" characters in a window name can be
entered by preceding 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. Decorations for these undecorated
windows have the same context as the side-bars on normally
decorated windows.
The Style command provides another (more general) method for
specifying NoBoundaryWidth.
NoPPosition
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 decorations for
windows named windowname. This is handy for clocks and simi-
lar gadgets that you don't want to take up too much space.
windowname can be a window's name or its class.
Windowname can contain the wildcards "*" and "?" which match
window names in the normal Unix filename matching manner.
Actual "*", "?", and "\" characters in a window name can be
entered by preceding 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 percentage is percent of the
total screen area. With "OpaqueMove 0" all windows will be
moved using the traditional rubber-band outline. With "Opa-
queMove 100" all windows will be move as solid windows. The
default is "OpaqueMove 5", which allows small windows to be
moved in an opaque manner but large windows 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 desktop. A Pager
window (not a pop-up) will appear at (X_Location,
Y_Location). Miniature versions of all the non-sticky win-
dows 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 focus to the window
whose miniature you click on). Pressing button 2 on a win-
dow in the pager will begin a window move, using the minia-
ture to quickly move the window anywhere on the desktop.
Pressing button 3 will move the top-left corner of the
viewport 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 highlight the current
viewport in the pager window. On a monochrome screen this
option is ignored. If the NO_PAGER option is set when build-
ing 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 written in the pager windows.
PagingDefault pagingdefaultvalue
Tells fvwm if it should start up with paging enabled or dis-
abled. "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. Menu entries are specified as shown in the follow-
ing example. The first word on each line is the built-in
function which will be performed, followed by the caption
(enclosed in quotes) which will be shown in the menu, fol-
lowed by any additional 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 earlier 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 definition by
preceding the character with an ampersand. The ampersand
will not be displayed but the character 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 char-
acters. For example:
Popup "Window Ops"
Maximize "Ma&ximise" 100 100
EndMenu
When this menu is popped up the 'x' will be underlined and
pressing the 'x' key will cause the current 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 loca-
tions. For the best of all possible worlds use both Random-
Placement and SmartPlacement.
SaveUnders
Causes the fvwm decoration frames to request save-unders.
This can significantly improve the performance during opaque
moves but it causes a significant 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 position can be found user placement or
random placement will be used as a fall-back method. For
the best of all possible worlds use both RandomPlacement 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 double quotes. If
the window requires interactive placement, an outline will
be displayed on the current desk but the window will appear
on the specified desk.
Windowname can contain the wildcards "*" and "?" which match
window names in the normal Unix filename matching manner.
Actual "*", "?", and "\" characters in a window name can be
entered by preceding 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 win-
dows. 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 filename matching manner.
Actual "*", "?", and "\" characters in a window name can be
entered by preceding 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 compiling.
StickyForeColor colorname
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 compiling.
Sticky windowname
Sticky windows "stick to the screen's glass." That is, they
don't move the the viewport into the virtual 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 filename matching manner.
Actual "*", "?", and "\" characters in a window name can be
entered by preceding 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 desktop. When a window is
de-iconified it gets un-stuck. Some people find this a use-
ful 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 plac-
ing themselves over icons.
Style windowname options
This command is intended to replace the commands NoBorder,
NoTitle, StartsOnDesk, Sticky, StaysOnTop, Icon, WindowL-
istSkip, CirculateSkip, SuppressIcons, BoundaryWidth,
NoBoundaryWidth, StdForeColor, and StdBackColor with a sin-
gle flexible 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 filename manner.
options is a comma separated list containing some or all of
the keywords BorderWidth, HandleWidth,NoIcon/Icon,
NoTitle/Title, NoHandles/Handles,
WindowListSkip/WindowListHit, CirculateSkip/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 initially 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 decoration'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.
An example:
# 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 con-
flicting styles are specified for a window, then the last
style specified 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 specified. An example which allows only the FvwmPager
module icon to exist:
Style "*" NoIcon
Style "Fvwm Pager" Icon
SuppressIcons
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 win-
dow 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 filename matching manner.
Actual "*", "?", and "\" characters in a window name can be
entered by preceding 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. Setting this value is
a trial-and-error process.
2 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
argument is the name which appears in menus if the function
is called from a menu, but serves no purpose if the function
is not called from a menu.
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
argument is the name which appears in menus if the function
is called from a menu, but serves no purpose 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 gracefully remove itself.
If the window does not understand the delete window protocol
then the window is destroyed.
CursorMove horizonal vertical
Moves the mouse pointer by horizontal pages in the X direc-
tion and vertical pages in the Y direction. Either or both
entries may be negative. Both horizontal 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. Desktop numbers can be
negative.
If arg1 is zero then the new desktop number will be arg2.
The number of active desktops is determined dynamically.
Only desktops which contain windows or are currently being
displayed are active. Desktop numbers 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 win-
dow, with no modifiers, to the exec function. 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 win-
dow. 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 execute to move-or-raise function whenever
button 1 is pressed in a window title-bar.
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 vertical, 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 each
direction:
Mouse 0 4 A Maximize 50 50
Values larger than 100 can be used with caution.
Module ModuleName
Specifies a module which should be spawned. Modules can be
short lived transient programs or can remain for the dura-
tion of the X session. Modules will be terminated by the
window manager prior to restarts and quits, if possible.
Move Allows the user to move a window. If called from somewhere
in a window or its border, then that window will be moved.
If called from the root window then the user will be allowed
to select the target window.
Nop Does nothing. This is used to insert a blank line or separa-
tor in a menu. If the menu item specification is Nop " ",
then a blank line is inserted. If it looks like Nop "", then
a separator line is inserted.
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 for-
mats 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,
control, 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
Sub-menus must be defined prior to the main menu 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 themselves.
Resize
Allows the user to resize a window.
Restart name WindowManagerName
Causes fvwm to restart itself if WindowManagerName is
"fvwm", or to switch to an alternate window manager if Win-
dowManagerName 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 following 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
Key F1 R N Restart " " twm -f .mystartupfile
Key F1 R N Restart " " /home/nation/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 horizontal pages
in the x-direction and vertical pages in the y-direction.
Either or both entries may be negative. 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 multiplied 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.
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 functions only.
It causes execution of a function to pause until a new win-
dow 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
Desk "I" 0 2
Exec "I" exec xmh -font fixed -geometry 507x750+0+0 &
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 iconified 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 currently 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 window'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 number arg2
will be shown.
2 Keyboard_Shortcuts
All (I think) window manager operations can be performed from the
keyboard so mouseless operation should be possible. In addition to
scrolling around the virtual desktop by binding the Scroll built-in to
appropriate keys, pop-ups, move, resize, and most other built-ins can
be bound 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.
2 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.
2 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 independently. Restarts of fvwm need to be
performed separately on each screen. The use of EdgeScroll 0 0 is
strongly recommended 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
2 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 logical
conclusion we will have an infinite number of unidentified bugs before
the number of bugs can start to diminish, 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 and will be ignored by many
applications.
Multi-screen mode is a little clumsy since restarts and quitting need
to be done on each screen separately.
The RaiseLower function gets confused by StaysOnTop windows. Not
surprising really.
2 AUTHOR
Robert Nation (nation@rocket.sanders.lockheed.com) with help from many
people, based on twm code, which was written by Thomas LaStrange.
VMSPort:
Hiromi Kimura hiromi@tac.tsukuba.ac.jp