diff --git a/fluxer_desktop/native/linux-notifications/src/lib.rs b/fluxer_desktop/native/linux-notifications/src/lib.rs index a16f60046..ff2655688 100644 --- a/fluxer_desktop/native/linux-notifications/src/lib.rs +++ b/fluxer_desktop/native/linux-notifications/src/lib.rs @@ -266,8 +266,12 @@ impl FreedesktopNotifications { let method_conn = open_blocking_connection() .map_err(|err| generic_error(format!("notifications client init failed: {err}")))?; let stop_signal_thread = Arc::new(AtomicBool::new(false)); - let signal_thread = spawn_signal_thread(event_callback.clone(), stop_signal_thread.clone()) - .map_err(|err| generic_error(format!("notifications client init failed: {err}")))?; + let signal_thread = spawn_signal_thread( + event_callback.clone(), + method_conn.clone(), + stop_signal_thread.clone(), + ) + .map_err(|err| generic_error(format!("notifications client init failed: {err}")))?; Ok(Self { inner: Arc::new(Inner { @@ -536,6 +540,7 @@ fn build_hints(hints: &NotifyHints) -> HashMap<&'static str, Value<'_>> { fn spawn_signal_thread( event_callback: EventThreadsafeFunction, + method_conn: BlockingConnection, stop: Arc, ) -> std::result::Result, String> { let (ready_tx, ready_rx) = mpsc::sync_channel(1); @@ -544,13 +549,13 @@ fn spawn_signal_thread( .name("fluxer-linux-notifications-signals".to_string()) .spawn(move || { let setup = future::block_on(async { - let conn = zbus::Connection::session().await?; + let conn = method_conn.inner(); let rule = MatchRule::builder() .msg_type(MessageType::Signal) .path(NOTIFY_PATH)? .interface(NOTIFY_IFACE)? .build(); - let stream = MessageStream::for_match_rule(rule, &conn, Some(64)).await?; + let stream = MessageStream::for_match_rule(rule, conn, Some(64)).await?; zbus::Result::Ok((conn, stream)) });