// Copyright 2023 System76 // SPDX-License-Identifier: GPL-3.0-only mod localize; use crate::localize::localize; use crate::pulse::DeviceInfo; 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::applet::token::subscription::{ activation_token_subscription, TokenRequest, TokenUpdate, }; use cosmic::cctk::sctk::reexports::calloop; use cosmic::cosmic_config::CosmicConfigEntry; use cosmic::iced::widget; use cosmic::iced::Limits; use cosmic::iced::{ self, widget::{column, row, slider, text}, window, Alignment, Length, Subscription, }; use cosmic::iced_runtime::core::alignment::Horizontal; use cosmic::iced_style::application; use cosmic::widget::button; use cosmic::widget::horizontal_space; use cosmic::widget::Column; use cosmic::widget::Row; use cosmic::widget::{divider, icon}; use cosmic::Renderer; use cosmic::{Element, Theme}; 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 libpulse_binding::volume::Volume; use mpris2_zbus::player::PlaybackStatus; use mpris_subscription::MprisRequest; use mpris_subscription::MprisUpdate; mod config; mod mpris_subscription; mod pulse; static SHOW_MEDIA_CONTROLS: Lazy = Lazy::new(id::Toggler::unique); const GO_BACK: &str = "media-skip-backward-symbolic"; const GO_NEXT: &str = "media-skip-forward-symbolic"; const PAUSE: &str = "media-playback-pause-symbolic"; const PLAY: &str = "media-playback-start-symbolic"; pub fn run() -> cosmic::iced::Result { localize(); cosmic::applet::run::