ffwwmm -- X Utility

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

ffw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.

The related  window manager  ffvvwwmm also  provides a simple  virtual desktop.
Please note  that ffwwmm  and ffvvwwmm  are in fact  the same window  manager; ffwwmm
however,  has been  compiled to  exclude  the virtual  desktop and  so save
memory.  This  article describes  the features that  are common to  ffwwmm and
ffvvwwmm; the article  on ffvvwwmm concentrates on the features  that relate to the
virtual desktop.

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

_I_n_v_o_k_i_n_g _f_w_m
To invoke  ffw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fw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.

_A_n_a_t_o_m_y _o_f _a _W_i_n_d_o_w
When you invoke ffw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.

As you  can see, ffwwmm  draws a decorative  border most windows.   The border
consists of a bar on each side, and a small L-shaped object on each corner.
There is an  additional bar at the top of  the window, called the _t_i_t_l_ebar;
it displays the window's name.  In  addition, there are up to ten title-bar
buttons.  The top, side, and  bottom bars collectively are called the _s_i_d_e-
_b_a_r_s. The corner pieces are called the _f_r_a_m_e.

Unless you  modify ffwwmm's standard  defaults files, pressing  the left-mouse
button in  the title or  side-bars begins a  move operation on  the window.
ffwwmm displays a heavy black outline for the window; by moving the mouse, you
can drag  the outline around  the screen.  When you  release the left-mouse
button, ffwwmm moves the window to the spot to which you dragged the frame.

By default, pressing the left-mouse button  in a frame piece begin a resize
operation.   ffwwmm displays  a dashed  ``rubber'' outline  of the  window; by
dragging the mouse,  you can make the outline larger  or smaller.  When you
release  the  left-mouse  button,  ffwwmm  redraws  the window  to  match  the
dimension of the rubber outline.

By default, when you press the center-mouse button when the mouse cursor is
anywhere in the border, ffwwmm displays  brings up an extensive list of window
operations.   To  select an  operation,  drag the  mouse  until the  cursor
touches the operation you want, then release the center-mouse button.

A title  can contain  up to  ten buttons.  You  can define their  use.  The
default configuration has a title-bar button  on each side of the title bar
(as shown  in the above  figure).  When you  click any mouse  button on the
button to the left of the title bar, ffwwmm displays a menu of window options.
When you  click any mouse  button on the  button to the right  of the title
bar, ffwwmm  iconifies the window.   The number of title-bar  buttons that ffwwmm
uses depends  on how many have  mouse actions bound to  them.  For details,
see the section on the mouse, below.

_I_n_i_t_i_a_l_i_z_a_t_i_o_n
Unlike some other window managers, ffwwmm does not attempt to manage all local
screens;  rather, it  manages only  screen  0 of  the default  or specified
display.  This dramatically simplifies the ffwwmm code.

During initialization, ffwwmm searches for a configuration file that gives key
and  button  bindings, and  a  few  other things.   First,  ffwwmm seeks  file
$HHOOMMEE/.ffwwmmrrcc.   If   this   file   does   not   exist,   ffwwmm   seeks   file
/uussrr/lliibb/XX1111/ffvvwwmm/ssyysstteemm.ffwwmmrrcc  for system-wide  defaults.   If ffwwmm  cannot
find either file, it exists.

_S_h_a_p_e_d _W_i_n_d_o_w_s
ffwwmm lets  you use shaped  windows, that is,  where the window  conforms its
shape to  that of the  image it is  enclosing.  Some applications,  such as
xxeeyyeess or oocclloocckk, use shaped windows.

With these  applications, you have several options.  You  can make them all
undecorated -- for example:

    NoBorder oclock
    NoTitle oclock

Another  approach  is  to use  the  default  configuration  and leave  them
decorated, in  which case ffwwmm  shows a decorative border  and a solid-color
backdrop.

Yet another approach  is to compile the SSHHAAPPEE extensions  into ffwwmm. Do this
by changing a flag in the  MMaakkeeffiillee. In this case you get the shaped window
with no  backdrop, and a  title bar floats  above the window.   The shaped-
window extensions increase the window manager's memory consumption by about
60 kilobytes  when no  shaped windows are  present, but have  little effect
when shaped windows are present.

