Bug 358011 - dual screen not setup after reboot
Summary: dual screen not setup after reboot
Status: RESOLVED FIXED
Alias: None
Product: KScreen
Classification: Plasma
Component: kded (show other bugs)
Version: 5.5.3
Platform: Other Linux
: NOR normal
Target Milestone: ---
Assignee: Sebastian Kügler
URL:
Keywords:
: 363495 (view as bug list)
Depends on:
Blocks:
 
Reported: 2016-01-15 09:19 UTC by Martin Bednar
Modified: 2016-07-06 23:09 UTC (History)
9 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments
before reboot, all set up ok (958 bytes, application/zip)
2016-05-09 19:15 UTC, Martin Bednar
Details
After reboot, bad screen configuration (947 bytes, application/zip)
2016-05-09 19:16 UTC, Martin Bednar
Details
kded5 stderr (10.49 KB, text/plain)
2016-05-09 19:28 UTC, Martin Bednar
Details
kded5 stderr with correct setup (14.55 KB, text/plain)
2016-05-09 19:30 UTC, Martin Bednar
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Martin Bednar 2016-01-15 09:19:04 UTC
I setup my two screens to be next to each other, after reboot they're in clone mode.


Basically a dupe of 325277, the difference being that I think all (both) my screens have a different EDID.

kscreen-console : 

START: Requesting Config
kscreen: Primary output changed from KScreen::Output(Id: 88 , Name: "DVI-0" ) ( "DVI-0" ) to KScreen::Output(Id: 88 , Name: "DVI-0" ) ( "DVI-0" )
kscreen: Primary output changed from KScreen::Output(Id: 88 , Name: "DVI-0" ) ( "DVI-0" ) to KScreen::Output(Id: 88 , Name: "DVI-0" ) ( "DVI-0" )
Received config. Took 22 milliseconds
Screen:
        maxSize: QSize(16384, 16384)
        minSize: QSize(320, 200)
        currentSize: QSize(2880, 1200)

-----------------------------------------------------

Id:  85
Name:  "DisplayPort-0"
Type:  "Unknown"
Connected:  false

-----------------------------------------------------

Id:  86
Name:  "DisplayPort-1"
Type:  "Unknown"
Connected:  false

-----------------------------------------------------

Id:  87
Name:  "HDMI-0"
Type:  "Unknown"
Connected:  false

-----------------------------------------------------

Id:  88
Name:  "DVI-0"
Type:  "Unknown"
Connected:  true
Enabled:  true
Primary:  true
Rotation:  1
Pos:  QPoint(1280,0)
MMSize:  QSize(367, 275)
Size:  QSize(1600, 1200)
Clones:  None
Mode:  "91"
Preferred Mode:  "91"
Preferred modes:  ("91")
Modes: 
         "100"    ""   QSize(640, 480)   60
         "101"    ""   QSize(720, 400)   70.0817
         "91"    ""   QSize(1600, 1200)   60
         "92"    ""   QSize(1280, 1024)   75.0247
         "93"    ""   QSize(1280, 1024)   60.0197
         "94"    ""   QSize(1152, 864)   75
         "95"    ""   QSize(1024, 768)   75.0762
         "96"    ""   QSize(1024, 768)   60.0038
         "97"    ""   QSize(800, 600)   75
         "98"    ""   QSize(800, 600)   60.3165
         "99"    ""   QSize(640, 480)   75
EDID Info: 
        Device ID:  "xrandr-DELL 2001FP-C088141F06YL"
        Name:  "DELL 2001FP"
        Vendor:  ""
        Serial:  "C088141F06YL"
        EISA ID:  ""
        Hash:  "7a131aded027d4cee9b9d1bd9ced6cda"
        Width:  41
        Height:  31
        Gamma:  2
        Red:  QQuaternion(scalar:1, vector:(0.637695, 0.339844, 0))
        Green:  QQuaternion(scalar:1, vector:(0.292969, 0.608398, 0))
        Blue:  QQuaternion(scalar:1, vector:(0.146484, 0.0673828, 0))
        White:  QQuaternion(scalar:1, vector:(0.3125, 0.328125, 0))

-----------------------------------------------------

