windowstate
Windowstate is a utility for saving and restoring the sizes and positions of application windows on Microsoft Windows systems.
Why?
Windows 7 (and probably Vista) have a tendancy to mess up window positions and sizes in certain circumstances, such as when disconnecting and reconnecting the primary display. The usual symptom is that once the display is reconnected all of the application windows have been shrunk and repositioned to the top-left corner of the screen. This can be particularly irritating if you have a large number of carefully sized and positioned windows open. So far as I can tell there is no universal solution to this problem, so I wrote this program as a workaround.
Installation
If you have a RubyInstaller for Windows installation, then you can install the gem from a command prompt in the usual way:
gem install windowstate
Alternatively, you can download the standalone executable from github on
https://github.com/downloads/LichP/windowstate/windowstate.exe
Usage
Windowstate is a command line application, so you will need to run it from the command prompt. To save the current window states:
windowstate save
It is recommended you do this immediately before causing a display disconnect. Once your display is reconnected, to restore the previously saved window state:
windowstate restore
The saved state is stored as JSON in a file called windowstate.json
, which is
save in your user local temp directory by default. You can override this with
the --file
option - see windowstate --help
for details.
Does it Work?
Windowstate has not been extensively tested: it works on my system with my typical window set, but it might not catch some legitimate application windows, and has not been tested in a multi-display environment. If you run in to problems, please let me know and/or open an issue on Github.
Contact and Contributing
The homepage for this project is
http://github.com/LichP/windowstate
Any feedback, suggestions, etc are very welcome. If you have bugfixes and/or contributions, feel free to fork, branch, and send a pull request.
Enjoy :-)
Phil Stewart, June 2012