_I_c_o_n_s
The basic  ffwwmm configuration uses  monochrome bit-mapped icons,  similar to
those that ttwwmm uses.  If you  compile the XXPPMM extensions into ffwwmm, then you
can use  color icons similar to ccttwwmm, Microsoft  Windows, or the Macintosh.
To use these options, you need the XXppmm library; for details, read the files
MMaakkeeffiillee.nnooIImmaakkee and IImmaakkeeffiillee, which  are included with the source code to
ffvvwwmm.

If you compile both the SSHHAAPPEE and XXPPMM options into ffwwmm, you will get shaped
color icons, which are very attractive.

_O_p_t_i_o_n_s
ffwwmm recognizes the following two command-line options:

-dd _d_i_s_p_l_a_y_n_a_m_e
     Manage  display  _d_i_s_p_l_a_y_n_a_m_e  instead  of  the  display named  by  the
     environment variable $DDIISSPPLLAAYY.

-ddeebbuugg
     Put  X  transactions   into  synchronous  mode.   This  slows  down  X
     dramatically, but  guarantees that  ffwwmm's internal error  messages are
     correct.

_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.   This  section describes  the
configuration options.

SSttddFFoorreeCCoolloorr _c_o_l_o_r
     Set to  _c_o_l_o_r the foreground  color for menus  and non-selected window
     titles.  The  default is blue.   On a monochrome  display, ffwwmm ignores
     this option and uses black.

SSttddBBaacckkCCoolloorr _c_o_l_o_r
     Set to _c_o_l_o_r the  background color for menus and non-selected windows.
     The  default is  white.   On a  monochrome display,  ffwwmm ignores  this
     option and uses white.

HHiiFFoorreeCCoolloorr _c_o_l_o_r
     Set to _c_o_l_o_r the color of the selected window's title.  The default is
     red.  On a monochrome display, ffwwmm ignores this option and uses black

HHiiBBaacckkCCoolloorr _c_o_l_o_r
     Set  to  _c_o_l_o_r  the background  color for the  selected window.   On a
     monochrome display, ffwwmm ignores this option and uses white.

FFoonntt _f_o_n_t
     Use _f_o_n_t instead of ffiixxeedd for all uses except window titles.

WWiinnddoowwFFoonntt _f_o_n_t
     Use _f_o_n_t instead of ffiixxeedd for the window title bar.

NNooTTiittllee _w_i_n_d_o_w
     Do not  put a title-bar in  the decorations for _w_i_n_d_o_w.  This is handy
     for clocks  and similar gadgets that  you do not want  to take up much
     space.  _w_i_n_d_o_w can be the window's name or its class.

NNooBBoorrddeerr _w_i_n_d_o_w
     Do  not put  decorative  borders onto  _w_i_n_d_o_w. This  command does  not
     affect the  title-bar.  This is  handy for clocks  and similar gadgets
     that  you do  not  want to  take  up much  space.  _w_i_n_d_o_w  can be  the
     window's name or its class.

     If  you specify  both  NNooBBoorrddeerr and  NNooTTiittllee  for the  same window  in
     .ffwwmmrrcc, that window is completely undecorated.

SSttaayyssOOnnTToopp _w_i_n_d_o_w[,_w_i_n_d_o_w, ... ,_w_i_n_d_o_w]
     Each _w_i_n_d_o_w stays  in the foreground, that is, by  default it stays on
     top of all other windows.  This  is handy for clocks or mailboxes that
     you want  always to be  visible.  If you explicitly  lower _w_i_n_d_o_w, ffwwmm
     does  not  force  it  back  to  the  foreground  until  you  raise  it
     explicitly.  _w_i_n_d_o_w can be a window's name or its class.

CCiirrccuullaatteeSSkkiipp _w_i_n_d_o_w
     This causes  ffwwmm to  skip _w_i_n_d_o_w when  you invoke the  circulate-up or
     circulate-down functions.  _w_i_n_d_o_w can be a window's name or its class.

CCeenntteerrOOnnCCiirrccuullaattee
     ffwwmm automatically  selects the desktop  page that contains  the window
     that the mouse cursor is moving.  If you select CCeenntteerrOOnnCCiirrccuullaattee, ffwwmm
     tries to center the target window in the desktop viewport, rather than
     just lining it up to the closest page.

BBoouunnddaarryyWWiiddtthh _w_i_d_t_h
     This sets  to _w_i_d_t_h the boundary of a  decorated windows.  The default
     is six.

