Listen for multiple property changes

This commit is contained in:
mars 2022-11-19 22:57:33 -07:00
parent a2432f77d2
commit 15f9c7ea99
2 changed files with 25 additions and 7 deletions

View File

@ -11,10 +11,11 @@ required-features = ["bin"]
[dependencies]
canary-magpie = { path = "../magpie", optional = true }
futures-util = { version = "0.3", optional = true }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
smol = { version = "1.2", optional = true }
zbus = { version = "3.5", optional = true }
[features]
bin = ["dep:canary-magpie", "dep:smol", "dep:zbus"]
bin = ["dep:canary-magpie", "dep:futures-util", "dep:smol", "dep:zbus"]

View File

@ -8,7 +8,6 @@ use canary_music_player::*;
pub mod mpris;
use mpris::*;
use smol::stream::StreamExt;
pub struct Metadata {
pub album: AlbumInfo,
@ -96,12 +95,30 @@ fn main() {
let dbus = zbus::Connection::session().await?;
let player = find_player(&dbus).await?.unwrap();
let mut playback_status = player.receive_playback_status_changed().await;
while let Some(status) = playback_status.next().await {
println!("Status: {}", status.get().await?);
}
use futures_util::StreamExt;
let mut playback_status = player.receive_playback_status_changed().await.fuse();
let mut metadata = player.receive_metadata_changed().await.fuse();
println!("Done looping.");
loop {
futures_util::select! {
status = playback_status.next() => {
let status = match status {
Some(v) => v,
None => break,
};
println!("Status: {}", status.get().await?);
}
metadata = metadata.next() => {
let metadata = match metadata {
Some(v) => v,
None => break,
};
println!("Metadata: {:#?}", metadata.get().await?);
}
};
}
let protocol = "tebibyte-media.desktop.music-player-controller".to_string();
let script = std::path::PathBuf::from(&module_path);