diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/config/mod.rs | 2 | ||||
| -rw-r--r-- | src/utils/battery.rs | 39 | ||||
| -rw-r--r-- | src/utils/mpd.rs | 6 | 
3 files changed, 19 insertions, 28 deletions
diff --git a/src/config/mod.rs b/src/config/mod.rs index 202e50b..f47a172 100644 --- a/src/config/mod.rs +++ b/src/config/mod.rs @@ -13,8 +13,8 @@ mod uptime;  mod volume;  mod weather; +use self::battery::Battery;  use self::mpd::Mpd; -use battery::Battery;  use bitcoins::BitCoins;  use cputemp::CpuTemp;  use disk::Disk; diff --git a/src/utils/battery.rs b/src/utils/battery.rs index 041965a..d3688e7 100644 --- a/src/utils/battery.rs +++ b/src/utils/battery.rs @@ -1,37 +1,32 @@  use crate::config::CONFIG;  use crate::types::ThreadsData; -use std::fs::read_to_string; +use battery::Manager; + +// TODO: better error handeling  // getting battery percentage  pub fn get_battery() -> ThreadsData { -    let error = ThreadsData::Battery(String::from("check your battery source name")); - -    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 buf = match read_to_string(battery_full_cap_file) { -        Ok(file) => file, -        Err(_) => return error, +    let battery_manager = if let Ok(manager) = Manager::new() { +        manager +    } else { +        return ThreadsData::Battery(String::from("Cannot Create Battery Manager!"));      }; -    let full_design = buf.trim().parse::<u32>().unwrap(); -    let buf = match read_to_string(&battery_charge_now_file) { -        Ok(data) => data, -        _ => return error, +    let mut batteries = if let Ok(batteries) = battery_manager.batteries() { +        batteries +    } else { +        return ThreadsData::Battery(String::from("Cannot Get Battery!"));      }; -    let charge_now = buf.trim().parse::<u32>().unwrap(); +    let percentage = if let Some(battery) = batteries.next() { +        f32::from(battery.unwrap().state_of_charge()) * 100.0 +    } else { +        return ThreadsData::Battery(String::from("Cannot Read Battery!")); +    }; -    let battery_percentage = (charge_now as f32 / full_design as f32) * 100.0;      let result = format!(          "  {}  {:.0}%  {}", -        CONFIG.battery.icon, battery_percentage, CONFIG.seperator +        CONFIG.battery.icon, percentage, CONFIG.seperator      );      ThreadsData::Battery(result)  } diff --git a/src/utils/mpd.rs b/src/utils/mpd.rs index 3752387..678b59d 100644 --- a/src/utils/mpd.rs +++ b/src/utils/mpd.rs @@ -2,7 +2,6 @@ use crate::config::CONFIG;  use crate::types::ThreadsData;  use mpd::{Client, Song}; -// yes, error handling looks fucking sucks!  // getting mpd song file  pub fn get_mpd_current() -> ThreadsData {      let stream_path = format!("{}:{}", CONFIG.mpd.host, CONFIG.mpd.port); @@ -12,10 +11,7 @@ pub fn get_mpd_current() -> ThreadsData {          _ => return empty_data,      };      let current: Song = match conn.currentsong() { -        Ok(opt) => match opt { -            Some(song) => song, -            _ => return empty_data, -        }, +        Ok(Some(song)) => song,          _ => return empty_data,      };  | 
