aboutsummaryrefslogtreecommitdiff
path: root/src/utils/battery.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/utils/battery.rs')
-rw-r--r--src/utils/battery.rs15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/utils/battery.rs b/src/utils/battery.rs
index 432e22a..f1361ea 100644
--- a/src/utils/battery.rs
+++ b/src/utils/battery.rs
@@ -1,6 +1,7 @@
use crate::config::CONFIG;
use crate::types::ThreadsData;
use battery::Manager;
+use battery::State;
// TODO: better error handeling
@@ -18,15 +19,23 @@ pub async fn get_battery() -> ThreadsData {
return ThreadsData::Battery(String::from("Cannot Get Battery!"));
};
- let percentage = if let Some(battery) = batteries.next() {
- f32::from(battery.unwrap().state_of_charge()) * 100.0
+ let battery = batteries.next();
+ let (icon, percentage);
+
+ if let Some(bat) = battery {
+ let b = bat.unwrap();
+ percentage = f32::from(b.state_of_charge()) * 100.0;
+ icon = match b.state() {
+ State::Charging => &CONFIG.battery.charging_icon,
+ _ => &CONFIG.battery.icon,
+ };
} else {
return ThreadsData::Battery(String::from("Cannot Read Battery!"));
};
let result = format!(
" {} {:.0}% {}",
- CONFIG.battery.icon, percentage, CONFIG.seperator
+ icon, percentage, CONFIG.seperator
);
ThreadsData::Battery(result)
}