diff options
| author | Ruben Beltran del Rio <git@r.bdr.sh> | 2025-07-17 15:31:38 +0200 |
|---|---|---|
| committer | Ruben Beltran del Rio <git@r.bdr.sh> | 2025-07-17 15:31:38 +0200 |
| commit | ee8ac99d9fa1f348065108b73297eebc8033e57e (patch) | |
| tree | ffccfd2492503c667d9d7fe67361294fef54d130 /src/sources/mpris.rs | |
| parent | b3964aefbcab8ff098afabf64befa04a4eebd993 (diff) | |
Use objc2, rename dbus to mpris, add swinsian4.0.0
Diffstat (limited to 'src/sources/mpris.rs')
| -rw-r--r-- | src/sources/mpris.rs | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/sources/mpris.rs b/src/sources/mpris.rs new file mode 100644 index 0000000..69eb862 --- /dev/null +++ b/src/sources/mpris.rs @@ -0,0 +1,43 @@ +use mpris::PlayerFinder; +use std::io::Result; + +use crate::Track; + +use super::LyricsSource; + +pub struct Mpris; + +impl Mpris { + pub fn new() -> Self { + Mpris + } +} + +impl LyricsSource for Mpris { + fn name(&self) -> String { + "mpris".to_string() + } + + fn current_track(&self) -> Option<Track> { + let player = PlayerFinder::new().ok()?.find_active().ok()?; + + let metadata = player.get_metadata().ok()?; + let name = metadata.title()?.to_string(); + let artists = metadata.artists()?; + let artist = artists.get(0)?.to_string(); + + Some(Track { name, artist }) + } + + fn disable(&self) -> Result<()> { + Ok(()) + } + + fn enable(&self) -> Result<()> { + Ok(()) + } + + fn reset(&self) -> Result<()> { + Ok(()) + } +} |