diff --git a/cosmic-applet-audio/Cargo.toml b/cosmic-applet-audio/Cargo.toml index a859c8db..a05aecb4 100644 --- a/cosmic-applet-audio/Cargo.toml +++ b/cosmic-applet-audio/Cargo.toml @@ -12,11 +12,13 @@ libpulse-glib-binding = "2.25.0" tokio = { version = "1.20.1", features=["full"] } libcosmic.workspace = true cosmic-time.workspace = true -log = "0.4.14" +tracing = "0.1.40" pretty_env_logger = "0.4.0" # Application i18n i18n-embed = { version = "0.13", features = ["fluent-system", "desktop-requester"] } i18n-embed-fl = "0.6" rust-embed = "6.6" rust-embed-utils = "7.5.0" - +serde = "1.0.130" +mpris = "2.0.1" +url = "2" diff --git a/cosmic-applet-audio/src/config.rs b/cosmic-applet-audio/src/config.rs new file mode 100644 index 00000000..f06ade9d --- /dev/null +++ b/cosmic-applet-audio/src/config.rs @@ -0,0 +1,15 @@ +use cosmic::cosmic_config::cosmic_config_derive::CosmicConfigEntry; +use cosmic::cosmic_config::{self, Config, ConfigGet, ConfigSet, CosmicConfigEntry}; +use serde::{Deserialize, Serialize}; + +#[derive(Default, Debug, Clone, Serialize, Deserialize, CosmicConfigEntry, PartialEq, Eq)] +pub struct AudioAppletConfig { + pub show_media_controls_in_top_panel: bool, +} + +impl AudioAppletConfig { + /// Returns the version of the config + pub fn version() -> u64 { + 1 + } +} diff --git a/cosmic-applet-audio/src/main.rs b/cosmic-applet-audio/src/main.rs index 01941fd5..d9ad7f65 100644 --- a/cosmic-applet-audio/src/main.rs +++ b/cosmic-applet-audio/src/main.rs @@ -1,12 +1,21 @@ mod localize; +use config::AudioAppletConfig; use cosmic::app::Command; +use cosmic::applet::cosmic_panel_config::PanelAnchor; use cosmic::applet::menu_button; +use cosmic::applet::menu_control_padding; use cosmic::applet::padded_control; +use cosmic::cosmic_config::CosmicConfigEntry; use cosmic::iced::widget; use cosmic::iced::Limits; +use cosmic::iced_futures::futures::channel::mpsc::Sender; +use cosmic::iced_futures::futures::SinkExt; use cosmic::iced_runtime::core::alignment::Horizontal; +use cosmic::widget::button; +use cosmic::widget::Column; +use cosmic::widget::Row; use cosmic::widget::{divider, icon}; use cosmic::Renderer; @@ -21,7 +30,12 @@ use cosmic_time::{anim, chain, id, once_cell::sync::Lazy, Instant, Timeline}; use iced::wayland::popup::{destroy_popup, get_popup}; use iced::widget::container; +use mpris::PlaybackStatus; +use mpris_subscription::MprisRequest; +use mpris_subscription::MprisUpdate; +mod config; +mod mpris_subscription; mod pulse; use crate::localize::localize; use crate::pulse::DeviceInfo; @@ -33,7 +47,7 @@ pub fn main() -> cosmic::iced::Result { // Prepare i18n localize(); - cosmic::applet::run::