I’ve been playing around with different window managers for my Ubuntu installation. At work in particular, I find it really useful having a tiling window manager because (a) it improves my efficiency because the keyboard shortcuts help to cut down on the time it takes to move my hand between the keyboard and mouse, and (b) it severely reduces the stress of having to flip between a whole bunch of overlapping terminal windows and editor windows.
Here’s a brief summary of my travels in WM land:
- wmii—an excellent tiling window manager in my experience. As well as all the things that come with most tiling window managers, it has a clean interface through which programs can query the WM and send it commands. So, for instance, I wrote a simple script which meant that pressing Alt+G would pop up dmenu with the titles of all open windows, so I could select a window by searching for part of the window’s title bar text. I had grand plans for other extensions for wmii too, but these were cut short when work got me a laptop. You see, wmii is terrible at handling multiple monitors. And whatever window manager I use at work, I absolutely need it to be able to use both the laptop’s monitor and my external monitor. And so I travelled onwards…
- i3—very similar to wmii in many respects, except that i3 has excellent support for multiple monitors. You can simply use xrandr to set up the monitors however you want, and the window manager adjusts itself to your settings. Indeed, i3 was created by a wmii user who was annoyed at its poor support for multiple monitors. The down-side to i3? Yes, there is a downside. i3 does not have the extensibility of wmii. You can query some things about i3, and issue some commands (through a unix socket), but at the time of writing you can’t do anywhere near as much cool stuff as you can with wmii. With i3, basically all you can talk to the window manager about are the status of monitors, and how many virtual desktops there are. And so I explored further…
- PyWM—this sounds really cool! A window manager written in Python. Why that’s just what I want… It doesn’t matter that it’s not a tiling window manager, if it’s written in Python I can hack it to display windows in whatever layout I like, right? … Right? … Is anyone out there? Hello? It seems PyWM has been abandoned. The webpage has not been updated since 2006, and that was shortly after the project changed hands after 2 years of inactivity. I had a quick try at compiling this one from source, but I ran into all sorts of problems, not least of which were PyWM’s dependencies on old libraries. Perhaps a braver soul than I can conquer PyWM. But for the rest of us… onwards!
- Qtile—what’s all this? A tiling window manager written in Python? Surely that’s too good to be true… Well the website says “2010” at the bottom, so it may well be up-to-date. I tried building this window manager, and ran into the opposite problem that I had with PyWM: Qtile depends on versions of libraries which are newer than the stable versions in the Ubuntu repositories. I had a brief go at getting these dependencies and building it anyway, but had no success. Still, this project looks quite promising. Perhaps when I have some days to kill I’ll come back to it.
- Awesome—now this looks interesting. A window manager that’s completely scriptable in the Lua programming language. Unfortunately I’ve never programmed in Lua before. Thankfully there seem to be a number of decent tutorials around. Next time I’m feeling both fed up with my current WM and inspired to experiment, I shall have to give Awesome a proper go. It certainly sounds like a good thing. But until then, I think I’ll stick with i3.