Id:  89
Name:  "DVI-1"
Type:  "Unknown"
Connected:  true
Enabled:  true
Primary:  false
Rotation:  1
Pos:  QPoint(0,0)
MMSize:  QSize(338, 270)
Size:  QSize(1280, 1024)
Clones:  None
Mode:  "92"
Preferred Mode:  "93"
Preferred modes:  ("93")
Modes: 
         "100"    ""   QSize(640, 480)   60
         "101"    ""   QSize(720, 400)   70.0817
         "102"    ""   QSize(1024, 768)   75.0286
         "103"    ""   QSize(832, 624)   74.5513
         "92"    ""   QSize(1280, 1024)   75.0247
         "93"    ""   QSize(1280, 1024)   60.0197
         "94"    ""   QSize(1152, 864)   75
         "95"    ""   QSize(1024, 768)   75.0762
         "96"    ""   QSize(1024, 768)   60.0038
         "97"    ""   QSize(800, 600)   75
         "98"    ""   QSize(800, 600)   60.3165
         "99"    ""   QSize(640, 480)   75
EDID Info: 
        Device ID:  "xrandr-L1720B-105487"
        Name:  "L1720B"
        Vendor:  ""
        Serial:  "105487"
        EISA ID:  ""
        Hash:  "76b62af2c36e3d5e9fdaeebe614093eb"
        Width:  34
        Height:  27
        Gamma:  2
        Red:  QQuaternion(scalar:1, vector:(0.640625, 0.339844, 0))
        Green:  QQuaternion(scalar:1, vector:(0.291992, 0.611328, 0))
        Blue:  QQuaternion(scalar:1, vector:(0.147461, 0.0683594, 0))
        White:  QQuaternion(scalar:1, vector:(0.313477, 0.329102, 0))
kscreen: Primary output changed from KScreen::Output(Id: 88 , Name: "DVI-0" ) ( "DVI-0" ) to KScreen::Output(Id: 88 , Name: "DVI-0" ) ( "DVI-0" )
kscreen: Primary output changed from KScreen::Output(Id: 88 , Name: "DVI-0" ) ( "DVI-0" ) to KScreen::Output(Id: 88 , Name: "DVI-0" ) ( "DVI-0" )
Screen:
        maxSize: QSize(16384, 16384)
        minSize: QSize(320, 200)
        currentSize: QSize(2880, 1200)

-----------------------------------------------------

Id:  85
Name:  "DisplayPort-0"
Type:  "Unknown"
Connected:  false

-----------------------------------------------------

Id:  86
Name:  "DisplayPort-1"
Type:  "Unknown"
Connected:  false

-----------------------------------------------------

Id:  87
Name:  "HDMI-0"
Type:  "Unknown"
Connected:  false

-----------------------------------------------------

Id:  88
Name:  "DVI-0"
Type:  "Unknown"
Connected:  true
Enabled:  true
Primary:  true
Rotation:  1
Pos:  QPoint(1280,0)
MMSize:  QSize(367, 275)
Size:  QSize(1600, 1200)
Clones:  None
Mode:  "91"
Preferred Mode:  "91"
Preferred modes:  ("91")
Modes: 
         "100"    ""   QSize(640, 480)   60
         "101"    ""   QSize(720, 400)   70.0817
         "91"    ""   QSize(1600, 1200)   60
         "92"    ""   QSize(1280, 1024)   75.0247
         "93"    ""   QSize(1280, 1024)   60.0197
         "94"    ""   QSize(1152, 864)   75
         "95"    ""   QSize(1024, 768)   75.0762
         "96"    ""   QSize(1024, 768)   60.0038
         "97"    ""   QSize(800, 600)   75
         "98"    ""   QSize(800, 600)   60.3165
         "99"    ""   QSize(640, 480)   75
EDID Info: 
        Device ID:  "xrandr-DELL 2001FP-C088141F06YL"
        Name:  "DELL 2001FP"
        Vendor:  ""
        Serial:  "C088141F06YL"
        EISA ID:  ""
        Hash:  "7a131aded027d4cee9b9d1bd9ced6cda"
        Width:  41
        Height:  31
        Gamma:  2
        Red:  QQuaternion(scalar:1, vector:(0.637695, 0.339844, 0))
        Green:  QQuaternion(scalar:1, vector:(0.292969, 0.608398, 0))
        Blue:  QQuaternion(scalar:1, vector:(0.146484, 0.0673828, 0))
        White:  QQuaternion(scalar:1, vector:(0.3125, 0.328125, 0))

-----------------------------------------------------