EEddggeeSSccrroollll _h_o_r_i_z_o_n_t_a_l _v_e_r_t_i_c_a_l
     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

         EdgeScroll 0 0

     in your .ffwwmmrrcc; if you want a whole page, use:

         EdgeScroll 100 100

     Both horizontal and vertical should be positive numbers.

CClliicckkTTooFFooccuuss
     Normally, keyboard's input goes  into the window that the mouse cursor
     is in.   If you  set this  option, the keyboard's  input stays  in one
     window until you click on a new window.

AAuuttooRRaaiissee _m_i_l_l_i_s_e_c_o_n_d_s
     This  enables auto-raising  of windows, and  sets to  _m_i_l_l_i_s_e_c_o_n_d_s the
     delay  between the  point a  window acquires the  input focus  and the
     moment ffwwmm raises  it.  This option works in focus-follows-mouse mode;
     it  also works  in  click-to-focus mode  if  you change  the focus  by
     clicking in the application window instead of a decoration window.

MMoouussee _b_u_t_t_o_n _c_o_n_t_e_x_t _m_o_d_i_f_i_e_r_s _f_u_n_c_t_i_o_n
     This binds a mouse-button action to _f_u_n_c_t_i_o_n, which must be a built-in
     ffwwmm function.

     _b_u_t_t_o_n gives  the number  of the  mouse button.  If  it is  zero, then
     every button performs the specified function.

     _c_o_n_t_e_x_t gives the context in which the binding applies.  It can be any
     combination of the following:

     AA  Any context.
     FF  A window frame (the corners).
     II  An Icon window.
     RR  The root window.
     SS  A window side, top, or bottom bar.
     TT  A window title.
     WW  An application window.
     00 through 99
        Title-bar buttons.

     For instance, a context of FFSSTT applies when the mouse is anywhere in a
     window's border, except the title-bar buttons.

     _m_o_d_i_f_i_e_r_s is any combination of the following:

     AA  Any modifier.
     CC  The <ccttrrll> key.
     MM  The <mmeettaa> key.
     NN  No modifiers.

     SS  The <sshhiifftt> key.

     For example, a modifier of CCMM applies when both the <mmeettaa> and <sshhiifftt>
     keys are down.  Function is one of ffwwmm's built in functions.

     ffwwmm numbers the title-bar buttons as follows:

         1 3 5 7 9 [ title ] 0 8 6 4 2

     ffwwmm draws the buttons on each  side of the title based on the highest-
     numbered  button that  has an  action  bound to  it.  For  example, if
     button 7 is the highest odd-numbered button to have an action bound to
     it, ffwwmm also  draws buttons 1, 3, and 5  on the left side of the title
     bar; whereas if 4 is  the highest even-numbered button, ffwwmm draws only
     it and button 2 on the right side.

KKeeyy _k_e_y _c_o_n_t_e_x_t _m_o_d_i_f_i_e_r_s _f_u_n_c_t_i_o_n
     This binds  _k_e_y to _f_u_n_c_t_i_o_n,  which must be  a function that  is built
     into ffwwmm.  _c_o_n_t_e_x_t and _m_o_d_i_f_i_e_r_s are the same  as with the instruction
     MMoouussee.  Note   that  _k_e_y   must  be  one   of  the  entries   in  file
     /uussrr/XX1111/iinncclluuddee/XX1111/kkeeyyssyymmddeeff.hh, but with the leading XXKK_ omitted.

     Binding a  key to  a title-bar  button does not  cause that  button to
     appear unless it is also bound to a mouse button.

AAuuttooPPllaacceeIIccoonnss
     This tells  ffwwmm to place icons  along the right side  or bottom of the
     screen, if possible, when they  are first created.  ffwwmm will not place
     icons over locations taken by icons that have already been created, or
     over open windows.

