New cursor fallback handling is lacking
Following up on #5365 (closed), there are more changes in fallback behavior:
The new implementation always tries to use /usr/share/icons/default
if the selected theme does not exist, while libwayland-cursor attempts to load the default
theme from the usual locations. This has surprised at least one user who placed their cursor theme at ~/.icons/default
.
The new implementation scales cursors when they're missing a size. GNOME Shell just uses a smaller size, leading to inconsistency.
More importantly, the new implementation lacks support for theme inheritance and fallback, meaning all themes must be complete.
Arch Linux ships an empty /usr/share/icons/default
theme with libXcursor which just declares Inherits=Adwaita
to load Adwaita cursors, if they're present. This fallback no longer works. Looking at https://src.fedoraproject.org/rpms/libXcursor/tree/rawhide, it seems Fedora should be affected as well.
libwayland-cursor seems to fill in missing cursors from the default
theme, followed by a built-in theme. GTK 4.8.2 ships a single default cursor (/org/gtk/libgdk/cursor/default
) for this case. GTK 3.24.35 is missing this, setting no cursor image at all when a missing theme is configured (GNOME Shell just leaves the cursor unchanged). Switching to a missing theme even crashes running GTK 3 applications once they try to set the cursor. This also applies to incomplete themes.
I've inspected a bunch of alternative themes and generally, they are missing cursors compared to Adwaita.