I’m an enthusiast for tiling window managers. I’ve tried out quite a few over the years, and here I offer my assessment of the four I’ve liked best: spectrwm, i3, xmonad and dwm.
Summary for the impatient
The window managers in more detail
Note: For further details about WMs other than spectrwm, please follow the links below each entry.
This is currently my favourite. Configuration by a plain text file is simple. I should say that it is the most flexible and intuitive WM that I’ve tried.
Here are some screenshots.
Firefox in master position; two other windows open
Enlarge master window (Mod + L)
Change to horizontal split (Mod + Space)
Make a window fullscreen.(Mod + E)
Switch to Workspace 2 containing xsane (Mod +2 or Mod + R. arrow)
Note: xsane was started from xterm; the xsane windows are floating (set via Quirk in ~/.spectrwm.conf)
I liked i3 quite a lot and used it for a time. Configuration is simple since it is done in a plain text file. In many ways it is similar to spectrwm but the windows are arranged i differently. i3 seems to be better known than Spectrwm with a larger following However, it has some slighly irritating idosyncracies, and having tried out both of them fairly extensively I find I prefer Spectrw.. For my reasons see the detailed comparison of Spectrwm and i3 .
This has a large user base and a helpful mailing list. It has many of the features I want and is quite similar to Spectrwm but is let down by its being configured in Haskell, which makes any configuration beyond the most basic a major undertaking requiring hours of research on the internet. There is also a large disk space overhead required to house the libraries needed for said configuration. For these reasons Xmonad loses out to its competitors, at least for me.
Dwm is the forerunner from which many other tiling WMs forked. There is still a lot going for it: it’s simple and functional and easy to learn. Configuration is via C, but don’t be put off; it’s easier than it looks even if you don’t know C (I don’t). If you are not willing to embark on learning Haskell, dwm would be an attractive alternative. If Spectrwn were not available I’d use Dwm.