Charlie Harvey

Xmonad made me more productive

I have been using Xmonad as my main window manager for several months now. I wrote about my initial experiences with the Haskell tiling window manager a while back. I want to talk briefly about how I have found myself more productive since making the leap from Gnome in this quick addendum to the previous article.

Claiming that something makes one more productive is a bold and often rather nebulous statement that tech writers often make for a product they have enjoyed using. So, full disclosure — I have rather enjoyed using xmonad. It is true also that I may have seen the same benefit by using another tiling window manager or even by using Gnome more effectively. Nevertheless, I found that some of the constraints of the environment helped me.

xmonad in action

When I first set xmonad up, I configured its various workspaces. The workspaces have been one of the biggest wins for me. I always have a browser open in workspace 1, code in workspace 2, email in 3 and so on. Switching is easy (alt-1,alt-2,etc) but makes me conscious of my context switch. The difference between this approach and alt-tabbing a bunch of times until I get to the right place is considerable. If I need to drop someone an email about some code I am writing, I can flip straight into my email workspace, without distracting myself trying to figure out if my email is open and where I put it. I had never really taken full advantage of this stuff in Gnome, but xmonad makes it almost necessary to work this way, especially if you want more than 4 or 5 windows open at once. There simply isn’t enough room in a single workspace to show large number of tiled windows.

When I am in a workspace, there is nothing unrelated to the task I am working on. For an easily distracted person like me, this is an aid to focus. Its like the various full screen distraction free editors but applied to whatever application you’re running. My code window is just gvim and a terminal or two. No emails, no browser, just the things I need and nothing else. I trust my other workspaces to be there if I need them. But I can relax and not think about them while I need to focus on the task at hand.

Xmonad, as a tiling window manager, lays out your windows for you. You can resize them if you really have to, but most of the time you don’t. How might that have an influence on anything? Well, I found with my previous window manager that there was a cognitive load in flicking between windows, resizing them and other expensive context switches. Xmonad gives me permission not to worry about the size or ordering of my windows. I can see all the relevant ones for the current task. If I need to mess with the order I can. If I need to change task, then all my windows are already on another workspace.

Finally, there is the advantage of not using the mouse as much. Now, that has little to do with staying focussed on what you're doing, but it does help you do more of it with less effort and possibly less RSI. Switching windows is easier with vimmish keybindings than it is with alt-tabs. The simple red border that xmonad adds to the active window helps you get to the right place quickly and without fuss. Combined with vim as a text-editor and vimperator in my browser, I find that nowadays I use the mouse less and less. I should also mention that doing everything with the keyboard makes you look cool. A not inconsiderable benefit.

I’ve made a brief case for the advantages of xmonad. So, what have been the downsides? It took me some time to get my head around resizing windows when I really had to. It turns out that it can be done, using the right mouse button and dragging the right hand side of the window. Making xmonad play nicely with a projector or a second monitor seems confusing, but I have not had enough time to explore it and there does seem to be some talk of it working rather well. Finally there are a small number of applications that are horrible to use under xmonad. GIMP is the main one of these. It can be done, but it sucks.

Overall, I have found xmonad a big aid to focus and getting work done efficiently. Not to mention quite fun to play with. I am sticking with it for now.


  • Be respectful. You may want to read the comment guidelines before posting.
  • You can use Markdown syntax to format your comments. You can only use level 5 and 6 headings.
  • You can add class="your language" to code blocks to help highlight.js highlight them correctly.

Privacy note: This form will forward your IP address, user agent and referrer to the Akismet, StopForumSpam and Botscout spam filtering services. I don’t log these details. Those services will. I do log everything you type into the form. Full privacy statement.