From 3daffb4fba25fcd7f8e528e9192355bce49bb071 Mon Sep 17 00:00:00 2001 From: Alex Rennie Date: Tue, 23 Sep 2025 10:28:19 +0100 Subject: [PATCH] feat(audio): MPRIS Raise functionality --- cosmic-applet-audio/src/lib.rs | 22 +++++++++++++++---- cosmic-applet-audio/src/mpris_subscription.rs | 3 ++- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/cosmic-applet-audio/src/lib.rs b/cosmic-applet-audio/src/lib.rs index 97b6b8ea..922b304a 100644 --- a/cosmic-applet-audio/src/lib.rs +++ b/cosmic-applet-audio/src/lib.rs @@ -603,6 +603,17 @@ impl cosmic::Application for Audio { tracing::error!("Error playing previous: {}", err); } }), + MprisRequest::Raise => tokio::spawn(async move { + let res = player.media_player().await; + if let Err(err) = res { + tracing::error!("Error fetching MediaPlayer: {}", err); + } else { + let res = res.unwrap().raise().await; + if let Err(err) = res { + tracing::error!("Error raising client: {}", err); + } + } + }), }; } Message::OpenSettings => { @@ -945,10 +956,13 @@ impl cosmic::Application for Audio { audio_content = audio_content .push(padded_control(divider::horizontal::default()).padding([space_xxs, space_s])); audio_content = audio_content.push( - Row::with_children(elements) - .align_y(Alignment::Center) - .spacing(8) - .padding(menu_control_padding()), + menu_button( + Row::with_children(elements) + .align_y(Alignment::Center) + .spacing(8), + ) + .on_press(Message::MprisRequest(MprisRequest::Raise)) + .padding(menu_control_padding()), ); } let content = column![ diff --git a/cosmic-applet-audio/src/mpris_subscription.rs b/cosmic-applet-audio/src/mpris_subscription.rs index cec12399..7ba7a2c0 100644 --- a/cosmic-applet-audio/src/mpris_subscription.rs +++ b/cosmic-applet-audio/src/mpris_subscription.rs @@ -126,6 +126,7 @@ pub enum MprisRequest { Pause, Next, Previous, + Raise, } struct State { @@ -282,7 +283,7 @@ async fn run(output: &mut futures::channel::mpsc::Sender) { _ = state.any_player_state_stream.next(), if !state.players.is_empty() => { state.update_active_player().await; }, - }; + } } }