The Sad State of Mainstream Window Management

Posted by Jack on 2011-03-01 at 13:13
Tagged: software

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.