Bug 448555 - [Wayland] Incorrect mouse sizing on mixed DPI displays and windows
Summary: [Wayland] Incorrect mouse sizing on mixed DPI displays and windows
Status: RESOLVED UPSTREAM
Alias: None
Product: kwin
Classification: Plasma
Component: wayland-generic (show other bugs)
Version: 5.23.90
Platform: Other Linux
: NOR normal
Target Milestone: ---
Assignee: KWin default assignee
URL:
Keywords: wayland
: 459146 (view as bug list)
Depends on:
Blocks: 459161
  Show dependency treegraph
 
Reported: 2022-01-15 21:46 UTC by indecisiveautomator
Modified: 2023-12-11 16:39 UTC (History)
10 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description indecisiveautomator 2022-01-15 21:46:44 UTC
SUMMARY
Mouse cursor size is inconsistent and incorrect when moving between scaled mixed DPI displays. On login by default the cursor is sized correctly, however moving to a mixed DPI display and moving back messes up the size. The size of the cursor is bigger than it should be (probably scaled up from the scaled monitor resolution) when on the desktop or in native Qt applications. In *Wayland* GTK applications (Firefox with Wayland enabled, Lutris), the cursor appears too small. When hovering over titlebars for native Qt applications, the cursor actually has the correct sizing, but this is not the case for Wayland GTK applications. In Xwayland applications, the mouse cursor is sized correctly (Steam).

The sizing of the cursor is set incorrectly on mixed DPI setups and is inconsistent between applications, but the inconsistent sizing is consistent across each display, mixed DPI or not - That is, the cursor will be too big and too small with the same behaviour on a normal non-scaled display and a scaled display. The cursor looks the same in each scenario where it is scaled incorrectly on my 150% scaled 4k monitor and my other 1080p monitors, so the behaviour is visible across my monitors, except in Wayland GTK applications where the cursor is sized correctly on 1080p displays.


STEPS TO REPRODUCE
I will describe the behaviour in three specific scenarios: using System Settings for a Qt native Wayland application, Lutris for a Wayland GTK application, and Steam for an Xwayland application.

