The KDE - Gnome Challenge: xmonad

A couple of weeks ago, i wrote about a personal challenge to work on making a better desktop for myself, and use my computer more effectively. I meant to pick up the blog and start posting a regular series on taking advantage of your desktop for others to follow. So as unusual, here is the second installment to the series.

I want to begin with a tool that has really served me well for a very long time. I started using xmonad in the end of 2007. Since then, it has helped me be far more productive, because i spend alot less time getting swamped with windows that need to be managed. If you want to know exactly what problems i was facing that lead me to believing tiling WMs to be the one true way (for myself), i recommend you read my blog post from then. Since then xmonad has come along way, and through all that, i've been using more or less the same configuration with both Gnome and KDE.

The way i see it, xmonad is going to be the corner stone of any desktop i put together. There are two primary reasons why i have this perspective, and in this series, you will see many comments on how to integrate Foo (TM), Bar (TM), and Baz (TM) into xmonad for a complete workflow. After using xmonad for a few months, i stopped seeing my desktop as a collection of apart applications, and began to see the system as a complete system. By putting two programs next to each other, colouring the backgrounds the same, and using no border between the two, they would blend into each other, akin to panels in many IDEs. Suddenly, a file manager window and a simple music player could have the same functionality as the all in one integrated amarok. Instead of relying on kparts or whatever KDE uses these days, the OS already provided the components to integrate them together. When you consider that the end user doesn't understand 'programs' intuitively either, i decided that the most user friendly approach is to teach the user functionality rather than programs.

Window managers are also incredibly context sensitive. Of all programs running on your machine, your window manager has the best view on exactly what you're doing and where you're doing it. With a little bit more information, like a context, it can be very flexible to accommodate what you are really trying to do, and make your life much easier. More concretely, it can provide per desktop/workspace key bindings, the ability to organize your windows around tasks and so on. In this case, xmonad also takes nearly all priorities over keybindings in your X server, which in plain english means all your global hotkeys are very implement in xmonad. It's even got a few extensions that make it easy to make up new keybindings, and even use vi and/or emacs like bindings on your desktop.

xmonad can take up a number of blog posts itself, but it's not the only way to solve a number of problems i'm looking to solve. If you're looking to follow this series, the easiest thing to do is to try out xmonad and get used to it. Otherwise, you'll be on your own integrating it with your window manager of choice. That said, the next few blog posts will have very little to do with xmonad.