1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177
|
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 third release of wm2, made in January 1997. It differs in
some ways from the first and second 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. If you want to use frame background-pixmaps (see "Pixmaps"
below), you will need the Xpm header and library. 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.)
-- 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 lower a window: click with the right mouse button on its
tab or frame. (This was the only new feature in the second
release.)
-- 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. (This is a new feature
in the third release.)
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 third release of wm2 will allow you to specify a background
pixmap for the window frames. If you set CONFIG_USE_PIXMAPS to True
in Config.h and supply a file ./background.xpm which contains an Xpm
pixmap called "background", wm2 will use this to colour in the frames.
An especially unpleasant example file, cribbed and modified from
http://home.netscape.com/assist/net_sites/bg/marble/greenred_marble.gif,
is included, although you're advised to find your own.
xterm
=====
Some versions of xterm run badly under wm2. If you use xterm and find
that it refreshes the window excessively slowly, you might like to try
using xvt or rxvt instead.
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
|