Created attachment 167251 [details] Diagonal screens SUMMARY The new edge barrier and corner barrier behaviors make it almost impossible to move the mouse between screens when they are placed diagonally (see attached screenshot). The only way I've found to move the mouse between screens is to grab a window and thrust it really hard towards the direction of the other screen. If I don't grab the window, it doesn't matter how fast or far I move the mouse, it just won't move to the other screen. Of the two barrier types, the corner barrier is the bigger problem. I can still move the mouse between screens with just the edge barrier, but I do have to move the mouse harder. STEPS TO REPRODUCE 1. Verify that corner and edge barriers are enabled in the Screen Edges KCM. 2. Use a diagonal screen layout like the one in the screenshot. 3. Try to move the mouse between screens. OBSERVED RESULT The mouse is stuck on the current screen unless you drag a window. EXPECTED RESULT It should be possible to move the mouse between screens easily, no matter the arrangement. SOFTWARE/OS VERSIONS Operating System: openSUSE Tumbleweed 20240308 KDE Plasma Version: 6.0.80 KDE Frameworks Version: 6.0.0 Qt Version: 6.6.2 Kernel Version: 6.7.7-1-default (64-bit) Graphics Platform: Wayland Processors: 16 × AMD Ryzen 7 4800H with Radeon Graphics Memory: 30.8 GiB of RAM Graphics Processor: AMD Radeon Graphics Manufacturer: Eluktronics Product Name: THINN-15
Currently I feel that the corner barrier might be fundamentally incompatible with this type of screen arrangement, and I don't have any good ideas aside from decreasing the strength of the corner barrier in general. If I may ask, why would users want to arrange two screens diagonally? This almost seems like an anti-usecase. Note that diagonal movement should still be possible with 3 or 4 displays arranged around a shared corner, as long as the movement avoids that shared corner.
One reason that users used to cite for this diagonal arrangement was that auto-hide panels don't work on shared edges (BUG 351175). But that has been fixed.
After some discussion in the VDG chat, the current proposal is to disable the corner barrier (and just use the edge barrier settings) when the corner has a neighboring screen in the direction of the corner. Another issue is that even when the corner barrier is disabled, it's more difficult to cross corners than edges. I think I know what is going on there and can fix things.
A possibly relevant merge request was started @ https://invent.kde.org/plasma/kwin/-/merge_requests/5444
(In reply to fanzhuyifan from comment #1) > Currently I feel that the corner barrier might be fundamentally incompatible > with this type of screen arrangement, and I don't have any good ideas aside > from decreasing the strength of the corner barrier in general. > > If I may ask, why would users want to arrange two screens diagonally? This > almost seems like an anti-usecase. I mainly use this arrangement when I'm testing multi-monitor behavior, but it is still a valid configuration. Unless this configuration is prohibited in the Display Configuration KCM, we should account for this layout. > Note that diagonal movement should still be possible with 3 or 4 displays > arranged around a shared corner, as long as the movement avoids that shared > corner. Needing to avoid a shared corner doesn't seem like good behavior to me. It's something that has to be discovered through trial and error and doesn't have a clear reason for working that way.
A possibly relevant merge request was started @ https://invent.kde.org/plasma/kwin/-/merge_requests/5448
Git commit b6d315705bd4c84fc73b9921813d585802d1122e by Yifan Zhu. Committed on 18/03/2024 at 16:19. Pushed by fanzhuyifan into branch 'master'. pointer_input: make edgeBarrier behavior consistent on corners The pointer should cross a corner as soon as the movement in the barrier zone exceeds barrierWidth. Previously horizontal and vertical movements were separately considered, which made corners harder to cross compared to edges even when the separate corner barrier was disabled. M +15 -13 src/pointer_input.cpp https://invent.kde.org/plasma/kwin/-/commit/b6d315705bd4c84fc73b9921813d585802d1122e