aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Cargo.lock67
-rw-r--r--Cargo.toml4
-rw-r--r--src/config/mod.rs2
-rw-r--r--src/utils/battery.rs39
-rw-r--r--src/utils/mpd.rs6
5 files changed, 87 insertions, 31 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 31e665f..0c28379 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -96,6 +96,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd"
[[package]]
+name = "battery"
+version = "0.7.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b4b624268937c0e0a3edb7c27843f9e547c320d730c610d3b8e6e8e95b2026e4"
+dependencies = [
+ "cfg-if 1.0.0",
+ "core-foundation",
+ "lazycell",
+ "libc",
+ "mach",
+ "nix 0.19.1",
+ "num-traits",
+ "uom",
+ "winapi",
+]
+
+[[package]]
name = "bitflags"
version = "1.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -201,6 +218,22 @@ dependencies = [
]
[[package]]
+name = "core-foundation"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "57d24c7a13c43e870e37c1556b74555437870a04514f7685f5b354e090567171"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
+[[package]]
+name = "core-foundation-sys"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b3a71ab494c0b5b860bdc8407ae08978052417070c2ced38573a9157ad75b8ac"
+
+[[package]]
name = "cty"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -304,6 +337,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
[[package]]
+name = "lazycell"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
+
+[[package]]
name = "libc"
version = "0.2.84"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -334,6 +373,15 @@ dependencies = [
]
[[package]]
+name = "mach"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afa"
+dependencies = [
+ "libc",
+]
+
+[[package]]
name = "memchr"
version = "2.3.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -496,9 +544,10 @@ dependencies = [
[[package]]
name = "rsblocks"
-version = "0.1.13"
+version = "0.1.14"
dependencies = [
"alsa",
+ "battery",
"breadx",
"chrono",
"dbus",
@@ -632,6 +681,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c"
[[package]]
+name = "typenum"
+version = "1.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "879f6906492a7cd215bfa4cf595b600146ccfac0c79bcbd1f3000162af5e8b06"
+
+[[package]]
name = "unicode-xid"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -644,6 +699,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a"
[[package]]
+name = "uom"
+version = "0.30.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e76503e636584f1e10b9b3b9498538279561adcef5412927ba00c2b32c4ce5ed"
+dependencies = [
+ "num-traits",
+ "typenum",
+]
+
+[[package]]
name = "vec-arena"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
diff --git a/Cargo.toml b/Cargo.toml
index 780e7cf..2cd4f5c 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "rsblocks"
-version = "0.1.13"
+version = "0.1.14"
authors = ["mustafa salih <mustafasalih1991@gmail.com>"]
edition = "2018"
readme = "README.md"
@@ -20,7 +20,7 @@ mpd = "0.0.12"
nix = "0.19.1"
serde = {version = "1.0.120", features = ["derive"]}
serde_yaml = "0.8.15"
-
+battery = "0.7"
[dependencies.breadx]
version = "0.1.11"
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,
};