Switch wlr_xwayland_create from lazy=false to lazy=true. With eager
start the Xwayland process forks before the compositor's event loop is
running; Xwayland's Wayland client tries to negotiate globals immediately,
gets no response, and closes its connection ("Broken pipe" / "xcb connect
failed: 1"). Lazy mode defers the fork until the first X11 client
connects, by which time the event loop is fully running.
The pre-allocated display number is still available immediately so DISPLAY
is set for child processes regardless of whether Xwayland has started.
On shutdown, after SIGKILL-ing the Xwayland process, explicitly remove
/tmp/.X{n}-lock and /tmp/.X11-unix/X{n}. Without this, if the dead
process's PID is reused by another process before the next wmaker run,
wlroots' stale-lock detection (kill(old_pid,0)) wrongly reports the
display as in-use and the next run fails to claim the same display number.
Smoke test updated: check for "XWayland DISPLAY=.*lazy" instead of the
old "XWayland started DISPLAY=" pattern.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>