I have an external monitor for my laptop in my work desk at home, and when I work I keep a few windows like IRC on my laptop screen, and everything else on the external monitor. Then maybe I transfer on the sofa to watch a movie or in the kitchen to cook, and I unplug from the external monitor to bring the laptop with me. Then maybe I go back to the external monitor to resume working.
The result of this (with openbox) is that when I disconnect the external monitor all the windows on my external monitor get moved to the right edge of the laptop monitor, and when I reconnect the external monitor I need to rearrange them all again.
I would like to implement something that does the following:
- it keeps a dictionary mapping screen geometry to window geometries
- every time a window geometry and virtual desktop number changes, it gets recorded in the hash for the current screen geometry
- every time the screen geometry changes, for each window, if there was a saved window geometry + wirtual desktop number for it for the new screen geometry, it gets restored.
Questions:
- Is anything like this already implemented? Where?
- If not, what would be a convenient way to implement it myself, ideally in a wmctrl-like way that does not depend on a specific WM?
Note: I am not interested in switching to a different WM unless it is openbox with this feature implemented in it.