IIccoonn _w_i_n_d_o_w _b_i_t_m_a_p-_f_i_l_e
     This tells ffwwmm to use the bit-mapped image in _b_i_t_m_a_p-_f_i_l_e to represent
     _w_i_n_d_o_w   when  that   window  is  iconified.    _w_i_n_d_o_w  can   name  an
     application's  window or  class,  and must  be  enclosed in  quotation
     marks.   _b_i_t_m_a_p-_f_i_l_e is  the full  path name  to a  file that  holds a
     standard  X11 bit-mapped  image.   ffwwmm uses  the  specified bitmap  or
     pixmap in preference to any icon supplied by the window itself.

     If ffwwmm  is compiled with library lliibbXXppmm.aa  (which provides support for
     color icons), then  _b_i_t_m_a_p-_f_i_l_e can hold an .xxppmm pixmap file.

     Do not use an  environmental variable within _b_i_t_m_a_p-_f_i_l_e. If _w_i_n_d_o_w is
     an empty  string, the image  in _b_i_t_m_a_p-_f_i_l_e becomes  the default icon;
     ffwwmm will use it if no other icon bitmap or pixmap is specified.

DDeeccoorraatteeTTrraannssiieennttss
     This tells ffwwmm to  decorate transient windows.  Normally, ffwwmm does not
     do so.  Some pop-up windows, such  as the xxtteerrmm menus, are not managed
     by the window manager and will be decorated.

RRaannddoommPPllaacceemmeenntt
     This  tells ffwwmm  to position  ramdomly  all windows  for which  no X/Y
     position is  specified.  By  default, ffwwmm  requires you to  place such
     windows by hand.

CClliicckkTTiimmee _m_i_l_l_i_s_e_c_o_n_d_s
     This command  defines what  constitutes a mouse-button  ``click''.  If
     the time between pressing a mouse button and releasing does not exceed
     _m_i_l_l_i_s_e_c_o_n_d_s, then ffwwmm is to regard it as a click; otherwise, it is to
     treat  the pressing  and  the releasing  of  the mouse  button as  two
     separate events and act accordingly.

SSuupppprreessssIIccoonnss
     This stops ffwwmm from creating  or drawing icon windows.  When used with
     the window-list, this provides a sort of icon manager.

CCuurrssoorr _n_u_m_b_e_r _t_y_p_e
     This  instruction lets  you  change cursor  styles, albeit  awkwardly.
     _n_u_m_b_e_r indicates the cursor you are changing, as follows:

       0  PPOOSSIITTIIOONN       When initially placing windows
       1  TTIITTLLEE          When touching a window title-bar
       2  FFRRAAMMEE          When touching corner pieces of window border
       3  SSYYSS            When touching a title-bar buttons
       4  MMOOVVEE           When moving or resizing windows
       5  WWAAIITT           During an EEXXEECC built-in command
       6  MMEENNUU           When in a menu
       7  SSEELLEECCTT         With built-in commands such as iiccoonniiffyy
       8  DDEESSTTRROOYY        For built-in commands DDEESSTTRROOYY and DDEELLEETTEE
       9  LLEEFFTT           In the left side-bar of a window
      10  RRIIGGHHTT          In the right side-bar of a window
      11  BBOOTTTTOOMM         In the bottom side-bar of a window
      12  TTOOPP            In the top side-bar of a window

     _t_y_p_e is a number that gives shape of the cursor to use.  The available
     numbers  are  set  in  file /uussrr/XX1111/iinncclluuddee/XX1111/ccuurrssoorrffoonntt.hh.  For  a
     picture of these available cursors,  see the entry for the command xxffdd
     in the manual for X Windows for COHERENT.

BBuuttttoonnSSttyyllee _b_u_t_t_o_n _w_i_d_t_h_x_h_e_i_g_h_t
     This tells ffwwmm which rectangular  decorative shape to used in a title-
     bar button.  _b_u_t_t_o_n gives the  number of the title-bar button; it must
     be between zero and nine.  For a description of these numbers, see the
     description of  the command MMoouussee, above.  _w_i_d_t_h  gives the percent of
     the  button's width  to  used, and  _h_e_i_g_h_t  gives the  percent of  its
     height.  Negative numbers invert the shading.

