Using a laptop and an external screen. After disconnecting the external screen all windows are moved to a single screen (the laptop screen). After reconnecting they stay on the laptop screen, even if they used to be distributed between the two displays before. Unfortunately they stay on the secondary screen (the one without the taskbar), so usually most of them have to be moved back to the primary screen. In this configuration the primary screen is the external one, if connected, and the laptop screen otherwise. Reproducible: Always Steps to Reproduce: 1. Connect external display to a laptop, set it as primary, move some windows there 2. Disconnect, and then reconnect the same external display Actual Results: Windows are not be restored to the same displays. Expected Results: Windows should be restored to the same displays. At least windows on the primary display should stay on the primary.
There's not much we can do about this right now. Restoring windows positions requires cooperation with KWin. I have some plans, about this, but ATM it's not a priority.
There seems to be inconsistency in window positioning: Some of the windows DO re-appear on the display they used to be on.
Ok, some things for explanation (this is seriously complex ;-) a) KWin does only move / resize windows to keep them on screen b) since 4.9, window geometries are preserved around *one* workspace resize (mostly the game-changed-resolution case), see bug #80265 Whether the workspace was resized due to screen juggling is irrelevant. c) windows might appear to change screens by keeping their position (if you add a screen on the left) d) once you touch a window geometry (moving or resizing it), that's the new user preferred geometry - and kwin does not change geometries but to keep windows inside the workspace (visible, see (a)) Now, please elaborate on your setup and condition: a) (most important) is the dynamic screen on the top/left or bottom/right? b) after remaining on one screen, do you still interact with the windows? (move or resize them)
*** This bug has been marked as a duplicate of bug 296673 ***