A Comparison of Window Managers: i3 and xmonad
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.