From ac391db4158f98e75ec025fef7eb977d4fa77e0d Mon Sep 17 00:00:00 2001 From: Ivan Molodetskikh Date: Tue, 3 Jun 2025 17:40:35 +0300 Subject: [PATCH] xstate: Set WM_S0 atom at startup Xwayland waits for this before starting to listen on the -listenfd descriptors if either -wm or -initfd is set. - https://gitlab.freedesktop.org/xorg/xserver/-/blob/xwayland-24.1.6/hw/xwayland/xwayland.c?ref_type=tags#L463-472 - https://gitlab.freedesktop.org/xorg/xserver/-/blob/xwayland-24.1.6/hw/xwayland/xwayland.c?ref_type=tags#L300-317 --- src/xstate/mod.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/xstate/mod.rs b/src/xstate/mod.rs index 32e90dd..98a81ae 100644 --- a/src/xstate/mod.rs +++ b/src/xstate/mod.rs @@ -294,6 +294,14 @@ impl XState { data: b"xwayland-satellite", }) .unwrap(); + + self.connection + .send_and_check_request(&x::SetSelectionOwner { + owner: self.wm_window, + selection: self.atoms.wm_s0, + time: x::CURRENT_TIME, + }) + .unwrap(); } pub fn handle_events(&mut self, server_state: &mut super::RealServerState) { @@ -886,6 +894,7 @@ xcb::atoms_struct! { wm_delete_window => b"WM_DELETE_WINDOW" only_if_exists = false, wm_transient_for => b"WM_TRANSIENT_FOR" only_if_exists = false, wm_state => b"WM_STATE" only_if_exists = false, + wm_s0 => b"WM_S0" only_if_exists = false, wm_check => b"_NET_SUPPORTING_WM_CHECK" only_if_exists = false, net_wm_name => b"_NET_WM_NAME" only_if_exists = false, wm_pid => b"_NET_WM_PID" only_if_exists = false,