Sunday, June 17, 2012

The trouble with OS X window management

It's commonly said that Apple's Mac OS X UI is better than the competing products from Windows, Gnome and KDE. This is so widely believed, that the competitors have even started imitating some of the distinctive features of OS X – just look at Windows 7's or Gnome 3's one-per-application task bar icons, or Unity's global menu bars. But is OS X really a good example to follow? After spending a year in Apple land on a Macbook Air with OS X Lion and trying to believe in its philosophy, I'd have to say that its window management interface is markedly inferior to that of Windows (95 through to 7) and Windows-inspired desktops like Gnome 2 and KDE 3.

In Windows XP, a running instance of an application generally has one window, which corresponds to exactly one task bar icon, and closing the window is tantamount to closing the application. This is easy to understand. The user just needs to understand that applications are windows, and the windows form a stack, just like a stack of papers on a physical desk. You interact with whichever one is on top - and in the case that they don't overlap, the one that's "on top" is easily identified by its blue border. And when you switch to work on another window, that window will always rise to the top.

Mac OS has a more abstract concept of an application. In OS X, regardless of how many windows it has, each application always has one icon in the dock, one entry in the Command-Tab list, and can always be dismissed completely with a single Command-Q combo. On paper, this sounds like a good idea – after all, a word processor's many windows do all run in the same process and it makes sense that users should be able to deal with the windows in aggregate. But after trying to embrace this concept in the past year, I just cannot get over some basic issues that it brings with usability.

Firstly, an application may have zero windows. Even after you close the last window of your browser, the browser itself is still open. I often find myself switching with Command-Tab to an app with no windows. It's not hard to accidentally do this either because you closed a PDF document that happened to be the last window of the Preview app, or because the app's only windows are not on the current Space (a Space is the equivalent of a Workspace in Gnome or a Desktop in KDE). The only way you can tell you have done so is by looking at the menu bar. In reality, who's going to keep shifting their eyes to the top-left corner of the screen to check what application is focused? I certainly don't, and as a result, I find myself constantly trying to type into the front-most window, even though the focus is still on some invisible application. Actually, there are three other ways to tell that a window is not focused – the text in its title bar is slightly greyed out, the window lacks a shadow, and the Close/Minimize/Zoom buttons are grey, not coloured. But if you're looking at a Google Chrome window (which has no title bar) that takes up the entire screen, only the third cue will help. And as I said earlier, who's going to keep glancing up at the top-left corner? Two simple changes Apple could make to make the situation better would be to give the active window title bar a distinctively different colour, and to highlight the focused application in the Dock. But that doesn't fix the fact it lets you switch to an app with no windows – something you almost never want to do.

Let me type into this window... oh wait, the focus actually is on Safari!

The second problem relates to switching applications with Command-Tab, which is the equivalent of Windows' Alt-Tab. In OS X, Command-Tab will bring the entire application to the foreground. This is often cited as an advantage of the OS X model. In some ways, that's true because it makes the Command-Tab list much shorter than the Alt-Tab list, and it relieves you of having to pick the exact window of the application you select by giving you the window you last used from that app. But it brings deep problems. You see, when you Command-Tab to an app, it brings all of its windows to the foreground. If you're like me, you almost always have your text editor open in the background, with a window for code and a window for notes. You'll be looking at a webpage and see something you want to paste into your notes window, so you Command-Tab to the editor. And bam! Up springs not only your notes, but your windows of code, plastered over your screen and obscuring your browser window. As far as I know, there are a few ways around this, but none are satisfactory. You can either use the mouse to click the window, or you can move the unwanted windows to another Space, or minimise it.

Here's a pop quiz – what key combination do you press to alternate between a Word document and a PDF? And what do you press to alternate between two PDF documents? On Windows, the answer is always the same – Alt-Tab. On OS X, you press Command-Tab for the first one and Command-` for the second one. Unless you have three PDF documents open, in which case you press Command-` to switch from document A to B, and you need to press it twice to go from B to A because document C will get in the way. This is madness. Why should I need to remember whether the window I want to switch to is opened in the current app or not? And why does Command-` keep the windows in an immutable cyclical order while Command-Tab keeps them in most-recently-used order?

Let's Cmd-Tab to the editor to jot down some notes...

Argh! What happened to the browser window?

Another problem is with the global menu bar. Because applications span multiple (or zero) windows, Apple has put the application menu bar not in any window, but at the top of the screen. Logical? Far from it. The theory is that the menu bar will hold actions that transcend windows (for example, Safari has New Window and Quit), but on the contrary, most of the menu items I see act on the currently selected window (see New Tab, Cut/Copy/Paste, Reload This Page). And even if the menu bar was restricted to application-level actions, it doesn't even make sense to put an application-level menu bar in the same row as system-level widgets like the system menu, the Spotlight icon, the clock, and the "system tray" (whatever its real name is). To further discredit the global menu bar, toolbars – which are theoretically shortcuts to menu items – live inside individual windows. In reality, the only acceptable reason for putting the application menu bar where it is, is to save space.

