Comparison of tiling window managers
|Window Manager||Written in||Configured with||Management style||System tray support||On-the-fly reload||Information bars||Compositing|
|Awesome||C||Lua||Dynamic||Built-in||Yes||Built-in, images and text||Yes, with an external manager such as xcompmgr|
|dwm||C||C||Dynamic||None||No||Built-in, reads from root window name||No|
|XMonad||Haskell||Haskell||Dynamic||None||Yes||No||Yes, with xmonad-contrib and an external manager|
Awesome on it's own can provide many of the functions of a desktop environment. Configured in Lua, it has a system tray, information bar, and launcher built in. There are extensions available to it, written in Lua, but they are less smoothly integrated than those of XMonad. Awesome uses XCB as opposed to Xlib, which may result it a speed increase. Awesome has other features as well, such as an early replacement for notification-daemon, a right-click menu similar to that of the *box window managers, and many other things.
dwm is by far the most simple of the window managers listed here. It does not include a tray app or automatic launcher, although dmenu integrates well with it, as they are from the same author. Configuration is done in C, and dwm must be recompiled each time the configuration updates. Different from the other WM's, it must be restarted to apply configuration changes. It is more lightweight than the others listed here, at the expense of certain features.
Ratpoison is configured with simple text file, as opposed to the other window managers above, which are configured with programming languages. While this reduces flexibility, it can be easier to understand. The information bar in Ratpoison is somewhat different, as it shows only when needed. It serves as both an application launcher, as well as a notification bar. Ratpoison does not include a system tray, and is quite lightweight.
Scrotwm is a small dynamic tiling window manager largely inspired by xmonad and dwm. It tries to stay out of the way so that valuable screen real estate can be used for much more important stuff. It has sane defaults and does not require one to learn a language to do any configuration. It was written by hackers for hackers and it strives to be small, compact and fast.
Stumpwm is similar to Ratpoison, but is written and configured completely in Lisp. It can be reconfigured and reloaded while running. As with wmii and Ratpoison, it is a manual window manager. It's information bar can be set to show constantly or only when needed. It does not include a system tray.
wmii uses a different style of window management than those listed above. The user must manually move windows around. While more work, this also provides more flexibility be default. wmii is configured via the plan 9 file system, which allows any program that can work with text to configure it. The default configuration is in bash and rc (the plan 9 shell), but programs exist written in ruby, for example. It has a status bar and launcher built in, but no system tray.
XMonad is written in Haskell, and is configured in Haskell. This allows great flexibility, although this can be confusing at times. For all configuration changes, XMonad must be recompiled. However, this normally takes ~2 seconds, and can be done without affecting running programs. XMonad, in itself, is quite simple, but there is a large library called xmonad-contrib which provides many other features. XMonad does not include any utility programs, but others, such as dzen2 and xmobar, make it easy to display such things as workspace information. XMonad does not come with an application launcher, but there are modules in xmonad-contrib which provide one, as well as programs like dmenu and gmrun. There is no system tray, but this can be provided by applications such as stalonetray and trayer.