Id:  89
Name:  "DVI-1"
Type:  "Unknown"
Connected:  true
Enabled:  true
Primary:  false
Rotation:  1
Pos:  QPoint(0,0)
MMSize:  QSize(338, 270)
Size:  QSize(1280, 1024)
Clones:  None
Mode:  "92"
Preferred Mode:  "93"
Preferred modes:  ("93")
Modes: 
         "100"    ""   QSize(640, 480)   60
         "101"    ""   QSize(720, 400)   70.0817
         "102"    ""   QSize(1024, 768)   75.0286
         "103"    ""   QSize(832, 624)   74.5513
         "92"    ""   QSize(1280, 1024)   75.0247
         "93"    ""   QSize(1280, 1024)   60.0197
         "94"    ""   QSize(1152, 864)   75
         "95"    ""   QSize(1024, 768)   75.0762
         "96"    ""   QSize(1024, 768)   60.0038
         "97"    ""   QSize(800, 600)   75
         "98"    ""   QSize(800, 600)   60.3165
         "99"    ""   QSize(640, 480)   75
EDID Info: 
        Device ID:  "xrandr-L1720B-105487"
        Name:  "L1720B"
        Vendor:  ""
        Serial:  "105487"
        EISA ID:  ""
        Hash:  "76b62af2c36e3d5e9fdaeebe614093eb"
        Width:  34
        Height:  27
        Gamma:  2
        Red:  QQuaternion(scalar:1, vector:(0.640625, 0.339844, 0))
        Green:  QQuaternion(scalar:1, vector:(0.291992, 0.611328, 0))
        Blue:  QQuaternion(scalar:1, vector:(0.147461, 0.0683594, 0))
        White:  QQuaternion(scalar:1, vector:(0.313477, 0.329102, 0))
kscreen: Primary output changed from KScreen::Output(Id: 88 , Name: "DVI-0" ) ( "DVI-0" ) to KScreen::Output(Id: 88 , Name: "DVI-0" ) ( "DVI-0" )
kscreen: Primary output changed from KScreen::Output(Id: 88 , Name: "DVI-0" ) ( "DVI-0" ) to KScreen::Output(Id: 88 , Name: "DVI-0" ) ( "DVI-0" )
Screen:
        maxSize: QSize(16384, 16384)
        minSize: QSize(320, 200)
        currentSize: QSize(2880, 1200)

-----------------------------------------------------

Id:  85
Name:  "DisplayPort-0"
Type:  "Unknown"
Connected:  false

-----------------------------------------------------

Id:  86
Name:  "DisplayPort-1"
Type:  "Unknown"
Connected:  false

-----------------------------------------------------

Id:  87
Name:  "HDMI-0"
Type:  "Unknown"
Connected:  false

-----------------------------------------------------

Id:  88
Name:  "DVI-0"
Type:  "Unknown"
Connected:  true
Enabled:  true
Primary:  true
Rotation:  1
Pos:  QPoint(1280,0)
MMSize:  QSize(367, 275)
Size:  QSize(1600, 1200)
Clones:  None
Mode:  "91"
Preferred Mode:  "91"
Preferred modes:  ("91")
Modes: 
         "100"    ""   QSize(640, 480)   60
         "101"    ""   QSize(720, 400)   70.0817
         "91"    ""   QSize(1600, 1200)   60
         "92"    ""   QSize(1280, 1024)   75.0247
         "93"    ""   QSize(1280, 1024)   60.0197
         "94"    ""   QSize(1152, 864)   75
         "95"    ""   QSize(1024, 768)   75.0762
         "96"    ""   QSize(1024, 768)   60.0038
         "97"    ""   QSize(800, 600)   75
         "98"    ""   QSize(800, 600)   60.3165
         "99"    ""   QSize(640, 480)   75
EDID Info: 
        Device ID:  "xrandr-DELL 2001FP-C088141F06YL"
        Name:  "DELL 2001FP"
        Vendor:  ""
        Serial:  "C088141F06YL"
        EISA ID:  ""
        Hash:  "7a131aded027d4cee9b9d1bd9ced6cda"
        Width:  41
        Height:  31
        Gamma:  2
        Red:  QQuaternion(scalar:1, vector:(0.637695, 0.339844, 0))
        Green:  QQuaternion(scalar:1, vector:(0.292969, 0.608398, 0))
        Blue:  QQuaternion(scalar:1, vector:(0.146484, 0.0673828, 0))
        White:  QQuaternion(scalar:1, vector:(0.3125, 0.328125, 0))