The parts of a screen owned by the Calculator application are highlighted in yellow.

Admittedly, there is another good thing about a menu bar at the edge of the screen – Fitt's Law. Fitt's Law has a few consequences, but one is that it's easier to click on things that sit on the edge of the screen. With the menu bar at the top edge, it is easy to slam the mouse up against the edge to click on it. But while edges are nice, corners are even nicer, and OS X fails to take advantage of them. Generally, the only two corners with widgets are the top left for the system menu and the top right for Spotlight. And I'd say that the system menu is not something you'd want to click on all the time. For comparison, a Windows 7 desktop with a maximised window will give you easy access to the Close button in the top-right, the Start button in the bottom-left, and the Show Desktop button in the bottom-right.

The widgets that occupy the oh-so-important corner pixels are highlighted in yellow.

Speaking of maximised windows, that's something that OS X seems to discourage. If you want a window to take up as much space as possible, there's no button for that; you'll have to drag it out yourself. There's the green "Zoom" button, which supposedly resizes the window to the "optimal" size, but its behaviour is so unpredictable that I don't know of anyone who uses it. Some might say that you're wasting screen real estate if you get into a habit of always maximising your windows, but OS X gives you no help with organising your windows in any way whatsoever. There's no Aero Snap or any form of an intelligent layout algorithm; heck, until last year, you weren't even allowed to resize the window from any edge other than the bottom-right corner.

Finally, there's no task bar. There's no always-visible list of windows in the current Space; you get no sense of the windows in the current space. The Dock is virtually useless because the dot next to the app icon tells you nothing - sure, it tells you the app is open, but could have one, two, fifteen, or zero windows. You are forced to constantly enter Exposé to maintain your sense of what you have open. And because entering Exposé is harder than glancing at a task bar, the result is that you end up gathering craploads of stale windows hanging around longer than they should.

Given the multitude of problems I have identified above, it baffles me that Windows, Gnome and Ubuntu's Unity all seem to be copying many of these ideas. Even worse, they are shoehorning them into a place where they certainly don't belong: the one-window-per-app model. For instance, Ubuntu Unity inexplicably removes the menu bar from the window and puts it in the system wide bar at the top of the screen. There's just no reason to do so when Linux developers design their GUIs with the assumption that it will appear inside the window. Unity even goes one worse than Apple's version by hiding the menu bar until the mouse pointer moves over the title bar.

