Created attachment 147290 [details] display scaling 200% and cursor size 48 displaying small cursor on gtk window. SUMMARY On a single 4k display on laptop, the cursor is scaled incorrectly in wayland gtk apps, it is smaller when it is over gtk app surfaces compared to rest of desktop. Noticed this issue since upgrade to plasma 5.23. Not sure if this is a bug with upgraded gtk library or plasma. Observed the following: 1) with 250% display scaling and cursor size of 24, The cursor is smaller in gtk apps. 2) with 200% display scaling and cursor size of 24, the issue is not present. Cursor size is constant in gtk apps, qt apps and plasma desktop 3) with 200% display scaling and cursor size of 48, the issue is again present, the cursor is smaller in gtk apps. STEPS TO REPRODUCE 1. Start kde wayland session. 2. Set display scaling to 250%. 3. Compare cursor sizes on regular desktop with that on native wayland gtk apps. OBSERVED RESULT Cursor sizes are smaller in gtk apps EXPECTED RESULT Cursor size should be same. SOFTWARE/OS VERSIONS Linux/KDE Plasma: (available in About System) KDE Plasma Version: 5.24.2 KDE Frameworks Version: 5.91.0 Qt Version: 5.15.2
Created attachment 147291 [details] correct cursor size for 200% scaling and cursor size 48
I am also running into this bug with kwin 5.24.5 on Fedora 36.
*** This bug has been marked as a duplicate of bug 459161 ***
Not quite a duplicate of Bug 459161; rather a sub-task of it given that it's an umbrella bug.
*** Bug 471001 has been marked as a duplicate of this bug. ***
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 448555 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
So there are three options here. 1. Wait until GTK gains support for the cursor-shape-v1 protocol 2. Patch all cursor themes in existence to have sizes for all possible scale factors (we just did this for KDE's Breeze cursors) 3. Automatically scale cursors as needed in KWin --- Downside of #1 is that it's up to toolkit developers outside of KDE. Downside of #2 is that it's up theme authors outside of KDE, and therefore really not feasible at all. Downsides of #3 include: - It's a hack/workaround due to lack of proper support for a public standard in other toolkits - Scaling cursors would introduce blurriness, so the result wouldn't be pixel-perfect in comparison to parts of the system written in toolkits that do implement the cursor-shape-v1 protocol, therefore it wouldn't actually fix the bug.
*** Bug 443661 has been marked as a duplicate of this bug. ***
Given that we have no good options available to fix this in KDE code, and that there's a clear path forward for the developers of the GTK and Electron toolkits, I think unfortunately we have to call this an upstream issue. I'll mention it on https://community.kde.org/Plasma/Wayland_Showstoppers.
(In reply to Nate Graham from comment #9) > Given that we have no good options available to fix this in KDE code, and > that there's a clear path forward for the developers of the GTK and Electron > toolkits, I think unfortunately we have to call this an upstream issue. I'll > mention it on https://community.kde.org/Plasma/Wayland_Showstoppers. This seems to be https://gitlab.gnome.org/GNOME/gtk/-/issues/5567
(In reply to Nate Graham from comment #7) > So there are three options here. > > 1. Wait until GTK gains support for the cursor-shape-v1 protocol > 2. Patch all cursor themes in existence to have sizes for all possible scale > factors (we just did this for KDE's Breeze cursors) > 3. Automatically scale cursors as needed in KWin > > --- > > Downside of #1 is that it's up to toolkit developers outside of KDE. > > Downside of #2 is that it's up theme authors outside of KDE, and therefore > really not feasible at all. > > Downsides of #3 include: > - It's a hack/workaround due to lack of proper support for a public standard > in other toolkits > - Scaling cursors would introduce blurriness, so the result wouldn't be > pixel-perfect in comparison to parts of the system written in toolkits that > do implement the cursor-shape-v1 protocol, therefore it wouldn't actually > fix the bug. Downside of #2 also: We patched Breeze cursors only for 24px. It won't work if the user selected a larger cursor size. (Unless we remove the ability to select cursor size in systemsettings) About #3: The cursor-shape-v1 protocol would have to scale cursors in kwin anyway, so the same code can be reused and yield same results. If we are to continue supporting X11 apps, and if we can't expect all Wayland apps beside KDE/GTK/Electron to use the cursor-shape-v1 protocol, then we have to implement this.
Ultimately I would also like to have KWin do something here, since it's not feasible to support every combination of cursor size and screen scale in the Breeze cursor theme--let alone every cursor theme in existence. Even if the result isn't perfect, having KWin upscale small pixmaps as needed would be better than having the cursor be the wrong size when passing over different UI elements in random-seeming apps. This seems like something we need a developer discussion about. With your understanding of this issue, would yo like to write something up at https://invent.kde.org/plasma/kwin/-/issues?
*** Bug 493583 has been marked as a duplicate of this bug. ***