Bug 511075 - Mouse cursor stuck with Wine-Wayland in different games (e.g. with Proton GE)
Summary: Mouse cursor stuck with Wine-Wayland in different games (e.g. with Proton GE)
Status: RESOLVED FIXED
Alias: None
Product: kwin
Classification: Plasma
Component: input (other bugs)
Version First Reported In: 6.5.0
Platform: Other Linux
: NOR normal
Target Milestone: ---
Assignee: KWin default assignee
URL:
Keywords: regression
Depends on:
Blocks:
 
Reported: 2025-10-25 09:05 UTC by bugreports61
Modified: 2025-10-30 17:55 UTC (History)
11 users (show)

See Also:
Latest Commit:
Version Fixed/Implemented In: 6.5.2
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description bugreports61 2025-10-25 09:05:02 UTC
SUMMARY
Since upgrading to plasma 6.5, the mouse cursor is stuck in games when playing with wine wayland enabled.
This is a regressions, as it does not happen with latest plasma 6.4 .

STEPS TO REPRODUCE
1.  Start a game with Proton-GE with PROTON_ENABLE_WAYLAND=1 ( i used Horizon Zero Dawn Remaster, Gears 5, 

OBSERVED RESULT
1. You can not move the mouse cursor during loading screens, mouse cursor stuck
2. The mouse works in the game menu
3. The mouse cursor is stuck in game


EXPECTED RESULT
The mouse cursor fully works like it does in latest plasma 6.4

SOFTWARE/OS VERSIONS
WARNING: radv is not a conformant Vulkan implementation, testing use only.
Operating System: EndeavourOS 
KDE Plasma Version: 6.5.0
KDE Frameworks Version: 6.19.0
Qt Version: 6.10.0
Kernel Version: 6.17.3-273-tkg-eevdf (64-bit)
Graphics Platform: Wayland
Processors: 16 × AMD Ryzen 7 9800X3D 8-Core Processor
Memory: 48 GiB of RAM (46.6 GiB usable)
Graphics Processor: AMD Radeon RX 9070 

ADDITIONAL INFORMATION

Another use facing the same issue: https://discuss.kde.org/t/wine-wayland-bug-on-new-6-5/40874
Using export KWIN_FORCE_SW_CURSOR=1 does not solve the issue.

Tried to downgrade to kwin 6.4.5 as a workaround, but can not due to missing symbols for kwin_kwayland after dowgrading kwin, plasma-activities and plasma-activities-stats. Anything else i would need to downgrad ?

Many thx
Christian
Comment 1 joshuargiacone 2025-10-25 16:05:38 UTC
(In reply to bugreports61 from comment #0)
> SUMMARY
> Since upgrading to plasma 6.5, the mouse cursor is stuck in games when
> playing with wine wayland enabled.
> This is a regressions, as it does not happen with latest plasma 6.4 .
> 
> STEPS TO REPRODUCE
> 1.  Start a game with Proton-GE with PROTON_ENABLE_WAYLAND=1 ( i used
> Horizon Zero Dawn Remaster, Gears 5, 
> 
> OBSERVED RESULT
> 1. You can not move the mouse cursor during loading screens, mouse cursor
> stuck
> 2. The mouse works in the game menu
> 3. The mouse cursor is stuck in game
> 
> 
> EXPECTED RESULT
> The mouse cursor fully works like it does in latest plasma 6.4
> 
> SOFTWARE/OS VERSIONS
> WARNING: radv is not a conformant Vulkan implementation, testing use only.
> Operating System: EndeavourOS 
> KDE Plasma Version: 6.5.0
> KDE Frameworks Version: 6.19.0
> Qt Version: 6.10.0
> Kernel Version: 6.17.3-273-tkg-eevdf (64-bit)
> Graphics Platform: Wayland
> Processors: 16 × AMD Ryzen 7 9800X3D 8-Core Processor
> Memory: 48 GiB of RAM (46.6 GiB usable)
> Graphics Processor: AMD Radeon RX 9070 
> 
> ADDITIONAL INFORMATION
> 
> Another use facing the same issue:
> https://discuss.kde.org/t/wine-wayland-bug-on-new-6-5/40874
> Using export KWIN_FORCE_SW_CURSOR=1 does not solve the issue.
> 
> Tried to downgrade to kwin 6.4.5 as a workaround, but can not due to missing
> symbols for kwin_kwayland after dowgrading kwin, plasma-activities and
> plasma-activities-stats. Anything else i would need to downgrad ?
> 
> Many thx
> Christian

I can concur the same issue using both mesa 25.2.5 and mesa-git
Comment 2 Błażej Szczygieł 2025-10-26 18:18:52 UTC
I have the same issue. Alt-tab to a different window and going back to the game workarounds the issue (cursor will finally disappear).
Comment 3 Soup 2025-10-27 01:59:19 UTC
+1, can reproduce on NixOS unstable, seems to be games that set a custom cursor shape, I was able to reproduce in Deadlock as well as Lethal Company, but not Ultrakill (which does not use a custom cursor) when using wine wayland. It is also worth noting LC and Ultrakill are both Unity games while Deadlock uses Source 2.
Comment 4 Esvs 2025-10-27 07:29:58 UTC
Same issue here. Affected games: The Outer Worlds 2, Hollow Knight Silksong, Throne and Liberty.

Basically whenever a game assigns a custom shape cursor and tries to hide it (due to "action mode" for example) - cursor does not disappear. It stays visible on the screen, with last-assigned-shape and with last-known-coordinates. Alt-tabbing (or using any other way to swap active window back and forth) hides cursor.

Operating System: CachyOS Linux 
KDE Plasma Version: 6.5.0
KDE Frameworks Version: 6.19.0
Qt Version: 6.10.0
Kernel Version: 6.17.5-2-cachyos (64-bit)
Graphics Platform: Wayland
Processors: 12 × AMD Ryzen 5 7600X 6-Core Processor
Memory: 32 GiB of RAM (30,6 GiB usable)
Graphics Processor 1: AMD Radeon RX 6950 XT
Graphics Processor 2: AMD Radeon Graphics
Manufacturer: ASUS
Comment 5 pcrosa 2025-10-27 12:39:14 UTC
Same issue.  Cursor gets stuck occasionally in Wine-Wayland games.
Comment 6 pcrosa 2025-10-27 12:50:34 UTC
Sorry forgot to add my system specs
Operating System: openSUSE TW
KDE Plasma Version: 6.5.0
KDE Frameworks Version: 6.19.0
Qt Version: 6.10.0
Kernel Version: 6.17.4-1-default (64-bit)
Graphics Platform: Wayland
Processors: AMD Ryzen 5 5800x3d
Memory: 32 GiB of RAM
Graphics Processor 1: Nvidia 4070 Super 580.95.05 closed driver
Comment 7 stef 2025-10-27 17:22:11 UTC
Experiencing the same issue present in many games with proton-ge Wine-Wayland. Games experiencing this so far have been: valheim, peak and Gates of hell:ostfront. If i alt+tab it might go away but will reappear sometime later or if the game is paused. 

Operating System: Arch Linux 
KDE Plasma Version: 6.5.0
KDE Frameworks Version: 6.19.0
Qt Version: 6.10.0
Kernel Version: 6.17.5-arch1-1 (64-bit)
Graphics Platform: Wayland
Processors: 16 × AMD Ryzen 7 7700 8-Core Processor
Memory: 34 GB of RAM (33,2 GB usable)
Graphics Processor: AMD Radeon RX 6700 XT
Manufacturer: Gigabyte Technology Co., Ltd.
Product Name: B650 AORUS ELITE AX V2
System Version: Default string-WCP
Comment 8 xasika6648 2025-10-27 19:33:39 UTC
Same issue here in many games using PROTON_ENABLE_WAYLAND=1.
Using Nvidia GPU.
Comment 9 hburnett777 2025-10-28 20:50:20 UTC
Can confirm the same issue with Overwatch 2. Removing "PROTON_ENABLE_WAYLAND=1" from the launch options resolves this issue on the latest version of Proton (proton-cachyos=2025-10-23-3). This was driving me nuts.

Operating System: CachyOS Linux 
KDE Plasma Version: 6.5.0
KDE Frameworks Version: 6.19.0
Qt Version: 6.10.0
Kernel Version: 6.17.5-2-cachyos (64-bit)
Graphics Platform: Wayland
Processors: 32 × 13th Gen Intel® Core™ i9-13900K
Memory: 64 GiB of RAM (62.5 GiB usable)
Graphics Processor: NVIDIA GeForce RTX 4090
Manufacturer: ASUS
Comment 10 Zamundaaa 2025-10-29 13:53:44 UTC
I haven't seen this myself when playing Baldur's Gate 3 recently, but I can confirm in Horizon Zero Dawn.
Comment 11 Bug Janitor Service 2025-10-29 14:17:55 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/kwin/-/merge_requests/8326
Comment 12 Zamundaaa 2025-10-29 19:50:03 UTC
Git commit d875d0f2955cc926d48a35376773051fa6c6bb47 by Xaver Hugl.
Committed on 29/10/2025 at 14:17.
Pushed by zamundaaa into branch 'master'.

scene/cursoritem: always reset the surface item if the surface is nullptr

The previous code misbehaved when a client first destroys the cursor surface and
only afterwards sets the cursor surface to null.
This is because SurfaceItemWayland::m_surface is a QPointer, so comparisons with
a nullptr would return true after the surface is destroyed, preventing the surface
item from being deleted.

M  +4    -6    src/scene/cursoritem.cpp

https://invent.kde.org/plasma/kwin/-/commit/d875d0f2955cc926d48a35376773051fa6c6bb47
Comment 13 Zamundaaa 2025-10-29 20:21:22 UTC
Git commit 1c3b81e925bbc970deab14c71eee1d0f320ea8e0 by Xaver Hugl.
Committed on 29/10/2025 at 19:50.
Pushed by zamundaaa into branch 'Plasma/6.5'.

scene/cursoritem: always reset the surface item if the surface is nullptr

The previous code misbehaved when a client first destroys the cursor surface and
only afterwards sets the cursor surface to null.
This is because SurfaceItemWayland::m_surface is a QPointer, so comparisons with
a nullptr would return true after the surface is destroyed, preventing the surface
item from being deleted.


(cherry picked from commit d875d0f2955cc926d48a35376773051fa6c6bb47)

Co-authored-by: Xaver Hugl <xaver.hugl@kde.org>

M  +4    -6    src/scene/cursoritem.cpp

https://invent.kde.org/plasma/kwin/-/commit/1c3b81e925bbc970deab14c71eee1d0f320ea8e0