File: README

package info (click to toggle)
aewm 1.2.5-2
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 304 kB
  • ctags: 280
  • sloc: ansic: 2,229; makefile: 146; sh: 24
file content (183 lines) | stat: -rw-r--r-- 7,689 bytes parent folder | download
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
178
179
180
181
182
183
aewm - An X11 Window Manager
----------------------------------------------------------------------

aewm is a minimalist window manager for X11. I wrote it mostly to
learn about X and the ICCCM, but also to fight software bloat. Instead
of expanding to fill your entire "desktop environment", aewm's main
purpose is to get out of your way and allow you to use other programs
to control things like menus, icons, backgrounds, cursors, root
backgrounds, and so on.

It doesn't do "themes", or have much in the way of configuration.
This is a philosophical statement; it's better to do your work than
distract yourself with pretty little borders around it. I myself
haven't changed the default background color in, well, ever.

The other goal I had in writing aewm was to create an easily readable
and hackable implementation of the ICCCM. While I'm not 100% there
yet, I think I've at least made the dense jungle of Xlib a bit more
understandable. You are encouraged to take the code and do your own
thing with it. For this reason, it is distributed under an X11-style
license, in order to be compatible with whatever DFSG-free license you
prefer.

I was planning on using the name "swim" (Simple WIndow Manager), but
someone snapped that up while I was getting the code ready for general
consumption. "ae" doesn't really stand for anything, but I am a big
fan of Autechre. ;-)

The latest release is at http://www.red-bean.com/~decklin/aewm/.

Installation
----------------------------------------------------------------------

Before compiling, check the default (DEF_foo) options in aewm.h, and
the defines in the Makefile. DEF_FONT is of particular interest; make
sure that it is defined to something that exists on your system. You
can turn -DSHAPE off if you don't have the Shape extension, and
-DMWM_HINTS on if you have the Lesstif or Motif headers installed.

I've decided not to use imake or autoconf because the Makefiles they
generate are nearly impossible to read, and I wanted to learn how to
do it myself. If you need to hack the Makefile in order to get it to
work, please email me so I can take your configuration into account.

Using It
----------------------------------------------------------------------

aewm adds a titlebar with a small box on the right to each window.
The availible commands are as follows:

    Button  Titlebar  Box
    ------  --------  --------
    1       Raise     Hide
    2       Move      Resize
    3       Lower     Delete

Each button will also start a different program when you click on the
root window. These programs can be defined with the -new1, -new2, and
-new3 options.

aewm places new windows based on the position of the mouse. If your
mouse is in the center of the the screen, a new window will be
centered; as you move the mouse to a side or corner, the position of
the window will move there.

Please note that there is no `unhide' operation to undo the `hide'
operation. You'll need one of the included clients for that.

Clients
----------------------------------------------------------------------

The clients/ subdirectory is home to several programs that I use to
"glue together" my X session. Like aewm, each is simple and sticks to
its job. `aemenu' pops up a menu of programs to be launched, or (when
given the --switch option) currently running clients. `aepanel' stays
at the edge of your display and uses buttons to represent running
clients. It also allows you to open the same menu of programs. Each
program has a -gtk and -xaw version.

Their config file looks like this:

    # A comment
    cmd "Run XTerm" "xterm"
    cmd "Mozilla" "mozilla >/dev/null"
    menu "A submenu"
        cmd "The GIMP" "gimp"
    end

Blank lines and indentation can be added for readability; both are
ignored. The various programs will try to read ~/.aewm/clientsrc
first, and then /etc/X11/aewm/clientsrc if the first file doesn't
exist.

The default layout of aepanel-gtk is rather inflexible (this will be
fixed, eventually). aepanel-xaw, OTOH, allows for customization with X
resources, but can be frustrating to use in its default state. Here is
a good starting point, which makes it look somewhat like aepanel-xaw:
(change `1280' to the width of your screen and `30' to whatever is
appropriate for your font.)

    AePanel.geometry:               1280x30+0+0
    AePanel.overrideRedirect:       True
    AePanel*orientation:            Horizontal
    AePanel*showGrip:               False

When using aemenu, you can just exec aewm in your ~/.xsession script,
but if you prefer to use a aepanel, this is probably better:

    #!/bin/sh
    aewm &
    exec aepanel

If you prefer aemenu over aepanel as I do, but still want to be able
to restart your WM without restarting X (this really comes in handy
when debugging a window manager), `aesession' is a low-memory process
that will simply reap any children it inherits from ~/.xsession and
then sleep.

    #!/bin/sh
    aewm &
    exec aesession

In this case, my ~/.aewm/clientsrc contains the line `Logout=skill
aesession'. (kill `pidof aesession` also works.)

Caveats
----------------------------------------------------------------------

aewm does not set the root cursor. This is *not* the window manager's
job, and I feel rather religiously about that. I use this command to
set it: `xsetroot -cursor_name left_ptr'.

aewm is really not meant for 2-button mice. If you are stuck with one,
make sure you can emulate a third button by chording, and try running
xmodmap -e 'pointer = 1 3 2'. This will make your right button be #2,
and a chord #3. I have a few 3 button mice lying around so you can
always ask me to mail you one. ;-)

aepanel-xaw uses XtRegisterDrawable, which is only available in X11R6.
I don't know of any way to get the same functionality under X11R5, so
if you have a very old X installation, you are out of luck (unless you
are able to compile GTK+ against it).

There hasn't been a -display option for a while, but since I have been
asked: use `DISPLAY=foo aewm'. I dislike the use of an option which
will just have to turned back into an environment variable and
exported for child processes to work.

The Makefiles may cause problems with non-GNU or out-of-date versions
of make. If you have problems, try upgrading first, or just
substituting `gmake' for `make'.

You may want to fiddle with NAME_SIZE in aepanel. I haven't quite
decided on an optimal value yet. I might try shrinking it dynamically
as more buttons are made; GTK seems to have problems with large
buttons swamping out smaller ones.

If you enable Xft support, be sure to edit /etc/X11/XftConfig and
point "dir" at the actual location of your TrueType fonts. This is
probably covered in the XFree86 documentation, but I didn't figure it
out initially.

Acknowledgements
----------------------------------------------------------------------

In case this sounds familiar, it is. This project would have been
nearly impossible without the greatly appreciated work of David Hogan
in creating 9wm, on which I based my design. I can't thank him enough.
Sadly, David passed away in 2003. A memorial page for him can be found
at http://unauthorised.org/dhog/.

Thanks to Christophe Tronche for HTML-ifying the ICCCM and other
essential X documentation (http://www.tronche.com/gui/x/).

Adam Sampson <azz@gnu.org> wrote the initial code for MWM hints, Xft
support, and menu-ified goodies.

Author
----------------------------------------------------------------------

aewm is maintained by Decklin Foster <decklin@red-bean.com>. If you
have bug reports, comments, flames, or are just bored, send me email.
Copyright 1998-2004 Decklin Foster. Please see LICENSE for license.