protonscr

weird cursor on Linux

steamopen runtimeWeb ComponentDistro Family: NixOS
ValveSoftware/steam-for-linux#11484 · opened 2024-11-17 by griffi-gh · updated 2026-06-24 · 16 comments · github
Ggriffi-gh 2024-11-17 github

Your system information

  • Steam client version (build number or date): 1731433018
  • Distribution (e.g. Ubuntu): NixOS (nixos-unstable)
  • Opted into Steam client beta?: No
  • Have you checked for system updates?: Yes
  • Steam Logs: steam-logs.tar.gz
  • GPU: AMD

Please describe your issue in as much detail as possible:

Steam does not use system cursor (except pointer in non-Web ui parts only) and instead falls back onto some sort of default one.

Steps for reproducing this issue:

  1. Open steam
  2. Hover either over any webui part, any part of the ui that changes the cursor or the steam overlay

Screenshot_20241117_155112
Screenshot_20241117_155123
Screenshot_20241117_155130

Non-webui parts of the UI still display the correct cursor:

image

I'm using breeze_cursors on KDE Plasma 6 (Wayland)

Oo-alquimista 2024-12-02 github

I can reproduce on elementary OS 8 "Circe", on Secure Session (Wayland). Maybe it's not specific to NixOS.

Aandre4ik3 2024-12-15 github

For NixOS, this fix worked for me:

{
  xdg.icons.fallbackCursorThemes = [ "breeze_cursors" ];
}

(or substitute any other cursor theme)

For other OS'es, put this into /usr/share/icons/default/index.theme? (haven't tested but it's what the NixOS option does internally):

[Icon Theme]
Inherits=breeze_cursors
LLunaAmora 2024-12-16 github

For NixOS, this fix worked for me:

{
  xdg.icons.fallbackCursorThemes = [ "breeze" ];
}

Was glad someone had a solution, but sadly it did not fix the issue on my machine :/

MMichaelCDormann 2024-12-26 github

Replying to https://github.com/ValveSoftware/steam-for-linux/issues/11484#issuecomment-2546235840

This does not fix the issue for me either. Neither does manually creating /usr/share/icons/default/index.theme

Aandre4ik3 2024-12-26 github

Sorry it's breeze_cursors and not breeze, breeze is just the normal icon theme :P

This should work:

{
  xdg.icons.fallbackCursorThemes = [ "breeze_cursors" ];
}

Followed by a nixos-rebuild switch and restarting Steam.

You could also fix it by linking it like this: ln -s /run/current-system/sw/share/icons/breeze_cursors ~/.local/share/icons/default, for your user only.

Or really any way of setting the default xcursor theme. You can see the paths Steam will search for the theme by running steam-run env | grep XCURSOR_PATH, and in one of them you just need to make a default theme pointing to your desired cursor theme, either by symlinking or making a theme that inherits it. The issue here is NixOS (and maybe elementary OS) doesn't set default cursor theme, and Steam can't seem to get it from anywhere else as it runs in its own FHS environment and under Xwayland.

Ggriffi-gh 2025-10-22 github

xdg.icons.fallbackCursorThemes = [ "breeze_cursors" ];

ln -s /run/current-system/sw/share/icons/breeze_cursors ~/.local/share/icons/default

@andre4ik3 neither of those fix it for me

Ggriffi-gh 2025-10-22 github

what DID work for me though is:

cp -rL /run/current-system/sw/share/icons/breeze_cursors ~/.local/share/icons/default

Physically/recursively copying the cursor theme to my home directory without any symlinks

seems to be related to #10808

Mmaxdexh 2025-10-23 github
cp -rL /run/current-system/sw/share/icons/breeze_cursors ~/.local/share/icons/default

Thanks, this worked for me too! Based on this, using home-manager you can just do:

home.file.".local/share/icons/default" = {
  source = "${pkgs.kdePackages.breeze}/share/icons/breeze_cursors/";
  recursive = true;
};

This only copies the directory structure; the files are symlinked, but it worked anyway.
I guess steam doesn't follow symlinked directories?

Mmazdatribute 2025-12-04 github

btw that "weird cursor" is the adwaita cursor. in case anyone cared. changing it breaks my client.

Ggregorywaynepower 2026-05-27 github

Replying to https://github.com/ValveSoftware/steam-for-linux/issues/11484#issuecomment-3437303820

Is this possible without home manager? Seems like we'd need additional logic for GNOME and KDE at the least.

Mmaxdexh 2026-05-27 github

Not practically, unless you can find a system path that works the same way. Home directory is home-manager territory for the most part

idk what you mean with gnome/kde

Ggregorywaynepower 2026-05-27 github

Not practically, unless you can find a system path that works the same way. Home directory is home-manager territory for the most part

idk what you mean with gnome/kde

Your example only references pkgs.kdePackages.breeze is why I bring it up. I'm assuming a GNOME user would complain that their cursor would be look different from the rest of their environment.

I see your point with home manager being the reasonable option here. I wasn't sure if there was a path towards implementing this as an option for end users who haven't used home manager.

Mmaxdexh 2026-05-27 github

I mean the reasonable way forward would be for someone to fix this bug, but at this point this has been in my config for so long that I wasn't even aware that it still exists until your comment ^^

regarding gnome/kde, yes, in general, you should replace kdePackages.breeze with whatever cursor theme you are using and adjust the rest of the path to match its directory structure.

Ggregorywaynepower 2026-05-28 github

Replying to https://github.com/ValveSoftware/steam-for-linux/issues/11484#issuecomment-3437303820

Unfortunately, the first of these two solutions didn't work--which leads me to believe that it doesn't solve the second. Especially with my issue of Steam not respecting my scaling.

Mmaxdexh 2026-05-28 github

Did you try with breeze or with a gnome theme? If the latter, try with breeze to check if it works at all.
Also what desktop are you on? My solution worked in KDE back in the day and now I am using hyprland and it still works.

Oh, also, the scaling is an XWayland thing. You can fix it the way KDE does by running echo "Xft.dpi: <DPI>" | xrdb -merge once every startup, where you replace <DPI> with your scaling factor times 96. For example, I use scaling factor 1.333, so I use dpi 128. This might break some applications (none that I know of) and cannot be set per-monitor, but is better than no scaling.

Ggregorywaynepower 2026-06-24 github

Did you try with breeze or with a gnome theme? If the latter, try with breeze to check if it works at all. Also what desktop are you on? My solution worked in KDE back in the day and now I am using hyprland and it still works.

Oh, also, the scaling is an XWayland thing. You can fix it the way KDE does by running echo "Xft.dpi: <DPI>" | xrdb -merge once every startup, where you replace <DPI> with your scaling factor times 96. For example, I use scaling factor 1.333, so I use dpi 128. This might break some applications (none that I know of) and cannot be set per-monitor, but is better than no scaling.

I tried it with breeze dark specifically. I appreciate the insight. I'll see if I can give it a go and report back if I have the time.