From 50b594e81e125d4aaa9b2fae34d555bbfa5f53b6 Mon Sep 17 00:00:00 2001 From: Jin Liu Date: Sat, 7 Mar 2026 17:56:24 +0800 Subject: [PATCH] Start dbus receiver in the main thread It was started in another thread, so possibly the kwin script starts before the receiver is set up, losing messages. Fixes: #46 --- src/main.rs | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/main.rs b/src/main.rs index e88cd96..81b7589 100644 --- a/src/main.rs +++ b/src/main.rs @@ -745,20 +745,20 @@ fn main() -> anyhow::Result<()> { ); // setup message receiver + let _receiver = self_conn.start_receive( + MatchRule::new_method_call(), + Box::new(|message, _connection| -> bool { + log::debug!("dbus message: {:?}", message); + if let Some(member) = message.member() + && let Some(arg) = message.get1() + { + let mut messages = MESSAGES.write().unwrap(); + messages.push((member.to_string(), arg)); + } + true + }), + ); let _receiver_thread = std::thread::spawn(move || { - let _receiver = self_conn.start_receive( - MatchRule::new_method_call(), - Box::new(|message, _connection| -> bool { - log::debug!("dbus message: {:?}", message); - if let Some(member) = message.member() - && let Some(arg) = message.get1() - { - let mut messages = MESSAGES.write().unwrap(); - messages.push((member.to_string(), arg)); - } - true - }), - ); loop { self_conn.process(Duration::from_millis(1000)).unwrap(); }