Xmonad backed by GNOME 3.0

My previous post criticized modern desktop environments (like gnome-shell and KDE 4.6) because they lack anything resembling efficient window management. It’s not a surprising view coming from someone that’s been spoiled by Xmonad’s beautifully easy mouse-free window management and dynamic layouts.

I’m not going to talk about window management today though. I installed a fresh copy of the libraries from Arch’s gnome-unstable repository and, instead of giving gnome-shell another whirl (not yet at least), I merely restarted Xmonad with the usual suspects running in the background (gnome-settings-daemon, gnome-keyring-daemon) and continued to use my typical GTK apps.

I have to say that I was pleasantly surprised that the GNOME beta functioned well as a drop-in replacement and, aside from the different theme and widget style everything worked identically. The VNC client still remembered my passwords too, so I interpret that as the keyring being intact. I even like the new default font and anti-aliasing choices. I’m sure some people will complain that it looks muddy (as critics of anti-aliasing almost always do), but to each their own.

Overall I’ve been pleased with some of the non-shell improvements of GNOME 3. The control center is a good replacement for the system menu of traditional GNOME and on par with Windows and KDE. I probably appreciate it a little more than average considering that I don’t have the system menu under Xmonad and it’s easier to remember to invoke gnome-control-center than it is to remember which little GNOME subapp to use to tweak some behavior of the GNOME applications.

One thing that surprised me was dconf-editor. I’ve heard throughout the GNOME 3 bashing blogs, that a lot of the configuration was hidden in dconf-editor and that really sucks because it’s basically regedit. That may be true, but GNOME has always essentially had a registry (gconf) and dconf-editor has to be the nicest registry editor I’ve ever used. Not that it’s a passable replacement for a control center option, but as a developer and desktop explorer it’s nice to see a full on description of each possible toggle and tweak in the registry.

I understand that this is a very small subset of GNOME that I’m using, but it’s nice to know that even if the GNOME desktop’s next full release is the Linux desktop apocalypse, everything will still just work.

The Sad State of Mainstream Window Management

No doubt you’ve all been keeping (or have been kept depending on how you read the news) up on the GNOME 3.0 / gnome-shell / Unity stuff that’s been going on. In short, the new major version of the typical GNOME desktop, 3.0, has reinvented the way that you interact with your desktop.

Initially I was excited to hear the news because the new release is supposed to be much more keyboard friendly than “classic” GNOME, and I am all about efficiently using the keyboard. That said, I am wary of any sort of broad scale change like this because I haven’t been fully convinced this is a good idea. Gnome-shell takes some good ideas, like the concept of per-task workspaces and the aforementioned keyboard friendliness, but it falls short. I’ve been trying to compose this entry for awhile since I compiled the gnome-shell ecosystem and even tried the gnome3.org liveCD, but it wasn’t until I read this post about eliminating minimize/maximize that it finally struck me. What the mainstream DEs are missing now is decent window management.

I’ve been an Xmonad user for years now and that one fact has really kept me away from using GNOME or KDE (in it’s vanilla form) for about as long. It’s just unwieldy to move windows with the mouse and painstakingly arrange windows to be productive. It’s this sort of task that software should make simple. For the uninitiated, Xmonad arranges all windows on a workspace in a dynamic layout. If you have one window, it takes up the whole screen. Two, and it’s divided between the two, three and it’s divided between the three and so on. The layouts are very advanced, ranging from simple splits to spirals, to circles. Sending windows to another workspace, switching workspaces, switching layouts, all of these can be accomplished with simple keystrokes. I don’t know how I’d survive without it anymore, I just have too many active terminals and applications to juggle with a mouse.

To be clear, I’m not advocating that GNOME start using Xmonad (although Xmonad integrates beautifully with GNOME 2.x). Also, I am aware the latest gnome-shell builds support a rudimentary tiling by dragging a window to the left or right edge of the screen, but it’s just not enough. KWin (KDE’s window manager) recently added basic tiling support as well but its efforts are just as primitive and laughable.

If the GNOME devs want to improve the way we interact with our windows, like gnome-shell purports to do, we need way more control over them both automatically (like dynamic layouts) and with user interaction. Basic concepts like “maximize” and “minimize” cease to make sense when the user has so much more power over how windows are shown by default. Want to work with your windows like a stack of papers (all fullscreen)? There’s a layout for that. Want to have a desktop with a browser and a news reader split 70/30? There’s a layout for that. Floating desktop for something like GIMP? There’s a layout for that. Decide the current layout no longer works for your workflow? Change it and the windows are automatically rearranged. Any conceivable, efficient way to view your windows can be chosen and dynamically used by a window manager. Using layouts makes dragging windows with a mouse feel like stone age technology or a child’s puzzle.

Additionally, the technology is entirely backwards compatible. If developers are worried about scaring new users with their layouts (although since gnome-shell is already a radical departure that doesn’t make too much sense) then just make the default layout behave like the current default (floating). Meanwhile, the rest of us looking for a better way can benefit. Perhaps best of all for the GNOME community, the people looking for that level of efficiency are also usually developers.

In short, there needs to be a powerful set of keybinds with a powerful set of window actions (send to desktop n, switch to desktop n, change layout, give window layout focus, etc.). If a major DE like GNOME got behind the tiling/dynamic layout paradigm, that would truly be a leap forward. Until then gnome-shell will be, at best, a marginal improvement over 2.x or, at worst, a KDE 4 style debacle. For now, all of us Linux users have to choose between a desktop with A+ integration (like GNOME 2.x — although in reality it’s probably more in the B-/B range) and a desktop that gets out of your way and lets you manage your tasks efficiently.