When Apple first announced Spaces at last year’s WWDC, officially bringing virtual desktops to Leopard, all I could think of was “Yes, finally!” Unfortunately, after seeing the final product, I happen to agree with Henry Story and John Gruber: Spaces is broken. Gruber nailed the crux of the problem:

In short, Spaces seems designed for app partitioning, not task partitioning.

The Past

Like Henry, I’ve been a virtual desktop user for a very long time, probably since the early 1990s. Along with many Unix geeks, I started using virtual desktops while running X11 on a Unix workstation. There were many X11 window managers that supported virtual desktops. I started off using tvtwm, switched to fvwm, and then used whatever window manager was the default with GNOME.

After GNOME, I jumped on the OS X bandwagon and immediately started using CodeTek VirtualDesktop. They never released an Intel-native version, so I switched to VirtueDesktops. This died when Spaces was announced for Leopard.

The point of all this is that although Spaces may be the first supported virtual desktop implementation on a commercial OS outside of Unix, virtual desktops is not a new idea. While Spaces is most certainly the sexiest and slickest implementation around, it also ignores much of the history of virtual desktops and their feature set. This results in a not-so-usable end product.

The Present

I believe a major part of them problem is that Apple tried to make virtual desktops accessible to the average user. However, I think no matter how much spit, polish, and animation Apple puts on Spaces, virtual desktops is a power user feature. Spaces is broken because it is designed for the wrong user.

The power user most likely has N.A.D.D. This basically means they’re doing multiple tasks at the same time. For me, this means I may be working on multiple coding projects. Each project consists of an Xcode window, one or more terminal windows, and one or more web browser windows. Up until Spaces, I’ve used virtual desktops to segregate all windows related to a project to one desktop. Spaces really does not like this kind of setup. It really wants all of my Xcode windows in one space, all of my terminal windows in one space, and all of my browser windows in one space. Broken. At least for me. Tasks != applications.

You can beat Spaces into submission by using the Dock menus to create new windows on other spaces or dragging windows around in the zoomed out view. But this is clearly a pain in the ass, and negates much of the benefit of using Spaces. So far, it’s still more useful than pain, so I still use Spaces. But I do curse under my breath every time I need to open a new Safari window on a new space.

The Future

Okay, enough bitching, how can we fix it? I’ve seen a couple of solutions. Henry mentions that Command-Tab should just not switch spaces on you. While I agree, this may confuse new users. elliottcable’s solution is a per-app preference. I think he’s close, however, I don’t agree that Command-Tab should automatically create a new window, if none exist. I think it should just activate the app, i.e. show its menu bar. Then I can do Command-N or Command-O or whatever to open a new window on that space. Though, if there was a global pref to make all applications work this way, I wouldn’t complain.

Key Bindings

One final gripe is the key bindings for Spaces. The only key bindings for switching desktops is Control + arrow keys. I usually work with my fingers in one of two keyboard configurations: both hands on the home row, or left hand on the home row and right hand on the mouse. Control + arrow keys sucks for both of these configurations. Ideally, I’d love to be able to configure “switch desktop up/down/left/right” individually and to any modifiers + key I want. Personally, I’d use Control + Option + e/d/s/f. While it looks contorted, it’s not bad for an old Emacs user like myself. And it works well in both of my keyboard configurations.

Let Them Eat Cake

Given all the discussion about Spaces and how some people like it fine just the way it is and others find it badly broken, I think it’s biggest weakness is lack of configurability. I don’t think there’s one mode of operation that can satisfy everyone. Power users love configurability. Unfortunately, Apple tried to make virtual desktops available to the masses, but annoyed its true users: the power user. I’m all for keeping preferences down to a minimum, but sometimes you just gotta open the floodgates for the power user. Ultimately, the true way to fix the problem is to let Apple know there is a problem. If there are enough of us (and I hope there are), maybe they’ll listen.