ffvvwwmm -- X Application

Motif-like virtual window manager
ffvvwwmm[ _o_p_t_i_o_n_s ]

ffvvwwmm is a window manager for X11.  It is derived from ttwwmm but redesigned to
minimize  memory consumption  and  give window  frames a  three-dimensional
appearance.  ffwwmm  is estimated to  use about one-half to  one-third as much
memory as ttwwmm,  due primarily to a redesign of  ttwwmm's inefficient method to
storing mouse bindings.  In  addition, ffwwmm removes many of the configurable
options of ttwwmm.

Please note  that ffvvwwmm and  ffwwmm are in  fact the same  window manager; ffvvwwmm
however, has been compiled to include a virtual desktop.  The Lexicon entry
for ffwwmm  describes the features  that are common  to it ffvvwwmm;  this article
concentrates on the features that relate to the virtual desktop.

Please note that the name

Please  note  that  the  name  ``fvwm''  does not  stand  for  anything  in
particular.

_S_p_e_c_i_a_l _N_o_t_e
Xfree86 (which is the basis for  X Windows for COHERENT) provides a virtual
screen  whose operation  can  be confusing  when used  with ffvvwwmm's  virtual
window manager.   (To see how your physical  screen compares with Xfree86's
virtual screen, look  at file /uussrr/XX1111/lliibb/XXccoonnffiigg, and compare the setting
for MMooddeess  with that for VViirrttuuaall. 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, ffvvwwmm's virtual desktop
does not draw into video RAM the windows that do not appear on the screen.

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 five  times the visible  screen 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.

As  you are  learning ffvvwwmm,  it is recommended  that you  disable Xfree86's
virtial screen,  by making the  size of the  virtual screen (as  set by the
instruction VViirrttuuaall in  /uussrr/XX1111/lliibb/XXccoonnffiigg) equal to that of the physical
scren (as set  by the instruction MMooddeess). Later, you  may wish to re-enable
Xfree86's virtual screen.

_I_n_v_o_k_i_n_g _f_v_w_m
To invoke ffvvwwmm  as your window manager, you must  edit your xxiinniittrrcc file --
either $HHOOMMEE/.xxiinniittrrcc  or /uussrr/XX1111/lliibb/xxiinniitt/ssyysstteemm.xxiinniittrrcc, depending upon
how your system is configured.  Make the command ffvvwwmm the last entry in the
file.  Place a `#' before the  command ttwwmm and before the name of any other
window  manager.  Then  type the  command  ssttaarrttxx to  boot X  in the  usual
manner.

_T_h_e _V_i_r_t_u_a_l _D_e_s_k_t_o_p
When you invoke ffvvwwmm, your screen appears something like the following:

 --------------------------
 [At this point, this document displays an image from an encapsulated
  PostScript file.  Unfortuately, this cannot be displayed under nroff.
  Our apologies!]
 --------------------------

The windows  actually displayed on  the screen depend, of  course, upon the
contents of your xxiinniittrrcc file.

The objects on the window borders themselves -- that is, the title bar, the
iconify buttons, the resizing objects, the menus, and so on -- are the same
as those that ffwwmm displays.

However,  in addition  to the  objects that ffwwmm  displays, ffvvwwmm  displays a
virtual window  manager (VDM).  This  appears in the lower  right corner of
the figure shown above.

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).

Each window  contained on the virtual  desktop has an analogue  on the VDM.
For example, the screen currently contains three windows (two for xxtteerrmm and
an icon  window for the utility  ssuunncclloocckk); and 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.   The other cells of the
VDM could  also show  window-symbols for  windows that not  currently being
displayed on your screen.

ffvvwwmm 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 1000x1000 pixels,
the desktop  size is  3x3, and  the current viewport  is at the  upper left
corner of the desktop, then the command

    xterm -geometry +1000+1000

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.

_C_o_n_f_i_g_u_r_a_t_i_o_n _F_i_l_e_s
The  configuration file  describes mouse and  button bindings,  colors, the
virtual  display  size, and  related  items.  ffvvwwmm  recognizes  all of  the
configuration   options  that  ffwwmm.   This  section   describes  additional
configuration options that relate to the virtual desktop.

SSttiicckkyy _w_i_n_d_o_w
     Make _w_i_n_d_o_w  a ``sticky'' window.   A sticky window stays  at the same
     position on the screen regardless of your view of the virtual desktop.
     _w_i_n_d_o_w can  be the  window's name  or its class.   This has  no effect
     under ffwwmm, which does not use the virtual desktop.

PPaaggeerrBBaacckkCCoolloorr _c_o_l_o_r
     Set to _c_o_l_o_r the background color of the pager.  The default is white.
     ffwwmm  ignores this  option on  a  monochrome display.   If you  set the
     option NNOO_PPAAGGEERR when you recompile ffwwmm, this option is unavailable.

DDeesskkTTooppSSiizzee _X_x_Y
     This defines  the virtual desktop's  size in multiples of  the size of
     the physical screen.

DDeesskkTTooppSSccaallee _r_a_t_i_o
     This sets to _r_a_t_i_o the size  of the virtual desktop versus that of the
     screen.

DDoonnttMMoovveeOOffff
     This prevents windows from being  moved off or initially placed off of
     the screen.   A few programs will  not work correctly if  you use this
     option.

PPaaggeerr _X _Y
     Enable a  paging style of  moving across the desktop.   A pager window
     will appear at position _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.

     When you  click the left-mouse  button on a miniature  within the VDM,
     ffvvwwmm 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.)

When you  move the mouse cursor  onto a miniature in the  VDM and press the
center-mouse button, ffvvwwmm lets you drag the miniature, just like you drag a
window.  When  you have finished  dragging the miniature,  ffvvwwmm analogously
repositions the window that that miniature represents.

If you  click the right-mouse  button within the VDM,  ffvvwwmm 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, ffvvwwmm  drags the physical
screen around the virtual desktop.

SSttiicckk
     Toggle a window's ``stickiness'': if it  is not sticky, make it so; if
     it is sticky, make it un-sticky.

SSccrroollll _h_o_r_i_z_o_n_a_l _v_e_r_t_i_c_a_l
     Scroll the  virtual desktop's  viewport by  _h_o_r_i_z_o_n_t_a_l pages in  the X
     direction and  _v_e_r_t_i_c_a_l 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

         Scroll 100 100

     means to scroll down and left by one full page, whereas

         Scroll 50 25

     means to  scroll left half a  page and down a quarter  of a page.  The
     scroll  function  should not  be  called from  within  a pop-up  menu.
     Normally, scrolling stops at the edge of the desktop.

     If the  horizontal and vertical  percentages are multiplied  by 1,000,
     scrolling wrap around at the edge of the desktop.  For example, if

         Scroll 100000 0

     is executed over  and over, ffwwmm 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.

CCuurrssoorrMMoovvee _h_o_r_i_z_o_n_a_l _v_e_r_t_i_c_a_l
     Move the  mouse pointer  by _h_o_r_i_z_o_n_t_a_l pages  in the X  direction, and
     _v_e_r_t_i_c_a_l  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

         CursorMove 100 100

     means to move down and left by one full page, and command

         CursorMove 50 25

     means to move left by half a page and down by a quarter of a page.  Do
     not call CCuurrssoorrMMoovvee from within a pop-up menu.

_S_e_e _A_l_s_o
ffwwmm, oollvvwwmm, oollvvwwmmrrcc, oollwwmm, ttwwmm, XX aapppplliiccaattiioonnss

_N_o_t_e_s
ffvvwwmm is derived from ttwwmm code and therefore shares its copyrights.

ffvvwwmm is  copyright (c) 1988  by Evans and  Sutherland Computer Corporation,
Salt  Lake City,  Utah,  and (c)  1989  by the  Massachusetts Institute  of
Technology,  Cambridge, Massachusetts.   All rights  reserved.  It  is also
copyright (c) 1993 by Robert Nation.

Permission  to use,  copy,  modify, and  distribute this  software and  its
documentation for  any purpose and without fee  is hereby granted, provided
that the  above copyright notice  appear in all  copies and that  both that
copyright  notice   and  this   permission  notice  appear   in  supporting
documentation, and that the names of Evans & Sutherland and MIT not be used
in  advertising in  publicity pertaining  to  distribution of  the software
without specific, written prior permission.

Robert Nation, Evans &  Sutherland, and M.I.T. disclaim all warranties with
regard   to   this   software,   including   all  implied   warranties   of
merchantability and fitness, in no event shall Evans & Sutherland or M.I.T.
be liable for any special, indirect or consequential damages or any damages
whatsoever  resulting from  loss of  use,  data or  profits, whether  in an
action of contract, negligence or  other tortious action, arising out of or
in connection with the use or performance of this software.

ffvvwwmm  was written  by  Robert Nation  (nation@rocket.sanders.lockheed.com),
with help from many people.  As noted above, ffvvwwmm is based on the ttwwmm code,
which was written by Thomas LaStrange.
