Summary: | Monitor connection names differ across X11 and Wayland, causing multi-monitor containment mappings to break when switching session types | ||
---|---|---|---|
Product: | [Plasma] plasmashell | Reporter: | humufr |
Component: | generic-multiscreen | Assignee: | Plasma Bugs List <plasma-bugs> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | alex765, auxsvr, bednarczyk.pawel, bizyaev, cellstije, cirlo_ca, dcalvino, ddascalescu+kde, dkxls23, geqch0akc, germano.massullo, gudvinr+kde, heri+kde, hsantanna, kde, kman, lrdarknesss, m.weghorn, mail, mauromol, miranda, mrmazda, mundolibre, nate, nico.kruber, openmindead, pereira.alex, plasma-bugs, postix, qydwhotmail, rocketraman, tuppa+kde, vortex |
Priority: | NOR | Keywords: | multiscreen, wayland |
Version: | 5.10.5 | ||
Target Milestone: | 1.0 | ||
Platform: | Other | ||
OS: | Linux | ||
Latest Commit: | https://invent.kde.org/plasma/plasma-workspace/commit/8c521e528adc69a920c161cc691f1322dc2089f8 | Version Fixed In: | 5.27 |
Sentry Crash Report: | |||
Bug Depends on: | 450068 | ||
Bug Blocks: |
Description
humufr
2017-09-27 11:23:26 UTC
Oh, I got the same, and was concluding that Wayland is not ready yet, because I just got a black screen (I only use the second display). Will have to re-check if I am able to configure Wayland in a way to be useable, without destroying the X11 setup. this also happens to me, but there is a easy workaround: I just logout, go into .config/plasmashellrc and delete all the [ScreenConnectors] section. At the new login, screens are correct again I am giving up on activities. I tried but it is so buggy that it is not possible to work with it. Random behaviour it is ok for a time after years... humufr, even now on plasma git packages, its the same. just follow the instruction: edit ~/.config/plasmashellrc and remove the [ScreenConnectors] section. this happens because monitors have one name on Xorg and have another on Wayland. it has nothing to do with activities ( happens the same even if you have only one activity ). This wont be fixed until we get both xdg output V2 and support in Qt. Till then we can't do much as we don't get monitor names. This is now resolved. If issues remain we need to bug reports with new detailed information. It still changes the configuration if changing between wayland and x11. For context, I have two monitors connected through DisplayPort. It seems on Wayland they are called "DP-?" and on X11 they are called "DisplayPort-?". output of the plasmashellrc file: * Starting with a clean plasmashellrc file on wayland: [ScreenConnectors] 0=DP-1 1=DP-2 * Starting with a clean plasmashellrc file on x11: 0=DisplayPort-0 1=DisplayPort-1 * Starting in X11 after being on wayland: 0=DisplayPort-0 1=DP-2 2=DisplayPort-1 This results on the monitor on the right showing another wallpaper/activity. After cleaning the plasmashellrc files ( removing the ScreenConnectors section ) before changing wayland or x11, each session opens correctly with the proper activities on the correct monitors. But not if changing without cleaning/remocing the ScreenConnectors ID's. Alexandre, are you using git master software? I don't believe the fix has been released yet. > Alexandre, are you using git master software? I don't believe the fix has been released yet.
Sorry Nate !!! I forgot to mention that!
Yes, using master frameworks and plasma on gentoo, everything compiled 10 hours ago.
OK, thanks. I guess we still have a residual problem of the connector names changing across Wayland and X11. Using the connector name to identify screens is actually the root cause of a lot of our multi-monitor issues. I think we should switch to a more stable identifier like the monitor's serial number, and add a config UI to allow people to more easily move or clone containments/panels across screens. At this point the wrong name issue *may* be a KScreen bug, but I'll leave it here and hopefully David Edmundson can chime in. > OK, thanks. I guess we still have a residual problem of the connector names changing across Wayland and X11. Using the connector name to identify screens is actually the root cause of a lot of our multi-monitor issues. I think we should switch to a more stable identifier like the monitor's serial number, and add a config UI to allow people to more easily move or clone containments/panels across screens.
Yes, thanks... that was why I didn't file the bug report immediately after seeing the post from Ed. I was the one that talked about it on kde matrix. ( mentioning the amdgpu bug )
But after seeing your weekly report, I thought it was a good time to update the bug.
Thanks for everything, Nate, Ed! 5.23/master git has been incredibly great !
*** Bug 433840 has been marked as a duplicate of this bug. *** It seems still relevant Operating System: KDE neon 5.23 KDE Plasma Version: 5.23.0 KDE Frameworks Version: 5.87.0 Qt Version: 5.15.3 Probably can be fixed when/if this is implemented: https://bugs.kde.org/show_bug.cgi?id=443986 *** Bug 445092 has been marked as a duplicate of this bug. *** *** Bug 446560 has been marked as a duplicate of this bug. *** X11 uses this here 0=DisplayPort-2 1=DisplayPort-1 While wayland uses this 1=DP-2 2=DP-3 no matter what i do wayland still flips my screen around, it forces my primary/default to be on the left instead of the right while logging in/out and switching to a TTY something broke (restarting sddm did not help) and plasma would not load and i only got 2 black screen, on X11 thunderbird still opened via a startup, luckily rebooting made it happy, kinda seems like stopping sddm does not stop/kill all user process in the session and leaves some running, i can confirm this with some of my scripts and they will not start back up cause there old instance is still running even after restarting sddm on a side note audio devices says my primary monitor is on HDMI 3 however if you look at aplay -L this is this hardware hw:CARD=HDMI,DEV=8 HDA ATI HDMI, HDMI 2 Direct hardware device without any conversions i know this one is that cause it works with mpd my primary has audio passthough to a jack mounted on my desk for headphones whole my main speakers on on the system's analog out on the motherboard aplay -L finds 6 outputs on my RX 580 (there are 3 display ports, 1 hdmi, and one dvi) DEV 3 = HDMI 0 DEV 7 = HDMI 1 DEV 8 = HDMI 2 DEV 9 = HDMI 3 DEV 10 = HDMI 4 DEV 11 = HDMI 5 Operating System: Kubuntu 22.04 KDE Plasma Version: 5.23.4 KDE Frameworks Version: 5.88.0 Qt Version: 5.15.2 Kernel Version: 5.16.0-051600rc4-generic (64-bit) Processors: 12 × AMD Ryzen 5 3600 6-Core Processor Memory: 15.6 GiB of RAM Graphics Processor: Radeon RX 580 Series *** Bug 447359 has been marked as a duplicate of this bug. *** *** Bug 452231 has been marked as a duplicate of this bug. *** Author of inxi seems to have implied using output names found in /sys/class/drm/ may have some value. Current inxi versions report the name(s) found there first, following with the names X or the display drivers converted them to. # ls -1 /sys/class/drm/ card0 card0-DP-1 card0-DP-2 card0-HDMI-A-1 card0-HDMI-A-2 card0-HDMI-A-3 renderD128 version # xrandr --listproviders Providers: number : 1 Provider 0: id: 0x46; cap: 0xf (Source Output, Sink Output, Source Offload, Sink Offload); crtcs: 3; outputs: 5; associated providers: 0; name: modesetting output HDMI-1 output HDMI-2 output DP-1 output HDMI-3 output DP-2 # inxi -IC CPU: Info: dual core model: Intel Core i3-7100T bits: 64 type: MT MCP cache: Info:...Shell: Bash inxi: 3.3.16 # inxi -GSaz System: Kernel: 5.16.15-1-default... Desktop: KDE Plasma v: 5.24.4 tk: Qt v: 5.15.2 wm: kwin_x11 vt: 7 dm: TDM Distro: openSUSE Tumbleweed 20220427 Graphics: Device-1: Intel HD Graphics 630 vendor: Gigabyte driver: i915 v: kernel ports: active: DP-1,HDMI-A-1,HDMI-A-2 empty: DP-2,HDMI-A-3 bus-ID: 00:02.0 chip-ID: 8086:5912 class-ID: 0300 Display: x11 server: X.Org v: 21.1.3 compositor: kwin_x11 driver: X: loaded: modesetting unloaded: fbdev,vesa alternate: intel gpu: i915 display-ID: :0 screens: 1 Screen-1: 0 s-res: 2560x3720 s-dpi: 120 s-size: 540x785mm (21.26x30.91") s-diag: 953mm (37.51") Monitor-1: DP-1 pos: primary,bottom model: Acer K272HUL serial: <filter> built: 2018 res: 2560x1440 hz: 60 dpi: 109 gamma: 1.2 size: 598x336mm (23.54x13.23") diag: 686mm (27") ratio: 16:9 modes: max: 2560x1440 min: 720x400 Monitor-2: HDMI-A-1 mapped: HDMI-1 pos: middle model: Samsung built: 2009 res: 1920x1080 hz: 60 dpi: 305 gamma: 1.2 size: 160x90mm (6.3x3.54") diag: 184mm (7.2") ratio: 16:9 modes: max: 1920x1080 min: 720x400 Monitor-3: HDMI-A-2 mapped: HDMI-2 pos: primary,top model: NEC EA243WM serial: <filter> built: 2011 res: 1920x1200 hz: 60 dpi: 94 gamma: 1.2 size: 519x324mm (20.43x12.76") diag: 612mm (24.1") ratio: 16:10 modes: max: 1920x1200 min: 640x480 OpenGL: renderer: Mesa Intel HD Graphics 630 (KBL GT2) v: 4.6 Mesa 22.0.2 direct render: Yes # Monitor-3 is in fact connected via DVI-DVI cable connected to motherboard's DVI connector. Suggested possible user workaround: use modesetting DIX display driver instead of device specific (DDX) display driver. Output names tend to be more consistent among AMD, Intel & NVidia when using the DIX. *** Bug 449321 has been marked as a duplicate of this bug. *** *** Bug 458000 has been marked as a duplicate of this bug. *** *** Bug 460399 has been marked as a duplicate of this bug. *** Hi, note that the switching of layout (primary to secondary) happens in wayland also when: * only one monitor is on (of the 2 attached) * monitor goes in (screen) power saving and turns off * system is woken from screen power saving by end user. The end-user is presented with secondary monitor wallpaper, primary monitor plasma widgets are gone and there is no way to get them back: Ticking and un-ticking 'primary' option in System Settings->Display amd Monitor achieve nothings This bug is actually a duplicate of bug: https://bugs.kde.org/show_bug.cgi?id=458847 that was closed as supposingly fixed in 5.26.0 *** Bug 458847 has been marked as a duplicate of this bug. *** This will very likely be fixed automatically once Bug 450068 is done, but is probably impossible to fix otherwise. A possibly relevant merge request was started @ https://invent.kde.org/plasma/kwin/-/merge_requests/3230 Git commit f881bdf51b55b0ace76e9919b812ba87c8a8f040 by Vlad Zahorodnii. Committed on 23/11/2022 at 13:31. Pushed by vladz into branch 'master'. backends/drm: Use drmModeGetConnectorTypeName() It ensures that connector type naming is consistent across compositors and saves us some work adding string mappings. drmModeGetConnectorTypeName() uses the same naming scheme as the drm backend so the client side should be unaffected by this change. M +1 -1 CMakeLists.txt M +5 -31 src/backends/drm/drm_connector.cpp https://invent.kde.org/plasma/kwin/commit/f881bdf51b55b0ace76e9919b812ba87c8a8f040 Git commit 8c521e528adc69a920c161cc691f1322dc2089f8 by Marco Martin. Committed on 15/12/2022 at 10:16. Pushed by mart into branch 'master'. Base containments upon screen order Base containment/view screen assignment uniquely on an ordered list of screens which will be decided by KScreen, removing the concept of primary screen and the whole load and save of screen connector/id association. A protocol based on Atoms on X11 and as a native protocol on Wayland tells plasma the complete order of the screens, allowing the user to set not only primary screen but the whole order from the KSCreen KCM. Note that this is still very early work, as the protocol doesn't exists yet and is purely based upon primary screen followed by the other screens based upon alphabetical order of connector names. As many multiscreen scenarios as possible will be tested within screenpooltest and shelltest Related: bug 450068, bug 427861 Testing done: - [x] X11 absolutely no config whatsoever - plasma should match kscreen kcm when finally open - [x] Wayland absolutely no config whatsoever - plasma should match kscreen kcm when finally open - [x] X11 had a single monitor config - things should look exactly as before - [x] Wayland had a single monitor config - things should look exactly as before - [x] X11 had a multi-monitor config, one screen was Primary - things should look exactly as before - [x] Wayland had a multi-monitor config, one screen was Primary - things should look exactly as before - [x] X11 Xaver's mental setup with matching EDID - [x] Wayland Xaver's mental setup with matching EDID - [x] X11 have laptop lid and close it then open with two screens - [x] Wayland have laptop lid and close it then open with two screens - [x] X11 no kscreen enabled. Something remains sane, and somewhat consistent - [x] wayland no kscreen enabled. Something remains setup, and somewhat consistent - [x] close/reopen laptop lid with external screen attached - [x] enable/disable outputs without reordering - [x] connecting disconnecting to go from 1 to 2 to 3, to 2 again etc - [x] watch behavior of panels, do they move to the expected screen? M +5 -4 shell/CMakeLists.txt M +2 -1 shell/autotests/CMakeLists.txt M +9 -7 shell/autotests/mockserver/CMakeLists.txt M +2 -2 shell/autotests/mockserver/mockcompositor.cpp M +6 -6 shell/autotests/mockserver/mockcompositor.h R +15 -10 shell/autotests/mockserver/outputorder.cpp [from: shell/autotests/mockserver/primaryoutput.cpp - 069% similarity] R +10 -12 shell/autotests/mockserver/outputorder.h [from: shell/autotests/mockserver/primaryoutput.h - 068% similarity] M +135 -136 shell/autotests/screenpooltest.cpp M +393 -43 shell/autotests/shelltest.cpp A +354 -0 shell/outputorderwatcher.cpp [License: LGPL(v2.0+)] A +115 -0 shell/outputorderwatcher.h [License: LGPL(v2.0+)] M +1 -1 shell/panelview.cpp D +0 -167 shell/primaryoutputwatcher.cpp D +0 -58 shell/primaryoutputwatcher.h M +110 -315 shell/screenpool.cpp M +17 -32 shell/screenpool.h M +2 -1 shell/scripting/scriptengine_v1.cpp M +12 -12 shell/shellcontainmentconfig.cpp M +210 -185 shell/shellcorona.cpp M +5 -3 shell/shellcorona.h M +3 -3 shell/strutmanager.cpp M +6 -4 shell/tests/CMakeLists.txt M +7 -15 shell/tests/screenpooltest.cpp https://invent.kde.org/plasma/plasma-workspace/commit/8c521e528adc69a920c161cc691f1322dc2089f8 |