Draft: Reconnect xwayland on compositor crashes and resend client information
!!!!!!DRAFT!!!!!!!
In the event of a compositor crash or error these changes will reconnect to the new compositor and re-fetch seat information, outputs and then re-send any windows, active pointer constraints and alike. From an X11 POV it's as though we got a flurry of events at once, and then the X11 compositor got replaced.
See wayland-devel: https://lists.freedesktop.org/archives/wayland-devel/2021-August/041959.html
This both has a few code quirks to iron out and discuss plus it uses unreleased dependencies. Posting as Ofourdan wanted to share some comments.
Dependencies
- libwayland: https://gitlab.freedesktop.org/davidedmundson/wayland/-/tree/reconnections
- mesa: https://gitlab.freedesktop.org/davidedmundson/mesa/-/tree/reconnect
You maybe don't need mesa if you force shm mode.
They need some touchup before making MRs.
Testing
Rootless mode: Rootless mode is challenging to test, as obviously you can't use -wm fd or -listen fd, so it requires compositor changes delegating the launching elsewhere. These are not shipped anywhere.
Rootfull mode is easier to test xwayland changes without any compiling.
kwin_wayland_wrapper (any stock release within the last 9 months)
WAYLAND_DISPLAY=wayland-1 Xwayland :2
DISPLAY=:2 xterm
killall -9 kwin_wayland
Code wise I have some slight issues with the lifespan of Device objects outliving the Seat and the cursor sits in a weird middle ground across these that I'm not happy with. Rest is relatively trivial I think.