My message to anyone who's responsible for any of the aforementioned window managers is this: just because it comes from Apple doesn't make it a good idea, and it certainly doesn't make it a good idea to copy it.


  1. This comment has been removed by the author.

  2. These are mostly valid point. I'm not going to say OSX is perfect, but I have a few rebuttals.

    Most power mac users are using something like Divvy to handle maximisation and layout. I use a combination of divvy and zooom/2 and it works rather well. I have to agree that the out of the box behaviour on this is borked though. It'd be lovely to have something like Zooom/2 + proper maximize out of the box (or even a tiling layout; though I doubt that would ever happen).

    With Mac-Tab, are you aware that you can press Mac-Down when your hovering over an app with multiple windows to choose the specific window you want? However, I rarely use Mac-Tab though, for reasons I'll state in the next point.

    The missing taskbar, I think, is a benefit rather than a hassle. I've never seen a well-used linux or windows workstation where the taskbar isn't cluttered and largely unreadable anyhow, so I'm not convinced that there is all that much to gain from a taskbar. I quite like the fact that the dock is reduced to a notification area plus shortcut to certain application wide functions without needing to bring the app into focus ( e.g new terminal window ). Expose really isn't a pain to get to with gestures as it is just a four finger swipe upwards; and I think I'd rather have the mess a gesture away than have to look at all of the time in a task bar. Mission control fills in the gap by being able to figure out ( and have a preview ) of every window you have open for an app regardless of what desktop it is on. Between expose, mission control and just putting apps on different desktops (so I don't have things going behind other windows) I really don't have a use for Mac-Tab ( though I may be biased there since in Linux I love Xmonad, which doesn't really have a concept of windows being hidden by other windows except the unusual exception when windows are floated ). Granted, if OSX didn't have the gestures in a trackpad that I could keep right beside my external keyboard I'd find OSX pretty close to unusable and want to set it on fire. It'd be incredibly annoying to have to use the function keys to bring up expose/mission control only to have to use the mouse to select a window from the interface.

    While the menu bar is a pain to use it when I need to ( especially with a dual head setup ) it is something I hardly ever use. Having a menu bar on every app is fairly ugly clutter for a rarely used feature and stashing it away to a place that is slightly more annoying is worth the aesthetic benefits ( well it is to me, at least ).

    Of course my rambling about how "I use OSX a different way and it isn't clunky for me" doesn't do anything to invalidate your points. This is all subjective and it is far too easy for one person's de-cluttering to be someone else's deletion of important functionality.

    +1 to encouraging people to think before they blindly copy ideas, though. :)

  3. I agree with what you've said regarding the absurdity of having a running application without open windows, but with a menu bar. No one I've met can give me a decent explanation or use case for why this should occur.

    Also, the fact that fullscreen behavior (that which occurs after clicking on the + icon in a window's left hand corner) is lacking. The success of third-party applications that change this behavior and automate the arranging of windows is evidence enough that the built-in mechanism is unintuitive and deficient.

    A couple of applications that smooth out some of OS X's rough edges are Alfred and RightZoom (the latter treats the window-fullscreen issue you described).

  4. I am not a mac user. In fact, on Linux, I often use a traditional interface. What I sort of miss with the pre-win7 taskbar though, is the ability to launch and switch to applications in the same screenspace. This is a consideration I think works in favour of the OS X UI.

  5. I have to say, I completely disagreed with most of your article.

    I'm not an Apple apologist by any means, even though I do tremendously enjoy their products. I do, however, still have a Windows and Linux partition on my MacBook Pro which I use from time to time (I used to use them full time for my previous job). I've always used Mac in conjunction with Windows and Linux as well, and have owned either system on my "Main Machine", as it were, at any given point in time. I use absolutely no windows management tool on Mac and I find it simply delightful. Maybe I've just always been used to the way that Mac works, but there you have it.

    Naturally, I am not saying that there isn't room for new ideas or improvement. I'd love to see something new and "futuristic" coming out of Apple sometime soon. But, as it stands, I find it amazingly easy to use on my MacBook Pro with gestures (and I tend to use keyboards a lot as well, btw). However, if you don't like gestures, and you're 100% sold on keyboards to do everything (as I often am), might I suggest the free app called ShortCat? It basically allows you to select anything with the keyboard with a few quick keystrokes, is 100% free, and is a marvel. It even works with tabs in a browser.

    However, barring that, might I also just suggest that you simply revert back to becoming a Windows user? There's no harm in it and I promise that I am not one of those idiots who thinks that you should be defined by the OS which you find most comfortable. I'm not suggesting this to be coy at all, please believe me, but simply because I believe that everything you roundly criticized on Mac is....what makes Mac a Mac. It's the entire essence of the desktop of a Mac which you appear not to enjoy. I absolutely disagree, but I think it is entirely your right. So, given that you don't like the UI in almost any way, what's stopping you from going back to Windows? Or KDE (which I happen to think is great too), or even Ubuntu? Each interface has their marked strengths, and perhaps you would be less frustrated with one of those?

  6. Hi Summer Seale,

    Thanks for the comment, especially the tip about ShortCat. I wish something like that existed on Linux, which is where I spend most of my working day.

    I'm not saying OS X is completely terrible - I agree with you that the gestures are absolutely terrific. I have turned on "tap to click" and "three finger drag", which are brilliant. And the pixel-wise scroll feature is a technology that Windows and Linux are going to have a very hard time catching up with. In the departments of power/sleep management, hardware integration, and the "Just Works" factor, Windows and Linux are no competition, at least for my Macbook Air hardware.

    There are many things right about OS X but I fear that the UI people at Apple might revel too much in their successes to acknowledge their failures. My other fear is that others are copying the OS X interface seemingly without thinking about whether it's a good idea.

  7. Hi Kevin,

    Thanks for the reply! =) Well, I'm very happy that you like ShortCat App, which I've actually only recently started using. I've been recommending it to friends who are keyboard oriented because it's so great. =)

    In terms of the UI, I think you do have some valid points of course. What I wouldn't mind seeing is an overhaul of certain basic UI concepts we all are used to, frankly. It's time for a new kind of interface for people who are multitaskers. I love my iOS and all that, but it's really meant for one thing at a time. Even other tablets which allow multiple windows don't really come up to the task. I'd really like an entirely new UI concept coming from Apple for the computer as they did with the iPad. I know it'll have to be gradual, because people are so used to what we use now. But it would be nice if they had something crazy and futuristic in the works. =)

    BTW, I found your link via Zite on my iPad. =)

    Another thing: I'm having a REALLY hard time scrolling to the "Publish" button at the bottom of the "Bot check" window, both on Safari, Chrome, and Firefox for some reason. 99% of the time, it won't show it and scroll down that far. I'm not sure how I ended up publishing last time.....I hope this gets through.