diff options
author | mustafa salih <mustafasalih1991@gmail.com> | 2021-01-14 05:41:01 +0300 |
---|---|---|
committer | mustafa salih <mustafasalih1991@gmail.com> | 2021-01-14 05:41:01 +0300 |
commit | 6a349a0e0282e56b03adbe02b41bfaf0cc3213f1 (patch) | |
tree | acdd23279a8fc837fa076739933b1269d74110fd /src/utils/battery.rs | |
parent | e829871f2d757c7414763992839a584038c7b443 (diff) |
orginized the code to seprated mods and deleted the lib file
Diffstat (limited to 'src/utils/battery.rs')
-rw-r--r-- | src/utils/battery.rs | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/utils/battery.rs b/src/utils/battery.rs new file mode 100644 index 0000000..b831773 --- /dev/null +++ b/src/utils/battery.rs @@ -0,0 +1,38 @@ +use crate::types::Config; +use std::fs::File; +use std::io::Error; +use std::io::Read; + +// getting battery percentage +pub fn get_battery(config: &Config) -> Result<String, Error> { + let battery_full_cap_file = format!( + "/sys/class/power_supply/{}/charge_full_design", + config.battery.source + ); + let battery_charge_now_file = format!( + "/sys/class/power_supply/{}/charge_now", + config.battery.source + ); + + let mut buf = String::new(); + + // FIXME: ugly error handling AGAIN fixing later, im lazy + match File::open(&battery_full_cap_file) { + Ok(mut file) => file.read_to_string(&mut buf)?, + Err(_) => return Ok(String::from("check your battery source name")), + }; + let full_design = buf.trim().parse::<u32>().unwrap(); + buf.clear(); + + // NOTE: no need to error check if passed the above match + File::open(&battery_charge_now_file)?.read_to_string(&mut buf)?; + + let charge_now = buf.trim().parse::<u32>().unwrap(); + + let battery_percentage = (charge_now as f32 / full_design as f32) * 100.0; + let result = format!( + " {} {:.0}% {}", + config.battery.icon, battery_percentage, config.seperator + ); + Ok(result) +} |