Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

settings: Add cursor-theme and cursor-theme-size #1539

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

jadahl
Copy link
Collaborator

@jadahl jadahl commented Dec 20, 2024

These aim to provide cursor theming settings that isn't to a desktop environment or toolkit.

These aim to provide cursor theming settings that isn't to a desktop
environment or toolkit.

* ``org.freedesktop.appearance`` ``cursor-theme-size`` (``u``)

Indicates the system's preferred cursor theme size.
Copy link

@ideasman42 ideasman42 Dec 20, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be good to mention if this includes output scaling (how it's expected to handle Hi-DPI / fractional-scaling) for e.g.

Also, if this is an alternative to the XCURSOR_SIZE environment variable which is expected to have identical behavior.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Indeed, I would assume it be in "logical pixels" like size, meaning equivalent to the surface size one would set with wl_pointer.set_cursor, which is more or less what the existing cursor theme size settings do, and what gsettings get org.gnome.desktop.interface cursor-size would return.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This could be mentioned in the description then (or a reference elsewhere - to more detailed docs).
On my own desktop I've noticed the cursor size jumping erratically between windows. So having a convention for calculating the final cursor size would be good (including rounding behavior with fractional scaling).
Although that doesn't have to be handled in this PR, failure to define this anywhere likely means cursor size will "jump" from a user perspective.

@JakobDev
Copy link
Contributor

Why is this needed? With the Cursor Shape Wayland Protocol the Cursor is drawn by the Compositor, so Apps don't need to know about the Cursor theme.

@swick
Copy link
Contributor

swick commented Jan 22, 2025

The only cursors that must be supported on wayland are surface-based cursors, so they will stick around.

@ideasman42
Copy link

ideasman42 commented Jan 23, 2025

Why is this needed? With the Cursor Shape Wayland Protocol the Cursor is drawn by the Compositor, so Apps don't need to know about the Cursor theme.

Applications may need cursors that aren't available as presets in the cursor-shape protocol, in this case there is no unified way to know how large to draw the cursor:
See the second paragraph in this email:
https://www.mail-archive.com/[email protected]/msg42651.html

Included the mail inline for reference:

Hi, I've been looking to support mouse cursors under wayland (via
cursor-shape-v1 but also more generally).

Attempting to use cursor-shape-v1, I ran into some mouse cursors not
being available, so I had to fallback to loading the "default" theme,
this might be OK however the cursor size used by cursor-shape-v1 isn't
known, so it can result in the cursor changing sizes within the same
application.

More generally not being able to know the preferred cursor size in
Wayland causes odd glitches, as the cursor size also changes between
applications, when LIBDECOR is used, the application and it's own
window decorations can use different cursor sizes too.

The same issue exists with themes, although I find it more noticeable
when the cursor size changes.

While accessing the preferred theme & size is possible it relies on
reading the settings for desktop environments (DBUS to read the GNOME
setting for e.g.).

It would be good if there was a way to access the cursor size & theme
via generic Wayland API's,
the size particularly so applications that use theme-cursors or define
their own cursor bitmaps can match the size of system cursors.

This could be implemented as part of cursor-shape-v1 although I'm not
sure if this is the appropriate level to expose the API.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
No open projects
Status: Needs Triage
Development

Successfully merging this pull request may close these issues.

4 participants