-----------------------------------------------------

Id:  89
Name:  "DVI-1"
Type:  "Unknown"
Connected:  true
Enabled:  true
Primary:  false
Rotation:  1
Pos:  QPoint(0,0)
MMSize:  QSize(338, 270)
Size:  QSize(1280, 1024)
Clones:  None
Mode:  "92"
Preferred Mode:  "93"
Preferred modes:  ("93")
Modes: 
         "100"    ""   QSize(640, 480)   60
         "101"    ""   QSize(720, 400)   70.0817
         "102"    ""   QSize(1024, 768)   75.0286
         "103"    ""   QSize(832, 624)   74.5513
         "92"    ""   QSize(1280, 1024)   75.0247
         "93"    ""   QSize(1280, 1024)   60.0197
         "94"    ""   QSize(1152, 864)   75
         "95"    ""   QSize(1024, 768)   75.0762
         "96"    ""   QSize(1024, 768)   60.0038
         "97"    ""   QSize(800, 600)   75
         "98"    ""   QSize(800, 600)   60.3165
         "99"    ""   QSize(640, 480)   75
EDID Info: 
        Device ID:  "xrandr-L1720B-105487"
        Name:  "L1720B"
        Vendor:  ""
        Serial:  "105487"
        EISA ID:  ""
        Hash:  "76b62af2c36e3d5e9fdaeebe614093eb"
        Width:  34
        Height:  27
        Gamma:  2
        Red:  QQuaternion(scalar:1, vector:(0.640625, 0.339844, 0))
        Green:  QQuaternion(scalar:1, vector:(0.291992, 0.611328, 0))
        Blue:  QQuaternion(scalar:1, vector:(0.147461, 0.0683594, 0))
        White:  QQuaternion(scalar:1, vector:(0.313477, 0.329102, 0))

Reproducible: Always
Comment 1 Adrian Piotrowicz 2016-02-04 08:07:07 UTC
I can confirm that problem. Kscreen does not handle multihead setups very well.
I have many different scenarios besides the expected one.
Using 3 monitors (1 laptop, 2 connected to docking station), expected setup is:
left: laptop
center: external monitor 1 (primary output)
right: external monitor 2
Scenario 1: I have all outputs placed over each other
Scenario 2: Outputs are placed correctly, primary output is laptop
Scenario 3: Outputs are placed correctly, primary output is ext1, widgets are on ext1, however panel after some dancing between laptop and ext1 ends up on laptop screen


And after manually setting up correct configuration I need to restart plasmashell to get app launcher show up on correct screen - it often shows on left screen not center when panel is.

Removing laptop from dock, assuming that kscreen detects that action, messes up all configuration - plasmashell needs to be restarted again.
Placing laptop back again on dock - messed up configuration - it's easier to reboot and setup everything again from scratch.

Same happens with single monitor attached directly to laptop via HDMI.
Expected setup is:
left: laptop (primary)
right: external monitor
I don't have problems with primary output then because I want it to be laptop - so no work for kscreen/kde here and nothing to mess up. However kscreen does not detect disconnecting external monitor.

OS: Chakra
kscreen/libkscreen version: 5.5.4
plasma-framework: 5.18.0
Comment 2 Sebastian Kügler 2016-05-04 01:56:09 UTC
Martin, could you post the content of the files in ~/.local/share/kscreen after setting it up, and then after rebooting?

This way, we can find out if the kscreen kded module saves the config correctly. If it doesn't, the changes will only keep effect until you restart your X server (for example during a reboot). If the file isn't saved for some reason, your config will obviously be lost across reboots.

It would also be useful to see the output from kded5, in order to acquire that, you can stop kded5 and restart it from a terminal, like so:

kquitapp5 kded5
kded5

