volume icon dependend on loudness/mute

This commit is contained in:
Özgür Kesim 2022-01-30 22:25:16 +01:00
parent 840f2ff5fd
commit 99f6830083
3 changed files with 19 additions and 4 deletions

View File

@ -3,7 +3,9 @@ use std::default::Default;
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Volume {
pub icon: String,
pub icon_high: String,
pub icon_low: String,
pub icon_muted: String,
pub enabled: bool,
pub delay: f64,
pub card: String,
@ -12,7 +14,9 @@ pub struct Volume {
impl Default for Volume {
fn default() -> Self {
Volume {
icon: String::from(""),
icon_high: String::from("🕪"),
icon_low: String::from("🕩"),
icon_muted: String::from("🔇"),
enabled: false,
delay: 0.17,
card: String::from("ALSA"),

View File

@ -60,7 +60,9 @@ pub struct Disk {
}
#[derive(Clone)]
pub struct Volume {
pub icon: String,
pub icon_muted: String,
pub icon_high: String,
pub icon_low: String,
pub enabled: bool,
pub delay: f64,
pub card: String,

View File

@ -28,6 +28,15 @@ pub async fn get_volume() -> ThreadsData {
((raw_volume as f64 / range as f64) * 100.) as u64
};
let data = format!(" {} {}% {}", CONFIG.volume.icon, vol, CONFIG.seperator);
let muted = selem
.get_playback_switch(selem_chan_id)
.expect("Failed to get playback state");
let icon = match muted {
0 => &CONFIG.volume.icon_muted,
_ => if vol < 50 { &CONFIG.volume.icon_low } else { &CONFIG.volume.icon_high }
};
let data = format!(" {} {}% {}", icon, vol, CONFIG.seperator);
ThreadsData::Sound(data)
}