blob: f1361ea184ea22f74db14cb86c5872476781853c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
use crate::config::CONFIG;
use crate::types::ThreadsData;
use battery::Manager;
use battery::State;
// TODO: better error handeling
// getting battery percentage
pub async fn get_battery() -> ThreadsData {
let battery_manager = if let Ok(manager) = Manager::new() {
manager
} else {
return ThreadsData::Battery(String::from("Cannot Create Battery Manager!"));
};
let mut batteries = if let Ok(batteries) = battery_manager.batteries() {
batteries
} else {
return ThreadsData::Battery(String::from("Cannot Get Battery!"));
};
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}% {}",
icon, percentage, CONFIG.seperator
);
ThreadsData::Battery(result)
}
|