lwm - Lightweight Window Manager

lwm at work, showing off its extensive window decorations.


lwm is a window manager for X that tries to keep out of your face. There are no icons, no button bars, no icon docks, no root menus, no nothing: if you want all that, then other programs can provide it. There's no configurability either: if you want that, you want a different window manager; one that helps your operating system in its evil conquest of your disc space and its annexation of your physical memory.



lwm 1.2.4 has been released. This release fixes some bugs in handling fullscreen windows.


lwm 1.2.3 has been released. This release fixes a few minor issues currently patched by Debian. The source is now hosted on github at https://github.com/jamesfcarter/lwm.


lwm 1.2.2 has been released. This release fixes some minor bugs, improving performance and fixing frame-less window placement issues.


lwm 1.2.1 has been released. This release fixes problems with very long window titles, and corrects an issue with IRIX 6.5.


lwm 1.2.0 has been released. This release represents a new major, stable release for lwm. Although not yet entirely bug free, this version contains considerably fewer bugs than the last stable version (1.01).


lwm 1.1.7 has been released. This release further improves the focus model in click-to-focus mode, and fixes two long-standing bugs that caused fullscreen mode to behave strangely, and slightly missplaced windows following a ConfigureRequest event. Unless serious problems arise in the next few days, a new stable version of lwm will be released.


lwm 1.1.6 has been released. This release fixes a number crash-inducing bugs, and changes the window hiding and unhiding behaviour to improve click-to-focus mode.


lwm 1.1.5 has been released. This release fixes a number of bugs relating to focus and window stacking that became apparent only in the new click-to-focus mode, and adds edge resistance to make moving windows to the edge of the workarea easier.


lwm 1.1.4 has been released. This release fixes bugs in no_xmkmf_makefile (for those not using Imake), and adds a click-to-focus mode (although the enter-to-focus scheme remains the default).


lwm 1.1.3 has been released. This release fixes a number of bugs and improves EWMH workarea support.


lwm 1.1.2 has been released. This release fixes the "tk menu" bug, and improves EWMH support. Text in the window titles and popup menu has been internationalised (or internationalized :-), and the pointer now changes as it moves over certain window decorations.


lwm 1.1.1 has been released. This is the first release in the new development tree and adds the following features:

Although neither of these features are fully implemented, there is enough support there to allow lwm to be used in a modern desktop environment such as GNOME.


lwm gets a new web page and a new maintainer. There is new development aiming to make lwm work properly with modern desktop environments.


A manual page (for both stable and development versions) and an FAQ are available.


lwm is freely available under the terms of the GPL. The current stable version is 1.2.4 and is available at http://www.jfc.org.uk/files/lwm/lwm-1.2.4.tar.gz.

Older releases are also available.


lwm was written by Elliott Hughes. Maintenance has been taken over by James Carter. David Hogan, the author of 9wm - the window manager that inspired lwm - died in 2003. A memorial page is maintained by Danny Yee.

Elliott's original acknowledgements are included here:

This program's philosophy is based on no particular window manager, but inspiration has come from numerous sources. The general window hiding was first seen in Rob Pike's windowing system for Plan 9 (see his paper 8½, the Plan 9 Window System). The use of the right-hand button for hiding (rather than a menu of window operations as seen in ) came from experience of John Bradley's xv. The disappearing title-bars that lwm used to sport came about from a misunderstanding of BeOS' method of iconizing windows, and were removed when I decided that they were an annoying gimmick. The changing of cursor shape while reshaping is based on SGI's 4Dwm. The "box" in the top-left corner of the frame is meant to look like Pike's acme (see his paper Acme: A User Interface for Programmers; if you want something like acme for Unix, try Gary Capell's Wily). The automatic window placement heuristics are simple but effective, based upon personal experience. It would be nice to have a window manager that does more window management for us.

The code is at heart a rewrite of 9wm by David Hogan and the real thanks must go to him. It was seeing 9wm that made me think that writing a window manager wasn't such a ridiculous idea. I'd already written a window manager similar to lwm for Plan 9, based on - it seemed sensible to start the X version from a window manager with a similar outlook.

I'd long thought about writing a window manager (since 1993, in fact), but seeing the size of twm (and even uwm is larger than both 9wm and lwm) put me off. 9wm showed that a useful window manager doesn't need to be huge in either source or binary.

The O'Reilly books Xlib Programming Manual and X Protocol Reference Manual (volumes one and zero respectively in their series of books on the X Window System) were invaluable to me while writing lwm. Thanks to Adrian Nye for his brave effort to make sense of the nonsensical.

The following were brave enough to use lwm very early on, and proved a great source of encouragement and ideas: James Carter, Mawuli Lodoh, Stephen Parker, Al Smith, and Marcel Ward.

Various people have contributed bug fixes; see the source for details.