Jérôme Belleman
Home  •  Tools  •  Posts  •  Talks  •  Travels  •  Graphics  •  About Me

A Comparison of Window Managers: i3 and xmonad

8 Jan 2012

Dynamic tiling window managers – constrained to layouts – don't suit me as I crave for more freedom in arranging them live. I gave i3 a whirl after xmonad.

1 Is i3 a manual tiling window manager, though?

Wikipedia and the i3 website both claim i3 is a dynamic tiling window manager. Yet, it obviously acts as a manual one, insofar as it uses containers which you can split horizontally or vertically to your fancy before spawning windows in them. Much like Notion, in fact, which is widely advertised as a manual tiling window manager. Anyway, dynamic, manual, they're just words after all and there's nothing like giving the window manager a try.

2 Configuration

Configuring i3 is easy and properly documented. I did choose to change the home row to something more common and added a few bindings to be able to keep my xmonad habits. It's worth noting that many useful features are by default not bound to keys, so it's a good idea to read the documentation and spend some time configuring i3 instead of relying on the defaults.

3 A week with i3

Using i3 is quite comfortable as far as window management is concerned: manual tiling has its value, even if it's easy to end up with messy and inconvenient layouts which make you spend nearly as much time arranging your windows as you would do with a stacking window manager. What's more, there are many very useful features I'm used to in xmonad which I haven't been able to find in i3. With this in mind, I started drawing a table comparing the two window managers:

xmonad i3
Paradigm Dynamic Manual
Code Haskell. Yes, it's a lovely language and everything, but you do need to install hundreds of MB worth of software and learn Haskell, just to use your window manager. It does appear to go a tad far. C
Performance OK It uses XCB, which not all systems support well. E.g. drawing the Geeqie window contents is noticeably slower than with xmonad.
Workspace History Yes Apparently not
Workspace Navigation Convenient. In particular, creating new workspaces is as natural as breathing: just push to the next one and it will be created on the fly if there isn't one already. There's no concept of moving to the next workspace and, as such, creating a new one just isn't as easy
Live Workspace Creation and Naming Yes Apparently not
Bar Consumption It seems that xmobar is cheap according to powertop It's reported that i3bar and i3status are cheap and it seems like it's true according to powertop
Configuration and Extensibility Very flexible, programmable configuration supporting modules Not very flexible but maybe IPC can make things better
Launcher History, completion and file support No history, no file support and clumsy completion
Containers Apparently not Yes, which makes it easy to contain window manipulation without disturbing other windows and to perform operations on groups of windows
Reliability Good Good
ICCCM-Compliant No xine full-screen and floating windows tend to disturb tiling ones No xine full-screen but better floating support
Window copy Yes Apparently not
Startup Notification Could XMonad.Actions.SpawnOn help us here? Yes, with startup-notification, and even from a shell, sometimes
Hooks Yes Yes
Master and Slave Relationships Yes No, which is a shame because it's useful to have such an anchor
Window Marks Sort of, with XMonad.Prompt.Window Yes, but not as convenient as Vim

While my experience with i3 lead me to think that manual tiling window managers expose you to the risk of spending too much time arranging windows, Notion proved me wrong as it makes this operation a very natural one: setting up a layout on the fly is trivial, adjustments along the way are comfortable to apply and the rest of the time you will leave it untouched.

4 References