Michael Buffington

Wishlist: Expose Drag and Size Mode

Tuesday, September 06 2005

I’ve been working on multiple projects lately, some at the same time, and I’m finding that yet again, I wish I could control multiple mouse cursors to do things like window management. Lots of work going on means lots of windows all over the place, across multiple monitors.

It occurs to me that what I really want, regardless of the interface, is a way to very rapidly organize windows exactly as I want them. For example, if the windows on my screens were sheets of paper on a desk, I’d be able to very rapidly organize them across my desk as needed, using two hands or by simply being able to quickly grab them with a single hand.

In Apple’s OS X, the Expose feature lets you, at a glance, see every window available. This is good but this is only good for switching between windows. It doesn’t do anything for organizing an already cluttered mess of windows. It only briefly organizes your windows so you can see where something is at, and then returns you to the same mess.

I think a simple solution would be to allow you to press a key combo or mouse button to switch into “organize mode”, where the interface suddenly allows you to size and drag windows very rapidly by removing the ability to interact with the window contents. It’d be sort of like invoking Exposé except instead of zooming out, it’d show the desk exactly as you expect it, and windows would highlight and grab focus when the mouse hovered over them, showing what window would then be affected by your next action.

Basically, you’d be decreasing the accuracy required to do things like resize windows (which requires you to slowly, in relative terms, approach a sizing control) or move a window (which is slightly easier, but still requires you park your mouse on a specific portion of that app window). Reducing the required accuracy would equate to faster “target acquisition” and “action execution”.

It almost makes me want to learn Cocoa programming on my Mac just to try it out. If anyone has any experience with things like this, I’d love to hear about it. It seems to me that you could extend already existing Expose libraries and use the underlying behaviors.