- Use the Source, Luke
Home | Register | News | Forums | Guide | MyLinks | Bookmark

Sponsored Links

Latest News
  General News
  Press Releases
  Off Topic

Back to files

aewm - An Exiguous Window Manager

aewm is a minimalist window manager for X11. It is extremely light on features and memory usage, and suitable for slower or embedded systems. It is also intended to provide an example implementation of most of the ICCCM and some of the EWMH, so it should be useful if you want to hack on your WM directly rather than deal with a complicated configuration system. It is not, however, a complete, to-the-letter "reference" implementation; features that are inessential or that would distract from more important parts of the code have been sacrificed for the sake of clarity, and the user interface is limited to functions that cannot be concisely implemented in separate clients.

Yes, the name is a backronym. It's also a bad Latin/Greek pun (for which I apologize.)

aewm's web page is at <>.


Before compiling, it is a good idea to read the -DFOO and DEF_BAR options in the Makefile and aewm.h, respectively. DEF_FONT, in particular, should be something that will always exist on your server.

Neither imake nor autotools are used, so apart from that, it is a simple matter of ``make; make install``.


aewm adds a small bar containing the window's name and a small box in the upper-right corner to the top of each window. To raise or lower a window, click the left or right mouse button, respectively, on the main portion of the bar. To move a window, click the middle button somewhere in the same space, hold, and drag.

To iconify or close a window, click the left or right button (respectively) in the box in the corner. To resize a window, hold and drag the middle mouse button in the box. ("Iconify", in this case, really means "hide", as aewm does not map any icon windows and leaves deiconification up to other clients.)

Clicking any button on the root window will launch another client. By default, these are (from left to right) ``aemenu'', ``xterm'', and ``aemenu --switch''. They can be changed with the -new1, -new2, and -new3 options.

aewm places newly mapped 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.

Virtual Desktops

Versions from 1.3.0 on support virtual desktops, as defined by the EWMH specification. Switching from one desktop to another, or setting the number of desktops available, is accomplished by sending a message to the root window; the included client ``aedesk'' can be used for this.

To move an existing client to a different desktop, set the appropriate property on that window. The ``xprop'' command in the X11R6 distribution can do this interactively, with e.g. ``xprop -f _NET_WM_DESKTOP 32c -set _NET_WM_DESKTOP 0''.


The ``clients'' subdirectory contains several other clients which can be used together to provide a usable windowing environment. ``aemenu'' pops up a menu of programs to be launched, or (when given the ``--switch'' option) other currently running clients. ``aepanel'' stays at the edge of your display and uses buttons to represent other clients. It also allows you to open the same menu of programs. Each program has a -gtk and an -xaw version.

Their config file, which will be searched for in ``~/.aewm/clientsrc'' and then ``/etc/X11/aewm/clientsrc'', looks like this:

# A comment
cmd "Terminal" "xterm"
cmd "Firefox" "firefox"
menu "Graphics"

cmd "The GIMP" "gimp"

When using aemenu, you can just exec aewm in your ``~/.xsession'' script, but if you prefer to use aepanel, or want to switch/restart window managers without closing your X session, you can start aewm in the background and exec aepanel or aesession instead. (aesession is a program which does nothing but hold the X session open and reap child processes.)

Keyboard Bindings

aewm does not grab any keys. This is by design, and recommendation of the ICCCM. Instead, you can use xbindkeys (which is unfortately not included in the stardard X distribution). For example, in ``~/.xbindkeysrc'':

"xwit -opposite -current"

Alt + Tab
"aedesk 0"

Alt + F1
"aedesk 1"

Alt + F2

(This "alt-tab" is not the quite the same as GNOME's. Properly circulating only managed, non-panel, non-taskbar-skipped windows would require a client that recognizes those EWMH hints, as X's native window circulation support works on a much lower level.)

Other Caveats

aewm does not set the root cursor. To do this, you can do something like ``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'.

There is no -display option, since there is no stardard way to pass this on to child processes. Instead, use ``DISPLAY=host:0 aewm''.

The Makefiles may cause problems with older versions of tradional make. Try upgrading first, or substitute ``gmake'' for ``make''.

You may want to adjust with NAME_SIZE in aepanel, as larger values can cause large buttons to crowd out smaller ones, but smaller values can reduce readability.


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 <>.

Thanks to Christophe Tronche for HTML-ifying the ICCCM and other essential X documentation, available at <>.

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


Copyright 1998-2006 Decklin Foster <>. This program is free software; please see LICENSE for details.

Sponsored Links

Discussion Groups
  Networking / Security

About | FAQ | Privacy | Awards | Contact
Comments to the webmaster are welcome.
Copyright 2006 All rights reserved.