husk.org / blog. chaff. occasional witterings.

2003-10-30

Don't break the Mac with Cmd+Tab

computing 14:11:13

(Being an elucidation for the benefit of Mr Coates.)

Jason Kottke proposed a retooling of Cmd-Tab and Exposé. I don't like it.

Windows has one class of item; the window. (Actually, Windows is really confused about this, especially if you run Office, but let's imagine all you're running is IE.) In the taskbar, you get a list of all the windows. Alt+tab swaps between each of these windows, so to get from IE to Notepad (again, assume it's the only other app open) could take three taps of tab, or one, or two.

Both the Mac OS and Mac OS X work on a different principle. There's an application, and there are windows belonging to an application. Apps show in the dock, and in the cmd+tab switcher (be it the Dock, or LiteSwitch, or LiteSwitch X) you swap between running apps. (Since 10.2, you've been able to swap between windows within an app with cmd+~, a handy but badly documented addition.)

Exposé maintains this distinction. Hit F9 to go to All Windows mode, then hit tab. You'll swap instead to F10 mode, with all the windows of the current application highlighted and other windows shaded in the background. Further tabs (or taps on ~, which moves backward) change the seleted apps, not the window.

Edit: Tom noted that tab moves to the next app that the cmd+tab switcher would move to, not the current app. Thanks and sorry.

My reason for disliking Kottke's proposal - and being a little rude - is that I question whether he understands the reasons for maintaining this distinction; a distinction I find central to the way I use a computer, and one of the reasons I don't like using various Linux desktop managers, or Windows. His proposal carelessly discards it, so I'd no longer be able to swap between my ten BBEdit windows and ten Safari windows with one key combination; depending on the implementation, I'd either have to tab past all my Safari windows to get to BBEdit, or watch them flip past in z-order, with Safari and BBEdit interleaved.

