Bug 466556

Summary: Opening lid of laptop with external screen connected inappropriately disables laptop screen
Product: [Plasma] KScreen Reporter: Nate Graham <nate>
Component: commonAssignee: kscreen-bugs-null <kscreen-bugs-null>
Status: REPORTED ---    
Severity: normal CC: marcin.marcin.m, notmart
Priority: NOR    
Version: master   
Target Milestone: ---   
Platform: Other   
OS: Linux   
Latest Commit: Version Fixed In:
Attachments: What the KCM shows

Description Nate Graham 2023-02-27 19:51:07 UTC
Current git master from today. 100% reproducible for me.


STEPS TO REPRODUCE
1. Plug in external HDMI screen to laptop, either director or through Thunderbolt dock (makes no difference)
2. Position external screen above laptop screen, offset to the left about 50%
3. Close laptop lid such that screen locks and computer goes to sleep
4. wait 5 seconds
5. Open laptop lid to wake laptop and show the lock screen


OBSERVED RESULT
Only external screen is enabled. Laptop screen has become disabled.

Sometimes I see the dreaded "the screen locker is broken" screen instead of the expected normal lock screen, but this part isn't 100% reproducible.


EXPECTED RESULT
Laptop screen remains enabled.


ADDITIONAL INFORMATION:
word-by-word diff of the `kscreen-o` output:
$ git diff --word-diff before\ closing\ lid.txt after\ opening\ lid.txt diff --git before closing lid.txt after opening lid.txt
index 8f4a15c..2deac80 100644
--- before closing lid.txt      
+++ after opening lid.txt       
@@ -1,5 +1,5 @@
Output: 1 eDP-1 [-enabled-]{+disabled+} connected priority [-1-]{+0+} Panel Modes: 0:3840x2160@60*! 1:1600x1200@60 2:1280x1024@60 3:1024x768@60 4:2560x1600@60 5:1920x1200@60 6:1280x800@60 7:3840x2160@60 8:3200x1800@60 9:2880x1620@60 10:2560x1440@60 11:1920x1080@60 12:1600x900@60 13:1368x768@60 14:1280x720@60 Geometry: 1163,1080 1920x1080 Scale: 2 Rotation: 1 Overscan: 0 Vrr: incapable RgbRange: Automatic
Output: 2 DP-1 enabled connected priority [-2-]{+1+} DisplayPort Modes: 0:1920x1080@60*! 1:1920x1080@60 2:1920x1080@60 3:1920x1080@50 4:1920x1080@50 5:1680x1050@60 6:1600x900@60 7:1280x1024@60 8:1440x900@60 9:1280x800@60 10:1280x720@60 11:1280x720@60 12:1280x720@60 13:1280x720@50 14:1280x720@50 15:1024x768@60 16:800x600@60 17:720x576@50 18:720x576@50 19:720x480@60 20:720x480@60 21:720x480@60 22:720x480@60 23:720x480@60 24:640x480@60 25:640x480@60 26:640x480@60 27:720x400@70 28:1280x1024@60 29:1024x768@60 30:1280x800@60 31:1920x1080@60 32:1600x900@60 33:1368x768@60 34:1280x720@60 Geometry: 0,0 1920x1080 Scale: 1 Rotation: 1 Overscan: 0 Vrr: incapable RgbRange: Automatic
Comment 1 Marco Martin 2023-02-28 09:25:25 UTC
what does the kscreen kcm says (can you post a screenshot)? if the screen is enabled from there does it start to behave correctly afterwards?

maybe the first time you connected that external screen you inadvertitely chosen from the OSD to use only the external screen?
Comment 2 Nate Graham 2023-02-28 19:25:37 UTC
Created attachment 156836 [details]
What the KCM shows

Attaching a screenshot of the KCM. The KCM agrees with `kscreen-doctor -o` and also matches reality.

When I reproduce this bug, if I enable the laptop screen from the KCM, it becomes enabled as expected. But the old layout from before is not remembered; I need to manually mark the laptop screen as primary and move the external screen to its proper position.

> maybe the first time you connected that external screen you inadvertitely chosen from the OSD to use only the external screen?
Don't think so. The external screen is my only one and it's the one I regularly use to test multimonitor issues and patches.
Comment 3 Zamundaaa 2023-10-05 19:42:07 UTC
Git commit ae84480fbfdc684b8ee4b0207d3ce679f6fb4cd7 by Xaver Hugl.
Committed on 05/10/2023 at 20:29.
Pushed by zamundaaa into branch 'master'.

outputconfigurationstore: add new config system

Instead of an external service (like KScreen) storing and restoring output configurations,
with this commit KWin takes over that responsibility. This allows it to, among other things,
generate appropriate configs for new sets of outputs immediately, and take KWin-internal information
about outputs into account when generating them.
Related: bug 466208, bug 455082, bug 457430, bug 474021, bug 469653, bug 466342, bug 470863

M  +1    -0    CMakeLists.txt
M  +1    -0    autotests/integration/kwin_wayland_test.cpp
M  +1    -0    src/CMakeLists.txt
M  +5    -0    src/backends/drm/drm_output.cpp
M  +9    -0    src/core/output.cpp
M  +11   -0    src/core/output.h
M  +1    -0    src/core/outputconfiguration.h
M  +7    -0    src/main.cpp
M  +1    -0    src/main.h
M  +0    -4    src/main_wayland.cpp
M  +709  -20   src/outputconfigurationstore.cpp
M  +68   -4    src/outputconfigurationstore.h
M  +1    -0    src/utils/CMakeLists.txt
M  +8    -0    src/utils/edid.cpp
M  +8    -0    src/utils/edid.h
A  +54   -0    src/utils/orientationsensor.cpp     [License: GPL(v2.0+)]
A  +38   -0    src/utils/orientationsensor.h     [License: GPL(v2.0+)]
M  +34   -1    src/wayland/outputdevice_v2.cpp
M  +1    -0    src/wayland/outputdevice_v2.h
M  +12   -1    src/wayland/outputmanagement_v2.cpp
M  +49   -6    src/workspace.cpp
M  +2    -0    src/workspace.h

https://invent.kde.org/plasma/kwin/-/commit/ae84480fbfdc684b8ee4b0207d3ce679f6fb4cd7
Comment 4 marcin.marcin.m 2024-02-16 16:28:39 UTC
I'm affected by the same issue. This also happens when the laptop stays idle for a very long time.
Comment 5 marcin.marcin.m 2024-02-16 16:29:31 UTC
(I'm on kwin 5.27.10, for reference)