Summary: | Screen Mirroring doesn't take monitor rotation into account | ||
---|---|---|---|
Product: | [Plasma] kwin | Reporter: | Will Styler <will> |
Component: | multi-screen | Assignee: | KWin default assignee <kwin-bugs-null> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | john.kizer, kdedev, nate, xaver.hugl |
Priority: | NOR | Keywords: | multiscreen |
Version First Reported In: | 6.3.4 | ||
Target Milestone: | --- | ||
Platform: | Fedora RPMs | ||
OS: | Linux | ||
Latest Commit: | https://invent.kde.org/plasma/kwin/-/commit/3e0ecbaad2981874608118005d4dc28daf6e3ec4 | Version Fixed In: | |
Sentry Crash Report: |
Description
Will Styler
2025-04-10 03:27:41 UTC
OK, I've found a way to coerce display settings into giving the desired output, confirming that this is software, not hardware. On the built in screen, in Display Settings, I need: - Enabled, Primary, 1600x2560 (10:16) - 90 CCW rotation Manual On the external screen, I need: - Enabled, Not Primary, 1680x1050 (16:10) - No Rotation, Manual - Replica of Built-In Screen Note the counterintuitive fact that the aspect ratio is listed as different for the two screens, even though they are displaying the same content. This creates the desired mirroring effect. However, when I pull up the Display Switcher with Meta+P and hit mirror displays, it creates: Apologies for the spam. Turns out Tab doesn't do tab things here. When I hit Mirror Displays from Meta+P, I get Primary Display: - Enabled, Primary, 1600x2560 (10:16) - 90 CCW rotation Manual But oddly, the 10:16 is actually displayed as a vertical rectangle with heavy letterboxing, which constrains the usable space on the other monitor. External: - Enabled, Not Primary, 1920x1080 (16:9) - No Rotation, Manual - Replica of Built-In Screen For reference, the native resolution of the external display is 1920x1080, and of the internal display (when rotated properly) is 1600x2560 (which is listed in Display setup as being 1600x2560, despite that not being what is displayed). Sorry for the deep dive here, but I think I found a corner case and wanted to flag it to the project. Thanks! I can't reproduce this one myself, but for reference for others...I wonder if this is possibly related to https://bugs.kde.org/show_bug.cgi?id=502374 ? Git commit 3e0ecbaad2981874608118005d4dc28daf6e3ec4 by Xaver Hugl. Committed on 16/04/2025 at 15:20. Pushed by zamundaaa into branch 'master'. outputconfigurationstore: implement better screen mirroring Instead of KScreen trying to move and scale outputs in a way that kind of looks like mirroring, this makes KWin aware of which outputs replicate which, and makes it responsible for implementing mirroring in whatever way is best. This commit implements simliar workarounds like KScreen had, with the only real difference being that it avoids modifying the source display mode and position, and takes screen rotation into account. A better implementation can replace that bit later on, while making use of the same information stored in the configuration. Related: bug 481222 M +11 -6 autotests/integration/outputchanges_test.cpp M +1 -0 src/backends/drm/drm_output.cpp M +1 -0 src/backends/virtual/virtual_output.cpp M +1 -0 src/backends/wayland/wayland_output.cpp M +9 -0 src/core/output.cpp M +3 -0 src/core/output.h M +1 -0 src/core/outputconfiguration.h M +88 -0 src/outputconfigurationstore.cpp M +2 -0 src/outputconfigurationstore.h M +26 -1 src/wayland/outputdevice_v2.cpp M +1 -0 src/wayland/outputdevice_v2.h M +12 -1 src/wayland/outputmanagement_v2.cpp M +4 -3 src/workspace.cpp M +1 -1 src/workspace.h https://invent.kde.org/plasma/kwin/-/commit/3e0ecbaad2981874608118005d4dc28daf6e3ec4 |