(Add in the fact that I usually have open not the usual five windows of an Office using worker, but at least ten apps with between two and fifteen windows each, and you're looking at a long slog to find stuff. In fact, it's amazing how many apps Mac OS lets you juggle, compared to the limit that the Windows taskbar feels like it's making. But I digress.)

How would I solve these problems instead? Either an additional key in Expose's rotating view (although the arrow keys already let you choose any window), or global support for window palettes (like BBEdit offers, and Pith adds to Safari) would be preferable to me.

For what it's worth, there's potentially some value in adding the cmd+tab overlay to Expose in F10 mode, so that you'd know which app was next. However, it'd probably also confuse people, and maybe look a bit ropey, especially with Panther's full-screen-width command-tab implementation.

I'm not entirely against change - I've even finally embraced the few new features in Mac OS X's Finder. I don't like it when it's badly though out and breaks a fundamental way of thinking, though.

2003-10-30

Mark

comment 18:00:42

I actually don't like the way the mac does Cmd-Tab. I don't know if this is because I've used the Windows/X way for so long, or a more fundamental reason. Deep down I guess I hate the concept that I need to switch between Applications, rather than switching between windows as windows are an abstract representation of a chunk of data. And I'd like to hope that at least some of the time I should be data centric.

I don't like the fact that a second web page window is religated to a second class citizen that I can't switch to in the main switching path. I think my computer shouldn't really care what application I'm using to edit a bit of data, and well, all Windows (like all data) Should Be Equal (apart from a few like the dock, which are more equal that others.)

On a pratical note, it drives me nuts that I have to use a different key combination to switch between xterm (an X11 window), emacs (another X11 window) and Camino, depending what window I'm currently in.

Oh, an interesting note on the wider idea of using Expose to replace cmd-tab. Earlier today Panther got stuck with a bug in such a way that every time I hit cmd-tab it switched on Expose, and then I could tab though the appications like in 'F10' mode. God, that was terrible. The visual disturbance alone was enough to make me quake in my shoes. So, on the wider issue, no that's not such a good idea, no matter how it's implemented.

2003-10-30

Kake

comment 20:46:50

I love the cmd+tab thing. Along with cmd-c / cmd-v for copy and paste, it's one of the things I really miss when I go back to using X on Linux.

I can't be anti-GUI girl any more now I've discovered OS X. And unlike Mark I *like* having different key combinations to switch between:

- Camino with Perl stuff in and Camino with news.bbc in
- Camino with Perl stuff in and Terminal tty1 sshed to the.earth.li on screen(1) window 5 showing Perl code in emacs
- Terminal tty1 sshed to the.earth.li on screen(1) window 5 showing Perl code in emacs and Terminal tty1 sshed to the.earth.li on screen(1) window 4 running mutt and showing a mail I'm writing to my other developers

2004-04-25

Jamie

comment 19:02:39

Once upon a time, Apple was serious about using formal usability testing to drive their UI design. Spend some time at AskTog and you'll come to respect the work that they did. The resulting little bitty details are not obvious and in some cases are the opposite of what one would expect would work, but they are the results of actual testing so they're pretty hard to argue with. Combine a whole bunch of these and you get an overall user experience that makes users really happy, even if they can't say things like "I really like the hierarchical menu hysteresis" specifically. Some companies tried to clone individual details of the Mac UI but missed the finer points, and the results compared unfavorably.

Apple went even further, though, and took the bold stance of saying that there was One True Way To Do It, for many values of It. So we got the one-button mouse, the floppy with no eject button, the volume that is ejected by dragging it onto the icon that means "delete this" for everything else, the application with no open documents that leaves no evidence on-screen that it's running unless it's in the foreground, the 2-fork files that have to be treated specially before they can be transferred to any other OS or sent across the Internet, and many other decisions that many users with computer experience on other operating systems found to be counterintuitive and annoying about the Mac. In a strange reversal (or twist) of their user-centric design tradition for the Mac, Apple dug in and said "we know better than the users" and refused to change.

Then one day, Apple released a major new OS, with a major new UI layer called Aqua. It was pretty clear that a large number of the decisions for this OS were carried over from an OS that didn't have the same user-centered design tradition as the Mac, and that others were designed for pure eye candy value even when that detracted from usability. The stoplight buttons in the upper left hand corner of windows, the magnification and genie effects of the Dock, the strange return to the original control panel design that limits you to a single System Preference Pane ata time (instead of standalone icons in the Control Panels folder that could be opened independently), and the bizarre "everything in one window" ultra-modal design of several apps including iTunes are examples of this. Somebody decided that optimizing for drool-worthy screen shots was more important than optimizing for usability.

In many cases this has improved as Mac OS X has matured. The new Finder (one of the worst parts of OS X) has gotten better, incorporating some dearly missed features from Classic MacOS, and adding some new things that were never there before.

Expose is interesting, but not a clear improvement. In the demos, all of the windows contain pictures that look drastically different, so the thumbnailed versions are very easy to choose from. However, many Mac users work with windows full of 9- to 12-point black on white text, which is very difficult to distinguish from other windows full of 9- to 12-point black on white text. Expose is an interesting innovation that works well for some people and not very well at all for others. Fortunately, you can just choose not to use it.

Unfortunately, Apple has decided that users want to be application-centric instead of document-centric, which goes against the early Mac design of using the Finder to manage all documents and only making you launch an application to edit them, in favor of the early Windows MDI model that assumes that a user going to want to use one application at a time, that users will open documents by first launching the application that edits them and then selecting File->Open, and that having a parent window that's maximized over the whole screen (blocking all other application windows) is a good idea. Microsoft dramatically reversed this design in Windows 95, in favor of a much better document centric UI that still has a few problems (failure to use Fitts' law, allowing users to run multiple copies of the same application just by opening two documents of the same kind in Windows Exporer unless the application specifically checks for this and works around it, etc.). Apple clearly didn't fall prey to all of these problems, but at some point they decided that users really wanted to work with all the documents of the same type at once.

Mac loyalists for some reason like to emphasize this "application-centric" assumption as though simply identifying it as a deliberate design decision proves that it is correct. I'd like to see the usability testing that led to this design, because it definitely doesn't work for me, or most of the Mac users I know, most of whom work with many windows in many applications, and who rarely want to work only in one application at a time.

The simple fact is that for certain usage patterns, the Windows Alt-Tab design has superior usability to the Mac Command-Tab design as seen in Mac OS X 10.3. Bringing all of the windows for a certain application forward is not always a good idea, because it screws up window layering for things like drag-and-drop and plain old reading of one window while working in another.

