Musings on Window Switching
While I do like Unity’s Super + # idea, there are some rather serious flaws with the concept: the first and most obvious flaw is that you have to use Super + # first, after which you’ll have to utilize Alt + ` to actually select the window you want. The second major flaw, which may not be obvious while you’re trying Unity on a LiveCD for the fist time, is that # is all it is. The logical continuation of the concept after reaching 10 windows or applications would be [a-z]. I assume the reason they didn’t implement that is because it would interfere with various other Super + something keyboard bindings.
My vision of the correct way to implement window switching would look something like this (image manipulated based on a superswitcher screenshot):
If you press Alt + Tab and keep Alt pressed, a window much like superswitcher pops up. Perhaps most importantly this means a list of windows, consisting of an icon followed by the title of the window. This means a rejection of near-useless giant icons and thumbnails without any means of differentiating between various windows of one single application. All the windows in this list should be numbered: first [0-9], followed by [a-z], and I suppose in the somewhat less likely event that more is required, [A-Z]. Hence pressing Alt + [0-9a-z] or Alt + Shift + [A-Z] immediately takes you to a certain window. Other than that, superswitcher’s keyboard shortcuts could be retained as they’re quite intuitive: Alt + F1, F2, etc. takes you to a different workspace, Alt + arrow keys allows you to select a window, Alt + Esc closes a selected window, you can click on windows to activate them, etc. Activate the switching interface with Alt + Tab first, hold Alt, and then do your thing.
superswitcher’s search functionality is something I’d probably never even think about if this functionality were present, but it could be retained by pressing Alt + : or some such to activate it.
I would retain the Caps-Lock-override functionality, for Caps Lock may well be the most useless key on anything that isn’t a mechanical typewriter, but I’d make it into a toggle. A Switch Lock, if you will. But that’s probably something that should be configurable.
The most straightforward means of obtaining this functionality would probably be a few modifications and additions to the source of superswitcher. Unfortunately my knowledge of C++ is insufficient.
I did manage to hack in regular Alt + Tab behavior, with major emphasis on hack, through XBindKey and XGrabKeyboard. It works in Unity, but Metacity just laughs at me even if I disable its own stranglehold on Alt + Tab. I guess it also has a stranglehold on Alt or the keyboard as a whole or something.