From 33f73eefa066a56dc01321895b2f32fa97a515a7 Mon Sep 17 00:00:00 2001 From: Reinout Meliesie Date: Tue, 14 May 2024 19:02:16 +0200 Subject: [PATCH 1/3] Add GTK Box import alias, change DBus strings to const --- src/clients/networkmanager.rs | 6 +++--- src/modules/networkmanager.rs | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/clients/networkmanager.rs b/src/clients/networkmanager.rs index a1b760f..32487c0 100644 --- a/src/clients/networkmanager.rs +++ b/src/clients/networkmanager.rs @@ -12,9 +12,9 @@ use zbus::{ use crate::{register_fallible_client, spawn_blocking}; -static DBUS_BUS: &str = "org.freedesktop.NetworkManager"; -static DBUS_PATH: &str = "/org/freedesktop/NetworkManager"; -static DBUS_INTERFACE: &str = "org.freedesktop.NetworkManager"; +const DBUS_BUS: &str = "org.freedesktop.NetworkManager"; +const DBUS_PATH: &str = "/org/freedesktop/NetworkManager"; +const DBUS_INTERFACE: &str = "org.freedesktop.NetworkManager"; #[derive(Debug)] pub struct Client { diff --git a/src/modules/networkmanager.rs b/src/modules/networkmanager.rs index 972fccb..16e8239 100644 --- a/src/modules/networkmanager.rs +++ b/src/modules/networkmanager.rs @@ -2,7 +2,7 @@ use color_eyre::Result; use futures_lite::StreamExt; use futures_signals::signal::SignalExt; use gtk::prelude::ContainerExt; -use gtk::{Box, Image, Orientation}; +use gtk::{Box as GtkBox, Image, Orientation}; use serde::Deserialize; use tokio::sync::mpsc::Receiver; @@ -26,7 +26,7 @@ const fn default_icon_size() -> i32 { 24 } -impl Module for NetworkManagerModule { +impl Module for NetworkManagerModule { type SendMessage = ClientState; type ReceiveMessage = (); @@ -53,8 +53,8 @@ impl Module for NetworkManagerModule { self, context: WidgetContext, info: &ModuleInfo, - ) -> Result> { - let container = Box::new(Orientation::Horizontal, 0); + ) -> Result> { + let container = GtkBox::new(Orientation::Horizontal, 0); let icon = Image::new(); icon.add_class("icon"); container.add(&icon); From 17e830afbf9eb09ee2a51f0adec207a29e73c003 Mon Sep 17 00:00:00 2001 From: Reinout Meliesie Date: Tue, 14 May 2024 19:05:19 +0200 Subject: [PATCH 2/3] Revert "Add GTK Box import alias, change DBus strings to const" This reverts commit 33f73eefa066a56dc01321895b2f32fa97a515a7. --- src/clients/networkmanager.rs | 6 +++--- src/modules/networkmanager.rs | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/clients/networkmanager.rs b/src/clients/networkmanager.rs index 32487c0..a1b760f 100644 --- a/src/clients/networkmanager.rs +++ b/src/clients/networkmanager.rs @@ -12,9 +12,9 @@ use zbus::{ use crate::{register_fallible_client, spawn_blocking}; -const DBUS_BUS: &str = "org.freedesktop.NetworkManager"; -const DBUS_PATH: &str = "/org/freedesktop/NetworkManager"; -const DBUS_INTERFACE: &str = "org.freedesktop.NetworkManager"; +static DBUS_BUS: &str = "org.freedesktop.NetworkManager"; +static DBUS_PATH: &str = "/org/freedesktop/NetworkManager"; +static DBUS_INTERFACE: &str = "org.freedesktop.NetworkManager"; #[derive(Debug)] pub struct Client { diff --git a/src/modules/networkmanager.rs b/src/modules/networkmanager.rs index 16e8239..972fccb 100644 --- a/src/modules/networkmanager.rs +++ b/src/modules/networkmanager.rs @@ -2,7 +2,7 @@ use color_eyre::Result; use futures_lite::StreamExt; use futures_signals::signal::SignalExt; use gtk::prelude::ContainerExt; -use gtk::{Box as GtkBox, Image, Orientation}; +use gtk::{Box, Image, Orientation}; use serde::Deserialize; use tokio::sync::mpsc::Receiver; @@ -26,7 +26,7 @@ const fn default_icon_size() -> i32 { 24 } -impl Module for NetworkManagerModule { +impl Module for NetworkManagerModule { type SendMessage = ClientState; type ReceiveMessage = (); @@ -53,8 +53,8 @@ impl Module for NetworkManagerModule { self, context: WidgetContext, info: &ModuleInfo, - ) -> Result> { - let container = GtkBox::new(Orientation::Horizontal, 0); + ) -> Result> { + let container = Box::new(Orientation::Horizontal, 0); let icon = Image::new(); icon.add_class("icon"); container.add(&icon); From da94923f737d33fcf8f6b97ed189557df788239d Mon Sep 17 00:00:00 2001 From: Reinout Meliesie Date: Sat, 18 May 2024 20:11:43 +0200 Subject: [PATCH 3/3] Replace text with icons in volume module --- src/modules/volume.rs | 151 ++++++++++++++++++++---------------------- 1 file changed, 71 insertions(+), 80 deletions(-) diff --git a/src/modules/volume.rs b/src/modules/volume.rs index f11fa60..c9b6ef9 100644 --- a/src/modules/volume.rs +++ b/src/modules/volume.rs @@ -1,6 +1,7 @@ use crate::clients::volume::{self, Event}; use crate::config::CommonConfig; use crate::gtk_helpers::IronbarGtkExt; +use crate::image::ImageProvider; use crate::modules::{ Module, ModuleInfo, ModuleParts, ModulePopup, ModuleUpdateEvent, PopupButton, WidgetContext, }; @@ -8,81 +9,32 @@ use crate::{glib_recv, lock, module_impl, send_async, spawn, try_send}; use glib::Propagation; use gtk::pango::EllipsizeMode; use gtk::prelude::*; -use gtk::{Button, CellRendererText, ComboBoxText, Label, Orientation, Scale, ToggleButton}; +use gtk::{ + Box as GtkBox, Button, CellRendererText, ComboBoxText, Image, Label, Orientation, Scale, + ToggleButton, +}; use serde::Deserialize; use std::collections::HashMap; use tokio::sync::mpsc; #[derive(Debug, Clone, Deserialize)] pub struct VolumeModule { - #[serde(default = "default_format")] - format: String, - #[serde(default = "default_max_volume")] max_volume: f64, - #[serde(default)] - icons: Icons, + #[serde(default = "default_icon_size")] + icon_size: i32, #[serde(flatten)] pub common: Option, } -fn default_format() -> String { - String::from("{icon} {percentage}%") -} - -#[derive(Debug, Clone, Deserialize)] -pub struct Icons { - #[serde(default = "default_icon_volume_high")] - volume_high: String, - #[serde(default = "default_icon_volume_medium")] - volume_medium: String, - #[serde(default = "default_icon_volume_low")] - volume_low: String, - #[serde(default = "default_icon_muted")] - muted: String, -} - -impl Icons { - fn volume_icon(&self, volume_percent: f64) -> &str { - match volume_percent as u32 { - 0..=33 => &self.volume_low, - 34..=66 => &self.volume_medium, - 67.. => &self.volume_high, - } - } -} - -impl Default for Icons { - fn default() -> Self { - Self { - volume_high: default_icon_volume_high(), - volume_medium: default_icon_volume_medium(), - volume_low: default_icon_volume_low(), - muted: default_icon_muted(), - } - } -} - const fn default_max_volume() -> f64 { 100.0 } -fn default_icon_volume_high() -> String { - String::from("󰕾") -} - -fn default_icon_volume_medium() -> String { - String::from("󰖀") -} - -fn default_icon_volume_low() -> String { - String::from("󰕿") -} - -fn default_icon_muted() -> String { - String::from("󰝟") +const fn default_icon_size() -> i32 { + 24 } #[derive(Debug, Clone)] @@ -185,22 +137,23 @@ impl Module