Windows' Alt-Tab (and alt-shift-tab) is very efficient for someone who has 10 browser windows, 10 editor windows, 10 terminal windows, and a bunch of other windows open, and who is working within the same 4 windows (which aren't all from the same application) again and again. The current Mac Alt-Tab scheme buries the other applications' windows under the background windows of the application that is brought to the front, obscuring the window you were just working with under windows you aren't working with. Worse, the Cmd-~ keystroke to switch among the windows of a single application goes in only one direction, so if you go from window A to window B in an application, and you want to get back to window A, you may have to Cmd-~ many times to cycle past windows C, D, E, F, G, and so on until you come back around to window A. The workaround is to minimize any nonessential windows to the Dock, and to place your windows super carefully (since you can't really control their layering order without using the mouse every time you want to switch between windows), but this undermines Expose's usability since Expose ignores any windows that are currently minimized to the Dock.

Apple also considers X11 to be an important feature of Mac OS X, but as many heavy X11 users complain, the Mac OS X 10.3 implementation of Cmd-Tab treats all X11 windows as belonging to the same application. Windows' Alt-tab design would not.

It's very disappointing to me that even in the face of user requests for a Cmd-Tab behavior identical to Windows' Alt-Tab behavior, even Proteron LLC, makers of LiteSwitch, refuse to implement it. I emailed them myself, and the response was that the Apple way was The One True Way. I find it ironic that a company that makes an alternative UI utility for users who want a certain behavior that isn't the Mac OS X default, and that complains that Apple stole its UI design and didn't even get all of it, is still willing to stick up for Apple and to say that Apple's UI design is right, and that users should adapt themselves to that design instead of making their computer adapt to them.

The Proteron employee that I exchanged emails with had a issue with a unique difference with the Mac: there would be no way to select a running application that had no open windows, if the Windows Alt-tab design were to be implemented on a Mac. I answered that a very simple deisgn would be to just add an application icon for those applications, and perhaps highlight (or dim?) that icon in some way to show that it wasn't a document window. He didn't seem convinced.

Based on my continued quest for this behavior on my Mac, and the many many debates I've seen in forums like this one, I have to believe that if someone actually made such an add-on product, that it would sell like hotcakes. There are quite a few would-be Switchers who only have a few gripes about the Mac that prevent them from switching, and this is a big one. In my opinion, it's fine for Apple to offer One True Way of doing something (like the single button mouse) if that suits the majority of users, as long as I have the ability to override that decision if it doesn't happen to suit me. One size doesn't fit all. But for some reason, the "Think Different" Mac community of users and ISVs seems to be stuck on the idea that conformity and unquestioning reverence to authority on this issue is the One True Way.

2004-07-22

Rory

comment 07:06:36

Well, I side on the original, document centric approach to the Mac desktop. With OSX Apple has created a bit of a hybrid, combining some fo the best parts of each approach.

However, I disagree with the way Cmd-Tab is implemented, currently. I suspect it is the way it is now so that it is easy for Windows switchers to figure out. However, I think it goes against the document based approach. In my opinion the document based approach is what has always made the Mac graphical environment head and shoulders above the rest.

Really, they're very close to providing the functionality it "should have" (My opinion of course). By default, in 10.3 Ctrl-F4 lets you switch down the window server stack (z-axis), which I think Cmd-Tab should do instead.

However, even if they don't do this (I don't see Apple changing it now), the user should still be able to map Cmd-Tab to have the same function that Ctrl-F4 gives me. Of course, even though we can rebind keys with 10.3, we can't override what Cmd-Tab does for some reason, bummer.

This is really one of my last gripes about the UI. I'm the type of user that always has several windows open, per application. So being able to switch between the "top-most" windows in the z-axis with Cmd-Tab would be a god send to me.

Obviously, the default Ctrl-F4 is not very easy to reach (harkens to Windows' Alt-F4 for quitting, ugh). The other change they would need to implement to this Ctrl-F4 feature is the ability to reorder the stack after you bring another window to the foreground. For example, if I press Ctrl-F4 to switch to the next window behind, on the z axis, it works as it should. However, you would think pressing it again would bring back the window I just had in the foreground (since it's now the second thing on the z axis). But, this doesn't happen, if I press it again, it continues on down assuming the same order from when the key combination was first invoked. So, the only way to return to the window you were just working on is to do Ctrl-Shft-F4 (talk about finger acrobatics). So, this should follow the same sorting logic that Cmd-Tab does today on 10.3.

I believe the original Cmd-Tab implementation prior to 10.3 had similar logic as well, though, in that case it would just follow the Dock order, ignoring the applications z-axis position, completely. Of course, this was changed in 10.3 and now works as it does in most other graphical environments.

So, what I proposed to Apple on their feedback form was to, _by default_, leave Cmd-Tab's functionality as it is today, for the sake of backward compatibility (plus it comes natural to Windows switchers). Then, remove this Ctrl-F4 binding completely, and map it to Opt-Tab, by default. This would make it much more intuitive and also I think it fits nicely with the Apple Opt/Cmd modifier conventions. So, I really hope they implement it like this. It would really make people who run lots of apps with lots of windows, happier and productive.

2005-08-02

Bernie

comment 08:29:48

I think a lot of people don't realize that you can cmd-~ to switch windows within an application. This makes it much faster and more efficient than windows, and when it just shows the application, this scales better to many programs open than the current windows system.

Furthermore, you can quit applications while the list is visible on the screen by keeping your thumb on cmd and just hitting 'q' instead of 'tab' - another sweet feature.

I just hope someone implements an alt-tab for windws the way mac has done it.

navigation.