Table of Contents
fvwm - F(?) Virtual Window Manager for X11
fvwm [ options
]
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 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.)
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 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
virtual screen size to the physical screen size. After you become familiar
with fvwm you may want to re-enable XFree86's virtual screen.
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.
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.
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.
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 /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 $DISPLAY should be used for local connections,
as it may use Unix-domain sockets, which are faster.
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.
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.
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 approximately 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 sample module GoodStuff. The GoodStuff module is documented in
its own man page.
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.
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 distinct
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, PseudoColor, TrueColor, DirectColor,
or, if it cannot determine what you have, NonStandard.
- 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 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 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 environment.
- 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 pixels.
- X_RESOLUTION
- The X resolution
of your display in pixels per meter.
- 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 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(<<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.
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 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 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.
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 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? 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 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 keyboard 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 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 /usr/include/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 EdgeResistance 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 vertical 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 configuration file.
The trigger
actions which are recognized are Immediate, 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, double-clicking, or
dragging the mouse. After the decision 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 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 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 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 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 provided 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 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 current
pointer location.
- IconFont fontname
- Makes fvwm use font fontname for icon
labels. If omitted, the menu font (specified by the Font configuration parameter)
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 /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 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 functions which are not allowed on the currently selected
window). 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
initialization. At the current time the available modules are FvwmAudio,
FvwmBacker, FvwmBanner, FvwmClean, FvwmDebug, 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 introductory 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
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 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 summary, 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 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 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-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 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 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 similar 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 "OpaqueMove 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 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 focus to the window
whose miniature you click on). Pressing button 2 on a window in the pager
will 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 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 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 written 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. Menu 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 by the caption (enclosed in quotes) which will be
shown in the menu, followed 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 characters. 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
locations. For the best of all possible worlds use both RandomPlacement
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 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 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 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, StaysOnTop, Icon, WindowListSkip, CirculateSkip,
SuppressIcons, BoundaryWidth, NoBoundaryWidth, StdForeColor, and StdBackColor
with a single 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 conflicting
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 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 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.
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 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 "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 window, 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 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 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.
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 window 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 indicated. 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 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 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, 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 [ 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 manager 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 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.
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 functions 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
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.
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.
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.
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
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.
Bug reports can
be sent to fvwm@wonderland.org.
Robert Nation with help from many
people, based on twm code, which was written by Thomas LaStrange.
Table of Contents