There will be some unrelated stuff. If you have 5.6, you may enable logging for kscreen by configuring categorized logging in ~/.config/QtProject/qtlogging.ini (create the file if it isn't there):

[Rules]
kscreen.*=true
Comment 3 Martin Bednar 2016-05-09 19:15:04 UTC
Created attachment 98863 [details]
before reboot, all set up ok
Comment 4 Martin Bednar 2016-05-09 19:16:13 UTC
Created attachment 98864 [details]
After reboot, bad screen configuration
Comment 5 Martin Bednar 2016-05-09 19:28:07 UTC
Created attachment 98865 [details]
kded5 stderr

Restart of kded5 with the bad screen configuration, with subsequent setup of correct configuration.
Comment 6 Martin Bednar 2016-05-09 19:30:50 UTC
Created attachment 98866 [details]
kded5 stderr with correct setup

After setting up the screen config, I killed kded5 and started it once more. Config stayed ok. This is the stderr.

Sorry for the delay...
Comment 7 Martin Bednar 2016-05-09 19:35:25 UTC
for some reason, once a couple of minutes, kded5 keeps outputting 

kscreen: starting external backend launcher for ""
kscreen.kded: Change detected
kscreen.kded: Saving current config to file
kscreen.kded: Calculating config ID for KScreen::Config(0x1b82e50)
kscreen.kded:   Part of the Id:  "7a131aded027d4cee9b9d1bd9ced6cda"
kscreen.kded:   Part of the Id:  "76b62af2c36e3d5e9fdaeebe614093eb"
kscreen.kded:   Config ID: "43656861fc5bd49b298b3988a44c0fe9"
kscreen.kded: Config saved on:  "/home/martin/.local/share/kscreen/43656861fc5bd49b298b3988a44c0fe9"
Comment 8 Sebastian Kügler 2016-05-25 11:02:22 UTC
*** Bug 363495 has been marked as a duplicate of this bug. ***
Comment 9 e8hffff 2016-05-31 00:20:41 UTC
Just a side note.  I noticed that in older kscreen files held in ~./local/share/kscreen some of the names given to monitors changed.  Example:

"name": "HDMI-2" become
"name": "HDMI2" after deleting the kscreen files with newer versions of the system.

Could there be a failure to lock on to the proper configurations due to naming?  Maybe people need to delete their kscreen files and get new ones created.
Comment 10 Sebastian Kügler 2016-06-01 00:17:11 UTC
After some debugging, I found a race condition which may cause this bug. (I can't say for sure since I can reproduce the race, but can't reproduce the exact problem you have.)

What happens is that on login, a config is applied that triggers a changed signal, which will write out the config. This doesn't make sense and it may actually lead to writing out intermediate, wrong configs, which are then applied on next login.

Essentially, this patch makes the kded kscreen daemon more careful about writing out configs.

In earlier patches, I've made the code more robust against corrupt configs, that may also help a bit in this situation.

This is Plasma 5.7 material.

There's a patch addressing this race condition up for review: https://phabricator.kde.org/D1730
Comment 11 Sebastian Kügler 2016-06-01 14:55:20 UTC
Git commit 17199d32f292f7c44eb8cdce5b35396d3bd19eb8 by Sebastian Kügler.
Committed on 01/06/2016 at 14:55.
Pushed by sebas into branch 'master'.

address race condition around setoperation

Summary:
Use a timer to avoid catching configChanged signals after we set
changes.

The long version:

TL;DR: We have a race condition when the kscreen daemon starts. It looks
up a known config, then applies it and subsequently resaves the config.
The same happens on config changes, it writes, then re-reads and then
re-writes the config change.
I've managed to prevent this from happening by adding a timer that does
avoids saving the config as a direct reaction to our own config changes.

So what happens on kded5 startup after loading the kscreen2 module:

- the kscreen config is requested and received
- the kscreen daemon (KD) looks into its config directory for a suitable
  config file
  (a config file is identified by a combined hash of all screen
attached, so unique per connected set of outputs)
- KD usually finds a config
- KD ignores configChanged events before it starts ...
- a KScreen::SetConfigOperation to apply the "known config"
- SetConfigOperation returns after a while (say 100ms later)
- we re-enable the change monitor
- we receive a configChanged signal
- we save the new config (usually to the existing config file)

I don't think this behavior is desirable. I don't see a reason why the
daemon should save its config right after applying it. I think this
causes more problems than we want, since the startup may overwrite the
user's config. This behavior seems to be desired by the code in KD, it's
already blocking configChanged signals during the SetOperation (which,
to be honest may result in nightmarish behavior in any way, so it might
be a kludge which aims too short).

>From libkscreen perspective, SetConfigOperation::finished cannot
guarantee that all configChanged signals are already fired and that it's
safe to watch for new, independent changes now. At least on X11, we
simply don't know, and what we can do is wait a bit and cross fingers
that we're not catching our own noise. The changed signal *may* come
from a re-request of the edid information, but this is a bit hard to
track down, and not too useful, anyway, since changed Edid may affect a
large number of a screen's properties.
In the Wayland backend, that's a different story and we can prevent this
behavior at an earlier stage, so this timer is "probably not needed" (I
haven't tested that).

This effectively prevents KD from catching reactions to its own changes
and does not trigger saving the config file on every login. It still
reacts to changes from libkscreen, but will avoid re-saving the config a
few times. The timer may not be the neatest of solutions for this, but
it does help narrowing down the problem and may be a last resort action.
Most importantly, it avoids the re-writing of the config on startup and
plugging/unplugging a monitor effectively.

The timer value of 100ms is also used in kwin, which should make the
behavior (which is no problem in kwin) more solid.
Related: bug 346961

Reviewers: graesslin

Reviewed By: graesslin

Subscribers: plasma-devel, #plasma

Tags: #plasma

Differential Revision: https://phabricator.kde.org/D1730

M  +12   -1    kded/daemon.cpp
M  +2    -0    kded/daemon.h

http://commits.kde.org/kscreen/17199d32f292f7c44eb8cdce5b35396d3bd19eb8
Comment 12 Piotr Dobrogost 2016-06-03 16:25:27 UTC
See bug #356225 and especially #356225 comment 103:

> Help is on the way. Plasma 5.7 will/should fix this issue.
> http://vizzzion.org/blog/2016/05/multiscreen-in-plasma-5-7-and-beyond/
Comment 13 e8hffff 2016-06-03 16:57:08 UTC
The code should respect an existing monitor that is operating, and not disturb it if processing another new one coming available.

If I turn on a second monitor my whole desktop gets switched off and redrawn on all monitors, like a reset.  Even the background image changes.  Sometimes the windows are moved to suit a transitional playing field.  If I want windows are precise places they have to be moved back which is very annoying.
Comment 14 Sebastian Kügler 2016-06-07 08:19:52 UTC
@e8hffff Please test Plasma 5.7 with Qt 5.6. If your problems persist, please file a separate bug report.

Your issue is otherwise unrelated, it's not really helpful to add it to this bugreport, the available information is hard enough to sift through already.
Comment 15 Sebastian Kügler 2016-06-08 22:44:17 UTC
Good news. We have fixed two race conditions in the daemon that applies the config on login and on monitor changes. Also, Plasma shell has now moved away from KScreen and uses QScreen for setting up the desktop, panels, etc. This makes the desktop shell work a lot smoother on screen changes.

Kai Uwe and Martin systems don't show this bug anymore, so I'm quite confident that Plasma 5.7 brings a notable improvement, so it would be good to get some more feedback from people who are able to test. Plasma 5.7 Beta which is due in mid-June would be a good target, otherwise more testing of git master would also be great.

I'm not closing this bug report as RESOLVED FIXED  just yet, but I think we're a lot closer.
Comment 16 Martin Bednar 2016-07-05 18:33:43 UTC
Haven't booted into wrong screen setup since I installed KF23 and plasma 5.7 beta. Very nice :)
Comment 17 Piotr Dobrogost 2016-07-05 19:22:25 UTC
How can I install Plasma 5.7 using dnf on Fedora 24?
Comment 18 Sebastian Kügler 2016-07-05 20:11:47 UTC
Okay, thanks for the confirmation!
Comment 19 Piotr Dobrogost 2016-07-05 20:18:37 UTC
From bug #356225 comment 127:
"While the comment was made that KDE Plasma Version 5.7 was going to resolve problems with an external display, I have found that it has made these problems worse!"

I don't think one confirmation (comment 16) is enough to close a bug…
Comment 20 desaparecido 2016-07-05 20:29:49 UTC
hi, my config is dual monitor with a desktop PC ( so no plug/unplug screen variation ).  I have git versions (KF24 and Plasma 5.7) and from a while all works fine, no re-setup screens after reboot.. ohh is nice, thanks ;-)
Comment 21 Sebastian Kügler 2016-07-06 23:09:29 UTC
@Piotr I count at least five individual and verified confirmations that this bug is fixed, including the reporter of this bug himself. I mentioned two people confirming it fixed in comment #15.

The comment you quote is from an entirely different bug, it's not useful in this context. Nobody said that every single multiscreen bug has been fixed (I wish we had!). It's incremental work of fixing a number of bugs that make up a stable user experience.

This particular one is down, and I'm happy about that. Yay. :)