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