I love the way OS X handles windows. It was a little discomforting when I first switched over from the PC, where one ‘maximised’ pretty much everything, but give it a little time and it’s great for productivity. There are of course, different tastes and workflows, and third party developers have been creating powerful new window management workflows. We have Cinch, which allows you to rapidly resize windows using gestures. Divvy, another great window management app, which allows you to manipulate your windows in an even greater way. WindowFlow, yet another way. And now Stay.
Stay is an application that will remember the sizes and positions of all windows on your desktop, on all connected monitors. If you find you have a perfectly ‘sized up’ desktop, just save that window state using the menubar shortcut. Then you can move your windows around and resize them, and with one click restore them back to where they were. It will also automatically restore windows as displays are connected and disconnected. This is great for those who use a MacBook along with an external display, as you can quickly pick up from where you left off without having to keep moving windows around.
Stay only deals with window sizes and placement. You can’t for instance have it open up a window you’ve closed. It also can’t have multiple window configurations. It also doesn’t understand hidden applications, so while it restores positions and sizes, the applications will stay hidden. Stay also doesn’t work with any of the Adobe apps, probably because they’re not written in Cocoa.
I personally won’t use it since I don’t need such rigid window management (I don’t use any such tool), but I’m sure there are many who have been yearning for such functionality. That’ll be $15 for a license, with a full featured 30-day trial to see if you like it.
[Wallpaper used: iDrops by nyolc8]

{ 4 comments… read them below or add one }
You should check out Breeze, easily one of my most used apps.
Breeze sure does look good, Zee! Thanks for the recommendation, I’ll check it out.
I won’t be using Stay because it does not support multiple window configurations. There are some windows I liked centered and some I like “docked” on the side.
I’ve tried Breeze in the past and it seems to work pretty well. My one issue with Breeze is the fact that the font used in its menu is a different size than the font used for all of the other menu bar icons. It may seem picky, but it annoys me beyond all belief.
I am currently using Divvy which is pretty good. They will be releasing version 1.2 which will provide additional options to customize how the program works.
While all of these apps try very hard to solve the window management problem, none of them are complete enough to meet at of my needs. And of course, they don’t all play well together, so you can’t just mix and match.
Divvy is nice, because you can quickly split up your screen using specific screen patterns. SizeUp is nice because it let’s you quickly move windows around into various positions using simple keyboard shortcuts, without having to program particular patterns. Cinch is nice because you can just drag windows to hotspots on the screen which cause them to automatically adjust (akin to Windows 7). Breeze is nice and simple, and seems to work well for global or application specific purposes.
The problem is, all of these solutions (except Stay) requires you to manually apply these window states via mouse or keyboard shortcuts after you have loaded the apps. This requires extra work, and requires you to continually think about how you want your windows laid out, and what those silly shortcuts are too.
What *I* want, is some context aware tool that lets me have more control over my environment, so that if I want to start working on some development, it will automatically open my development tools, a web browser with some documentation, and a notepad for notes. Position them appropriately, put them on the correct monitors, etc. And if I manually move stuff around, and I want to reinforce my original saved stated, I can apply a keyboard shortcut to “reset” the locations again.
For example, let’s say that I want Space 1 to be my Communications space, Space 2 my iPhone Development space, and Space 3 my Authorship & Research space.
I should be able to somehow start up my Communications apps on Space 1 (such as email, a twitter client, an IM client, and maybe even IRC), position them all appropriately as I have saved already.
Next, iPhone Development would load Xcode, a web browser window to developer.apple.com/iphone (and automatically log me in), a Terminal window, and the iPhone Simulator. Perhaps even another web browser window and TextMate to do some Rails work at the same time. Everything should position on my 2 screens (or if a 3rd is detected, use an alternative layout state that I already recorded). Again, all of this in Space 2.
Then in Space 3, I should have a blog editor (or at least the websites of the blog admins loaded in a browser window with tabs), a web browser window for researching, and perhaps an RSS feed reader (for inspiration).
All off these should load when requested, but not necessarily all at once or at boot. It should be flexible, bound to keystrokes and a tray menu item, and remember and enforce as necessary.
Why after decades of wanting this on X11, has this still not come to Windows and OSX? Development IDEs like Eclipse, and Adobe apps, seem to have “workspaces” all figured out. I wish some ingenious developer would come up with a cute little mac utility that does it for us at the system level!