I can reproduce on elementary OS 8 "Circe", on Secure Session (Wayland). Maybe it's not specific to NixOS.
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
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 :/
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
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.
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
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
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?
btw that "weird cursor" is the adwaita cursor. in case anyone cared. changing it breaks my client.
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.
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
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.
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.
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.
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.
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 -mergeonce every startup, where you replace<DPI>with your scaling factor times 96. For example, I use scaling factor1.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.
Your system information
nixos-unstable)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:
Non-webui parts of the UI still display the correct cursor:
I'm using
breeze_cursorson KDE Plasma 6 (Wayland)