.TH fvwm "" "" "X Application"
.PC "Motif-like virtual window manager"
\fBfvwm\[ \fIoptions\fB ]\fR
.PP
.B fvwm
is a window manager for X11.
It is derived from
.BR twm
but redesigned to minimize memory consumption and
give window frames a three-dimensional appearance.
.B fwm
is estimated to use about one-half to one-third as much memory as
.BR twm ,
due primarily to a redesign of
.BR twm 's
inefficient method to storing mouse bindings.
In addition,
.B fwm
removes many of the configurable options of
.BR twm .
.PP
Please note that
.B fvwm
and
.B fwm
are in fact the same window manager;
.B fvwm
however, has been
compiled to include a virtual desktop.
The Lexicon entry for
.B fwm
describes the features that are common to it
.BR fvwm ;
this article
concentrates on the features that relate to the virtual desktop.
.PP
Please note that the name
.B fvwm
does not stand for anything in particular.
.SH "Special Note"
Xfree86 (which is the basis for X Windows for \*(CO)
has a virtual screen built into it.
This desktop is useful, but can be confusing when used with
.BR fvwm 's
virtual window manager.
(To see how your physical screen compares with Xfree86's virtual screen,
look at file
.BR /usr/X11/lib/Xconfig ,
and compare the setting for
.B Modes
with that for
.BR Virtual .
Xfree86 actually draws into video memory all windows
that appear on the virtual screen.
Thus, the virtual screen size is limited by available video memory.
However,
.BR fvwm 's
virtual desktop does not draw into video RAM the windows that
do not appear on the screen.
.PP
The size of the virtual desktop is limited to about 32,000 by 32,000 pixels.
It is probably impractical to use a
virtual desktop more than about 25 times the size of the visible screen.
(five screen-sizes in each direction).
Note that memory usage with the virtual desktop is a function of the number of
windows that exist.
The size of the desktop makes no difference.
.PP
As you are learning
.BR fvwm ,
it is recommended that you disable Xfree86's virtual screen,
by making the size of the virtual screen
(as set by the instruction
.B Virtual
in
.BR /usr/X11/lib/Xconfig  )
equal to that of the physical screen
(as set by the instruction
.BR Modes ).
Later, you may wish to re-enable Xfree86's virtual screen.
.SH "Invoking fvwm"
To invoke
.B fvwm
as your window manager, you must edit your
.BR xinitrc
file \(em either
.B $HOME/.xinitrc
or
.BR /usr/X11/lib/xinit/xinitrc ,
depending upon how your system is configured.
Make the command
.B fvwm
the last entry in the file.
Place a `#' before the command
.B twm
and before the name of any other window manager.
Then type the command
.B startx
to boot X in the usual manner.
.SH "The Virtual Desktop"
When you invoke
.BR fvwm ,
your screen appears something like the following:
.PH 1 1 \*(XD/fvwm.eps
The windows actually displayed on the screen depend,
of course, upon the contents of your
.B xinitrc
file.
.PP
The objects on the window borders themselves \(em that is, the title bar, the
iconify buttons, the resizing objects, the menus, and so on \(em are the
same as those that
.B fwm
displays.
In addition,
.B fvwm
displays a virtual window manager (VDM), also called the ``Fvwm Pager''.
This appears to the right of the figure shown above.
.PP
The VDM's window is an analogue of the entire virtual desktop.
Each cell of the grid shown in the window is equivalent to the area of
your physical screen.
By default, the virtual desktop is equivalent to nine screen-fuls of space
(that is, three screen-fuls across and three down).
.PP
Each window on the virtual desktop has an analogue on the VDM.
For example, the screen currently contains three windows (one for
.BR xterm ,
one for the tool
.B hmon
running under
.BR xterm ,
and one for the utility
.BR sunclock ).
The upper left cell of the VDM shows three objects whose relative size and
positioning are roughly equivalent to those of the windows on the screen.
Note that only a portion of the window for
.B sunclock
appears on the screen.
The VDM shows that
.B sunclock
actually overlaps onto four cells of the virtual desktop.
The other cells of the VDM could also show window-symbols for windows that
not now displayed on your screen.
.PP
.B fvwm
lets you set a window's geometry so that window is opened in an area of the
virtual desktop that does not appear (at first, at least) on the physical
screen.
For example, if the visible screen
is 1000\(mu1000 pixels, the desktop size is 3\(mu3,
and the current viewport is at the upper left corner of the desktop,
then the command
.DM
	xterm -geometry +1000+1000
.DE
.PP
places the window just off of the lower right corner of the screen.
To display this window on the physical screen,
move the mouse to the lower right corner of the screen,
then wait for the window to scroll into view.
.SH "Configuration Files"
The configuration file describes mouse and button bindings, colors,
the virtual display size, and related items.
.B fvwm
recognizes all of the configuration options that
.BR fwm .
This section describes additional configuration options that relate
to the virtual desktop.
.IP "\fBCenterOnCirculate\fR"
.B fwm
automatically selects the desktop page that contains the window that the
mouse cursor is moving.
If you select
.BR CenterOnCirculate ,
.B fwm
tries to center the target window in the desktop viewport,
rather than just lining it up to the closest page.
.IP "\fBCirculateSkip \fIwindow\fR"
Cause
.B fwm
to skip
.I window
when you invoke the circulate-up or circulate-down functions.
.I window
can be a window's name or its class.
.IP "\fBCirculateUp\fR"
Move the mouse cursor to the previous window in the list of windows
for which
.B CirculateSkip
has not not been specified.
.IP "\fBCirculateDown\fR"
Move the mouse cursor to the next window in the list of windows for which
.B CirculateSkip
has not not been specified.
.IP "\fBCursorMove \fIhorizonal vertical\fR"
Move the mouse pointer by \fIhorizontal\fR pages in the
X direction, and \fIvertical\fR pages in the Y direction.
Either entry can be negative.
Both horizontal and vertical values are expressed in a percent of a page size;
therefore, the command
.DM
	CursorMove 100 100
.DE
.IP
means to move down and left by one full page, and command
.DM
	CursorMove 50 25
.DE
.IP
means to move left by half a page and down by a quarter of a page.
Do not call
.B CursorMove
from within a pop-up menu.
.IP "\fBDeskTopSize \fIX\(mu\fIY\fR"
Define the virtual desktop's size in multiples
of the size of the physical screen.
.IP "\fBDeskTopScale \fIratio\fR"
Set to
.I ratio
the size of the virtual desktop to that of the screen.
.IP "\fBDontMoveOff\fR"
Prevent windows from being moved off or initially placed off of the screen.
A few programs will not work correctly if you use this option.
.IP "\fBEdgeScroll \fIhorizontal vertical\fR"
This specifies the percentage of a page to scroll when the cursor
touches the edge of a page.
If you do not want any paging or scrolling, include
.DM
	EdgeScroll 0 0
.DE
.IP
in your
.BR .fwmrc ;
if you want a whole page, use:
.DM
	EdgeScroll 100 100
.DE
.IP
Both horizontal and vertical should be positive numbers.
.IP "\fBPager \fIX Y\fR"
Enable a paging style of moving across the desktop.
A pager window will appear at position
.I X,Y
on the physical screen.
The pager window (that is, the VDM) shows analogues of
all the non-sticky windows on the virtual desktop.
The color of the miniature version is the same as the color of the border
of the full-size window.
Please note that the VDM is automatically sticky, but does not automatically
stay in the screen's foreground.
.IP
When you click the left-mouse button on a miniature within the VDM,
.B fvwm
moves onto the physical screen the page of the virtual desktop that holds
that window whose miniature you clicked.
(When click-to-focus mode is enabled, it also move the keyboard 
focus into that window.)
.IP
If you click the right-mouse button within the VDM,
.B fvwm
repositions the physical screen on the virtual desktop
so that the physical screen's upper right corner is at the point where you
clicked the mouse button.
It does so if this causes the physical screen not to line up with a page.
If you press the right-mouse button and drag the mouse,
.B fvwm
drags the physical screen around the virtual desktop.
.IP "\fBPagerBackColor \fIcolor\fR"
Set to
.I color
the background color of the pager.
The default is white.
.B fwm
ignores this option on a monochrome display.
If you set the option
.B NO_PAGER
when you recompile
.BR fwm ,
this option is unavailable.
.IP \fBStick\fR
Toggle a window's ``stickiness'':
if it is not sticky, make it so; if it is sticky, make it un-sticky.
.IP "\fBSticky \fIwindow\fR"
Make
.I window
a ``sticky'' window.
A sticky window stays at the same position on the screen regardless of
your view of the virtual desktop.
.I window
can be the window's name or its class.
.IP
When you move the mouse cursor onto a miniature window in the VDM
and press the center-mouse button,
.B fvwm
lets you drag the miniature, just like you drag a window.
When you have finished dragging the miniature,
.B fvwm
analogously repositions the window that that miniature represents.
.IP "\fBScroll \fIhorizonal vertical\fR"
Scroll the virtual desktop's viewport by
.I horizontal
pages in the X direction and
.I vertical
pages in the Y direction.
Either or both can be negative.
Each value is a percent of a page size, a page being the size of the screen.
For example
.DM
	Scroll 100 100
.DE
.IP
means to scroll down and left by one full page, whereas
.DM
	Scroll 50 25
.DE
.IP
means to scroll left half a page and down a quarter of a page.
The scroll function should not be called from within a pop-up menu.
Normally, scrolling stops at the edge of the desktop.
.IP
If the horizontal and vertical percentages are multiplied by 1,000,
scrolling wrap around at the edge of the desktop.
For example, if
.DM
	Scroll 100000 0
.DE
.IP
is executed over and over,
.B fwm
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.
.SH "See Also"
.B
fwm,
olvwm,
olvwmrc,
olwm,
twm,
X applications
.R
.SH Notes
.B fvwm
is derived from
.B twm
code and therefore shares its copyrights.
.PP
.B fvwm
is copyright \(co 1988 by Evans and Sutherland Computer Corporation,
Salt Lake City, Utah, and \(co 1989 by the Massachusetts Institute of
Technology, Cambridge, Massachusetts.
All rights reserved.
It is also copyright \(co 1993 by Robert Nation.
.PP
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 MIT not be used in advertising
in publicity pertaining to distribution of the software without
specific, written prior permission.
.PP
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
tortious action, arising out of or in connection with the use
or performance of this software.
.PP
.II "Nation, Robert"
.II "LaStrange, Thomas"
.B fvwm
was written by
Robert Nation (nation@rocket.sanders.lockheed.com), with help from
many people.
As noted above,
.B fvwm
is based on the
.B twm
code, which was written by Thomas LaStrange.
