aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/config/mod.rs2
-rw-r--r--src/utils/battery.rs39
-rw-r--r--src/utils/mpd.rs6
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,
};