{February 20, 2010} the limits of virtual desktops

so… we’re going to be talking about activity stuff at tokamak this week. there’s a lot of things that aren’t final yet… but… one thing that’s pretty much settled is that the activity/context stuff is going to be separate from virtual desktops. regardless of whether we *should* do such a thing, it’s not possible to do it properly anyways. I’ve been asked about this a few times so I’m going to explain the whole thing in excruciating detail so that I never have to explain it again. :)

virtual desktops are a useful feature. they’re nice. I use them lots. however, they have their limitations. some of these could *maybe* be overcome; some not.

1) you can only remove the *last* desktop.

the way the spec works, you aren’t really removing a desktop, you’re reducing the number of desktops. perhaps you could hack around this by shuffling all windows from higher desktops over one and renaming all those desktops and then removing the last one. it’d be icky, though, maybe slow, and probably prone to glitches.

2) adding a desktop messes up their spatial layout.

if I have six virtual desktops in two rows, then desktops 3 and 6 are adjacent. so are 4 and 5. but when I add a seventh desktop, suddenly 3 and 4 are adjacent, but 3 and 6 are further apart, and so are 4 and 5. this is really annoying if you like to organize pairs of desktops (one for code, one for documentation). I’m not sure what could be done about that; you can’t just swap two desktops around (although perhaps you could implement a hack like in (1))

3) a window is either on one desktop, or all of them.

you can’t have a window on *two* virtual desktops. maybe you could lie to the window, tell it it’s on all desktops then just not show it on the desktops it’s not really on? but lying to the windows doesn’t feel like a great idea, and I don’t know what sorts of strange assumptions applications might make…

4) compositing exposes lies.

imagine that kmail has the ability to only show mail folders related to your current activity. now imagine the desktop cube showing kmail on two desktops at once. kmail doesn’t know you’re using a compositing effect; it’ll display as if it were in the current activity, both times.

we had this problem with the taskbar, and got a bazillion complaints. we ended up removing panels from such effects to hide the issue. but we can’t do that with apps.

So, there are four main problems; three could perhaps be hacked around, but the fouth isn’t really solvable. and I don’t know what other strange assumptions apps may make about virtual desktops.

There’s also the fact that the spatial organization of the desktops often clashes with contextual stuff. I use kmail for pretty much every sort of activity, but I don’t want it on all desktops; I have it on a separate desktop I set aside for that sort of global stuff. Forcing those together would suck. and there’s lots of people who do stuff like putting documentation on one desktop and code on another – those are part of the same activity, just spread over more space.

We’re most likely going to continue offering the PVDA option, so I guess you’d be able to continue making it look like your activities and virtual desktops are one… but the more contextual features are implemented, the more awkward that’s going to get.