My Search for the Perfect Desktop Environment Part 3: Xmonad, Gnome Shell and back again

In case you missed it, here’s part 1 and part 2 of this series.

Shortly after becoming disenchanted with OSX again, Dean Jones introduced me to Xmonad as he recently has switched over to it. Around that same time, I was attempting to become a vim user (Vimmer? Vimusketeer? Vimaniac?) so I was putting some effort into learning some new commands and relying on the mouse even less than usual. Xmonad fit perfectly into this mindset and I too switched over to it.

For those of you that may not know, Xmonad is a “tiling window manager” (twm for short) and essentially all the active applications are tiled on the screen consuming 100% of the available real estate. As a web developer that relies on dual monitors it was an absolute treat. One monitor populated with multiple terminals, second monitor with a maximized web browser, but most importantly an epic about of control from the keyboard.

Even though I absolutely loved Xmonad once I learned the hotkeys, the system was a pain in the ass to get looking good and working with Gnome. Many hours of researching and configuration left me with a system running Xmobar with trayer on top of a Gnome session that felt like it was held together with scotch tape. I don’t hate Xmobar, but I definitely wasn’t a fan of using trayer. Icons would show up with inconsistent spacing, the tray itself had to be set to a fixed % (or pixel) width and Xmobar the same to fill the negative space. I summed the whole experience up as looking like a system from the mid-1990s (must to my displeasure).

Around this time I had ditched the system block on both my CLI and on Xmobar and went with a very minimal setup. I even removed my desktop wallpaper and went with just the color black to help remind me of how unproductive I was when I didn’t have the screen filled with apps. Even though it was a bitch to set up, it was exceptionally stable (especially when I ditched gnome-screensaver due to horrible lock screen hangs). Most of the problems from setup revolved around the hacky way Gnome integration took place, specifically launching gnome-session from within a start up script that was executed by Xmonad. This reminded me way too much of having an autoexec.bat back in the day.

Fast forward a couple of months or so (honestly can’t remember when I officially switched to Xmonad) and Ubuntu 12.04 came out. Around this time I was getting frustrated with trying to perfect my Xmonad setup and switched back to Unity (for like a minute) and then back to Gnome Shell (which lasted a few weeks).

Unity is still Unity. I don’t necessarily hate it, but the way it eventually slowed to a crawl on me didn’t please me. Upon upgrading to 12.04 (upgrade, not fresh install) every system that I was having issues with Unity slowness on showed the same horrible slowness when giving Unity another shot. I still love that Canonical is trying to push the envelope a bit and disrupt the GUI on Linux, but I really hope that the speculative “Gnome Shell remix” of Ubuntu ends up being merged back in the same way the Netbook Remix was (which is where Unity started).

Back in Gnome Shell on Ubuntu 12.04, I was pretty content. My system looked like something from a modern era and not from the dawn of computing and everything was working pretty well. Oh wait, but now gnome-screensaver is hanging on me again when attempting to unlock the screen. Oh wait, the notification area is still awful. Oh wait, I actually don’t like how Gnome Shell manages workspaces. Oh wait, I fucking miss being able to switch which monitor has focus with just mod+(w e).

I missed Xmonad and it hurt. I’m always trying to find a more productive way to work, but this was the first time I had ever felt exceptionally crippled by my desktop environment. Upon returning to Xmonad after a few short weeks back in Gnome Shell I was greeted with significantly more integration to Gnome. Specifically, installing Xmonad on 12.04 created a login session that default to Xmonad for window management as well as the new Gnome3 panels. The addition of xmonad-log-applet (albeit a PITA to get installed) gave me the ability to have the same Xmonad log information that was easy to obtain using Xmobar but also a solid system tray without needing to perfect panel widths and all that nonsense.

I proclaimed that I found my perfect desktop environment and Dean Jones retorted “yeah, until Wednesday”. Well guess what, it’s Wednesday, and I’m still pleased.

Just to follow up on the desktop wallpaper and clock mentioned earlier and in other blog posts. I currently am back to using the default Gnome Shell wallpaper (I just love those blue stripes) and at the moment I do have a clock on my panel but no longer on the CLI. The lack of desktop wallpaper was a bit dismal (Jeff Atwood is still correct though) and the lack of a clock also meant a lack of a calendar (well, not with Xmobar, clock was the clock, not a calendar). The lack of a calendar was starting to be cumbersome. I may see if the clock on the Gnome panel can be customized to show an icon of a calendar instead of the time, then I can have the best of both worlds.

And so ends my recent journey to find a perfect desktop environment. Will it be perfect for you? Highly doubt it since you’re probably a scummy mouse user. But for me, it’s perfect for now. I’m unsure that I’ll ever be without a tiling window manager and if Gnome Shell ever supports tiling the way Xmonad does, I may switch back, but for now, I can deal with using the less flashy panels as long as they work. Since moving back to Xmonad with the tighter Gnome integration, gnome-screensaver no longer gives me any issues when unlocking the system.

Hooray, now I can blog about something different!

Josh Sherman - The Man, The Myth, The Avatar

About Josh

Husband. Father. Pug dad. Musician. Founder of Holiday API, Head of Engineering and Emoji Specialist at Mailshake, and author of the best damn Lorem Ipsum Library for PHP.

If you found this article helpful, please consider buying me a coffee.