packages icon

 wm2 -- a window manager =======================

 wm2 is a window manager for X.  It provides  an  unusual  style  of  window
 decoration  and  as  little  functionality  as I feel comfortable with in a
 window manager.  wm2 is not configurable, except by editing the source  and
 recompiling  the  code,  and  is  really  intended  for  people  who  don't
 particularly want their window manager to be too friendly.

 wm2 provides:

   -- Decorative frames for your windows.

   -- The ability to move, resize, hide and restore windows.

   -- No icons.

   -- No configurable root menus, buttons or mouse or keyboard bindings.

   -- No virtual desktop, toolbars or integrated applications.


 This release ============

 This is the fourth release of wm2, made in March 1997.  It differs in  some
 ways from the first, second and third releases.


 Building wm2 ============

 You will need a Unix machine, X libraries and a C++ compiler such  as  gcc.
 You  will  also  need a mouse, with at least one button.  Your X server and
 libraries must be R4 or newer and must support the  Shape  extension.   wm2
 does  NOT  support  multi-screen displays, because I don't have anything to
 test multi-screen code on.

 wm2 makes relatively heavy demands on the performance  of  your  X  server,
 because  of the use of shaped windows, but it shouldn't place too much of a
 load on other aspects of your system.

 Inspect the file Config.h.  If any of  the  settings  (fonts,  colours  and
 "xterm"  application  name)  in  this  file  are unlikely to work with your
 system, change them.  Ensure that CONFIG_NASTY_FONT  is  set  to  something
 which is unlikely not to be found.

 Edit the Makefile to suit the requirements of your system,  and  run  "make
 depend" followed by "make".  This should build wm2.  On certain systems you
 may need to edit the source to overcome problems with the location of  non-
 POSIX functions such as putenv() and select().


 Using wm2 =========

 To run wm2, make sure you're not already running  a  window  manager,  make
 sure  the  DISPLAY  variable  is  correctly  set, and then execute the file
 "wm2".  There are no command-line options or X resources, and there  is  no
 start-up  file.   If your X server doesn't support the Shape extension, wm2
 will exit (and will never work on  your  server);  if  it  can't  find  the
 required fonts or allocate the required colours, it will also exit (but you
 should be able to fix this by changing  the  definitions  in  Config.h  and
 recompiling).

 Available window manipulations are:

  -- To focus a window: depends on the focus policy you selected
     in Config.h before compiling.  See "Focus policy", below.

  -- To raise a window: click on its tab or frame, unless you have
     auto-raise on focus set in Config.h.

  -- To move a window: make sure it's in focus, then click and drag
     on its tab.

  -- To hide a window: make sure it's in focus, then click on the
     button at the top of its tab.

  -- To recover a hidden window: click left button on the root
     window for the root menu, and choose the window you want.

  -- To start a new xterm: use the first item on root menu ("New").

  -- To delete a window: make sure it's in focus, click on the
     button on the tab, hold the mouse button for at least a
     second and a half until the cursor changes to a cross, then
     release.  (I know, it's not very easy.  On the other hand,
     things like Windows-95 tend to obscure the fact that most
     windows already have a perfectly good Close option.  If the
     default delay doesn't suit you, change it in Config.h and
     recompile.)

  -- To resize a window: make sure it's in focus, then click and
     drag on its bottom-right corner.  For a constrained resize,
     click and drag on the bottom-left or top-right corner of
     the enclosing window frame.

  -- To flip around amongst the windows on-screen: click with the right
     mouse button on the root window or on any window's frame or tab.

  -- To exit from wm2: move the mouse pointer to the very edge of the
     screen at the extreme lower-right corner, and click left button on
     the root window for the root menu.  The menu should have an extra
     option labelled "Exit wm2"; select this.

 All move and resize operations are opaque.


 Focus policy ============

 Config.h contains settings for focus policy.  There are  three  things  you
 can    define    to    either   True   or   False:   CONFIG_CLICK_TO_FOCUS,
 CONFIG_RAISE_ON_FOCUS and CONFIG_AUTO_RAISE.  The first two are  connected:
 together  they define a focus policy.  The third is a separate focus policy
 on  its  own  and  will  only  work  if  the  first  two  are  both  False.
 CONFIG_AUTO_RAISE      differs      from     (!CONFIG_CLICK_TO_FOCUS     &&
 CONFIG_RAISE_ON_FOCUS) only in  that  it  provides  a  short  delay  before
 raising each window.  The delay is also definable in Config.h.


 Pixmaps =======

 This fourth release of wm2 no longer supports frame background pixmaps.  If
 you  want  them,  consider using wmx (available from the same place as wm2)
 instead.


 xterm =====

 Some versions of xterm and rxvt run badly with wm2.  If you use  xterm  and
 find that it refreshes the window excessively slowly, you might like to try
 experimenting with a different terminal  emulation  program.   I  think  it
 might  help  to  ensure that the scrollbar is on the right-hand side of the
 rxvt window and is thick enough that wmx's resize  handle  doesn't  obscure
 any of the text area.


 Credits =======

 wm2 was written by Chris Cannam, recycling a lot of code and structure from
 "9wm"  by David Hogan (see http://www.cs.su.oz.au/~dhog/ ).  9wm is written
 in C, so very little of the code is used verbatim, but the intention was to
 reuse  and  a  lot  of  the  resulting  code  is recognisable.  (Also 9wm's
 minimalism was rather inspiring.)  I've made enough changes to make it very
 probable that any bugs you find will be my fault rather than David's.

 wm2 also uses version 2.0 of  Alan  Richardson's  "xvertext"  font-rotation
 routines.

 The sideways tabs on the window frames were Andy Green's idea.

 If you want to hack the code into something else for  your  own  amusement,
 please  go  ahead.   Feel  free  to modify and redistribute, as long as you
 retain the original copyrights as appropriate.


 Bugs ====

 The principal bug is that wm2 now has too many features.   That  aside,  if
 you find a bug, please report it to me (preferably with a fix).



 Chris Cannam, cannam@zands.demon.co.uk October 1996