From 547e7ac5218327216704e1fb72004a3de6992940 Mon Sep 17 00:00:00 2001 From: salmonik Date: Mon, 6 Jul 2026 15:49:27 +0200 Subject: add MPRIS support and non-blocking notifs --- src/daemon.rs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'src/daemon.rs') diff --git a/src/daemon.rs b/src/daemon.rs index 61d021b..1c918a8 100644 --- a/src/daemon.rs +++ b/src/daemon.rs @@ -102,7 +102,7 @@ impl ScrobbleState { } } -fn try_scrobble_current(scrobbler: &RwLock, state: &mut ScrobbleState) { +pub fn try_scrobble_current(scrobbler: &RwLock, state: &mut ScrobbleState) { if let Some(ref track) = state.track && track.is_stream { @@ -137,7 +137,7 @@ fn try_scrobble_current(scrobbler: &RwLock, state: &mut ScrobbleState state.clear(); } -fn send_now_playing(scrobbler: &RwLock, track: &Track) { +pub fn send_now_playing(scrobbler: &RwLock, track: &Track) { if track.is_stream { crate::debug_eprintln(format_args!( "scrobble: skipping now_playing for stream track" @@ -246,6 +246,15 @@ pub fn start_daemon() -> Result<(), Box> { // Save full config config.save()?; + // Start MPRIS D-Bus server for external control (playerctl, etc.) + crate::mpris::start_mpris_server( + Arc::clone(&audio_engine), + Arc::clone(&queue), + Arc::clone(&scrobbler), + Arc::clone(&scrobble_state), + Arc::clone(&shutdown_flag), + ); + // Accept connections until shutdown listener.set_nonblocking(true)?; // Helper: poll until a specific track actually starts playing or timeout -- cgit v1.2.3