Sunday 21 June 2009

Divorcing The GNOME

GNOME and I have got on quite well since it came into existence in the late '90s. I had always thought that an interface combining the best of the command line and GUI approaches ought to be possible and for a time it seemed to be going well.

Unfortunately, GNOME and I have separated over irreconcilable differences, summed up by this page:
"Once upon a time, Gnome provided a way to enable Emacs-style keyboard
shortcuts ... Unfortunately, in trying to simplify the Gnome interface (for better or worse), this option has been removed."

This is a story that comes up over and over again: GNOME removing configurability in the name of ease-of-use.

GNOME used to be a powerful GUI built around Unix-friendly principles such as configurability, but more and more it's tending to the One Size Fits All approach. Though you can still get at a lot of config by hacking around with gconf, knowing what you're doing is getting harder. That makes fewer people change the defaults, which makes fewer developers find problems caused by deviating from the defaults, which in turn makes it even less appealing to customise things.

For many years I was a happy sawfish user. I had a nicely customised set of window management rules, shortcuts and utility functions that helped make me very productive. A few months back an upgrade over-ruled my choice of window manager and attempts to change it back just unearthed a bunch of strange behaviours caused partly by assumption that other code was making. Compiz was pretty configurable so I stuck with it for a while, but I finally snapped when I ended up typing my GPG password into a dialogue that popped up and stole my keyboard focus. The problem of new windows stealing focus is one that I never solved in Compiz.

Yesterday I replaced the vast majority of my GNOME driven setup with one based on the Awesome window manager. In a few hours I learned the Lua language that Awesome uses for configuration, disabled the tiling features that I didn't want (even though Tiling is the number one feature on Awesome's list, you can just configure it out if you try), added some functions I missed from my Sawfish setup and I now have a slick and extensible setup which as an added benefit makes my computer feel significantly faster.

I understand the appeal of uniformity. I understand that if everyone does things the same way it makes many things easier. But diversity and flexibility need to be treasured too. I should be able to mould my desktop environment around how my mind works at its most efficient, not vice versa. We need tools that make dealing with diversity easy rather than tools that try to make it go away.

I still respect the work the GNOME team have done on many levels, but I feel that in their rush for mass acceptance they are being too eager to sacrifice some of the things that made their alternatives to Windows so appealing.

1 comment:

  1. And just to finish the story off, I've now added the focus behaviour I want by adding this little chunk of code to the "new window" hook:

    if awful.mouse.client_under_pointer == c then
    client.focus = c
    elseif c.transient_for == client.focus then
    client.focus = c
    end

    Now new windows only take focus if they're under the mouse pointer or transients. The next step will be to make sure they pop up out of the way of the current window and that I have a keyboard binding to grab the latest window that was mapped and dump it somewhere sensible. But that can wait.

    ReplyDelete