|
Hopefully, this page is exactly what you are looking for, but if not, you can always find further assistance on Unix/Linux Forum!
FVWM2(1) FVWM2(1)
NAME
fvwm2 - F(?) Virtual Window Manager (version 2) for X11
SYNOPSIS
fvwm2 [-blackout] [-clientId id] [-cmd config_command] [-d displayname]
[-debug] [-debug_stack_ring] [-f config_file] [-h] [-replace] [-restore
state_file] [-s] [-version] [-visual visual_class] [-visualId id]
DESCRIPTION
Fvwm is a window manager for X11. It is designed to minimize memory
consumption, provide a 3D look to window frames, and a virtual desktop.
Note that there are several window managers around that have "fvwm" in
their name. In the past, version 2.x of fvwm was commonly called fvwm2
to distinguish it from the former version 1.x (fvwm or even fvwm1).
Since version 1.x has been replaced by version 2.x a long time ago we
simply call version 2.x and all versions to come, fvwm, throughout this
document, although the executable program is named fvwm2. There is an
fvwm offspring called fvwm95. Although it is very similar to older ver-
sions of fvwm version 2 it is technically a different window manager
that has been developed by different people. The main goal of fvwm95
was to supply a Windows 95 like look and feel. Since then fvwm has
been greatly enhanced and only very few features of fvwm95 can not be
imitated by fvwm. No active development has been going on for fvwm95
for several years now. Unfortunately Red Hat (a popular Linux distrib-
utor) has a pre-configured fvwm package based on fvwm version 2.x that
is called fvwm95 too.
Fvwm provides both a large virtual desktop and multiple disjoint desk-
tops which can be used separately or together. The virtual desktop
allows you to pretend that your video screen is really quite large, and
you can scroll around within the desktop. The multiple disjoint desk-
tops allow you to pretend that you really have several screens to work
at, but each screen is completely unrelated to the others.
Fvwm provides keyboard accelerators which allow you to perform most
window-manager functions, including moving and resizing windows, and
operating the menus, using keyboard shortcuts.
Fvwm has also blurred the distinction between configuration commands
and built-in commands that most window-managers make. Configuration
commands typically set fonts, colors, menu contents, key and mouse
function bindings, while built-in commands typically do things like
raise and lower windows. Fvwm makes no such distinction, and allows,
to the extent that is practical, anything to be changed at any time.
Other noteworthy differences between Fvwm and other X11 window managers
are the introduction of the SloppyFocus and NeverFocus focus methods.
Focus policy can be specified for individual windows. Windows using
SloppyFocus acquire focus when the pointer moves into them and retain
focus until some other window acquires it. Such windows do not lose
focus when the pointer moves into the root window. The NeverFocus pol-
icy is provided for use with windows into which one never types (e.g.
xclock, oclock, xbiff, xeyes, tuxeyes) - for example, if a SloppyFocus
terminal window has focus, moving the cursor over a NeverFocus decora-
tion window won't deprive the terminal of focus.
OPTIONS
These are the command line options that are recognized by fvwm:
-blackout
This option is provided for backward compatibility only. Black-
ing out the screen during startup is not necessary anymore.
-clientId id
This option is used when fvwm is started by a session manager.
Should not be used by a user.
-cmd config_command
Causes fvwm to use config_command instead of 'Read .fvwm2rc' as
its initialization command. (Note that up to 10 -f and -cmd
parameters can be given, and they are executed in the order
specified.)
-d displayname
Manage the display called displayname instead of the name
obtained from the environment variable $DISPLAY.
-debug Puts X transactions in synchronous mode, which dramatically
slows things down, but guarantees that fvwm's internal error
messages are correct. Also causes fvwm to output debug messages
while running.
-debug_stack_ring
Enables stack ring debugging. This option is only intended for
internal debugging and should only be used by developers.
-f config_file
Causes fvwm to read config_file instead of .fvwm2rc as its ini-
tialization file. This is equivalent to -cmd 'Read con-
fig_file'.
-h A short usage description is printed.
-replace
Try to take over from a previously running wm. This does not
work unless the other wm is ICCCM 2.0 compliant.
-restore state_file
This option is used when fvwm is started by a session manager.
Should not be used by a user.
-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 attempts to start up on all screens of a
multi-screen display.
-version
Prints the version of fvwm to stderr. Also prints an informa-
tion about the compiled in support for readline, rplay, stroke,
xpm, gnome hints, session management and multibyte characters.
-visual visual_class
Causes fvwm to use visual_class for the window borders and
menus. visual_class can be "StaticGray", "GrayScale", "Static-
Color", "PseudoColor", "TrueColor" or "DirectColor".
-visualId id
Causes fvwm to use id as the visualId for the window borders and
menus. id can be specified as N for decimal or 0xN for hexadec-
imal. See man page of xdpyinfo for a list of supported visuals.
ANATOMY OF A WINDOW
Fvwm puts a decorative border around most windows. This border con-
sists of a bar on each side and a small L-shaped section on each cor-
ner. 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 begins a move operation on the window.
Pressing button 1 in the corner frame pieces begins 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 command below.
THE VIRTUAL DESKTOP
Fvwm provides multiple virtual desktops for users who wish to use them.
The screen is a viewport onto a desktop which may be larger than the
screen. Several distinct desktops can be accessed (concept: one desk-
top for each project, or one desktop for each application, when view
applications are distinct). Since each desktop can be larger than the
physical screen, divided into m by n pages which are each the size of
the physical screen, windows which are larger than the screen or large
groups of related windows can easily be viewed.
The (m by n) size (i.e. number of pages) of the virtual desktops can be
changed any time, by using the DeskTopSize built-in command. All vir-
tual desktops must be (are) the same size. The total number of dis-
tinct desktops does not need to be specified, but is limited to approx-
imately 4 billion total. All windows on a range of desktops can be
viewed in the FvwmPager, a miniature view of the desktops. The pager
is an accessory program, called a module, which is not essential for
the window manager to operate. Windows may also be listed, along with
their geometries, in a window list, accessible as a pop-up menu, or as
a separate window, called the FvwmWinList (another module).
Fvwm keeps the windows on the desktop in a layered stacking order; a
window in a lower layer never obscures a window in a higher layer. The
layer of a window can be changed by using the Layer command. The con-
cept of layers is a generalization of the StaysOnTop flag of older fvwm
versions. The StaysOnTop and StaysPut Style options are now implemented
by putting the windows in suitable layers and the previously missing
StaysOnBottom Style option has been added.
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. Icons can also be
made to stick to the glass, if desired.
Window geometries are specified relative to the current viewport. That
is:
xterm -geometry +0+0
creates a window 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 desk-
top, invoking:
xterm -geometry +1000+1000
places a 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. A geometry speci-
fied as something like:
xterm -geometry -5-5
places the window's lower right hand corner 5 pixels from the lower
right corner of the visible portion of the screen. Not all applica-
tions support window geometries with negative offsets. Some applica-
tions place the window's upper right hand corner 5 pixels above and to
the left of the upper left hand corner of the screen; others may do
just plain bizarre things.
There are several ways to cause a window to map onto a desktop or page
other than the currently active one. The geometry technique mentioned
above (specifying x,y coordinates larger than the physical screen
size), however, suffers from the limitation of being interpreted rela-
tive to the current viewport: the window may not consistently appear on
a specific page, unless you always invoke the application from the same
page.
A better way to place windows on a different page, screen or desk from
the currently mapped viewport is to use the StartsOnPageorStartsOn-
Screen style specification (the successors to the older StartsOnDesk
style) in the .fvwm2rc configuration file. The placement is consis-
tent: it does not depend on your current location on the virtual desk-
top.
Some applications that understand standard Xt command line arguments
and X resources, like xterm and xfontsel, allow the user to specify the
start-up desk or page on the command line:
xterm -xrm "*Desk:1"
starts an xterm on desk number 1;
xterm -xrm "*Page:3 2 1"
starts an xterm two pages to the right and one down from the upper left
hand page of desk number 3. Not all applications understand the use of
these options, however. You could achieve the same results with the
following lines in your .Xdefaults file:
XTerm*Desk: 1
or
XTerm*Page: 3 2 1
USE ON MULTI-SCREEN DISPLAYS
If the -s command line argument is not given, fvwm automatically starts
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. This is not
to be confused with Xinerama support.
XINERAMA SUPPORT
Fvwm supports the Xinerama extension of newer X servers which is simi-
lar to multi head support (multiple screens) but allows to move windows
between screens. If Xinerama support has been compiled into fvwm, it
is used whenever fvwm runs on an X server that supports and uses multi-
ple screens via Xinerama. Without this option, the whole desktop is
treated as one big screen. For example, menus might pop up right
between two screens. The EdgeResistance command allows to specify an
explicit resistance value for moving windows over the screen edge
between two Xinerama screens. Xinerama support can be enabled or dis-
abled on the fly or from the configuration file with the Xinerama com-
mand. Many modules and commands work nicely with Xinerama displays.
Everywhere where a geometry in the usual X format can be supplied,
fvwm's Xinerama extension allows to specify a screen in addition to the
geometry (or even the screen alone). To do this, a '@' is added to the
end of the geometry string followed by either the screen number or a
letter. A number is taken as the number of the Xinerama screen to be
used (as configured in the X server). The letter can be one of 'g' for
the global screen (the rectangle that encloses all Xinerama screens),
'p' for the primary screen (see below), 'c' for the current screen (the
one that currently contains the pointer). If the X server does not
support Xinerama or only one screen is used, the screen bit is ignored.
Style * IconBox 64x300-0-0@p
Xinerama support can be configured to use a primary screen. Fwvm can
be configured to place new windows and icons on this screen. The pri-
mary screen is screen 0 by default but can be changed with the Xin-
eramaPrimaryScreen command.
Xinerama support was designed to work out of the box with the same con-
figurations file that would work on a single screen. It may not work
too well if the involved screens use different screen resolutions. In
this situation, windows may get stuck in the portion of the whole desk-
top that belongs to neither screen. If this happens, the windows or
icons can be retrieved with the command
All MoveToScreen
that can be entered in an FvwmConsole window or with FvwmCommand.
For multi-screen implementations other than Xinerama, such as Single
Logical Screen, it is possible to simulate a Xinerama configuration if
the total screen seen by FVWM is made up of equal sized monitors in a
rectangular grid. The commands XineramaSls and XineramaSlsSize are
used to configure this feature.
INITIALIZATION
During initialization, fvwm searches for a configuration file which
describes key and button bindings, and many other things. The format of
these files is described later. Fvwm first searches for configuration
files using the command
Read .fvwm2rc
This looks for .fvwm2rc in $HOME/.fvwm or $FVWM_USERDIR directories, as
described in Read below. If this fails, fvwm also searches for this
file in the $HOME directory or for system.fvwm2rc file in the system
place. If a configuration file is not found, any mouse button or the
Help or F1 keys on the root window brings up menus and forms that can
create a starting configuration file.
Fvwm sets two environment variables which are inherited by its chil-
dren. 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 is set to a
network-ready description of the display. $HOSTDISPLAY always uses the
TCP/IP transport protocol (even for a local connection) so $DISPLAY
should be used for local connections, as it may use Unix-domain sock-
ets, which are faster.
If you want to start some applications or modules with fvwm, you can
simply put
Exec app
or
Module FvwmXxx
into your .fvwm2rc, but it is not recommended; do this only if you know
what you are doing. It is usually critical to start applications or
modules after .fvwm2rc is read, because it contains styles or module
configurations which can affect window appearance and functionality.
The standard way to start applications or modules on fvwm's start up is
to add them to an initialization function (usually StartFunction or
InitFunction). This way they are only started after fvwm reads the
entire .fvwm2rc.
Fvwm has three special functions for initialization: StartFunction,
which is executed on startups and restarts; InitFunction and Restart-
Function, which are executed during initialization and restarts
(respectively) just after StartFunction. These functions may be cus-
tomized in a user's .fvwm2rc file via the AddToFunc command (described
later) to start up modules, xterms, or whatever you'd like to have
started by fvwm.
Fvwm has also a special exit function: ExitFunction, executed when
exiting or restarting before actually quitting. It could be used to
explicitly kill modules, etc.
If fvwm is run under a session manager, functions SessionInitFunction
and SessionRestartFunction are executed instead of InitFunction and
RestartFunction. This helps to define the user's .fvwm2rc file to be
good for both running under a session manager and without it. Gener-
ally it is a bad idea to start xterms or other applications in "Ses-
sion*" functions. Also someone can decide to start different modules
while running under a session manager or not. For the similar purposes
SessionExitFunction is used instead of ExitFunction.
DestroyFunc StartFunction
AddToFunc StartFunction
+ I ModuleSynchronous FvwmTheme
+ I Module FvwmPager * *
+ I Module FvwmButtons
DestroyFunc InitFunction
AddToFunc InitFunction
+ I Module FvwmBanner
+ I Module FvwmTaskBar
+ I xsetroot -solid cyan
+ I Exec xterm
+ I Exec netscape
DestroyFunc RestartFunction
AddToFunc RestartFunction
+ I Module FvwmTaskBar
DestroyFunc SessionInitFunction
AddToFunc SessionInitFunction
+ I Module FvwmBanner
DestroyFunc SessionRestartFunction
AddToFunc SessionRestartFunction
+ I Nop
You don't need to define all special functions if some are empty.
COMPILATION OPTIONS
Fvwm has a number of compile-time options. If you have trouble using a
certain command or feature, check to see if support for it was included
at compile time. Optional features are described in the config.h file
that is generated during compilation.
ICONS
The basic fvwm configuration uses monochrome bitmap icons. If XPM
extensions are compiled in, then color icons can be used. In order to
use these options you need the XPM package, as described in the
INSTALL.fvwm file.
If both the SHAPE and XPM options are compiled in you get shaped color
icons, which are very spiffy.
MODULES
A module is a separate program which runs as a separate Unix process
but transmits commands to fvwm to execute. Users can write their own
modules to do any weird or bizarre manipulations without bloating or
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 are already 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 at any time during the X session by
use of the Module built-in command. 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 closes the commu-
nication pipes and waits to receive a SIGCHLD from the module, indicat-
ing that it has detected the pipe closure and has exited. If modules
fail to detect the pipe closure fvwm exits after approximately 30 sec-
onds 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 .fvwm2rc setup file. Certain auxiliary information is
also transmitted, as in the sample module FvwmButtons. The FvwmButtons
module is documented in its own man page.
Please refer to the MODULE COMMANDS section for details.
ICCCM COMPLIANCE
Fvwm attempts to be ICCCM 2.0 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. In particular you cannot have the
same keyboard shortcuts working with your fvwm and another fvwm running
within Xnest (a nested X server running in a window). The same problem
exists with mouse bindings.
The ICCCM states that windows possessing the property
WM_HINTS(WM_HINTS):
Client accepts input or input focus: False
should not be given the keyboard input focus by the window manager.
These windows can take the input focus by themselves, however. A num-
ber of applications set this property, and yet expect the window-man-
ager to give them the keyboard focus anyway, so fvwm provides a window-
style, Lenience, which allows fvwm to overlook this ICCCM rule. Even
with this window-style it is not guaranteed that the application
accepts focus.
The differences between ICCCM 1.1 and 2.0 include the ability to take
over from a running ICCCM 2.0 compliant window manager; thus
fvwm2; vi .fvwm2rc; fvwm2 -replace
resembles the Restart command. It is not exactly the same, since
killing the previously running wm may terminate your X session, if the
wm was started as the last client in your .Xclients or .Xsession file.
Further additions are support for client-side colormap installation
(see the .SM ICCCM for details) and the urgency hint. Clients can set
this hint in the WM_HINTS property of their window and expect the win-
dow manager to attract the users attention to the window. Fvwm has two
re-definable functions for this purpose, "UrgencyFunc" and "Urgency-
DoneFunc", which are executed when the flag is set/cleared. Their
default definitions are:
AddToFunc UrgencyFunc
+ I Iconify off
+ I FlipFocus
+ I Raise
+ I WarpToWindow 5p 5p
AddToFunc UrgencyDoneFunc
+ I Nop
GNOME COMPLIANCE
Fvwm attempts to be GNOME compliant. Check http://www.gnome.org for
what that may mean. GNOME support is a compile time option which is on
by default. To disable GNOME hints for some or all windows, the
GNOMEIgnoreHints style can be used.
MWM COMPATIBILITY
Fvwm provides options to emulate Motif Window Manager (Mwm) as well as
possible. Please refer to the Emulate command as well as to the Mwm
specific options of the Style and MenuStyle commands for details.
OPEN LOOK and XVIEW COMPATIBILITY
OPEN LOOK and XVIEW COMPATIBILITY
Fvwm supports all the Open Look decoration hints (except pushpins).
Should you use any such application, please add the following line to
your .fvwm2rc:
Style * OLDecor
Most (perhaps all) Open Look applications have a strange notion of key-
board focus handling. Although a lot of work went into fvwm to work
well with these, you may still encounter problems. It is recommended
to use the NeverFocus focus policy and the NoLenience style for all
such applications (the windows will still get the focus):
Style <application name> NeverFocus, NoLenience
But in case you can not live with that focus policy, you can try using
one of the other focus policies in combination with the Lenience style:
Style <application name> MouseFocus, Lenience
Style <application name> SloppyFocus, Lenience
Style <application name> ClickToFocus, Lenience
M4 PREPROCESSING
M4 pre-processing is handled by a module in fvwm. To get more details,
try man FvwmM4. In short, if you want fvwm to parse your files with
m4, then replace the command Read with FvwmM4 in your .fvwm2rc file (if
it appears at all), and start fvwm with the command
fvwm2 -cmd "FvwmM4 .fvwm2rc"
CPP PREPROCESSING
Cpp is the C-language pre-processor. fvwm offers cpp processing which
mirrors the m4 pre-processing. To find out about it, re-read the M4
section above, but replace "m4" with "cpp".
AUTO-RAISE
Windows can be automatically raised when it receives focus, or some
number of milliseconds after it receives focus, by using the auto-raise
module, FvwmAuto.
CONFIGURATION FILES
The configuration file is used to describe mouse and button bindings,
colors, the virtual display size, and related items. The initializa-
tion configuration file is typically called .fvwm2rc. By using the
Read built-in, it is easy to read in new configuration files as you go.
Lines beginning with '#' are ignored by fvwm. Lines starting with '*'
are expected to contain module configuration commands (rather than con-
figuration commands for fvwm itself). Like in shell scripts embedded
newlines in a configuration file line can be quoted by preceding them
with a backslash. All lines linked in this fashion are treated as a
single line. The newline itself is ignored.
Fvwm makes no distinction between configuration commands and built-in
commands, so anything mentioned in the built-in commands section can be
placed on a line by itself for fvwm to execute as it reads the configu-
ration file, or it can be placed as an executable command in a menu or
bound to a mouse button or a keyboard key. It is left as an exercise
for the user to decide which function make sense for initialization and
which ones make sense for run-time.
SUPPLIED CONFIGURATION
A sample configuration file, .fvwm2rc, is supplied with the fvwm dis-
tribution. It is well commented and can be used as a source of exam-
ples for fvwm configuration.
KEYBOARD SHORTCUTS
Almost all window manager operations can be performed from the keyboard
so mouse-less operation should be possible. In addition to scrolling
around the virtual desktop by binding the Scroll built-in to appropri-
ate keys, Popup, 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 termi-
nated by pressing return. Holding down the Shift key causes the
pointer movement to go in larger steps and holding down the control key
causes 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.
SESSION MANAGEMENT
Fvwm supports session management according to the X Session Management
Protocol. It saves and restores window position, size, stacking order,
desk, stickiness, shadedness, maximizedness, iconifiedness for all win-
dows. Furthermore, some global state is saved.
Fvwm doesn't save any information regarding styles, decors, functions
or menus. If you change any on these resources during a session (e.g.
by issuing Style commands or by using various modules), these changes
are lost after saving and restarting the session. To become permanent,
such changes have to be added to the configuration file.
Note further that the current implementation has the following anomaly
when used on a multi-screen display: Starting fvwm for the first time,
fvwm manages all screens by forking a copy of itself for each screen.
Every copy knows its parent and issuing a Quit command to any instance
of fvwm kills the master and thus all copies of fvwm. When you save
and restart the session, the session manager brings up a copy of fvwm
on each screen, but this time they are started as individual instances
managing one screen only. Thus a Quit kills only the copy it was sent
to. This is probably not a very serious problem, since with session
management, you are supposed to quit a session through the session man-
ager anyway. If it is really needed,
Exec exec killall fvwm2
still kills all copies of fvwm. Your system must have the killall com-
mand though.
BOOLEAN ARGUMENTS
A number of commands take one or several boolean arguments. These take
a few equivalent inputs: "yes", "on", "true", "t" and "y" all evaluate
to true while "no", "off", "false", "f" and "n" evaluate to false.
Some commands allow "toggle" too which means that the feature is dis-
abled if it is currently enabled and vice versa.
BUILT IN KEY AND MOUSE BINDINGS
The following commands are built-in to fvwm:
Key Help R A Popup MenuFvwmRoot
Key F1 R A Popup MenuFvwmRoot
Key Tab A M WindowList Root c c NoDeskSort
Key Escape A MC EscapeFunc
Mouse 0 R N Menu MenuFvwmRoot
Mouse 1 TS A FuncFvwmRaiseLowerX Move
Mouse 1 F A FuncFvwmRaiseLowerX Resize
AddToFunc FuncFvwmRaiseLowerX I Raise
+ M $0
+ D Lower
The Help and F1 keys invoke a built-in menu that fvwm creates. This is
primarily for new users that have not created their own configuration
file. Either key on the root (background) window pops up an menu to
help you get started.
The Tab key pressed anywhere with the Meta key (same as the Alt key on
PC keyboards) held down pop-ups a window list.
Mouse button 1 on the title-bar or side frame can move, raise or lower
a window.
Mouse button 1 on the window corners can resize, raise or lower a win-
dow.
You can override or remove these bindings. To remove the window list
binding, use this:
Key Tab A M -
BUILT IN COMMANDS
Fvwm supports a set of built-in functions which can be bound to key-
board or mouse buttons. If fvwm expects to find a built-in function in
a command, but fails, it checks to see if the specified command should
have been
Function (rest of command)
or
Module (rest of command)
This allows complex functions or modules to be invoked in a manner
which is fairly transparent to the configuration file.
Example: the .fvwm2rc file contains the line
HelpMe
Fvwm looks for a built-in command called "HelpMe", and fails. Next it
looks for a user-defined complex function called "HelpMe". If no such
user defined function exists, Fvwm tries to execute a module called
"HelpMe".
Note: There are many commands that affect look and feel of specific,
some or all windows, like Style, Mouse, the FvwmTheme module and many
others. For performance reasons such changes are not applied immedi-
ately but only when fvwm is idle, i.e. no user interaction or module
input is pending. Specifically, new Style options that are set in a
function are not applied until after the function has completed. This
can sometimes lead to unwanted effects.
To force that all pending changes are applied immediately, use the
UpdateStyles, Refresh or RefreshWindow commands.
QUOTING
Quotes are required only when needed to make fvwm consider two or more
words to be a single argument. Unnecessary quoting is allowed. If you
want a quote character in your text, you must escape it by using the
backslash character. For example, if you have a pop-up menu called
"Window-Ops", then you don't need quotes:
Popup Window-Ops
but if you replace the dash with a space, then you need quotes:
Popup "Window Ops"
The supported quoting characters are double quotes, single quotes and
reverse single quotes. All three kinds of quotes are treated in the
same way. Single characters can be quoted with a preceding backslash.
Quoting single characters works even inside other kinds of quotes.
COMMAND EXPANSION
Whenever a fvwm command line is executed, fvwm performs parameter
expansion. A parameter is a '$' followed by a word enclosed in brack-
ets ($[...]) or a single special character. If fvwm encounters an
unquoted parameter on the command line it expands it to a string indi-
cated by the parameter name. Unknown parameters are left untouched.
Parameter expansion is performed before quoting. To quote a '$' use
"$$".
In the past some single letter variables were supported. It is depre-
cated now, since they cause a number of problems. You should use the
longer substitutes instead.
Example:
# Print the current desk number, horizontal
# page and the window's class.
Echo $[desk.n] $[page.nx] $[w.class]
Note: If the command is called outside a window context, it will print
"$[w.class]" instead of the class name. It is usually not enough to
have the pointer over a window to have a context window. To force
using the window with the focus, the Current command can be used:
Current Echo $[desk.n] $[page.nx] $[w.class]
The parameters known by fvwm are:
$$
A literal '$'.
$.
The absolute directory of the currently Read file. Intended
for creating relative and relocatable configuration trees. If
used outside of any read file, the returned value is '.'.
$c
The window's resource class name or "$c" if no window is asso-
ciated with the command.
(Deprecated, use $[w.class] instead.)
$d
The current desk number.
(Deprecated, use $[desk.n] instead.)
$n
The window's name or "$n" if no window is associated with the
command.
(Deprecated, use $[w.name] instead.)
$r
The window's resource name or "$r" if no window is associated
with the command.
(Deprecated, use $[w.resource] instead.)
$v
The first line printed by the -version command line option.
(Deprecated, use $[version.line] instead.)
$w
The window-id (expressed in hex, e.g. 0x10023c) of the window
the command was called for or "$w" if no window is associated
with the command.
(Deprecated, use $[w.id] instead.)
$x
The x coordinate of the current viewport.
(Deprecated, use $[vp.x] instead.)
$y
The y coordinate of the current viewport.
(Deprecated, use $[vp.y] instead.)
$0 to $9
The positional parameters given to a complex function (a func-
tion that has been defined with the AddToFunc command). "$0"
is replaced with the first parameter, "$1" with the second
parameter and so on. If the corresponding parameter is unde-
fined, the "$..." is deleted from the command line.
$*
All positional parameters given to a complex function. This
includes parameters that follow after "$9".
$[version.num]
The version number, like "2.6.0".
$[version.info]
The version info, like " (from cvs)", empty for the official
releases. (Always empty in this branch.)
$[version.line]
The first line printed by the -version command line option.
$[vp.x] $[vp.y] $[vp.width] $[vp.height]
Either coordinate or the width or height of the current view-
port.
$[desk.n]
The current desk number.
$[desk.width] $[desk.height]
The width or height of the whole desktop, i.e. the width or
height multiplied by the number of pages in x or y direction.
$[desk.pagesx] $[desk.pagesy]
The number of total pages in a desk in x or y direction. This
is the same as the values set by DesktopSize.
$[page.nx] $[page.ny]
The current page numbers, by X and Y axes, starting from 0.
page is equivalent to area in the GNOME terminology.
$[w.id]
The window-id (expressed in hex, e.g. 0x10023c) of the window
the command was called for or "$[w.id]" if no window is associ-
ated with the command.
$[w.x] $[w.y] $[w.width] $[w.height]
Either coordinate or the width or height of the current window
if it is not iconified. If no window is associated with the
command or the window is iconified, the string is left as is.
$[w.name] $[w.iconname] $[w.class] $[w.resource]
The window's name or icon name or resource class or resource
name respectivelly, or unexpended "$[w.<attribute>]" string if
no window is associated with the command.
$[screen]
The screen number fvwm is running on. Useful for setups with
multiple screens.
$[fg.cs<n>]
$[bg.cs<n>]
$[hilight.cs<n>]
$[shadow.cs<n>]
These class of parameters is replaced with the name of the
foreground (fg), background (bg), hilight (hilight) or shadow
(shadow) color that is defined in colorset <n> (replace <n>
with zero or a positive integer). For example "$[fg.cs3]" is
expanded to the name of the foreground color of colorset 3 (in
rgb:rrrr/gggg/bbbb form). Please refer to the man page of the
FvwmTheme module for details about colorsets. Note that
although other parameters cannot be used in module configura-
tion lines, it is possible to use this class of parameters.
They can be used wherever a module expects a color name. Since
the FvwmTheme module is not running when fvwm first passes
through its configuration file, you may not get the desired
results if you use this in commands like
Style * HilightFore $[fg.cs0], HilightBack $[bg.cs0]
$[...]
If the string within the braces is neither of the above, fvwm
tries to find an environment variable with this name and
replaces its value if one is found (e.g. "$[PAGER]" could be
replaced by "more"). Otherwise the string is left as is.
Some examples can be found in the description of the AddToFunc command.
THE LIST OF BUILTIN COMMANDS
The commands descriptions below are grouped together in the following
sections. The sections are hopefully sorted in order of usefulness to
the newcomer.
- Menu commands
- Miscellaneous commands
- Commands affecting window movement and placement
- Commands for focus and mouse movement
- Commands controlling window state
- Commands for mouse, key and stroke bindings
- The Style command (controlling window styles)
- Other commands controlling window styles
- Commands controlling the virtual desktop
- Commands for user functions and shell commands
- Conditional commands
- Module commands
- Quit, restart and session management commands
- Color gradients
COMMANDS FOR MENUS
AddToMenu menu-name [menu-label action]
Begins or adds to a menu definition. Typically a menu defini-
tion looks like this:
AddToMenu Utilities Utilities Title
+ Xterm Exec exec xterm -e tcsh
+ Rxvt Exec exec rxvt
+ "Remote Logins" Popup Remote-Logins
+ Top Exec exec rxvt -T Top -n \
Top -e top
+ Calculator Exec exec xcalc
+ Xman Exec exec xman
+ Xmag Exec exec xmag
+ emacs Exec exec xemacs
+ Mail MailFunction \
xmh "-font fixed"
+ "" Nop
+ Modules Popup Module-Popup
+ "" Nop
+ Exit Fvwm Popup Quit-Verify
The menu could be invoked via
Mouse 1 R A Menu Utilities Nop
or
Mouse 1 R A Popup Utilities
There is no end-of-menu symbol. Menus do not have to be defined
in a contiguous region of the .fvwm2rc file. The quoted portion
in the above examples is the menu label, which appears in the
menu when the user pops it up. The remaining portion is a
built-in command which should be executed if the user selects
that menu item. An empty menu-label ("") and the Nop function
can be used to insert a separator into the menu.
The keywords DynamicPopUpAction and DynamicPopDownAction have a
special meaning when used as the name of a menu item. The
action following the keyword is executed whenever the menu is
popped up or down. This way you can implement dynamic menus.
It is even possible to destroy itself with DestroyMenu and the
rebuild from scratch. When the menu has been destroyed (unless
you used the recreate option when destroying the menu), do not
forget to add the dynamic action again.
Note: Do not trigger actions that require user interaction. They
will probably fail and may screw up your menus. See Silent com-
mand.
Warning: Do not issue MenuStyle commands as dynamic menu
actions. Chances are good that this will crash fvwm.
Example (File browser):
# You can find the shell script
# fvwm_make_browse_menu.sh in the utils
# directory of the distribution.
AddToMenu BrowseMenu
+ DynamicPopupAction Piperead \
'fvwm_make_browse_menu.sh BrowseMenu'
Example (Picture menu):
# Build a menu of all .jpg files in
# $HOME/Pictures
AddToMenu JpgMenu foo title
+ DynamicPopupAction Function MakeJpgMenu
AddToFunc MakeJpgMenu
+ I DestroyMenu recreate JpgMenu
+ I AddToMenu JpgMenu Pictures Title
+ I PipeRead 'for i in $HOME/Pictures/*.jpg; \
do echo AddToMenu JpgMenu "`basename $i`" Exec xv $i; done'
The keyword MissingSubmenuFunction has a similar meaning. It is
executed whenever you try to pop up a sub-menu that does not
exist. With this function you can define and destroy menus on
the fly. You can use any command after the keyword, but the
name of a function defined with AddToFunc follows it, fvwm exe-
cutes this command:
Function <function-name> <menu-name>
I.e. the name is passed to the function as its first argument
and can be referred to with "$0".
Example:
# There is another shell script
# fvwm_make_directory_menu.sh in the utils
# directory of the distribution. To use it,
# define this function in your configuration
# file:
AddToFunc MakeMissingDirectoryMenu
+ I Exec fvwm_make_directory_menu.sh $0
AddToMenu SomeMenu
+ MissingSubmenuFunction MakeMissingDirectoryMenu
+ "Root directory" Popup /
This is another implementation of the file browser that uses
sub-menus for subdirectories.
Titles can be used within the menu. If you add the option top
behind the keyword Title, the title is added to the top of the
menu. If there was a title already, it is overwritten.
AddToMenu Utilities Tools Title top
All text up to the first Tab in the menu label is aligned to the
left side of the menu, all text right of the first Tab is
aligned to the left in a second column and all text thereafter
is placed right aligned in the third column. All other Tabs are
replaced by spaces. Note that you can change this format with
the ItemFormat option of the MenuStyle command.
If the menu-label contains an ampersand ('&'), the next charac-
ter is taken as a hot-key for the menu item. Hot-keys are
underlined in the label. To get a literal '&', insert "&&".
Pressing the hot-key moves through the list of menu items with
this hot-key or selects an item that is the only one with this
hot-key.
If the menu-label contains a sub-string which is set off by
stars, then the text between the stars is expected to be the
name of an xpm-icon or bitmap-file to insert in the menu. To
get a literal '*', insert "**". For example
+ Calculator*xcalc.xpm* Exec exec xcalc
inserts a menu item labeled "Calculator" with a picture of a
calculator above it. The following:
+ *xcalc.xpm* Exec exec xcalc
Omits the "Calculator" label, but leaves the picture.
If the menu-label contains a sub-string which is set off by per-
cent signs, then the text between the percent signs is expected
to be the name of an xpm-icon or bitmap-file (a so called mini
icon to insert to the left of the menu label. A second mini
icon that is drawn at the right side of the menu can be given in
the same way. To get a literal '%', insert "%%". For example
+ Calculator%xcalc.xpm% Exec exec xcalc
inserts a menu item labeled "Calculator" with a picture of a
calculator to the left. The following:
+ %xcalc.xpm% Exec exec xcalc
Omits the "Calculator" label, but leaves the picture. The pic-
tures used with this feature should be small (perhaps 16x16).
If the menu-name (not the label) contains a sub-string which is
set off by at signs ('@'), then the text between them is
expected to be the name of an xpm or bitmap file to draw along
the left side of the menu (a side pixmap). You may want to use
the SidePic option of the MenuStyle command instead. To get a
literal '@', insert "@@". For example
AddToMenu StartMenu@linux-menu.xpm@
creates a menu with a picture in its bottom left corner.
If the menu-name also contains a sub-string surrounded by '^'s,
then the text between '^'s is expected to be the name of an X11
color and the column containing the side picture is colored with
that color. You can set this color for a menu style using the
SideColor option of the MenuStyle command. To get a literal
'^', insert "^^". Example:
AddToMenu StartMenu@linux-menu.xpm@^blue^
creates a menu with a picture in its bottom left corner and col-
ors with blue the region of the menu containing the picture.
In all the above cases, the name of the resulting menu is name
specified, stripped of the substrings between the various delim-
iters.
ChangeMenuStyle menustyle menu ...
Changes the menu style of menu to menustyle. You may specified
more than one menu in each call of ChangeMenuStyle.
ChangeMenuStyle pixmap1 \
ScreenSaverMenu ScreenLockMenu
CopyMenuStyle orig-menustyle dest-menustyle
Copy orig-menustyle to dest-menustyle, where orig-menustyle is
an existing menu style. If the menu style dest_menustyle does
not exist, then it is created.
DestroyMenu [recreate] menu
Deletes a menu, so that subsequent references to it are no
longer valid. You can use this to change the contents of a menu
during an fvwm session. The menu can be rebuilt using
AddToMenu. The optional parameter recreate tells fvwm not to
throw away the menu completely but to throw away all the menu
items (including the title).
DestroyMenu Utilities
DestroyMenuStyle menustyle
Deletes the menu style named menustyle and changes all menus
using this style to the default style, you cannot destroy the
default menu style.
DestroyMenuStyle pixamp1
Menu menu-name [ position ] [ double-click-action ]
Causes a previously defined menu to be popped up in a sticky
manner. That is, if the user invokes the menu with a click
action instead of a drag action, the menu stays up. The command
double-click-action is invoked if the user double-clicks a but-
ton (or hits the key rapidly twice if the menu is bound to a
key) when bringing up the menu. If the double click action is
not specified, double clicking on the menu does nothing. How-
ever, if the menu begins with a menu item (i.e. not with a title
or a separator) and the double click action is not given, double
clicking invokes the first item of the menu (but only if the
pointer really was over the item).
Several other commands affect menu operation. See MenuStyle and
SetAnimation. When in a menu, keyboard shortcuts work as
expected. Cursor keystrokes are also allowed. Specifically,
Tab, Meta-Tab, Cursor-Down, Ctrl-N, or Ctrl-J move to the next
item; Shift-Tab, Shift-Meta-Tab, Cursor-Up, Ctrl-P, or Ctrl-K
move to the prior item; Cursor-Left or Ctrl-B returns to the
prior menu; Cursor-Right or Ctrl-F pop up the next menu; Ctrl-
Cursor-Up, Shift-Ctrl-Meta-Tab and Page-Up move up five items;
Ctrl-Cursor-Down, Ctrl-Meta-Tab and Page-Down move down five
items, respectively; Home, Shift-Cursor-Up or End, Shift-Cursor-
Down move to the first or last item, respectively; Meta-Cursor-
Up or Meta-Cursor-Down move just behind the next or previous
separator; Shift-Ctrl-Tab or Ctrl-Tab work exactly the same;
Enter, Return, or Space executes the current item; Insert opens
the "More..." sub-menu if any; Escape and Delete exit the cur-
rent sequence of menus.
The pointer is warped to where it was when the menu was invoked
if it was both invoked and terminated with a keystroke.
The position arguments allow placement of the menu somewhere on
the screen, for example centered on the visible screen or above
a title bar. Basically it works like this: you specify a con-
text-rectangle and an offset to this rectangle by which the
upper left corner of the menu is moved from the upper left cor-
ner of the rectangle. The position arguments consist of several
parts:
[context-rectangle] x y [special-options]
The context-rectangle can be one of:
Root
the root window of the current screen.
XineramaRoot
the root window of the whole Xinerama screen. Equiva-
lent to "root" when Xinerama is not used.
Mouse
a 1x1 rectangle at the mouse position.
Window
the window with the focus.
Interior
the inside of the focused window.
Title
the title of the focused window or icon.
Button<n>
button #n of the focused window.
Icon
the focused icon.
Menu
the current menu.
Item
the current menu item.
Context
the current window, menu or icon.
This
whatever widget the pointer is on (e.g. a corner of a
window or the root window).
Rectangle <geometry>
the rectangle defined by <geometry> in X geometry for-
mat. Width and height default to 1 if omitted.
If the context-rectangle is omitted or illegal (e.g. "item" on a
window), "Mouse" is the default. Note that not all of these
make sense under all circumstances (e.g. "Icon" if the pointer
is on a menu).
The offset values x and y specify how far the menu is moved from
it's default position. By default, the numeric value given is
interpreted as a percentage of the context rectangle's width
(height), but with a trailing 'm' the menu's width (height) is
used instead. Furthermore a trailing 'p' changes the interpre-
tation to mean pixels.
Instead of a single value you can use a list of values. All
additional numbers after the first one are separated from their
predecessor by their sign. Do not use any other separators.
If x or y are prefixed with "o<number>" where <number> is an
integer, the menu and the rectangle are moved to overlap at the
specified position before any other offsets are applied. The
menu and the rectangle are placed so that the pixel at <number>
percent of the rectangle's width/height is right over the pixel
at <number> percent of the menu's width/height. So "o0" means
that the top/left borders of the menu and the rectangle overlap,
with "o100" it's the bottom/right borders and if you use "o50"
they are centered upon each other (try it and you will see it is
much simpler than this description). The default is "o0". The
prefix "o<number>" is an abbreviation for "+<number>-<number>m".
A prefix of 'c' is equivalent to "o50". Examples:
# window list in the middle of the screen
WindowList Root c c
# menu to the left of a window
Menu name window -100m c+0
# popup menu 8 pixels above the mouse pointer
Popup name mouse c -100m-8p
# somewhere on the screen
Menu name rectangle 512x384+1+1 +0 +0
# centered vertically around a menu item
AddToMenu foobar-menu
+ "first item" Nop
+ "special item" Popup "another menu" item \
+100 c
+ "last item" Nop
# above the first menu item
AddToMenu foobar-menu
+ "first item" Popup "another menu" item \
+0 -100m
Note that you can put a sub-menu far off the current menu so you
could not reach it with the mouse without leaving the menu. If
the pointer leaves the current menu in the general direction of
the sub-menu the menu stays up.
The special-options:
The animated and Mwm or Win menu styles may move a menu
somewhere else on the screen. If you do not want this you
can add Fixed as an option. This might happen for example
if you want the menu always in the top right corner of the
screen.
Where do you want a menu to appear when you click on it's
menu item? The default is to place the title under the cur-
sor, but if you want it where the position arguments say,
use the SelectInPlace option. If you want the pointer on
the title of the menu, use SelectWarp too. Note that these
options apply only if the PopupAsRootMenu MenuStyle option
is used.
The pointer is warped to the title of a sub-menu whenever
the pointer would be on an item when the sub-menu is popped
up (fvwm menu style) or never warped to the title at all
(Mwm or Win menu styles). You can force (forbid) warping
whenever the sub-menu is opened with the WarpTitle (NoWarp)
option.
Note that the special-options do work with a normal menu
that has no other position arguments.
MenuStyle stylename options
Sets a new menu style or changes a previously defined style.
The stylename is the style name; if it contains spaces or tabs
it has to be quoted. The name "*" is reserved for the default
menu style. The default menu style is used for every menu-like
object (e.g. the window created by the WindowList command) that
had not be assigned a style using the ChangeMenuStyle. See also
DestroyMenuStyle. When using monochrome color options are
ignored.
options is a comma separated list containing some of the key-
words Fvwm / Mwm / Win, BorderWidth, Foreground, Background,
Greyed, HilightBack / HilightBackOff, ActiveFore / ActiveFore-
Off, MenuColorset, ActiveColorset, GreyedColorset,
Hilight3DThick / Hilight3DThin / Hilight3DOff, Hilight3DThick-
ness, Animation / AnimationOff, Font, MenuFace, PopupDelay, Pop-
upOffset, TitleWarp / TitleWarpOff, TitleUnderlines0 / TitleUn-
derlines1 / TitleUnderlines2, SeparatorsLong / SeparatorsShort,
TrianglesSolid / TrianglesRelief, PopupImmediately / PopupDe-
layed, PopdownImmediately / PopdownDelayed, DoubleClickTime,
SidePic, SideColor, PopupAsRootMenu / PopupAsSubmenu, RemoveSub-
menus / HoldSubmenus, SubmenusRight / SubmenusLeft, SelectOnRe-
lease, ItemFormat, VerticalItemSpacing, VerticalTitleSpacing,
AutomaticHotkeys / AutomaticHotkeysOff.
In the above list some options are listed as option pairs or
triples with a '/' in between. These options exclude each
other.
Fvwm, Mwm, Win reset all options to the style with the same name
in former versions of fvwm. The default for new menu styles is
Fvwm style. These options override all others except Fore-
ground, Background, Greyed, HilightBack, HilightFore and Pop-
upDelay, so they should be used only as the first option speci-
fied for a menu style or to reset the style to defined behavior.
The same effect can be created by setting all the other options
one by one.
Mwm and Win style menus popup sub-menus automatically. Win
menus indicate the current menu item by changing the background
to dark. Fvwm sub-menus overlap the parent menu, Mwm and Win
style menus never overlap the parent menu.
Fvwm style is equivalent to HilightBackOff, Hilight3DThin,
ActiveForeOff, AnimationOff, Font, MenuFace, PopupOffset 0 67,
TitleWarp, TitleUnderlines1, SeparatorsShort, TrianglesRelief,
PopupDelayed, PopdownDelayed, PopupAsSubmenu, HoldSubmenus, Sub-
menusRight, BorderWidth 2, AutomaticHotkeysOff.
Mwm style is equivalent to HilightBackOff, Hilight3DThick,
ActiveForeOff, AnimationOff, Font, MenuFace, PopupOffset -3 100,
TitleWarpOff, TitleUnderlines2, SeparatorsLong, TrianglesRelief,
PopupImmediately, PopdownDelayed, PopupAsSubmenu, HoldSubmenus,
SubmenusRight, BorderWidth 2, AutomaticHotkeysOff.
Win style is equivalent to HilightBack, Hilight3DOff, Active-
ForeOff, AnimationOff, Font, MenuFace, PopupOffset -5 100,
TitleWarpOff, TitleUnderlines1, SeparatorsShort, TrianglesSolid,
PopupImmediately, PopdownDelayed, PopupAsSubmenu, RemoveSub-
menus, SubmenusRight, BorderWidth 2, AutomaticHotkeysOff.
BorderWidth takes the thickness of the border around the menus
in pixels. It may be zero to 50 pixels. The default is 2.
Using an illegal value reverts the border width to the default.
Foreground and Background may have a color name as an argument.
This color is used for menu text or the menu's background. You
can omit the color name to reset these colors to the built in
default.
Greyed may have a color name as an argument. This color is the
one used to draw a menu-selection which is prohibited (or not
recommended) by the Mwm hints which an application has speci-
fied. If the color is omitted the color of greyed menu entries
is based on the background color of the menu.
HilightBack and HilightBackOff switch hilighting the background
of the selected menu item on and off. A specific background
color may be used by providing the color name as an argument to
HilightBack. If you use this option without an argument the
color is based on the menu's background color.
ActiveFore and ActiveForeOff switch hilighting the foreground
of the selected menu item on and off. A specific foreground
color may be used by providing the color name as an argument to
ActiveFore. Omitting the color name has the same effect as
using ActiveForeOff.
MenuColorset controls if a colorset is used instead of the Fore-
ground, Background and MenuFace menu styles. If the MenuCol-
orset keyword is followed by a number equal to zero or greater,
this number is taken as the number of the colorset to use. If
the number is omitted, the colorset is switched off and the reg-
ular menu styles are used again. The foreground and background
colors of the menu items are replaced by the colors from the
colorset. If the colorset has a pixmap defined, this pixmap is
used as the background of the menu. Note that the MenuFace menu
style has been optimized for memory consumption and may use less
memory than the background from a colorset. The shape mask from
the colorset is used to shape the menu. Please refer to the
description of the Colorset command and the documentation of the
FvwmTheme module for details about colorsets.
ActiveColorset works exactly like MenuColorset, but the fore-
ground from the colorset replaces the color given with the
ActiveFore menu style and the colorset's background color
replaces the color given with the HilightBack command (to turn
on background hilighting you have to use the HilightBack menu
style too). If specified, the hilight and shadow colors from
the colorset are used too. The pixmap and shape mask from the
colorset are not used.
GreyedColorset works exactly like MenuColorset, but the fore-
ground from the colorset replaces the color given with the
Greyed menu style. No other parts of the colorset are used.
Hilight3DThick, Hilight3DThin and Hilight3DOff determine if the
selected menu item is hilighted with a 3D relief. Thick reliefs
are two pixels wide, thin reliefs are one pixel wide.
Hilight3DThickness takes one numeric argument that may be
between -50 and +50 pixels. With negative values the menu item
gets a pressed in look. The above three commands are equivalent
to a thickness of 2, 1 and 0.
Animation and AnimationOff turn menu animation on or off. When
animation is on, sub-menus that don't fit on the screen cause
the parent menu to be shifted to the left so the sub-menu can be
seen.
Font takes a font name as an argument. If a font by this name
exists it is used for the text of all menu items. If it does
not exist or if the name is left blank the built in default is
used.
MenuFace enforces a fancy background upon the menus. You can
use the same options for MenuFace as for the ButtonStyle. See
description of ButtonStyle command and the COLOR GRADIENTS sec-
tions for more information. If you use MenuFace without argu-
ments the style is reverted back to normal.
Some examples of MenuFaces are:
MenuFace DGradient 128 2 lightgrey 50 blue 50 \
white
MenuFace TiledPixmap texture10.xpm
MenuFace HGradient 128 2 Red 40 Maroon 60 \
White
MenuFace Solid Maroon
Note: The gradient styles H, V, B and D are optimized for high
speed and low memory consumption in menus. This is not the case
for all the other gradient styles. They may be slow and consume
huge amounts of memory, so if you encounter performance problems
with them you may be better off by not using them. To improve
performance you can try one or all of the following:
Turn hilighting of the active menu item other than foreground
color off:
MenuStyle <style> Hilight3DOff, HilightBackOff
MenuStyle <style> ActiveFore <preferred color>
Make sure sub-menus do not overlap the parent menu. This can
prevent menus being redrawn every time a sub-menu pops up or
down.
MenuStyle <style> PopupOffset 1 100
Run your X server with backing storage. If your X Server is
started with the -bs option, turn it off. If not try the -wm
option.
startx -- -wm
You may have to adapt this example to your system (e.g. if you
use xinit to start X).
PopupDelay requires one numeric argument. This value is the
delay in milliseconds before a sub-menu is popped up when the
pointer moves over a menu item that has a sub-menu. If the
value is zero no automatic pop up is done. If the argument is
omitted the built in default is used. Note that the popup delay
has no effect if the PopupImmediately option is used since sub-
menus pop up immediately then.
PopupImmediately makes menu items with sub-menus pop up it up as
soon as the pointer enters the item. The PopupDelay option is
ignored then. If PopupDelayed is used fvwm looks at the Pop-
upDelay option if or when this automatic popup happens.
PopdownDelay works exactly like PopupDelay but determines the
timeout of the PopupDelayed style.
PopdownImmediately makes sub-menus vanish as soon as the pointer
leaves the sub-menu and the correspondent item in the parent
menu. With the opposite option PopdownDelayed the sub-menu only
pops down after the time specified with the PopdownDelay option.
This comes handy when the pointer often strays off the menu item
when trying to move into the sub-menu. Whenever there is a con-
flict between the PopupImmediately, PopupDelayed, PopupDelay
styles and the PopdownImmediately, PopdownDelayed, PopdownDelay
styles, the Popup... styles win when using mouse navigation and
the Popdown... styles win when navigating with the keyboard.
PopupOffset requires two integer arguments. Both values affect
where sub-menus are placed relative to the parent menu. If both
values are zero, the left edge of the sub-menu overlaps the left
edge of the parent menu. If the first value is non-zero the
sub-menu is shifted that many pixels to the right (or left if
negative). If the second value is non-zero the menu is moved by
that many percent of the parent menu's width to the right or
left.
TitleWarp and TitleWarpOff affect if the pointer warps to the
menu title when a sub-menu is opened or not. Note that regard-
less of this setting the pointer is not warped if the menu does
not pop up under the pointer.
TitleUnderlines0, TitleUnderlines1 and TitleUnderlines2 specify
how many lines are drawn below a menu title.
SeparatorsLong and SeparatorsShort set the length of menu sepa-
rators. Long separators run from the left edge all the way to
the right edge. Short separators leave a few pixels to the
edges of the menu.
TrianglesSolid and TrianglesRelief affect how the small trian-
gles for sub-menus is drawn. Solid triangles are filled with a
color while relief triangles are hollow.
DoubleClickTime requires one numeric argument. This value is
the time in milliseconds between two mouse clicks in a menu to
be considered as a double click. The default is 450 millisec-
onds. If the argument is omitted the double click time is reset
to this default.
SidePic takes the name of an xpm or bitmap file as an argument.
The picture is drawn along the left side of the menu. The Side-
Pic option can be overridden by a menu specific side pixmap (see
AddToMenu). If the file name is omitted an existing side pixmap
is remove from the menu style.
SideColor takes the name of an X11 color as an argument. This
color is used to color the column containing the side picture
(see above). The SideColor option can be overridden by a menu
specific side color (see AddToMenu). If the color name is omit-
ted the side color option is switched off.
PopupAsRootMenu and PopupAsSubmenu change the behavior when you
click on a menu item that opens a sub-menu. With PopupAsRootMenu
the original menu is closed before the sub-menu appears, with
PopupAsSubmenu it is not, so you can navigate back into the par-
ent menu. Furthermore, with PopupAsSubmenu the sub-menu is held
open (posted) regardless of where you move the mouse. Depending
on your menu style this may simplify navigating through the
menu. Any keystroke while a menu is posted reverts the menu
back to the normal behavior. PopupAsSubmenu is the default.
RemoveSubmenus instructs fvwm to remove sub-menus when you move
back into the parent menu. With HoldSubmenus the sub-menu
remains visible. You probably want to use HoldSubmenus if you
are using the PopupDelayed style. RemoveSubmenus affects menu
navigation with the keyboard.
SelectOnRelease takes an optional key name as an argument. If
the given key is release in a menu using this style, the current
menu item is selected. This is intended for Alt-Tab WindowList
navigation. The key name is a standard X11 key name as defined
in /usr/include/X11/keysymdef.h, with the leading "XK_" omitted.
To disable this behaviour, omit the key name.
Note: Some X servers do not support KeyRelease events. Selec-
tOnRelease does not work on such a machine.
ItemFormat takes a special string as its argument that deter-
mines the layout of the menu items. Think of the format string
as if it were a menu item. All you have to do is tell fvwm
where to place the different parts of the menu item (i.e. the
labels, the triangle denoting a sub menu, the mini icons and the
side pic) in the blank area. The string consists of spaces, Tab
characters and formatting directives beginning with '%'. Any
illegal characters and formatting directives are silently
ignored:
%l, %c and %r
Insert the next item label. Up to three labels can be
used. The item column is left-aligned (%l), centered
(%c) or right-aligned (%r).
%i
Inserts the mini icon.
%> and %<
Insert the sub-menu triangle pointing either to the
right (%>) or to the left (%<)
%|
The first %| denotes the beginning of the area that is
highlighted either with a background color or a relief
(or both). The second %| marks the end of this area.
%| can be used up to twice in the string. If you don't
add one or both of them, fvwm sets the margins to the
margins of the whole item (not counting the side pic-
ture).
%s
Places the side picture either at the beginning or the
end of the menu. This directive may be used only once
and only as the first or last in the format string. If
the %s is not at the beginning of the string, all char-
acters to the right of it are silently ignored.
Space, Tab, %Space and %Tab
Add gap of one space, or a tab, using the width of the
menu font. When using a tab, the size of the gap can be
one to 8 spaces since the tab position is a multiple of
8 from the edge of the menu. The whole string must be
quoted if spaces or tabs are used.
%p
Like Space and Tab %p inserts an empty area into the
item, but with better control of its size (see below).
You can define an additional space before and after each of the
objects like this:
%left.rightp
This means: if the object is defined in the menu (e.g. if it is
%s and you use a side picture, or it is %l for the third column
and there are items defined that actually have a third column),
then add left pixels before the object and right pixels after
it. You may leave out the left or the .right parts if you don't
need them. All values up to the screen width are allowed. Even
negative values can be used with care. The p may be replaced
with any other formatting directives described above.
Note: Only items defined in the format string are visible in the
menus. So if you do not put a %s in there you do not see a side
picture, even if one is specified.
Note: The SubmenusLeft style changes the default ItemFormat
string, but if it was set manually it is not modified.
Note: If any unformatted title of the menu is wider than the
widest menu item, the spaces between the different parts of the
menu items are enlarged to match the width of the title. Lead-
ing left aligned objects in the format string (%l, %i, %<, first
%|) stick to the left edge of the menu and trailing right
aligned objects (%r, %i, %>, second %|) stick to the right edge.
The gaps between the remaining items are enlarged equally.
Examples:
MenuStyle * ItemFormat \
"%.4s%.1|%.5i%.5l%.5l%.5r%.5i%2.3>%1|"
Is the default string used by fvwm: (side picture + 4 pixels
gap) (beginning of the hilighted area + 1 pixel gap) (mini icon
+ 5p) (first column left aligned + 5p) (second column left
aligned + 5p) (third column right aligned + 5p) (second mini
icon + 5p) (2p + sub-menu triangle + 3p) (1p + end of hilighted
area).
MenuStyle * ItemFormat \
"%.1|%3.2<%5i%5l%5l%5r%5i%1|%4s"
Is used by fvwm with the SubmenusLeft option below.
VerticalItemSpacing and VerticalTitleSpacing control the verti-
cal spacing of menu items and titles like ItemFormat controls
the horizontal spacing. Both take two numeric arguments that
may range from -100 to +100. The first is the gap in pixels
above a normal menu item (or a menu title), the second is the
gap in pixels below it. Negative numbers do not make much sense
and may screw up the menu completely. If no arguments are given
or the given arguments are invalid, the built in defaults are
used: one pixel above the item or title and two below.
SubmenusLeft mirrors the menu layout and behavior. Sub-menus
pop up to the left, the sub-menu triangle is drawn left and the
mini icon and side picture are drawn at the right side of the
menu. The default is SubmenusRight. The position hints of a
menu are also affected by this setting, i.e. position hints
using item or menu as context rectangle and position hints using
m offsets.
AutomaticHotkeys and AutomaticHotkeysOff control the menu's
ability to automatically provide hot-keys on the first character
of each menu item's label. This behavior is always overridden
if an explicit hot-key is assigned in the AddToMenu command.
Examples:
MenuStyle * Mwm
MenuStyle * Foreground Black, Background gray40
MenuStyle * Greyed gray70, ActiveFore White
MenuStyle * HilightBackOff, Hilight3DOff
MenuStyle * Font lucidasanstypewriter-14
MenuStyle * MenuFace DGradient 64 darkgray \
MidnightBlue
MenuStyle red Mwm
MenuStyle red Foreground Yellow
MenuStyle red Background Maroon
MenuStyle red Greyed Red, ActiveFore Red
MenuStyle red HilightBackOff, Hilight3DOff
MenuStyle red Font lucidasanstypewriter-12
MenuStyle red MenuFace DGradient 64 Red Black
Note that all style options could be placed on a single line for
each style name.
MenuStyle forecolor backcolor shadecolor font style [anim]
This is the old syntax of the MenuStyle command. It is obsolete
and may be removed in the future. Please use the new syntax as
described above.
Sets the menu style. When using monochrome the colors are
ignored. The shadecolor is the one used to draw a menu-selec-
tion which is prohibited (or not recommended) by the Mwm hints
which an application has specified. The style option is either
Fvwm, Mwm or Win, which changes the appearance and operation of
the menus.
Mwm and Win style menus popup sub-menus automatically. win
menus indicate the current menu item by changing the background
to black. fvwm sub-menus overlap the parent menu, Mwm and win
style menus never overlap the parent menu.
When the anim option is given, sub-menus that don't fit on the
screen cause the parent menu to be shifted to the left so the
sub-menu can be seen. See also SetAnimation command.
Popup PopupName [position] [default-action]
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. The position arguments are the
same as for Menu. The command default-action is invoked if the
user clicks a button to invoke the menu and releases it immedi-
ately again (or hits the key rapidly twice if the menu is bound
to a key). If the default action is not specified, double
clicking on the menu does nothing. However, if the menu begins
with a menu item (i.e. not with a title or a separator) and the
default action is not given, double clicking invokes the first
item of the menu (but only if the pointer really was over the
item).
To bind a previously defined pop-up menu to a key or mouse but-
ton:
The following example binds mouse buttons 2 and 3 to a pop-up
called "Window Ops". The menu pops 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 built-
in. Pop-ups can be operated without using the mouse by bind-
ing 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 "RootMenu":
AddToMenu Quit-Verify
+ "Really Quit Fvwm?" Title
+ "Yes, Really Quit" Quit
+ "Restart Fvwm" Restart
+ "Restart Fvwm 1.xx" Restart fvwm1 -s
+ "" Nop
+ "No, Don't Quit" Nop
AddToMenu RootMenu "Root Menu" Title
+ "Open XTerm Window" Popup NewWindowMenu
+ "Login as Root" Exec exec xterm \
-fg green -T Root \
-n Root -e su -
+ "Login as Anyone" Popup AnyoneMenu
+ "Remote Hosts" Popup HostMenu
+ "" Nop
+ "X utilities" Popup Xutils
+ "" Nop
+ "Fvwm Modules" Popup Module-Popup
+ "Fvwm Window Ops" Popup Window-Ops
+ "" Nop
+ "Previous Focus" Prev (AcceptsFocus) Focus
+ "Next Focus" Next (AcceptsFocus) Focus
+ "" Nop
+ "Refresh screen" Refresh
+ "Recapture screen" Recapture
+ "" Nop
+ "Reset X defaults" Exec xrdb -load \
$HOME/.Xdefaults
+ "" Nop
+ "" Nop
+ Quit Popup Quit-Verify
Popup differs from Menu in that pop-ups do not stay up if the
user simply clicks. These are popup-menus, which are a little
hard on the wrist. Menu menus stay up on a click action. See
the Menu command for an explanation of the interactive behavior
of menus. A menu can be open up to ten times at once, so a menu
may even use itself or any of its predecessors as a sub-menu.
Title Does nothing. This is used to insert a title line in a popup or
menu.
MISCELLANEOUS COMMANDS
BugOpts [option [bool]], ...
This command controls several workarounds for bugs in third
party programs. The individual options are separated by commas.
The optional argument bool is a boolean argument and controls if
the bug workaround is enabled or not. It can either be "True"
or "False" to turn the option on or off, or "toggle" to switch
is back and forth. If bool is omitted, the default setting is
restored.
FlickeringMoveWorkaround disables ConfigureNotify events that
are usually sent to an application while it is moved. If some
windows flicker annoyingly while being moved, this option may
help you. Note that if this problem occurs it is not an fvwm
bug, it is a problem of the application.
MixedVisualWorkaround makes fvwm install the root colormap
before it does some operations using the root window visuals.
This is only useful when the -visual option is used to start
fvwm and then only with some configurations of some servers
(e.g. Exceed 6.0 with an 8 bit PseudoColor root and fvwm using a
24 bit TrueColor visual).
The ModalityIsEvil option controls whether Motif applications
have the ability to have modal dialogs (dialogs that force you
to close them first before you can do anything else). The
default is to not allow applications to have modal dialogs. Use
this option with care. Once this option is turned on, you have
to restart fvwm to turn it off.
RaiseOverNativeWindows makes fvwm try to raise the windows it
manages over native windows of the X servers host system. This
is needed for some X servers running under Windows or Windows
NT. Fvwm tries to detect if it is running under such an X
server and initializes the flag accordingly.
RaiseOverUnmanaged makes fvwm try to raise the windows it man-
ages over override_redirect windows. This is used to cope with
ill-mannered applications that use long-lived windows of this
sort, contrary to ICCCM conventions.
FlickeringQtDialogsWorkaround suppresses flickering of the
focused window in some modules when using KDE or Qt applications
with application modal dialog windows. By default this option
is turned on. This option may be visually disturbing for other
applications using windows not managed by fvwm. Since these
applications are rare it is most likely safe to leave this
option at its default.
BusyCursor [Option bool], ...
This command controls the cursor during the execution of certain
commands. Option can be DynamicMenu, ModuleSynchronous, Read,
Wait, *. An option must be followed by a boolean argument bool.
You can use commas to separate individual options. If you set
an option to "True", then when the corresponding command is run,
fvwm displays the cursor of the WAIT context of the CursorStyle
command. "False" forces to not display the cursor. The default
is:
BusyCursor DynamicMenu False, \
ModuleSynchronous False, Read False, \
Recapture True, Wait False
The option * refers to all available options.
The Read option also controls the PipeRead command.
The DynamicMenu option affects the DynamicPopupAction and Miss-
ingSubmenuFunction options of the AddToMenu command. If this
option is set to "False", then the busy cursor is not displayed
during a dynamic menu command even if this command is a Read or
PipeRead command and the Read option is set to "True".
The Wait option affects only the root cursor. During a wait
pause the root cursor is replaced by the busy cursor and fvwm is
still fully functional (you can escape from the pause, see the
EscapeFunc command). If you want to use this option and if you
do not use the default root cursor, you must set your root cur-
sor with the CursorStyle command.
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 millisec-
onds. Omitting the delay value resets the ClickTime to the
default.
ColorLimit limit
Specifies a limit on the colors used in pixmaps used by fvwm.
Zero (the default) sets no limit. Fvwm uses pixmaps for icons,
mini-icons, and pixmap borders, menu backgrounds and titles.
This command limits pixmap colors to a set of colors that starts
out with common colors. The current list contains about 60 col-
ors and starts with white, black, grey, green, blue, red, cyan,
yellow, and magenta. The command
ColorLimit 9
would limit pixmaps to these 9 colors.
It makes the most sense to put this command at the front of the
.fvwm2rc file. This command should occur before any menu defi-
nitions that contain mini-icons.
Solid frame and title colors (including shadows and gradients)
are not controlled by this command.
This command only makes sense on screens that display a limited
number of colors at once. If your display can display more
than 2 million colors at once, this command is ignored. Screens
that only display 256 colors at once are known as 8 bit dis-
plays. The 2 million color cutoff point corresponds to 21 bit
color, the most common screen that exceeds this limit would be
24 bit.
On 8 bit displays, the default color limit is set to the size of
the built in table (about 60). We recommend that you start with
the default value, and not include this command in your
.fvwm2rc.
ColormapFocus FollowsMouse|FollowsFocus
By default, fvwm installs the colormap of the window that the
cursor is in. If you use
ColormapFocus FollowsFocus
then the installed colormap is the one for the window that cur-
rently has the keyboard focus.
CursorStyle context [ number | name | xpm | None | Tiny [ fore back ]]
Defines a new cursor for the specified context. The various
contexts are:
POSITION (top_left_corner)
used when initially placing windows
TITLE (top_left_arrow)
used in a window title-bar
DEFAULT (top_left_arrow)
used in windows that don't set their cursor
SYS (hand2)
used in one of the title-bar buttons
MOVE (fleur)
used when moving or resizing windows
RESIZE (sizing)
used when moving or resizing windows
WAIT (watch)
used during certain fvwm commands (see BusyCursor for
details).
MENU (top_left_arrow)
used in menus
SELECT (crosshair)
used when the user is required to select a window
DESTROY (pirate)
used for DESTROY, CLOSE, and DELETE built-ins
TOP (top_side)
used in the top side-bar of a window
RIGHT (right_side)
used in the right side-bar of a window
BOTTOM (bottom_side)
used in the bottom side-bar of a window
LEFT (left_side)
used in the left side-bar of a window
TOP_LEFT (top_left_corner)
used in the top left corner of a window
TOP_RIGHT (top_right_corner)
used in the top right corner of a window
BOTTOM_LEFT (bottom_left_corner)
used in the bottom left corner of a window
BOTTOM_RIGHT (bottom_right_corner)
used in the bottom right corner of a window
TOP_EDGE (top_side)
used at the top edge of the screen.
RIGHT_EDGE (right_side)
used at the right edge of the screen.
BOTTOM_EDGE (bottom_side)
used at the bottom edge of the screen.
LEFT_EDGE (left_side)
used at the left edge of the screen.
ROOT (left_ptr)
used as the root cursor.
STROKE (plus)
used during a StrokeFunc command.
The defaults are shown in parentheses above. If you ever want
to restore the default cursor for a specific context you can
omit the second argument.
The second is either the numeric value of the cursor as defined
in the include file X11/cursorfont.h or its name (without the
XC_ prefix) or the name of an xpm file containing a pixmap of
depth 1 with a mask and an optional hot-spot (if no hot-spot is
defined, the hot-spot is placed in the center of the image).
Furthermore the name can be None (no cursor) or Tiny (a single
pixel as the cursor). For example:
# make the kill cursor be XC_gumby (both forms work):
CursorStyle DESTROY 56
CursorStyle DESTROY gumby
CursorStyle TOP_LEFT topl.xpm
CursorStyle ROOT hand1 yellow black
The optional fg and bg arguments specify the foreground and
background colors for the cursor, defaulting to black and white.
DefaultColors [foreground background]
DefaultColors sets the default foreground and background colors
used in miscellaneous windows created by fvwm, for example in
the geometry feedback windows during a move or resize operation.
If you don't want to change one color or the other, use - as its
color name. To revert to the builtin default colors omit both
color names. Note that the default colors are not used in
menus, window titles or icon titles.
DefaultColorset [num]
DefaultColorset sets the colorset used by the windows controlled
by the DefaultColors command. To revert back to the DefaultCol-
ors colors use
DefaultColorset -1
or any variant of the DefaultColors command.
DefaultFont [fontname]
DefaultFont sets the default font to font fontname. The default
font is used by fvwm whenever no other font has been specified.
To reset the default font to the built in default, omit the
argument. The default font is used for menus, window titles,
icon titles as well as the geometry feedback windows during a
move or resize operation. To override the default font in a
specific context, use the Style * Font, Style * IconFont, or
MenuStyle commands.
DefaultIcon filename
sets the default icon which is used if a window has neither an
client-supplied icon nor an icon supplied via the Icon option of
the Style command.
DefaultLayers bottom put top
changes the layers that are used for the StaysOnBottom,
StaysPut, StaysOnTop Style options. Initially, the layers 2, 4
and 6 are used.
Emulate Fvwm|Mwm|Win
This command is a catch all for how miscellaneous things are
done by fvwm. Right now this command affects where the
move/resize feedback window appears and how window placement is
aborted. To have more Mwm- or Win-like behavior you can call
Emulate with Mwm or Win as its argument. With Mwm resize and
move feedback windows are in the center of the screen, instead
of the upper left corner. This also affects how manual place-
ment is aborted. See the ManualPlacement description.
EscapeFunc
By default the key sequence Ctrl-Alt-Escape allows to escape
from a Wait pause and from a locked ModuleSynchronous command.
The EscapeFunc command used with the Key command allows to con-
figure this key sequence. An example:
Key Escape A MC -
Key Escape A S EscapeFunc
replaces the Ctrl-Alt-Escape key sequence with Shift-Escape for
aborting a Wait pause and ModuleSynchronous command. EscapeFunc
used outside the Key command does nothing.
FakeClick [command value] ...
This command is mainly intended for debugging fvwm and no guar-
antees are made that it works for you. FakeClick can simulate
mouse button press and release events and pass them to fvwm or
the applications. The parameters are a list of commands which
consist of pairs of command tokens and integer values, The press
and release commands are followed by the appropriate mouse but-
ton number and generate a button press or release event on the
window below the pointer. The wait commands pauses fvwm for the
given number of milliseconds. The modifiers command simulates
pressing or releasing modifier keys. The values 1 to 5 are
mapped to Mod1 to Mod5 while 6, 7 and 8 are mapped to Shift,
Lock and Control. The modifier is set for any further button
events. To release a modifier key, use the corresponding nega-
tive number. The depth command determines to which window the
button events are sent. With a depth of 1, all events go to the
root window, regardless of the pointer's position. With 2, the
event is passed to the top level window under the pointer which
is usually the frame window. With 3, events go to the client
window. Higher numbers go to successive sub windows. Zero (0)
goes to the smallest window that contains the pointer. Note that
events propagate upward.
FakeClick depth 2 press 1 wait 250 release 1
This simulates a click with button 1 in the parent window (depth
2) with a delay of 250 milliseconds between the press and the
release.
GlobalOpts [options]
As announced in the past, this command has been removed. Please
replace the global options in your configuration file according
to the following table:
GlobalOpts WindowShadeShrinks
-->
Style * WindowShadeShrinks
GlobalOpts WindowShadeScrolls
-->
Style * WindowShadeScrolls
GlobalOpts SmartPlacementIsReallySmart
-->
Style * MinOverlapPlacement
GlobalOpts SmartPlacementIsNormal
-->
Style * TileCascadePlacement
GlobalOpts ClickToFocusDoesntPassClick
-->
Style * ClickToFocusPassesClickOff
GlobalOpts ClickToFocusPassesClick
-->
Style * ClickToFocusPassesClick
GlobalOpts ClickToFocusDoesntRaise
-->
Style * ClickToFocusRaisesOff
GlobalOpts ClickToFocusRaises
-->
Style * ClickToFocusRaises
GlobalOpts MouseFocusClickDoesntRaise
-->
Style * MouseFocusClickRaisesOff
GlobalOpts MouseFocusClickRaises
-->
Style * MouseFocusClickRaises
GlobalOpts NoStipledTitles
-->
Style * StippledTitleOff
GlobalOpts StipledTitles
-->
Style * StippledTitle
GlobalOpts CaptureHonorsStartsOnPage
-->
Style * CaptureHonorsStartsOnPage
GlobalOpts CaptureIgnoresStartsOnPage
-->
Style * CaptureIgnoresStartsOnPage
GlobalOpts RecaptureHonorsStartsOnPage
-->
Style * RecaptureHonorsStartsOnPage
GlobalOpts RecaptureIgnoresStartsOnPage
-->
Style * RecaptureIgnoresStartsOnPage
GlobalOpts ActivePlacementHonorsStartsOnPage
-->
Style * ManualPlacementHonorsStartsOnPage
GlobalOpts ActivePlacementIgnoresStartsOnPage
-->
Style * ManualPlacementIgnoresStartsOnPage
GlobalOpts RaiseOverNativeWindows
-->
BugOpts RaiseOverNativeWindows on
GlobalOpts IgnoreNativeWindows
-->
BugOpts RaiseOverNativeWindows off
HilightColor textcolor backgroundcolor
This command is obsoleted by the Style options HilightFore and
HilightBack. Please use
Style * HilightFore textcolor, \
HilightBack backgroundcolor
instead.
HilightColorset [num]
This command is obsoleted by the Style option HilightColorset.
Please use
Style * HilightColorset num
instead.
IconFont [fontname]
This command is obsoleted by the Style option IconFont. Please
use
Style * IconFont fontname
instead.
IconPath path
This command is obsolete. Please use ImagePath instead.
ImagePath path
Specifies a colon separated list of directories in which to
search for images (both monochrome and pixmap). To find an
image given by a relative pathname, fvwm looks into each direc-
tory listed in turn, and uses the first file found.
The path may contain environment variables such as $HOME (or
${HOME}). Further, a '+' in the path is expanded to the previ-
ous value of the path, allowing appending or prepending to the
path easily.
For example:
ImagePath $HOME/icons:+:/usr/include/X11/bitmaps
Note: if the FvwmM4 module is used to parse your .fvwm2rc files,
then m4 may want to mangle the word "include" which frequently
shows up in the ImagePath command. To fix this one may add
undefine(`include')
prior to the ImagePath command, or better: use the -m4-prefix
option to force all m4 directives to have a prefix of "m4_" (see
the FvwmM4 man page).
PixmapPath path
This command is obsolete. Please use ImagePath instead.
WindowFont [fontname]
This command is obsoleted by the Style option Font. Please use
Style * Font fontname
instead.
WindowList [( conditions )] [ position ] [ options ] [ double-click-
action ]
Generates a pop-up menu (and pops it up) in which the title and
geometry of each of the windows currently on the desktop are
shown.
The format of the geometry part is: desk(layer): x-geometry
sticky, where desk and layer are the corresponding numbers and
sticky is empty or a capital S. The geometry of iconified win-
dows is shown in parentheses. Selecting an item from the window
list pop-up menu causes the interpreted function "WindowList-
Func" to be run with the window id of that window passed in as
$0. The default "WindowListFunc" looks like this:
AddToFunc WindowListFunc
+ I Iconify off
+ I FlipFocus
+ I Raise
+ I WarpToWindow 5p 5p
You can destroy the builtin "WindowListFunc" and create your own
if these defaults do not suit you.
The window list menu uses the "WindowList" menu style if it is
defined (see MenuStyle command). Otherwise the default menu
style is used. To switch back to the default menu style, issue
the command
DestroyMenuStyle WindowList
Example:
MenuStyle WindowList SelectOnRelease Meta_L
The conditions can be used to exclude certain windows from the
window list. Please refer to the Current command for details.
Only windows that match the given conditions are displayed in
the window list. The options below work vice versa: windows
that would otherwise not be included in the window list can be
selected with them. The conditions always override the options.
The position arguments are the same as for Menu. The command
double-click-action is invoked if the user double-clicks (or
hits the key rapidly twice if the menu is bound to a key) when
bringing the window list. The double-click-action must be
quoted if it consists of more than one word.
The double-click-action is useful to define a default window if
you have bound the window list to a key (or button) like this:
# Here we call an existing function, but it may be different
AddToFunc SwitchToWindow
+ I WindowListFunc
Key Tab A M WindowList "Prev SwitchToWindow"
Hitting Alt-Tab once it brings up the window list, if you hit it
twice the focus is flipped between the current and the last
focused window. With the proper SelectOnRelease menu style (see
example above) a window is selected as soon as you release the
Alt key.
The options passed to WindowList can be NoGeometry, NoGeometry-
WithInfo, Function funcname, Desk desknum, CurrentDesk, NoIcons
/ Icons / OnlyIcons, NoNormal / Normal / OnlyNormal, NoSticky /
Sticky / OnlySticky, NoOnTop / OnTop / OnlyOnTop, NoOnBottom /
OnBottom / OnlyOnBottom, Layer m [n], UseListSkip / OnlyList-
Skip, NoDeskSort, CurrentAtEnd, ReverseOrder, UseIconName,
Alphabetic / NotAlphabetic, NoHotkeys, SelectOnRelease.
(Note - normal means not iconic, sticky, or on top)
The SelectOnRelease option works exactly like the MenuStyle
option with the same name, but overrides the option given in a
menu style. By default, this option is set to the left Alt key.
To switch it off, use SelectOnRelease without a key name.
If you pass in a function via Function funcname, it is called
within a window context of the selected window:
AddToFunc IFunc I Iconify toggle
WindowList Function IFunc, NoSticky, \
CurrentDesk, NoIcons
If you use the Layer m [n] option, only windows in layers
between m and n are displayed. n defaults to m. With the
ReverseOrder option the order of the windows in the list is
reversed.
With the CurrentAtEnd option the currently focused window (if
any) is shown at the bottom of the list. This is mostly
intended for simulating the Alt-Tab behaviour in another GUI.
If you wanted to use the WindowList as an icon manager, you
could invoke the following:
WindowList OnlyIcons, Sticky, OnTop, Geometry
(Note - the Only options essentially wipe out all other ones...
but the OnlyListSkip option which just causes WindowList to only
consider the windows with WindowListSkip style.)
+ Used to continue adding to the last specified decor, funct |