I have an Ubuntu 16.04 laptop.
I use it for development, and carry with me everywhere. When I settle on some desktop, I plug an external monitor to notebook's VGA port for a dual monitor setup.
When I plug the monitor in, windows get sporadically rearranged and resized among monitors (the built-in and an external monitor). After unplugging, windows get mixed up to different places again. Windows aren't even being placed to the similar locations, but they randomly get scattered all over the desktop. It gets worse, external monitors have different resolutions.
It is a major productivity loss, because, the first thing, that I have to do after plugging in an external monitor, is rearrange the windows on the screens, instead of just starting to develop.
Is there a program, that will remember window layouts at different monitor configurations and automatically set them up in the same way, during the same monitor configuration?
For example, here is what I need:
If there is no external monitor, it remembers the layout for just the built in monitor.
It keeps track of window sizes and layouts, assigned to the current monitor layout.
When the external monitor gets plugged in, it checks if this monitor layout already has a saved layout from the previous use and rearranges the windows, to the same layout, they were with this monitor layout, previously.
It continues tracking window layouts and sizes and assigns the window layout to the current monitor layout, considering monitor resolutions.
It should keep different "profiles" of window layouts for different monitor layouts and resolutions.
It should not delete non-existing (closed) windows from the "profile", because, if the program, to which the closed window belonged, should reopen to the same location and size, according to monitor layout/resolution "profile", so the window's locations/positions are persistent between not only different monitor layouts, but also between closes and opens.
This way, it remembers different window layouts for different monitor set ups.
Also, it needs to be transparent, so I don't have to click some button, that remembers the current layout.
I just want to normally use my programs and windows and this program works as a service, in the background, should be periodically polling window/monitor layouts or getting the window/monitor layout/size or on events (window moving/resizing, monitor plugging/unplugging). On monitor change event, the window layout should change, in accordance to the last remembered profile. If there was no profile remembered for the current monitor layout, the windows should not be moved/resized, until the next time.