The Tiling Chronicles: From xmonad to awesome to wmii

I’ve recently been going through another crisis of faith regarding window managers. Until a few months ago, I had been happily using gnome for 1 or 2 years, but one day I got the bug to try out something else…to minimize a bit. I had been poking around in Haskell at the time, so I made a jump to xmonad.

xmonad

Xmonad was quite nice: it was stable, it was “regular” once you learned its idioms, it was fast, and it was highly configurable. I spent perhaps 3 months polishing my xmonad config, getting it under my fingers, and generally nesting. But I never really got past the one thing that initially directed me to xmonad: configuration in Haskell. The deeper I got into xmonad, the more configuration I wanted, and the more I got frustrated with what I think of as the “word of god” programming style that functional programming seems to require: you have to hold a lot of state in your head, devise the perfect statement of that thought in code, and execute it. Any change to the system often requires serious reconsideration of many other aspects of the code. I’m sure much of this is my lack of sophistication with functional programming, but, be that as it may, I finally got fed up with xmonad.

By this time, though, I was hooked on the tiling approach to window management. Everything is heavily keyboard-driven, smart and consistent decisions are made for you regarding window placement, and the manager generally just stays out of your way. So I had to find an alternative.

awesome

After some poking around and a few false starts, I decided to give awesome a go. Awesome is configured and scripted via lua, has a good community, and seemed like an all-around good fit for me. To make a long story short, though, I ultimately gave up on awesome after about 2 months, and I can tell you why:

  • I never liked awesome’s multi-monitor behavior. Rather than spreading logical desktops across the monitors (like xmonad), awesome maintains distinct sets of desktops for each monitor. This might work for some people, but it drives me nuts…in my mind, a desktop is a set of windows across the entire viewable area. The need to juggle monitors as well as desktops just took me out of the zone way too often.
  • Try googling “awesome” or “awesome config” or, really, anything short of “configuration of the awesome window manager”: you’re not likely to get close to what you really want. This may seem like a minor thing, but it quickly go to be a pain in the ass, especially when I was first learning the new system. As you might imagine, xmonad does not suffer from this particular problem!
  • Stability. For whatever reason, awesome would sometimes just crash and shunt be back to the login manager. This happened regularly on my multi-monitor work station, but I don’t recall it ever happening on my laptop, so it may have been related to xinerama, video drivers, or something like that. Regardless, it was extremely difficult to stomach, and this more than anything else convinced me to head for greener pastures.

wmii

Once again I was wandering in the wilderness, searching for the window management sweet spot. Again I looked wide and far: ion, ratpoison, dwm, bluetile, and so on. Finally, almost on a whim, I tried out wmii…and fell in love. wmii is configured and scripted using a plan-9-style virtual filesystem, meaning that it’s scriptable by anything that can read or write files…meaning that it’s really scriptable by anything you want!

The wmii multi-monitor paradigm is exactly what I want: a desktop spread across all monitors. It has a straightforward layout model based on columns and vertical stacking within a column. It supports a few per-column layout schemes by default, and they have been just right for my needs. It’s conceptually clean, completely stable (as far as I can tell), and works great out of the box. What’s not to like?

To be fair, it’s not perfect (yet.) wmii draws a titlebar on every window, and I could generally do with out that. For the most part, the titlebar just takes up space…I can tell I’m in chrome or emacs without the window manager reminding me. Sometimes it’s useful (e.g. if you have multiple xterms open you can label them), but if I had to choose between titlebars and no titlebars I’d definitely do without. Perhaps I just haven’t found out how to turn them off.

Another bit of a downer is that the wmii community doesn’t seem to be as big as some of the others. This is a bit frustrating at first, but the documentation for wmii is good enough that once you grok a few important concepts, and if you’re willing to apply yourself, you can do whatever you want without much help.

Happily ever after…?

Who knows. As Calvin says, I must obey the inscrutable exhortations of my soul, so we’ll see how long wmii lasts. I’m really happy with it for now, though. I’ve quickly reached the point that I don’t need to think about it; it does its job quietly and competently. So, if you’re looking for a good tiling window manager (or a good window manager of any type!), do yourself a favor and check it out.

Advertisements

  1. #1 by Vasya on 2011/07/24 - 23:47

    There is really one annoying thing about wmii: sometimes updates break back-compatibility, and you need to fix your config files in order to get it work again. It sounds like weird, but I it is really annoying. I’ve used wmii for last 3 years; it’s definitely more awesome than awesome — lightweight, configurable, comfort vim-like mappings, simple, very-very simple, even simpler. But after my config was broken fourth time, I gave up.

    I tried ubuntu’s unity. It’s nice, but it is still very-very buggy, and consumes too many memory. It’s unacceptable for me, that I run out of memory on my new laptop with 4GB, when I felt very comfortable with 1GB on EeePC and wmii as WM.

    Now, I am going to give a chance to Xmonad+Gnome. After using unity for a while, I understood that though Desktop Environments are little heavy, there are many advantages of using them.

    So I went this path in exactly opposite direction — from wmii to Xmonad))

  2. #2 by Nicola on 2012/03/06 - 11:31

    “word of god” programming – love that expression

  3. #3 by Sabyasachi Ruj on 2012/07/01 - 14:23

    did you stick with this?

    • #4 by abingham on 2012/07/01 - 20:06

      Yes, I’ve stuck with wmii ever since I “landed” on it. Over time I’ve gotten better and better at it, to the point where I can’t really imagine working in another environment.

  4. #5 by Mohan Sundaram on 2014/06/16 - 06:06

    You should try the latest versions of awesome. I’ve been using awesome for over 18 months now and it is wonderfully stable, easy to use and mighty powerful. I’m not a coder but could customise awesome with ease really. I do not know about the multi-monitor behaviour as it is not my use case scenario,

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: