Rough proposal for a cursor-geometry protocol

Campbell Barton ideasman42 at gmail.com
Fri Dec 20 10:12:17 UTC 2024


On 24-12-20 8:53 PM, Simon Ser wrote:
> On Friday, December 20th, 2024 at 10:46, Campbell Barton <ideasman42 at gmail.com> wrote:
> 
>>> Instead, we've standardized a protocol to set semantic cursor shapes:
>>> https://gitlab.freedesktop.org/wayland/wayland-protocols/-/tree/main/staging/cursor-shape?ref_type=heads
>>>
>>> Does that help?
>>
>> It's not a solution because it doesn't work with custom-cursors (cursors
>> created by the application at run-time for e.g).
> 
> That's correct. Then it seems you're interested in sizing information
> but not specifically tied to XCursor, and that the XCursor theme is not
> especially useful for your use-case?

Right, we could use a mix of `cursor-shape` and our own custom-cursors 
(for the most-part *)

> This begs the question about cross cursor theme sizing. If you're
> submitting custom cursors, then there is no guarantee that the margins
> used in the system cursor theme will match these in the custom cursors.
> For instance, the system theme may have a 10px gap between the cursor
> and the image bounds, while the custom cursor has a 5px gap (due to the
> specific shape, shadows and such), and this results in a "jump" when
> switching between these cursors.

Yes, the match would not be exact and would most likely need to match 
de-facto standard themes. If someone made a theme with a lot of blank 
space there would be dependencies.

While I'm not so worried about this, if it were considered a problem 
then an *effective* size could be stored too.

---

* There are some cursors that exist in XCursor themes that cursor-shape 
doesn't include, but this complicates the discussion, I'd probably just 
add them as "custom" cursors to avoid the complexity of supporting 3x 
kinds of cursors (custom/XCursor-theme/shape). See:
https://projects.blender.org/blender/blender/src/commit/175ad1836821c261d1f9ad97ad7870f090a25f47/intern/ghost/intern/GHOST_SystemWayland.cc#L2248


More information about the wayland-devel mailing list