Is there an app that can save dual-display window states and automatically save/restore them when I disconnect/reconnect the dual display?

I do use Stay and am happy with it :)

But I also use another app that I really like called Slate ( https://github.com/jigish/slate ). Slate is open source (and free), and does allow to define things like Stay (profiles: layouts of windows - which I think will fit your needs), but also allow move windows with keys combinations, and many other interesting things...

I also have dual display setups and managed to get things working fine with Stay. I have 3 setups two in dual display and one without external display and it works just fine, restoring the windows to their positions when I connect a particular profile (I previously configured... I had to create some simple rules). I use Slate for moving windows around with the keyboard... I think it is a good combination :p

Cheers!


Try Moom. It does all sorts of window-organizing tasks, but for your specific needs, you can save a specific set up of windows, and have it automatically restore to that arrangement based on your display configuration.