When GNOME bug 86590 was born, it was a request to make workspaces switch instantaneously when you panned around them using the workspace switcher with ctrl+alt+arrow.
Then that was fixed, and someone else complained that it was too slow, and inconsistent with the alt+tab popup, which doesn’t switch until you let go of alt. They asked for it to be reverted. Someone else suggested a compromise: if the user pauses while moving through workspaces, flip to that workspace without removing the pager.
Of course, then we’d have to consider whether we should do that with alt+tab, too. It’s possible that the two cases are different enough that there’s no good analogy here, though: workspaces can be named, for example. It’s possible as well that they’d become different enough for there to be no good analogy here if we had thumbnails of the workspaces instead of the icon-based boxes we have now.
So the options now are:
- Switch when they let go of the keys, as we used to.
- Switch after a delay, as suggested above.
- Maybe it’s fast enough these days and nobody cares any more.
- We could keep all the windows on all the workspaces mapped all the time, like Compiz does, which would make things a lot faster anyway, and would reduce to the previous case.
Photo © Matsatsinis Fragiskos, cc-by-nc-nd.
I think there’s a number of ways in which window-switching is unlike workspace switching:
– When not all windows are maximised, switching windows “live” would involve shuffling z-order with bits of windows flick in front of or behind other windows. Switching workspaces always involves a full-screen change.
– When not all windows are maximised, switching between windows usually leaves the layout looking more or less the same. Every workspace is usually drastically different in colour and layout from the others.
– When switching windows, you’re being asked to find the window you want from an arbitrary number from two to infinity of them in any possible layout; when switching workspaces you’re choosing from a fixed, smallish number with a consistent, stable layout.
– When switching windows, usually only the window you switch to needs to repaint (and not even that, in compositing mode). When switching workspaces, every window needs to repaint.
Whatever solution is chosen should minimise visual clutter and flicker for each operation.
The ideal window-switching behaviour is probably something like the Compiz plugin where the screen is dimmed and each window is raised and highlighted as you tab past it – you’re only ever looking at the focussed windows, they’re large enough to recognise and more or less where you left them, all aiding your ability to quickly recognise the window you’re looking for. Of course, that’s not really possible in a non-composited window-manager.
Restricting ourselves to things that are possible with traditional X, probably the nicest thing to do is what Metacity does at the moment – show a new pop-up with a list of windows; only update that list while the switching is going on; give whatever hints we can as to window identity (icon, title, snapshot if there is one), only switch once Alt is released.
For switching workspaces, since there’s no dynamic descriptions available we just have to go on their general layout – if it’s possible to repaint the entire screen to show the new workspace instantly, we should do that; otherwise the switcher panel should show large and recognisable previews and only switch workspaces once the modifiers are released.
As to keeping windows mapped all the time, I’ve been bitten before by Compiz’s viewport system, where windows at the left of the first desktop sometimes show up at the right of the last desktop preventing me from recognising the layout of the workspace I recalled.If it’s possible to keep windows always mapped so they never need to be redrawn, and keep Metacity’s current workspace system, I think that would be awesome.
Another option would be to change the behavior of alt+tab to be consistent – so as you alt+tab, the focus moves instantly, and z-order changes. To make is pleasant to use, you would then have to make sure it restores the z-order for windows as you cycle through them (so if you press alt+tab+tab, then the window which was brought forward first will be moved back to where it started)
The idea of having real previews of the workspaces rather than the icons sounds great! It would be quite useful I think, as long as it doesn’t slow things much :-) I’m all for that.
And I find the current behaviour of not switching until you change the workspace fine. Although maybe switching instantly while still showing the small ‘switch indicator’ would be good too, not sure…
Note that we already have a shortcut that switches windows instantly– Alt-Esc. (Both our Alt-Tab and Alt-Esc behaviours were originally borrowed from Windows, for better or for worse.)