diff --git a/apps/music-player/src/main.rs b/apps/music-player/src/main.rs index 90dbe54..27b65a4 100644 --- a/apps/music-player/src/main.rs +++ b/apps/music-player/src/main.rs @@ -111,6 +111,12 @@ async fn on_message( OutMsg::Stop => player.stop().await?, OutMsg::Previous => player.previous().await?, OutMsg::Next => player.next().await?, + OutMsg::SetPosition { position } => { + let current = player.position().await?; + let next = (position * 1_000_000.0) as i64; // Seconds to microseconds + let offset = next - current; + player.seek(offset).await?; + } _ => {} } diff --git a/apps/music-player/src/mpris.rs b/apps/music-player/src/mpris.rs index 74e47c2..4cf2b4b 100644 --- a/apps/music-player/src/mpris.rs +++ b/apps/music-player/src/mpris.rs @@ -17,6 +17,7 @@ trait Player { fn play_pause(&self) -> Result<()>; fn stop(&self) -> Result<()>; fn play(&self) -> Result<()>; + fn seek(&self, offset: i64) -> Result<()>; #[dbus_proxy(property)] fn playback_status(&self) -> Result;