In the body of the System Settings window, the cursor is displayed too big (https://i.imgur.com/S7KRtbN.png). In the titlebar of System Settings, the cursor is sized correctly (https://i.imgur.com/ZHEtQCw.png). This is true if I am on any of my 1080p displays or my 150% scaled 4k display (body: https://i.imgur.com/xJszhh2.png) (titlebar: https://i.imgur.com/dH9Hfsc.png).

In the body of Wayland GTK Lutris, the cursor is too small on my 150% scaled display (https://i.imgur.com/7qtVW6H.png). In the titebar of Lutris on the same display, the cursor is still sized incorrectly (https://i.imgur.com/u1zQAnD.png).

In the body of Wayland GTK Lutris on a standard, non-scaled display, the cursor is sized correctly (https://i.imgur.com/xaeagOE.png). In the titlebar of Lutris on the same display, the cursor is scaled correctly (https://i.imgur.com/oIdQHh0.png).

In the body and "titlebar" of Steam running Xwayland (it has no "titlebar" as such), the cursor is scaled correctly (https://i.imgur.com/fKyuF9C.png). This is true for both my 1080p display and my 150% scaled 4k display (scaled display: https://i.imgur.com/aBjyq6b.png). 

The cursor size is set incorrectly on the desktop too, as mentioned in the beginning of the bug report. Moving the cursor between the mixed DPI displays is what causes the scaling issue to occur, as on login the mouse cursor is set fine. It is set fine initially when moving to the mixed DPI display, and then too big when back on a non-scaled display, and then the incorrect size is kept (and correctly scaled) for the 4k display. Here is an example of how the mouse cursor looks on a 1080p display after the incorrect scaling (https://i.imgur.com/1cvOaxm.png) and on the 4k display after the incorrect scaling (https://i.imgur.com/3Wn2Pam.png).


OBSERVED RESULT
Cursor size gets set incorrectly when moving mouse between displays in a mixed DPI setup (a scaled display and other non-scaled displays). It is also incorrectly sized when moving between different types of applications (native Qt, Wayland GTK and Xwayland).


EXPECTED RESULT
Cursor sizing should be consistent between applications and displays, respecting the size chosen by the user.


SOFTWARE/OS VERSIONS
Linux/KDE Plasma: 5.16.0-arch1-1 (64bit)
KDE Plasma Version: 5.23.90
KDE Frameworks Version: 5.90
Qt Version: 5.15.2

ADDITIONAL INFORMATION
Plasma 5.24 seems to have fixed almost all of the Wayland mouse glitches, it would be a great step for multi-monitor and Wayland support if this was fixed in time for its full release!
Comment 1 David Edmundson 2022-01-19 15:10:55 UTC
*** Bug 446013 has been marked as a duplicate of this bug. ***
Comment 2 Sebastian Turzański 2022-02-11 13:33:59 UTC
I confirm the bug on latest plasma 5.24 in Opensuse with Firefox cursor beeing too small
Comment 3 Stephen Ackerman 2022-04-28 01:59:34 UTC
Confirmed

Debian Testing
Plasma 5.24.4
Frameworks 5.90.0
Qt 5.15.2
Radeon 6700XT
Comment 4 indecisiveautomator 2022-05-20 02:50:52 UTC
Mouse cursor still appears to resize itself improperly as described in the initial report in Plasma 5.24.90
Comment 5 tusooa 2022-06-13 03:15:09 UTC
I can confirm that on KWin 5.24.5, the cursor size is (Qt apps | Plasma) > window decorations > gtk apps
Comment 6 indecisiveautomator 2022-09-15 22:15:34 UTC
Still a problem in 5.26 Beta, but the incorrectly smaller mouse cursor looks crisper in some applications like Firefox interestingly.
Comment 7 Vlad Zahorodnii 2022-09-16 06:45:13 UTC

*** This bug has been marked as a duplicate of bug 459161 ***
Comment 8 tusooa 2022-09-16 14:11:52 UTC
(In reply to Vlad Zahorodnii from comment #7)
> 
> *** This bug has been marked as a duplicate of bug 459161 ***

I guess we should mark 459161 as a duplicate of this and not vice versa, as this one is reported earlier, and is more well-described, and has more discussion.
Comment 9 Vlad Zahorodnii 2022-09-19 07:54:24 UTC
(In reply to tusooa from comment #8)
> (In reply to Vlad Zahorodnii from comment #7)
> > 
> > *** This bug has been marked as a duplicate of bug 459161 ***
> 
> I guess we should mark 459161 as a duplicate of this and not vice versa, as
> this one is reported earlier, and is more well-described, and has more
> discussion.

459161 has an explanation why the bug is present, which won't be drowned in "can confirm" comments, and it has an easily searchable title. I see no reason to mark as dup vice versa.
Comment 10 Nate Graham 2023-01-17 16:32:07 UTC
Not quite a duplicate of Bug 459161; rather a sub-task of it given that it's an umbrella bug.
Comment 11 Nate Graham 2023-01-17 16:33:21 UTC
*** Bug 459146 has been marked as a duplicate of this bug. ***
Comment 12 Nate Graham 2023-12-11 16:20:16 UTC
Git commit 215941542b886b20d1364fefd8c28d733b96fc20 by Nate Graham, on behalf of Jin Liu.
Committed on 11/12/2023 at 17:20.
Pushed by ngraham into branch 'master'.

cursor: generate sizes corresponding to more global scales

I.e. 24px x (50% 75% 100% 125% 150% 175% 200% 225% 250% 275% 300%).

This should make Breeze cursors properly sized on Wayland (at least when
using those scale factors) in GTK3 and Electron apps, and any other apps
written in toolkits that don't implement the cursor-shape-v1 protocol.
Related: bug 451158

M  +-    --    cursors/Breeze/Breeze/cursors/alias
M  +-    --    cursors/Breeze/Breeze/cursors/all-scroll
M  +-    --    cursors/Breeze/Breeze/cursors/bottom_left_corner
M  +-    --    cursors/Breeze/Breeze/cursors/bottom_right_corner
M  +-    --    cursors/Breeze/Breeze/cursors/bottom_side
M  +-    --    cursors/Breeze/Breeze/cursors/cell
M  +-    --    cursors/Breeze/Breeze/cursors/center_ptr
M  +-    --    cursors/Breeze/Breeze/cursors/col-resize
M  +-    --    cursors/Breeze/Breeze/cursors/color-picker
M  +-    --    cursors/Breeze/Breeze/cursors/context-menu
M  +-    --    cursors/Breeze/Breeze/cursors/copy
M  +-    --    cursors/Breeze/Breeze/cursors/crosshair
M  +-    --    cursors/Breeze/Breeze/cursors/default
M  +-    --    cursors/Breeze/Breeze/cursors/dnd-move
M  +-    --    cursors/Breeze/Breeze/cursors/dnd-no-drop
M  +-    --    cursors/Breeze/Breeze/cursors/down-arrow
M  +-    --    cursors/Breeze/Breeze/cursors/draft
M  +-    --    cursors/Breeze/Breeze/cursors/fleur
M  +-    --    cursors/Breeze/Breeze/cursors/help
M  +-    --    cursors/Breeze/Breeze/cursors/left-arrow
M  +-    --    cursors/Breeze/Breeze/cursors/left_side
M  +-    --    cursors/Breeze/Breeze/cursors/no-drop
M  +-    --    cursors/Breeze/Breeze/cursors/not-allowed
M  +-    --    cursors/Breeze/Breeze/cursors/openhand
M  +-    --    cursors/Breeze/Breeze/cursors/pencil
M  +-    --    cursors/Breeze/Breeze/cursors/pirate
M  +-    --    cursors/Breeze/Breeze/cursors/pointer
M  +-    --    cursors/Breeze/Breeze/cursors/progress
M  +-    --    cursors/Breeze/Breeze/cursors/right-arrow
M  +-    --    cursors/Breeze/Breeze/cursors/right_ptr
M  +-    --    cursors/Breeze/Breeze/cursors/right_side
M  +-    --    cursors/Breeze/Breeze/cursors/row-resize
M  +-    --    cursors/Breeze/Breeze/cursors/size_bdiag
M  +-    --    cursors/Breeze/Breeze/cursors/size_fdiag
M  +-    --    cursors/Breeze/Breeze/cursors/size_hor
M  +-    --    cursors/Breeze/Breeze/cursors/size_ver
M  +-    --    cursors/Breeze/Breeze/cursors/text
M  +-    --    cursors/Breeze/Breeze/cursors/top_left_corner
M  +-    --    cursors/Breeze/Breeze/cursors/top_right_corner
M  +-    --    cursors/Breeze/Breeze/cursors/top_side
M  +-    --    cursors/Breeze/Breeze/cursors/up-arrow
M  +-    --    cursors/Breeze/Breeze/cursors/vertical-text
M  +-    --    cursors/Breeze/Breeze/cursors/wait
M  +-    --    cursors/Breeze/Breeze/cursors/wayland-cursor
M  +-    --    cursors/Breeze/Breeze/cursors/x-cursor
M  +-    --    cursors/Breeze/Breeze/cursors/zoom-in
M  +-    --    cursors/Breeze/Breeze/cursors/zoom-out
M  +25   -42   cursors/Breeze/build.sh
D  +-    --    cursors/Breeze/build/x1/alias.png
D  +-    --    cursors/Breeze/build/x1/all-scroll.png
D  +-    --    cursors/Breeze/build/x1/bottom_left_corner.png
D  +-    --    cursors/Breeze/build/x1/bottom_right_corner.png
D  +-    --    cursors/Breeze/build/x1/bottom_side.png
D  +-    --    cursors/Breeze/build/x1/cell.png
D  +-    --    cursors/Breeze/build/x1/center_ptr.png
D  +-    --    cursors/Breeze/build/x1/col-resize.png
D  +-    --    cursors/Breeze/build/x1/color-picker.png
D  +-    --    cursors/Breeze/build/x1/context-menu.png
D  +-    --    cursors/Breeze/build/x1/copy.png
D  +-    --    cursors/Breeze/build/x1/crosshair.png
D  +-    --    cursors/Breeze/build/x1/default.png
D  +-    --    cursors/Breeze/build/x1/dnd-move.png
D  +-    --    cursors/Breeze/build/x1/dnd-no-drop.png
D  +-    --    cursors/Breeze/build/x1/down-arrow.png
D  +-    --    cursors/Breeze/build/x1/draft.png
D  +-    --    cursors/Breeze/build/x1/fleur.png
D  +-    --    cursors/Breeze/build/x1/help.png
D  +-    --    cursors/Breeze/build/x1/left-arrow.png
D  +-    --    cursors/Breeze/build/x1/left_side.png
D  +-    --    cursors/Breeze/build/x1/no-drop.png
D  +-    --    cursors/Breeze/build/x1/not-allowed.png
D  +-    --    cursors/Breeze/build/x1/openhand.png
D  +-    --    cursors/Breeze/build/x1/pencil.png
D  +-    --    cursors/Breeze/build/x1/pirate.png
D  +-    --    cursors/Breeze/build/x1/pointer.png
D  +-    --    cursors/Breeze/build/x1/progress-01.png
D  +-    --    cursors/Breeze/build/x1/progress-02.png
D  +-    --    cursors/Breeze/build/x1/progress-03.png
D  +-    --    cursors/Breeze/build/x1/progress-04.png
D  +-    --    cursors/Breeze/build/x1/progress-05.png
D  +-    --    cursors/Breeze/build/x1/progress-06.png
D  +-    --    cursors/Breeze/build/x1/progress-07.png
D  +-    --    cursors/Breeze/build/x1/progress-08.png
D  +-    --    cursors/Breeze/build/x1/progress-09.png
D  +-    --    cursors/Breeze/build/x1/progress-10.png
D  +-    --    cursors/Breeze/build/x1/progress-11.png
D  +-    --    cursors/Breeze/build/x1/progress-12.png
D  +-    --    cursors/Breeze/build/x1/progress-13.png
D  +-    --    cursors/Breeze/build/x1/progress-14.png
D  +-    --    cursors/Breeze/build/x1/progress-15.png
D  +-    --    cursors/Breeze/build/x1/progress-16.png
D  +-    --    cursors/Breeze/build/x1/progress-17.png
D  +-    --    cursors/Breeze/build/x1/progress-18.png
D  +-    --    cursors/Breeze/build/x1/progress-19.png
D  +-    --    cursors/Breeze/build/x1/progress-20.png
D  +-    --    cursors/Breeze/build/x1/progress-21.png
D  +-    --    cursors/Breeze/build/x1/progress-22.png
D  +-    --    cursors/Breeze/build/x1/progress-23.png
D  +-    --    cursors/Breeze/build/x1/progress.png
D  +-    --    cursors/Breeze/build/x1/right-arrow.png
D  +-    --    cursors/Breeze/build/x1/right_ptr.png
D  +-    --    cursors/Breeze/build/x1/right_side.png
D  +-    --    cursors/Breeze/build/x1/row-resize.png
D  +-    --    cursors/Breeze/build/x1/size_bdiag.png
D  +-    --    cursors/Breeze/build/x1/size_fdiag.png
D  +-    --    cursors/Breeze/build/x1/size_hor.png
D  +-    --    cursors/Breeze/build/x1/size_ver.png
D  +-    --    cursors/Breeze/build/x1/text.png
D  +-    --    cursors/Breeze/build/x1/top_left_corner.png
D  +-    --    cursors/Breeze/build/x1/top_right_corner.png
D  +-    --    cursors/Breeze/build/x1/top_side.png
D  +-    --    cursors/Breeze/build/x1/up-arrow.png
D  +-    --    cursors/Breeze/build/x1/vertical-text.png
D  +-    --    cursors/Breeze/build/x1/wait-01.png
D  +-    --    cursors/Breeze/build/x1/wait-02.png
D  +-    --    cursors/Breeze/build/x1/wait-03.png
D  +-    --    cursors/Breeze/build/x1/wait-04.png
D  +-    --    cursors/Breeze/build/x1/wait-05.png
D  +-    --    cursors/Breeze/build/x1/wait-06.png
D  +-    --    cursors/Breeze/build/x1/wait-07.png
D  +-    --    cursors/Breeze/build/x1/wait-08.png
D  +-    --    cursors/Breeze/build/x1/wait-09.png
D  +-    --    cursors/Breeze/build/x1/wait-10.png
D  +-    --    cursors/Breeze/build/x1/wait-11.png
D  +-    --    cursors/Breeze/build/x1/wait-12.png
D  +-    --    cursors/Breeze/build/x1/wait-13.png
D  +-    --    cursors/Breeze/build/x1/wait-14.png
D  +-    --    cursors/Breeze/build/x1/wait-15.png
D  +-    --    cursors/Breeze/build/x1/wait-16.png
D  +-    --    cursors/Breeze/build/x1/wait-17.png
D  +-    --    cursors/Breeze/build/x1/wait-18.png
D  +-    --    cursors/Breeze/build/x1/wait-19.png
D  +-    --    cursors/Breeze/build/x1/wait-20.png
D  +-    --    cursors/Breeze/build/x1/wait-21.png
D  +-    --    cursors/Breeze/build/x1/wait-22.png
D  +-    --    cursors/Breeze/build/x1/wait-23.png
D  +-    --    cursors/Breeze/build/x1/wait.png
D  +-    --    cursors/Breeze/build/x1/wayland-cursor.png
D  +-    --    cursors/Breeze/build/x1/x-cursor.png
D  +-    --    cursors/Breeze/build/x1/zoom-in.png
D  +-    --    cursors/Breeze/build/x1/zoom-out.png
D  +-    --    cursors/Breeze/build/x1_5/alias.png
D  +-    --    cursors/Breeze/build/x1_5/all-scroll.png
D  +-    --    cursors/Breeze/build/x1_5/bottom_left_corner.png
D  +-    --    cursors/Breeze/build/x1_5/bottom_right_corner.png
D  +-    --    cursors/Breeze/build/x1_5/bottom_side.png
D  +-    --    cursors/Breeze/build/x1_5/cell.png
D  +-    --    cursors/Breeze/build/x1_5/center_ptr.png
D  +-    --    cursors/Breeze/build/x1_5/col-resize.png
D  +-    --    cursors/Breeze/build/x1_5/color-picker.png
D  +-    --    cursors/Breeze/build/x1_5/context-menu.png
D  +-    --    cursors/Breeze/build/x1_5/copy.png
D  +-    --    cursors/Breeze/build/x1_5/crosshair.png
D  +-    --    cursors/Breeze/build/x1_5/default.png
D  +-    --    cursors/Breeze/build/x1_5/dnd-move.png
D  +-    --    cursors/Breeze/build/x1_5/dnd-no-drop.png
D  +-    --    cursors/Breeze/build/x1_5/down-arrow.png
D  +-    --    cursors/Breeze/build/x1_5/draft.png
D  +-    --    cursors/Breeze/build/x1_5/fleur.png
D  +-    --    cursors/Breeze/build/x1_5/help.png
D  +-    --    cursors/Breeze/build/x1_5/left-arrow.png
D  +-    --    cursors/Breeze/build/x1_5/left_side.png
D  +-    --    cursors/Breeze/build/x1_5/no-drop.png
D  +-    --    cursors/Breeze/build/x1_5/not-allowed.png
D  +-    --    cursors/Breeze/build/x1_5/openhand.png
D  +-    --    cursors/Breeze/build/x1_5/pencil.png
D  +-    --    cursors/Breeze/build/x1_5/pirate.png
D  +-    --    cursors/Breeze/build/x1_5/pointer.png
D  +-    --    cursors/Breeze/build/x1_5/progress-01.png
D  +-    --    cursors/Breeze/build/x1_5/progress-02.png
D  +-    --    cursors/Breeze/build/x1_5/progress-03.png
D  +-    --    cursors/Breeze/build/x1_5/progress-04.png
D  +-    --    cursors/Breeze/build/x1_5/progress-05.png
D  +-    --    cursors/Breeze/build/x1_5/progress-06.png
D  +-    --    cursors/Breeze/build/x1_5/progress-07.png
D  +-    --    cursors/Breeze/build/x1_5/progress-08.png
D  +-    --    cursors/Breeze/build/x1_5/progress-09.png
D  +-    --    cursors/Breeze/build/x1_5/progress-10.png
D  +-    --    cursors/Breeze/build/x1_5/progress-11.png
D  +-    --    cursors/Breeze/build/x1_5/progress-12.png
D  +-    --    cursors/Breeze/build/x1_5/progress-13.png
D  +-    --    cursors/Breeze/build/x1_5/progress-14.png
D  +-    --    cursors/Breeze/build/x1_5/progress-15.png
D  +-    --    cursors/Breeze/build/x1_5/progress-16.png
D  +-    --    cursors/Breeze/build/x1_5/progress-17.png
D  +-    --    cursors/Breeze/build/x1_5/progress-18.png
D  +-    --    cursors/Breeze/build/x1_5/progress-19.png
D  +-    --    cursors/Breeze/build/x1_5/progress-20.png
D  +-    --    cursors/Breeze/build/x1_5/progress-21.png
D  +-    --    cursors/Breeze/build/x1_5/progress-22.png
D  +-    --    cursors/Breeze/build/x1_5/progress-23.png
D  +-    --    cursors/Breeze/build/x1_5/progress.png
D  +-    --    cursors/Breeze/build/x1_5/right-arrow.png
D  +-    --    cursors/Breeze/build/x1_5/right_ptr.png
D  +-    --    cursors/Breeze/build/x1_5/right_side.png
D  +-    --    cursors/Breeze/build/x1_5/row-resize.png
D  +-    --    cursors/Breeze/build/x1_5/size_bdiag.png
D  +-    --    cursors/Breeze/build/x1_5/size_fdiag.png
D  +-    --    cursors/Breeze/build/x1_5/size_hor.png
D  +-    --    cursors/Breeze/build/x1_5/size_ver.png
D  +-    --    cursors/Breeze/build/x1_5/text.png
D  +-    --    cursors/Breeze/build/x1_5/top_left_corner.png
D  +-    --    cursors/Breeze/build/x1_5/top_right_corner.png
D  +-    --    cursors/Breeze/build/x1_5/top_side.png
D  +-    --    cursors/Breeze/build/x1_5/up-arrow.png
D  +-    --    cursors/Breeze/build/x1_5/vertical-text.png
D  +-    --    cursors/Breeze/build/x1_5/wait-01.png
D  +-    --    cursors/Breeze/build/x1_5/wait-02.png
D  +-    --    cursors/Breeze/build/x1_5/wait-03.png
D  +-    --    cursors/Breeze/build/x1_5/wait-04.png
D  +-    --    cursors/Breeze/build/x1_5/wait-05.png
D  +-    --    cursors/Breeze/build/x1_5/wait-06.png
D  +-    --    cursors/Breeze/build/x1_5/wait-07.png
D  +-    --    cursors/Breeze/build/x1_5/wait-08.png
D  +-    --    cursors/Breeze/build/x1_5/wait-09.png
D  +-    --    cursors/Breeze/build/x1_5/wait-10.png
D  +-    --    cursors/Breeze/build/x1_5/wait-11.png
D  +-    --    cursors/Breeze/build/x1_5/wait-12.png
D  +-    --    cursors/Breeze/build/x1_5/wait-13.png
D  +-    --    cursors/Breeze/build/x1_5/wait-14.png
D  +-    --    cursors/Breeze/build/x1_5/wait-15.png
D  +-    --    cursors/Breeze/build/x1_5/wait-16.png
D  +-    --    cursors/Breeze/build/x1_5/wait-17.png
D  +-    --    cursors/Breeze/build/x1_5/wait-18.png
D  +-    --    cursors/Breeze/build/x1_5/wait-19.png
D  +-    --    cursors/Breeze/build/x1_5/wait-20.png
D  +-    --    cursors/Breeze/build/x1_5/wait-21.png
D  +-    --    cursors/Breeze/build/x1_5/wait-22.png
D  +-    --    cursors/Breeze/build/x1_5/wait-23.png
D  +-    --    cursors/Breeze/build/x1_5/wait.png
D  +-    --    cursors/Breeze/build/x1_5/wayland-cursor.png
D  +-    --    cursors/Breeze/build/x1_5/x-cursor.png
D  +-    --    cursors/Breeze/build/x1_5/zoom-in.png
D  +-    --    cursors/Breeze/build/x1_5/zoom-out.png
D  +-    --    cursors/Breeze/build/x2/alias.png
D  +-    --    cursors/Breeze/build/x2/all-scroll.png
D  +-    --    cursors/Breeze/build/x2/bottom_left_corner.png
D  +-    --    cursors/Breeze/build/x2/bottom_right_corner.png
D  +-    --    cursors/Breeze/build/x2/bottom_side.png
D  +-    --    cursors/Breeze/build/x2/cell.png
D  +-    --    cursors/Breeze/build/x2/center_ptr.png
D  +-    --    cursors/Breeze/build/x2/col-resize.png
D  +-    --    cursors/Breeze/build/x2/color-picker.png
D  +-    --    cursors/Breeze/build/x2/context-menu.png
D  +-    --    cursors/Breeze/build/x2/copy.png
D  +-    --    cursors/Breeze/build/x2/crosshair.png
D  +-    --    cursors/Breeze/build/x2/default.png
D  +-    --    cursors/Breeze/build/x2/dnd-move.png
D  +-    --    cursors/Breeze/build/x2/dnd-no-drop.png
D  +-    --    cursors/Breeze/build/x2/down-arrow.png
D  +-    --    cursors/Breeze/build/x2/draft.png
D  +-    --    cursors/Breeze/build/x2/fleur.png
D  +-    --    cursors/Breeze/build/x2/help.png
D  +-    --    cursors/Breeze/build/x2/left-arrow.png
D  +-    --    cursors/Breeze/build/x2/left_side.png
D  +-    --    cursors/Breeze/build/x2/no-drop.png
D  +-    --    cursors/Breeze/build/x2/not-allowed.png
D  +-    --    cursors/Breeze/build/x2/openhand.png
D  +-    --    cursors/Breeze/build/x2/pencil.png
D  +-    --    cursors/Breeze/build/x2/pirate.png
D  +-    --    cursors/Breeze/build/x2/pointer.png
D  +-    --    cursors/Breeze/build/x2/progress-01.png
D  +-    --    cursors/Breeze/build/x2/progress-02.png
D  +-    --    cursors/Breeze/build/x2/progress-03.png
D  +-    --    cursors/Breeze/build/x2/progress-04.png
D  +-    --    cursors/Breeze/build/x2/progress-05.png
D  +-    --    cursors/Breeze/build/x2/progress-06.png
D  +-    --    cursors/Breeze/build/x2/progress-07.png
D  +-    --    cursors/Breeze/build/x2/progress-08.png
D  +-    --    cursors/Breeze/build/x2/progress-09.png
D  +-    --    cursors/Breeze/build/x2/progress-10.png
D  +-    --    cursors/Breeze/build/x2/progress-11.png
D  +-    --    cursors/Breeze/build/x2/progress-12.png
D  +-    --    cursors/Breeze/build/x2/progress-13.png
D  +-    --    cursors/Breeze/build/x2/progress-14.png
D  +-    --    cursors/Breeze/build/x2/progress-15.png
D  +-    --    cursors/Breeze/build/x2/progress-16.png
D  +-    --    cursors/Breeze/build/x2/progress-17.png
D  +-    --    cursors/Breeze/build/x2/progress-18.png
D  +-    --    cursors/Breeze/build/x2/progress-19.png
D  +-    --    cursors/Breeze/build/x2/progress-20.png
D  +-    --    cursors/Breeze/build/x2/progress-21.png
D  +-    --    cursors/Breeze/build/x2/progress-22.png
D  +-    --    cursors/Breeze/build/x2/progress-23.png
D  +-    --    cursors/Breeze/build/x2/progress.png
D  +-    --    cursors/Breeze/build/x2/right-arrow.png
D  +-    --    cursors/Breeze/build/x2/right_ptr.png
D  +-    --    cursors/Breeze/build/x2/right_side.png
D  +-    --    cursors/Breeze/build/x2/row-resize.png
D  +-    --    cursors/Breeze/build/x2/size_bdiag.png
D  +-    --    cursors/Breeze/build/x2/size_fdiag.png
D  +-    --    cursors/Breeze/build/x2/size_hor.png
D  +-    --    cursors/Breeze/build/x2/size_ver.png
D  +-    --    cursors/Breeze/build/x2/text.png
D  +-    --    cursors/Breeze/build/x2/top_left_corner.png
D  +-    --    cursors/Breeze/build/x2/top_right_corner.png
D  +-    --    cursors/Breeze/build/x2/top_side.png
D  +-    --    cursors/Breeze/build/x2/up-arrow.png
D  +-    --    cursors/Breeze/build/x2/vertical-text.png
D  +-    --    cursors/Breeze/build/x2/wait-01.png
D  +-    --    cursors/Breeze/build/x2/wait-02.png
D  +-    --    cursors/Breeze/build/x2/wait-03.png
D  +-    --    cursors/Breeze/build/x2/wait-04.png
D  +-    --    cursors/Breeze/build/x2/wait-05.png
D  +-    --    cursors/Breeze/build/x2/wait-06.png
D  +-    --    cursors/Breeze/build/x2/wait-07.png
D  +-    --    cursors/Breeze/build/x2/wait-08.png
D  +-    --    cursors/Breeze/build/x2/wait-09.png
D  +-    --    cursors/Breeze/build/x2/wait-10.png
D  +-    --    cursors/Breeze/build/x2/wait-11.png
D  +-    --    cursors/Breeze/build/x2/wait-12.png
D  +-    --    cursors/Breeze/build/x2/wait-13.png
D  +-    --    cursors/Breeze/build/x2/wait-14.png
D  +-    --    cursors/Breeze/build/x2/wait-15.png
D  +-    --    cursors/Breeze/build/x2/wait-16.png
D  +-    --    cursors/Breeze/build/x2/wait-17.png
D  +-    --    cursors/Breeze/build/x2/wait-18.png
D  +-    --    cursors/Breeze/build/x2/wait-19.png
D  +-    --    cursors/Breeze/build/x2/wait-20.png
D  +-    --    cursors/Breeze/build/x2/wait-21.png
D  +-    --    cursors/Breeze/build/x2/wait-22.png
D  +-    --    cursors/Breeze/build/x2/wait-23.png
D  +-    --    cursors/Breeze/build/x2/wait.png
D  +-    --    cursors/Breeze/build/x2/wayland-cursor.png
D  +-    --    cursors/Breeze/build/x2/x-cursor.png
D  +-    --    cursors/Breeze/build/x2/zoom-in.png
D  +-    --    cursors/Breeze/build/x2/zoom-out.png
A  +25   -0    cursors/Breeze/scale_cursor
M  +0    -2    cursors/Breeze/src/config/alias.cursor
M  +0    -2    cursors/Breeze/src/config/all-scroll.cursor
M  +0    -2    cursors/Breeze/src/config/bottom_left_corner.cursor
M  +0    -2    cursors/Breeze/src/config/bottom_right_corner.cursor
M  +0    -2    cursors/Breeze/src/config/bottom_side.cursor
M  +0    -2    cursors/Breeze/src/config/cell.cursor
M  +0    -2    cursors/Breeze/src/config/center_ptr.cursor
M  +0    -2    cursors/Breeze/src/config/col-resize.cursor
M  +0    -2    cursors/Breeze/src/config/color-picker.cursor
M  +0    -2    cursors/Breeze/src/config/context-menu.cursor
M  +0    -2    cursors/Breeze/src/config/copy.cursor
M  +0    -2    cursors/Breeze/src/config/crosshair.cursor
M  +0    -2    cursors/Breeze/src/config/default.cursor
M  +0    -2    cursors/Breeze/src/config/dnd-move.cursor
M  +0    -2    cursors/Breeze/src/config/dnd-no-drop.cursor
M  +0    -2    cursors/Breeze/src/config/down-arrow.cursor
M  +0    -2    cursors/Breeze/src/config/draft.cursor
M  +0    -2    cursors/Breeze/src/config/fleur.cursor
M  +0    -2    cursors/Breeze/src/config/help.cursor
M  +0    -2    cursors/Breeze/src/config/left-arrow.cursor
M  +0    -2    cursors/Breeze/src/config/left_side.cursor
M  +0    -2    cursors/Breeze/src/config/no-drop.cursor
M  +0    -2    cursors/Breeze/src/config/not-allowed.cursor
M  +0    -2    cursors/Breeze/src/config/openhand.cursor
M  +0    -2    cursors/Breeze/src/config/pencil.cursor
M  +0    -2    cursors/Breeze/src/config/pirate.cursor
M  +0    -2    cursors/Breeze/src/config/pointer.cursor
M  +0    -46   cursors/Breeze/src/config/progress.cursor
M  +0    -2    cursors/Breeze/src/config/right-arrow.cursor
M  +0    -2    cursors/Breeze/src/config/right_ptr.cursor
M  +0    -2    cursors/Breeze/src/config/right_side.cursor
M  +0    -2    cursors/Breeze/src/config/row-resize.cursor
M  +0    -2    cursors/Breeze/src/config/size_bdiag.cursor
M  +0    -2    cursors/Breeze/src/config/size_fdiag.cursor
M  +0    -2    cursors/Breeze/src/config/size_hor.cursor
M  +0    -2    cursors/Breeze/src/config/size_ver.cursor
M  +0    -2    cursors/Breeze/src/config/text.cursor
M  +0    -2    cursors/Breeze/src/config/top_left_corner.cursor
M  +0    -2    cursors/Breeze/src/config/top_right_corner.cursor
M  +0    -2    cursors/Breeze/src/config/top_side.cursor
M  +0    -2    cursors/Breeze/src/config/up-arrow.cursor
M  +0    -2    cursors/Breeze/src/config/vertical-text.cursor
M  +0    -46   cursors/Breeze/src/config/wait.cursor
M  +0    -2    cursors/Breeze/src/config/wayland-cursor.cursor
M  +0    -2    cursors/Breeze/src/config/x-cursor.cursor
M  +0    -2    cursors/Breeze/src/config/zoom-in.cursor
M  +0    -2    cursors/Breeze/src/config/zoom-out.cursor
M  +-    --    cursors/Breeze_Light/Breeze_Light/cursors/alias
M  +-    --    cursors/Breeze_Light/Breeze_Light/cursors/all-scroll
M  +-    --    cursors/Breeze_Light/Breeze_Light/cursors/bottom_left_corner
M  +-    --    cursors/Breeze_Light/Breeze_Light/cursors/bottom_right_corner
M  +-    --    cursors/Breeze_Light/Breeze_Light/cursors/bottom_side
M  +-    --    cursors/Breeze_Light/Breeze_Light/cursors/cell
M  +-    --    cursors/Breeze_Light/Breeze_Light/cursors/center_ptr
M  +-    --    cursors/Breeze_Light/Breeze_Light/cursors/col-resize
M  +-    --    cursors/Breeze_Light/Breeze_Light/cursors/color-picker
M  +-    --    cursors/Breeze_Light/Breeze_Light/cursors/context-menu
M  +-    --    cursors/Breeze_Light/Breeze_Light/cursors/copy
M  +-    --    cursors/Breeze_Light/Breeze_Light/cursors/crosshair
M  +-    --    cursors/Breeze_Light/Breeze_Light/cursors/default
M  +-    --    cursors/Breeze_Light/Breeze_Light/cursors/dnd-move
M  +-    --    cursors/Breeze_Light/Breeze_Light/cursors/dnd-no-drop
M  +-    --    cursors/Breeze_Light/Breeze_Light/cursors/down-arrow
M  +-    --    cursors/Breeze_Light/Breeze_Light/cursors/draft
M  +-    --    cursors/Breeze_Light/Breeze_Light/cursors/fleur
M  +-    --    cursors/Breeze_Light/Breeze_Light/cursors/help
M  +-    --    cursors/Breeze_Light/Breeze_Light/cursors/left-arrow
M  +-    --    cursors/Breeze_Light/Breeze_Light/cursors/left_side
M  +-    --    cursors/Breeze_Light/Breeze_Light/cursors/no-drop
M  +-    --    cursors/Breeze_Light/Breeze_Light/cursors/not-allowed
M  +-    --    cursors/Breeze_Light/Breeze_Light/cursors/openhand
M  +-    --    cursors/Breeze_Light/Breeze_Light/cursors/pencil
M  +-    --    cursors/Breeze_Light/Breeze_Light/cursors/pirate
M  +-    --    cursors/Breeze_Light/Breeze_Light/cursors/pointer
M  +-    --    cursors/Breeze_Light/Breeze_Light/cursors/progress
M  +-    --    cursors/Breeze_Light/Breeze_Light/cursors/right-arrow
M  +-    --    cursors/Breeze_Light/Breeze_Light/cursors/right_ptr
M  +-    --    cursors/Breeze_Light/Breeze_Light/cursors/right_side
M  +-    --    cursors/Breeze_Light/Breeze_Light/cursors/row-resize
M  +-    --    cursors/Breeze_Light/Breeze_Light/cursors/size_bdiag
M  +-    --    cursors/Breeze_Light/Breeze_Light/cursors/size_fdiag
M  +-    --    cursors/Breeze_Light/Breeze_Light/cursors/size_hor
M  +-    --    cursors/Breeze_Light/Breeze_Light/cursors/size_ver
M  +-    --    cursors/Breeze_Light/Breeze_Light/cursors/text
M  +-    --    cursors/Breeze_Light/Breeze_Light/cursors/top_left_corner
M  +-    --    cursors/Breeze_Light/Breeze_Light/cursors/top_right_corner
M  +-    --    cursors/Breeze_Light/Breeze_Light/cursors/top_side
M  +-    --    cursors/Breeze_Light/Breeze_Light/cursors/up-arrow
M  +-    --    cursors/Breeze_Light/Breeze_Light/cursors/vertical-text
M  +-    --    cursors/Breeze_Light/Breeze_Light/cursors/wait
M  +-    --    cursors/Breeze_Light/Breeze_Light/cursors/wayland-cursor
M  +-    --    cursors/Breeze_Light/Breeze_Light/cursors/x-cursor
M  +-    --    cursors/Breeze_Light/Breeze_Light/cursors/zoom-in
M  +-    --    cursors/Breeze_Light/Breeze_Light/cursors/zoom-out
T  +1    -150  cursors/Breeze_Light/build.sh
A  +1    -0    cursors/Breeze_Light/scale_cursor
M  +0    -2    cursors/Breeze_Light/src/config/alias.cursor
M  +0    -2    cursors/Breeze_Light/src/config/all-scroll.cursor
M  +0    -2    cursors/Breeze_Light/src/config/bottom_left_corner.cursor
M  +0    -2    cursors/Breeze_Light/src/config/bottom_right_corner.cursor
M  +0    -2    cursors/Breeze_Light/src/config/bottom_side.cursor
M  +0    -2    cursors/Breeze_Light/src/config/cell.cursor
M  +0    -2    cursors/Breeze_Light/src/config/center_ptr.cursor
M  +0    -2    cursors/Breeze_Light/src/config/col-resize.cursor
M  +0    -2    cursors/Breeze_Light/src/config/color-picker.cursor
M  +0    -2    cursors/Breeze_Light/src/config/context-menu.cursor
M  +0    -2    cursors/Breeze_Light/src/config/copy.cursor
M  +0    -2    cursors/Breeze_Light/src/config/crosshair.cursor
M  +0    -2    cursors/Breeze_Light/src/config/default.cursor
M  +0    -2    cursors/Breeze_Light/src/config/dnd-move.cursor
M  +0    -2    cursors/Breeze_Light/src/config/dnd-no-drop.cursor
M  +0    -2    cursors/Breeze_Light/src/config/down-arrow.cursor
M  +0    -2    cursors/Breeze_Light/src/config/draft.cursor
M  +0    -2    cursors/Breeze_Light/src/config/fleur.cursor
M  +0    -2    cursors/Breeze_Light/src/config/help.cursor
M  +0    -2    cursors/Breeze_Light/src/config/left-arrow.cursor
M  +0    -2    cursors/Breeze_Light/src/config/left_side.cursor
M  +0    -2    cursors/Breeze_Light/src/config/no-drop.cursor
M  +0    -2    cursors/Breeze_Light/src/config/not-allowed.cursor
M  +0    -2    cursors/Breeze_Light/src/config/openhand.cursor
M  +0    -2    cursors/Breeze_Light/src/config/pencil.cursor
M  +0    -2    cursors/Breeze_Light/src/config/pirate.cursor
M  +0    -2    cursors/Breeze_Light/src/config/pointer.cursor
M  +0    -46   cursors/Breeze_Light/src/config/progress.cursor
M  +0    -2    cursors/Breeze_Light/src/config/right-arrow.cursor
M  +0    -2    cursors/Breeze_Light/src/config/right_ptr.cursor
M  +0    -2    cursors/Breeze_Light/src/config/right_side.cursor
M  +0    -2    cursors/Breeze_Light/src/config/row-resize.cursor
M  +0    -2    cursors/Breeze_Light/src/config/size_bdiag.cursor
M  +0    -2    cursors/Breeze_Light/src/config/size_fdiag.cursor
M  +0    -2    cursors/Breeze_Light/src/config/size_hor.cursor
M  +0    -2    cursors/Breeze_Light/src/config/size_ver.cursor
M  +0    -2    cursors/Breeze_Light/src/config/text.cursor
M  +0    -2    cursors/Breeze_Light/src/config/top_left_corner.cursor
M  +0    -2    cursors/Breeze_Light/src/config/top_right_corner.cursor
M  +0    -2    cursors/Breeze_Light/src/config/top_side.cursor
M  +0    -2    cursors/Breeze_Light/src/config/up-arrow.cursor
M  +0    -2    cursors/Breeze_Light/src/config/vertical-text.cursor
M  +0    -46   cursors/Breeze_Light/src/config/wait.cursor
M  +0    -2    cursors/Breeze_Light/src/config/wayland-cursor.cursor
M  +0    -2    cursors/Breeze_Light/src/config/x-cursor.cursor
M  +0    -2    cursors/Breeze_Light/src/config/zoom-in.cursor
M  +0    -2    cursors/Breeze_Light/src/config/zoom-out.cursor

https://invent.kde.org/plasma/breeze/-/commit/215941542b886b20d1364fefd8c28d733b96fc20
Comment 13 Nate Graham 2023-12-11 16:39:23 UTC
Armed with greater understanding of how cursor theming and sizing works on Wayland, I re-tested the issues described here and found a variety of improvements. Replies inline:

> In the body of the System Settings window, the cursor is displayed too big
> (https://i.imgur.com/S7KRtbN.png). In the titlebar of System Settings, the
> cursor is sized correctly (https://i.imgur.com/ZHEtQCw.png). This is true if
> I am on any of my 1080p displays or my 150% scaled 4k display (body:
> https://i.imgur.com/xJszhh2.png) (titlebar: https://i.imgur.com/dH9Hfsc.png).
This is fixed in Qt 6 now.


> In the body of Wayland GTK Lutris, the cursor is too small on my 150% scaled
> display (https://i.imgur.com/7qtVW6H.png). In the titebar of Lutris on the
> same display, the cursor is still sized incorrectly
> (https://i.imgur.com/u1zQAnD.png).
This is Bug 451158 which is an issue in GTK (it doesn't support the cursor-shape-v1 protocol).


> In the body of Wayland GTK Lutris on a standard, non-scaled display, the
> cursor is sized correctly (https://i.imgur.com/xaeagOE.png). In the titlebar
> of Lutris on the same display, the cursor is scaled correctly
> (https://i.imgur.com/oIdQHh0.png).
Cool, working correctly at 100% scale is expected  here.

> In the body and "titlebar" of Steam running Xwayland (it has no "titlebar"
> as such), the cursor is scaled correctly (https://i.imgur.com/fKyuF9C.png).
> This is true for both my 1080p display and my 150% scaled 4k display (scaled
> display: https://i.imgur.com/aBjyq6b.png). 
Working correctly at 100% scale is expected here too.

> The cursor size is set incorrectly on the desktop too, as mentioned in the
> beginning of the bug report. Moving the cursor between the mixed DPI
> displays is what causes the scaling issue to occur, as on login the mouse
> cursor is set fine. It is set fine initially when moving to the mixed DPI
> display, and then too big when back on a non-scaled display, and then the
> incorrect size is kept (and correctly scaled) for the 4k display. Here is an
> example of how the mouse cursor looks on a 1080p display after the incorrect
> scaling (https://i.imgur.com/1cvOaxm.png) and on the 4k display after the
> incorrect scaling (https://i.imgur.com/3Wn2Pam.png).
This is also fixed in Qt 6.

Since everything is fixed on our side or unfixed-but-upstream, it's time to close this out!