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

Sponsored Links

Latest News
  General News
  Press Releases
  Off Topic

Back to files

Needs Updating - (This doc is pretty old circa 15 May 2003)

aewm++ - The C++ version of aewm

Why was this done?

This was done for the simple fact that the C version of aewm spawned many new window managers. In other words it is a great peice of code in which to hack. Hopefully by having a C++ version of it, it will inspire even more C++ programmers to hack it into yet more window managers.

What does it do?

The C++ version does everything the C version does and more. The programs in the goodies directory were discarded. The reason for this is they are obsolete if you use fspanel and appbar. If you want these programs then download the aewm source code. In the future I plan on starting my own goodies directory where I will distribute appbar, and other little goodies to complement aewm++.

aewm++ provides window maximization, iconification, shading and virtual desktops in addition to the regular aewm features.

By default aewm++ starts with 4 virtual desktops (or workspaces if you like). Switching is done via the page up and page down keys while mouse pointer is over the root window. You can specify more virtual desktops by passing the -md <number of workspaces> to aewm++ at runtime.

aewm++ is designed for a 3 button mouse or a 2 button mouse with 3 button emulation on.

Window maximization is done by double clicking with the first mouse button on the titlebar, double clicking on a maximized window restores it to its original position and size.

Shading a window is done by middle clicking on the titlebar. Do this again and the window will become unshaded.

To iconify a window simply press the first mouse button on the little box at the right edge of the titlebar. aewm++ doesn't provide any native way to uniconify windows. If used in conjunction with fspanel it works nicely.

As of version 1.0.13 there is now an icon menu. If you middle click on the root window you will see the icon menu if you have clients that are iconified. If no clients are iconified you will see nothing. If you middle click on the root window again while the menu is open it will hide. Icons for the current desktop are the only ones that show. Once you switch desktops whatever icons on that desktop will show.

More features will be added to aewm++ as needed. I want to get it to where all the standard things you'd expect in a window manager are supported. The focus is also to keep aewm++ as lite as possible. It also picks up development where aewm left off, it hasn't undergone any new development in quite a long time.

Partial GNOME support was added, enough to get aewm++ working fully with fspanel. I highly recommend using fspanel with aewm++ as it fits together nicely!


tar xvzf aewm++-1.0.x.tar.gz
cd aewm++-1.0.x
make install

To uninstall do:

make uninstall

Edit your ~/.xinitrc and add:

exec aewm++

Frank Hale <>



aewm - An X11 Window Manager

aewm is a minimalistic 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.

Another 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 I chose a liberal license that should allow you to add your favorite GPL or BSD flavour if you see fit.

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


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.

"make" will compile everything, and "make install" will install it. The goodies/ directory must be compiled separately.

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 goodies for that.


The goodies directory has been deleted. All of the default aewm goodies have been deleted. If you want them download aewm source code. The reason for this is because I don't plan on changing any of them so its redundant to include them here.

In the future a new goodies directory will be created with my own programs to complement aewm++.


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

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


In case this sounds familiar, it is. This project would have been nearly impossible without the greatly appreciated work of David Hogan on 9wm, which I based my design on. I can't thank him enough.

> The latest version of 9wm is held at > 9wm was written by David Hogan (, a postgraduate > student at the Basser Department of Computer Science, University of > Sydney (

Thanks to Christophe Tronche for HTML-ifying the ICCCM and other essential X documentation (

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

License - Below is the license aewm is under. I have gotten permission from Decklin to release my changes under the GNU GPL.

Copyright (c) 1998-2001 Decklin Foster.


You are granted permission to copy, publish, distribute, and/or sell copies of this program and any modified versions or derived works, provided that this copyright and notice are not removed or altered.

Portions of the code were based on 9wm, which contains this license:

> 9wm is free software, and is Copyright (c) 1994 by David Hogan. > Permission is granted to all sentient beings to use this software, > to make copies of it, and to distribute those copies, provided > that:

>     (1) the copyright and licence notices are left intact
>     (2) the recipients are aware that it is free software
>     (3) any unapproved changes in functionality are either
>           (i) only distributed as patches
>       or (ii) distributed as a new program which is not called 9wm
>               and whose documentation gives credit where it is due
>     (4) the author is not held responsible for any defects
>         or shortcomings in the software, or damages caused by it.

> There is no warranty for this software. Have a nice day.


aewm is maintained by Decklin Foster <>. If you have bug reports, comments, flames, want permission to change the license, or are just bored, send me email. Your messages are appreciated (but do read the thing above about virtual desktops ;-).

Sponsored Links

Discussion Groups
  Networking / Security

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