Introduce a proper role object for cursor surfaces
Right now cursors are a bit special: they're set via wl_pointer.set_cursor
and take a raw wl_surface
. This is inconsistent with all other roles. This makes it difficult to update the offset, or to update the offset and the image atomically. Updating the offset is possible via wl_surface.offset
, but it's annoying because it's relative to the previous offset.
Additionally, cursors are not extensible. There's no easy way to refer to an existing cursor. There could be a new protocol to set a cursor by an image name, but with the status quo it'd need to hand-roll an input type (pointer/tablet/etc) enum.