PPooppuupp _n_a_m_e
     This begins the  definition of a pop-up menu that  will later be bound
     to a mouse  button or a key.  _n_a_m_e names the menu; it must be enclosed
     between quotation marks.

     Definition begins with the keyword  PPooppuupp This is followed by a series
     of lines, each of which defines  an entry in the menu.  The first word
     of each  menu-entry line names the built-in  function to be performed;
     this is followed  by the caption to appear on  the menu (which must be
     enclosed between quotation marks, and then by any additional arguments
     that the  built-in function needs.   You can use  the built-in command
     PPooppuupp  to invoke  a  sub-menu, as  long  as that  sub-menu is  defined
     earlier in the configuration  file.  The keyword EEnnddMMeennuu marks the end
     of  the menu  definition.  The  following gives an  example of  how to
     define a pop-up menu:

         Popup "Window Ops"
             Title "Window Ops"
             Move "Move"
             Resize "Resize"
             Raise "Raise"
             Lower "Lower"
             Iconify "(De)Iconify"
             Nop " "
             Destroy "Destroy"
             Title "HARDCOPY"
             Exec "Hardcopy"  exec xdpr &
             Exec "Hardcopy RV"  exec xdpr -rv &
         EndMenu

     By default, ffwwmm centers a caption within its menu entry.  If, however,
     you embed a tab character within a menu entry's caption, ffwwmm moves the
     text that  follows the tab  character into a second  column, and left-
     justifies  the entire  menu.   This lets  you perform  rough-and-ready
     labeling.  The tab  character must really be a tab:  if it is expanded
     into spaces, it does not work.  For example

         Popup "Window Ops"
           Title   "Window Ops   Alt-F1"

     begins a  left-justified menu: ffwwmm places  ``Alt-F1'' toward the right
     side of the menu.  If you want your menus to be left-justified, simply
     add a tab character after the menu's title line.

FFuunnccttiioonn _n_a_m_e
     This begins the definition of a complex function, which is composed of
     ffwwmm  built-in functions  You can  later bind the  function to  a mouse
     button or key.  _n_a_m_e names  the function, and must be enclosed between
     quotation marks.

     The keyword  FFuunnccttiioonn begins the  definition of the  new function; the
     commands that  comprise the function  appear on the  lines that follow
     it; and the function ends with the keyword EEnnddFFuunnccttiioonn.

     Each command  is specified as  shown in the example  below.  In brief,
     each command  line consists of  three parts: the name  of the built-in
     function to perform, the type  of event that should trigger the action
     (enclosed  between  quotation  marks);  and  any  arguments  that  the
     function needs.   You can use the  PPooppuupp command to define  a menu, as
     long as that menu is defined earlier in the configuration file.

     ffwwmm  recognizes the  trigger actions  MMoottiioonn, CClliicckk,  and DDoouubblleeCClliicckk.
     When  a  function is  triggered,  ffwwmm  waits to  see  if  the user  is
     clicking, double-clicking, or  dragging the mouse.  Once it determines
     the type of action that  is occurring, ffvvwwmm executes only those built-
     ins whose trigger action match the action you performed.

     Consider the following example:

         Function "Move-or-Raise"
                 Move            "Motion"
                 Raise           "Motion"
                 Raise           "Click"
                 RaiseLower      "DoubleClick"
         EndFunction

     If  you bind  function  MMoovvee-oorr-RRaaiissee to  the left-mouse  button in  a
     window  title-bar, then,  when you  press  the left-mouse  button, ffwwmm
     waits  150 milliseconds  to see  if  the button  is released.   If the
     button is  not released, ffwwmm  begins a move operation.   When the move
     operation  is complete,  it then  performs a  raise operation.   If it
     detects a  button release,  ffwwmm waits  another 150 milliseconds  for a
     second click.  If it detects only one click, it raises the window.  If
     it detects  two clicks, it  alternately raises and  lowers the window.
     You  can  use  the option  CClliicckkTTiimmee  to  change this  150-millisecond
     ``window''  for defining  a click.  The  clicking and  double clicking
     concepts do not carry through to using  keyboard shortcuts.

_B_u_i_l_t-_i_n _F_u_n_c_t_i_o_n_s
ffwwmm supports the following built-in functions.   You can bind any or all of
these  to  keyboard  or mouse  buttons,  or   combine  them  to form  other
functions:

NNoopp  Do  nothing.   Normally,  this is  used  to  insert  a  blank line  or
     separator into a menu.  If the menu item specification is

         Nop " "

     then ffwwmm inserts a blank line.  If, however, it looks like

         Nop ""

     then it inserts a separator line.

TTiittllee
     Do nothing.  Use this to insert a title line into a menu.

BBeeeepp Beep the computer.

QQuuiitt Exit ffwwmm. Usually this causes X to exit as well.

RReessttaarrtt _n_a_m_e _w_i_n_d_o_w-_m_a_n_a_g_e_r
     This  exits   ffwwmm  and  starts   _w_i_n_d_o_w__m_a_n_a_g_e_r  in  its   place.   If
     _w_i_n_d_o_w__m_a_n_a_g_e_r  is  ``fwm'', then  ffwwmm  restarts  itself.  If  _w_i_n_d_o_w-
     _m_a_n_a_g_e_r is not in your default search path, use its full path name.

     _n_a_m_e  gives the  name that  appears in  a menu.   It must  be enclosed
     between quotation marks.  To  make parsing easier, ffwwmm requires a _n_a_m_e
     field, even if the function is not called from a menu.

     This command should not have a trailing ampersand, and should not make
     use of any environmental variables.  For example:

         Key F1 R N Restart " " /usr/X11/bin/fwm

RReeffrreesshh
     This makes all windows on the screen re-draw themselves.

MMoovvee This lets the  user move a window.  If called  from within a window or
     its border,  ffwwmm moves that  window.  If called from  the root window,
     ffwwmm lets you select the target window.

RReessiizzee
     Resize a window.

RRaaiissee
     Raise a  window to the  foreground; that is,  move it in  front of any
     other overlapping window.

LLoowweerr
     Lower a  window to the background;  that is, move it  behind any other
     overlapping window.

RRaaiisseeLLoowweerr
     This alternately raises and lowers a window.

DDeelleettee
     This sends a  message to a window that asks  that it to remove itself.
     In most instances, this causes the application to exit.

DDeessttrrooyy
     Destroy a window.  This is guaranteed to get rid of the window, but is
     a  violent  way to  terminate  an application,  and  may leave  memory
     littered with debris.  Use this only as a last resort.

IIccoonniiffyy
     Iconfy a window if it is not already iconified, or de-iconify it if it
     is already iconified.

MMaaxxiimmiizzee [_h_o_r_i_z_o_n_t_a_l _v_e_r_t_i_c_a_l]
     Expand a window to fill the screen.

     Optional arguments _h_o_r_i_z_o_n_t_a_l and _v_e_r_t_i_c_a_l limit the maximum size of a
     window.  Each is  a percent of the total size  of the screen.  Setting
     either  to zero  tells ffwwmm  not  to alter  the window's  size in  that
     dimension.  For  example, the following  adds a title-bar  button that
     expands a window to the full vertical size of the screen:

         Mouse 0 4 A Maximize 0 100

     The following  adds a  title-bar button that  expands a window  to the
     screen's full horizontal size:

         Mouse 0 4 A Maximize 100 0

     The following  expands a  window to  fill one-quarter of  the screen's
     area (that is, half the height and half the width):

         Mouse 0 4 A Maximize 50 50

     Note that  either argument can,  with caution, be set  to greater than
     100.

CCiirrccuullaatteeUUpp
     Move the  mouse cursor to the  previous window in the  list of windows
     for which CCiirrccuullaatteeSSkkiipp has not not been specified.

CirculateDown
     Move the  mouse cursor to the  next window in the  list of windows for
     which CCiirrccuullaatteeSSkkiipp has not not been specified.

WWiinnddoowwLLiisstt
     Display  a pop-up  menu  that shows  the  title and  geometry of  each
     windows currently on the desktop.  ffwwmm shows the geometry of iconified
     windows in brackets.  Selecting a  window from this menu moves it onto
     the desktop, if it is not already there; moves the desktop viewport to
     the  page that  contains  the upper  left  corner of  the window;  de-
     iconifies the window, if necessary; and raises the window.

EExxeecc _n_a_m_e _c_o_m_m_a_n_d
     Invoke a shell  and execute _c_o_m_m_a_n_d, which can be  any command on your
     system.  _n_a_m_e  gives the  string that  appears in a  menu; it  must be
     enclosed between  quotation marks.  To  ease parsing of  this command,
     _n_a_m_e is required even if the function is not called from a menu.

     The following example binds function key <FF11> in the root window, with
     no modifiers, to an EExxeecc function.  It starts the command rrxxvvtt with an
     assortment of options:

         Key F1 R N Exec "rxvt" exec rxvt -fg yellow -bg blue -e /bin/tcsh &

PPooppuupp _P_o_p_u_p_N_a_m_e
     Bind a previously defined pop-up menu to a key or mouse button.

     The following  example binds mouse buttons 2 and  3 (i.e., the center-
     and right-mouse buttons) to a  pop-up menu called WWiinnddooww OOppss, which is
     defined above.   The menu pops up  if you press either  the center- or
     the right-mouse  button in the  window frame, side-bar,  or title-bar,
     with no modifiers:

         Mouse 2     FST N   Popup "Window Ops"
         Mouse 3     FST N   Popup "Window Ops"

     You  can use the  key modifier  to bind  a pop-up menu  to a  key.  To
     operate a  pop-up menu  without using  the mouse, by  binding it  to a
     keys; and  you can  select an option  from it by  using the ^,  v,a nd
     <rreettuurrnn> keys.

PPooppuupp _e_n_t_r_y _m_e_n_u-_n_a_m_e
     This command binds a previously defined pop-up menu into another menu,
     where it can  be used as a sub-menu.  The  following example defines a
     sub-menu, called  QQuuiitt-VVeerriiffyy, and  binds it  into a main  menu called
     UUttiilliittiieess:

         Popup "Quit-Verify"
                 Title   "Really Quit Fvwm?"
                 Quit    "Yes, Really Quit"
                 Restart "Restart Fvwm" fwm
                 Nop     ""
                 Nop     "No, Don't Quit"
         EndPopup

         Popup "Utilities"
                 Title   "Utilities"
                 Exec    "Xterm"         exec xterm &
                 Exec    "Rxvt"          exec rxvt &
                 Exec    "Top"           exec rxvt -T Top -n Top -e top &
                 Exec    "Calculator"    exec xcalc &
                 Exec    "Xman"          exec xman &
                 Exec    "Xmag"          exec xmag &
                 Nop     ""
                 Popup   "Exit Fvwm"     Quit-Verify
         EndPopup

     A  sub-menu must  be defined  prior to  the main menu  in which  it is
     bound.  There is no formal limit to how deeply you can nest sub-menus.

FFuunnccttiioonn _F_u_n_c_t_i_o_n_N_a_m_e
     Bind a previously defined function to a key or mouse button.

     The  following example  binds  mouse button  1  (i.e., the  left-mouse
     button) to  a function called MMoovvee-oorr-RRaaiissee,  which was defined above.
     This  binding instructs  ffwwmm to  execute  this function   whenever you
     press the left-mouse button in a window's title-bar.

         Mouse 1         T       A       Function "Move-or-Raise"

_K_e_y_b_o_a_r_d _S_h_o_r_t_c_u_t_s
ffwwmm lets you perform  any window-manager operation from the keyboard.  This
lets you operate ffwwmm without using a mouse.

You can  bind the built-in command  SSccrroollll to appropriate keys,  so you can
scroll  arond the  virtual desktop  without lifting  your fingers  from the
keyboard.  You can also bind pop-up menus, the move and resize command, and
practically any other built-in command to a key.

Once a built-in function has been started, you can move the mouse cursor by
pressing the keys ^, v, <-, and ->; to terminate an action, press <rreettuurrnn>.
Holding  down the  <sshhiifftt>  key moves  the  mouse cursor  in larger  steps;
holding down the <ccttrrll> key moves mouse cursor in smaller steps.  Beginning
with release 0.975, ffwwmm lets  you use standard eemmaaccss and vvii cursor-movement
commands instead of the arrow keys.

_S_u_p_p_l_i_e_d _C_o_n_f_i_g_u_r_a_t_i_o_n
The sources for ffwwmm include two sample configuration files:

ssyysstteemm.ffvvwwmmrrcc
     This is the default  configuration file.  It gives a ``vanilla'' setup
     of ffwwmm. This was installed by default when you installed ffwwmm onto your
     system.

mmwwmmlliikkee.ffvvwwmmrrcc
     This  configures ffwwmm  to resemble  the Motif  window manager  mmwwmm. The
     resemblance is  little more  than skin deep,  but if you  are familiar
     with Motif you may prefer these defaults.

If you  do not want the default, ``vanilla''  configuration, copy either of
the above files  into your home directory, rename it  to .ffvvwwmmrrcc, then edit
it as described above to suit your preferences.

_S_e_e _A_l_s_o
ffvvw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fwwmm is derived from ttwwmm code and therefore shares its copyrights.

ffw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fwwmm was written by Robert Nation (nation@rocket.sanders.lockheed.com), with
help from many people.  As noted above, ffwwmm is based on the ttwwmm code, which
was written by Thomas LaStrange.
