proposal: Reafactor tinywl to not use wlr_cursor

I'm not convinced that sticking with wlr_output_cursor or even wlr_cursor is a good idea. I think the direction we need to take is to make simple and effective helpers instead of creating this framework we call wlr_cursor. I have refactored tinywl to demonstrate the scale of changes needed to be made to compositors to support this.

TODO: Support hw cursors

Advantages over upstream:

  • Fixes #3436 (closed)
  • Supports cursor subsurfaces
  • Reduces complexity
    • We no longer need to rely on the extremely complex and error prone wlr_cursor infrastructure that duplicates work across it and scene/compositors.
    • Although tinywl does gain some lines of code, these lines of code are mostly boilerplate and actually has a lot in common with the existing keyboard management.
  • Increase code reuse. This implementation relies on scene to send enter/leave output events.
    • Leverage fractional scaling support that scene gives us
  • Implements a reusable xcursor scene helper that automatically handles scaling for us
    • Fixes blurry cursor with (!3418). Tinywl would always use scale 1 for its default cursor
Edited by Alexander Orzechowski

Merge request reports