use mpris::PlayerFinder; use std::time::{Duration, Instant}; fn main() { let player = PlayerFinder::new() .expect("Could not connect to D-Bus") .find_active() .expect("Could not find active player"); println!( "Showing event stream for player {}...\n(Exit with Ctrl-C)\n", player.identity() ); let events = player.events().expect("Could not start event stream"); let start = Instant::now(); for event in events { match event { Ok(event) => println!("{}: {:#?}", format_elapsed(start.elapsed()), event), Err(err) => { println!("D-Bus error: {}. Aborting.", err); break; } } } println!("Event stream ended."); } fn format_elapsed(duration: Duration) -> String { let seconds = duration.as_secs(); let minutes = seconds / 60; let seconds_left = seconds - (60 * minutes); let ms = duration.subsec_millis(); format!("{:02}:{:02}.{:3}", minutes, seconds_left, ms) }