a11y adhd aufs awk battery Beryl best practice blog Boston BølerLAN cairo code community Compiz Compiz Fusion composite Council debugging development drm educational examples experiment eZoom file sharing fullscreen funny gadgets gnupg gsoc Hacking home improvement informational linux maximumize multihead munin Oslo pictures plugin political pop quiz presentation preview purging quote ranting resize review ritalin rrd sandbox screenshot script security security.vcl shelf shell smartcard statistics swap sysadmin Totem tuning tutorial Ubuntu UDS utility Varnish vdpau video vsts wiki wm XFixes
A free software-hacker's blog
Window Managers – WMII and Awesome
July 21, 2009Posted by on
I’ve been trying out wmii and awesome (wm) for a few months, and must say it’s a mixed pleasure switching from Compiz to wmii and awesome.
First let me tell you a little bit about wmii and awesome: They are both ‘dynamic tiling window managers’, which basically mean they resize windows for you so you always use the entire screen. Additionally, they both work on ‘tags’ instead of ‘workspaces’, which is just an other way of saying they work on workspaces, but diffrently. Really. [Edit: The major difference is that you can have a window in more than one tag, where with traditional workspaces, your only option is to have a window in either one or all workspaces/viewports/thingamajings]
So why did I stop using Compiz? Because I didn’t have time to figure out why I had screen glitches when I was scrolling after upgrading to Ubuntu 9.04. I knew it probably wasn’t Compiz, but I also knew it was probably related to something that Compiz uses (like TFP or similar). It’s just too much dark magic at work, and it’s frankly not very mature (there, I said it. A long-time Beryl/Compiz-developer said that the technology that Compiz uses isn’t very mature).
So anyway, I’d heard good things about wmii, so I tried it.
I liked it.
I finally got used to navigating with hjkl, after using GNU+Linux for 10 years.
Let me tell you why I like it: I essentially use two programs for what a wm is concerned: urxvt and firefox. And mplayer, but that’s hardly an issue. Firefox is usually maximized, and I quickly start and stop terminals. In Compiz, I wrote maximumize to make that easier. With WMII, terminals just worked.
Tags with wmii was also fun, but I didn’t feel that I really got to use them properly. You can’t view multiple tags at the same time, and if a window has multiple tags (ie: exist on multiple workspaces/viewports), you easily end up removing tags from it if you want to move one of the tags around. This typically means that if I tag all my firefox-windows with ‘f’, then decide to move the calendar-window from tag 2 to tag 3, it’s no longer tagged with ‘f’ unless I re-tag it.
However, one thing really ruled with wmii: Pretty much everything is a script, or oriented around scripts. The defaults were a little strange: by default, it used ALT as mod key, which is rather common to use for other apps. And it also had ‘exec’ as the first option if you used Mod+a to execute certain actions, which essentially meant I crashed/stopped the wm several times by accident. But this was all based around simple shell scripting and piping. And it was easy to hack. Which I did. And it was great fun.
But here’s the problem: WMII has no notion of multihead. This was a major drawback, as I had to use multiple X screens, which isn’t nearly as dynamic. This essentially turned into the show stopper. I couldn’t move my windows around, and I had to restart X if I connected my laptop to a projector or external monitor.
So I turn to awesome. And immediately I notice a few issues: First of all, it uses x-terminal to start terminals. This is good. What’s not good is that this is set to gnome-terminal by default on Ubuntu 9.04. I wasn’t running GNOME. It didn’t start. There was no indication of why it didn’t start. I won’t really consider this an awesome-issue, but an ubuntu-issue.
Awesome handles itself similar to wmii, but it actually handles multihead in xinerama/xrandr/twinview/mergedfb/whateveryouwannacallit. It simply works. The tags seem simpler; Where in wmii I created tags with names easily (for instance a “mail” tag, or a “customer A”-tag) with Mod+shift+t/Mod+t, awesome seems to come with nine tags pre-created and no names (ie: tag one, two, three…). It does seem able to display multiple tags at once, though, which is nice. And better yet: It’s really easy to toggle what tags are shown.
Awesome and wmii is also different in that Awesome deals with “window layouts” where wmii deals with columns. In wmii, a column is just that: a column of windows. You can move your windows with mod+shift+hjkl, and moving them to the left/right will move or create a column. Awesome, on the other hand, has a number of layouts to select from, and will create columns and rows accordingly, which strikes me as more flexible. However, moving windows in awesome isn’t quite as nice: You don’t actually move them, you switch them with the next/previous window, which means you can’t intuitively move a window from left to right.
Awesome also has a nasty habit of displaying important windows (like the confirmation-dialog of nvidia settings) below other windows. This wasn’t an issue with wmii. However, the general feel of awesome is somewhat better. It used the super-key by default as modifier-key, and it uses the F1/F2-key combos for help and running stuff, so fewer key-bindings to remember (although it uses mod+F1/F2, not Alt+F1/F2). Oh, and Mod+F1 is actually just a shortcut to open manual pages, and Mod+F3 is a shortcut to open ssh terminals (pretty cute, really). I still haven’t felt the need to configure awesome much, but it seems fairly straigth forward.
What I miss most in awesome, that wmii had, was the ease of navigating windows. Awesome places all window-titles in the menu/status-bar at the top, which essentially means it’s impossible to tell what window has focus. I’m guessing I can improve that with a theme, but I shouldn’t have to.
So what window manager to use? Well, both awesome and wmii are good choices if you don’t need/want a full DE (KDE/GNOME/XFCE/…). I’d say that if you have two monitors, or are likely to use two monitors, you probably want awesome over wmii. Otherwise, I’d probably go with wmii, due to the window navigation and the ease of customizing it.
Awesome: Better defaults, quirky window navigation, less dynamic tag-creation, better multihead. Seems more prone to bugs (dialogs below other windows, changing tag on one head seems to change it on the other too from time to time.)
WMII : Actual help on startup. NO multihead support. Powerful tag creation/deletion. No way to veiw multiple tags. Really nice window navigation. A tad too locked into coulmns.
All in all, something I miss in both of these is a way to switch focus between screens without using a mouse. Maybe I’m missing it somewhere in Awesome, but wmii will never be able to do this as long as it requires multiple X screens. Awesome was very intuitive: Things like moving windows with the mouse ‘just worked’.
[Edit: Awesome can switch between screens with Mod+Ctrl+j/k. Just goes to show you should read man files before hitting the “publish” button]
Oh yeah, I still haven’t given up on Compiz. I just took a break. Maybe I’ll work on wmii or awesome, or go back to Compiz… Who knows.