wayland: Implement xwayland-shell-v1
As explained in [1], WL_SURFACE_ID is racy because wayland aggressively reuses object ids. The xwayland-shell-v1 protocol intends to fix that by two things:
- associating a serial number with each X11 window. This is to avoid potential XID reuse
- referring to the wayland surface by the wl_surface rather than specifying an object id
Unfortunately, we will have to maintain both legacy WL_SURFACE_ID and WL_SURFACE_SERIAL for quiet some time until most instances of Xwayland in the wild support the xwayland-shell-v1 protocol [2].
[1] https://gitlab.freedesktop.org/xorg/xserver/-/issues/1157 [2] https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/163
Edited by Vlad Zahorodnii