diff options
| author | Mustafa Salih <37256744+MustafaSalih1993@users.noreply.github.com> | 2021-09-05 17:22:33 +0300 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-09-05 17:22:33 +0300 | 
| commit | ae533f1fe7675efb8b63f0a176e1fafa23dd94f9 (patch) | |
| tree | 7614b39133d62132720e523ab51c6f6e032bde17 /src | |
| parent | a66c94a1f836b56897a3b5151f93aaa327efc6bd (diff) | |
Dev (#63)
* Closes #62 added brightness block
Diffstat (limited to 'src')
| -rw-r--r-- | src/blockmanager.rs | 11 | ||||
| -rw-r--r-- | src/config/brightness.rs | 21 | ||||
| -rw-r--r-- | src/config/mod.rs | 6 | ||||
| -rw-r--r-- | src/run.rs | 10 | ||||
| -rw-r--r-- | src/types.rs | 10 | ||||
| -rw-r--r-- | src/utils/brightness.rs | 28 | ||||
| -rw-r--r-- | src/utils/mod.rs | 1 | 
7 files changed, 82 insertions, 5 deletions
diff --git a/src/blockmanager.rs b/src/blockmanager.rs index aa92b64..9a256b1 100644 --- a/src/blockmanager.rs +++ b/src/blockmanager.rs @@ -13,11 +13,11 @@ impl BlockManager {          let root = disp.default_screen().root;          Self {              disp, -            blocks: vec![String::from(""); 15], +            blocks: vec![String::from(""); 16],              root,          }      } - +    // TODO let the user control the indexes of the blocks      pub fn update(&mut self, data: ThreadsData) {          match data {              ThreadsData::Spotify(x) => self.blocks[0] = x, @@ -32,9 +32,10 @@ impl BlockManager {              ThreadsData::Memory(x) => self.blocks[9] = x,              ThreadsData::CpuTemp(x) => self.blocks[10] = x,              ThreadsData::LoadAvg(x) => self.blocks[11] = x, -            ThreadsData::Battery(x) => self.blocks[12] = x, -            ThreadsData::Uptime(x) => self.blocks[13] = x, -            ThreadsData::Time(x) => self.blocks[14] = x, +            ThreadsData::Brightness(x) => self.blocks[12] = x, +            ThreadsData::Battery(x) => self.blocks[13] = x, +            ThreadsData::Uptime(x) => self.blocks[14] = x, +            ThreadsData::Time(x) => self.blocks[15] = x,          }          let mut x = String::new();          for i in self.blocks.iter() { diff --git a/src/config/brightness.rs b/src/config/brightness.rs new file mode 100644 index 0000000..b0b3696 --- /dev/null +++ b/src/config/brightness.rs @@ -0,0 +1,21 @@ +use serde::{Deserialize, Serialize}; +use std::default::Default; + +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] +pub struct Brightness { +    pub icon: String, +    pub enabled: bool, +    pub delay: f64, +    pub path: String, +} + +impl Default for Brightness { +    fn default() -> Self { +        Brightness { +            icon: String::from(""), +            enabled: false, +            delay: 120.0, +            path: String::from("/sys/class/backlight/intel_backlight"), +        } +    } +} diff --git a/src/config/mod.rs b/src/config/mod.rs index 48809a6..83f0491 100644 --- a/src/config/mod.rs +++ b/src/config/mod.rs @@ -1,5 +1,6 @@  mod battery;  mod bitcoins; +mod brightness;  mod cputemp;  mod disk;  mod loadavg; @@ -17,6 +18,7 @@ mod weather;  use self::battery::Battery;  use self::mpd::Mpd;  use bitcoins::BitCoins; +use brightness::Brightness;  use cputemp::CpuTemp;  use disk::Disk;  use loadavg::LoadAvg; @@ -83,6 +85,9 @@ pub struct Config {      pub battery: Battery,      #[serde(default)] +    pub brightness: Brightness, + +    #[serde(default)]      pub cpu_temperature: CpuTemp,      #[serde(default)] @@ -120,6 +125,7 @@ impl Default for Config {              volume: Default::default(),              weather: Default::default(),              battery: Default::default(), +            brightness: Default::default(),              cpu_temperature: Default::default(),              uptime: Default::default(),              mpd: Default::default(), @@ -95,6 +95,16 @@ pub async fn run(mut blocks: BlockManager) {          task::spawn(b);      } +    // brightness task +    if CONFIG.brightness.enabled { +        let b = init_block( +            tx.clone(), +            brightness::get_brightness, +            CONFIG.brightness.delay, +        ); +        task::spawn(b); +    } +      // BTC task      if CONFIG.bitcoins.enabled {          let b = init_block(tx.clone(), bitcoins::get_price, CONFIG.bitcoins.delay); diff --git a/src/types.rs b/src/types.rs index 3cadf01..a26ffc2 100644 --- a/src/types.rs +++ b/src/types.rs @@ -15,6 +15,7 @@ pub enum ThreadsData {      PubIp(String),      LocalIp(String),      BitCoins(String), +    Brightness(String),  }  #[derive(Clone)] @@ -34,6 +35,7 @@ pub struct Config {      pub pub_ip: PubIp,      pub local_ip: LocalIp,      pub bitcoins: BitCoins, +    pub brightness: Brightness,  }  #[derive(Clone)] @@ -146,3 +148,11 @@ pub struct BitCoins {      pub enabled: bool,      pub delay: f64,  } + +#[derive(Clone)] +pub struct Brightness { +    pub icon: String, +    pub enabled: bool, +    pub delay: f64, +    pub path: String, +} diff --git a/src/utils/brightness.rs b/src/utils/brightness.rs new file mode 100644 index 0000000..b340907 --- /dev/null +++ b/src/utils/brightness.rs @@ -0,0 +1,28 @@ +use crate::config::CONFIG; +use crate::types::ThreadsData; +use std::fs::read_to_string; +use std::path::Path; + +// getting brightness +pub async fn get_brightness() -> ThreadsData { +    let brightness_path = Path::new(&CONFIG.brightness.path); +    if !brightness_path.exists() { +        return ThreadsData::Brightness(String::from("brightness path not found")); +    }; +    let current_brightness = match read_to_string(Path::new(brightness_path).join("brightness")) { +        Ok(brightness) => brightness.trim().to_owned().parse::<f32>().unwrap(), +        _ => return ThreadsData::Brightness(String::from("error reading current brightness")), +    }; +    let max_brightness = match read_to_string(Path::new(brightness_path).join("max_brightness")) { +        Ok(brightness) => brightness.trim().to_owned().parse::<f32>().unwrap(), +        _ => return ThreadsData::Brightness(String::from("error reading max brightness")), +    }; + +    let value = (current_brightness / max_brightness) * 100.0; + +    let result = format!( +        "  {}  {:.0}%  {}", +        CONFIG.brightness.icon, value, CONFIG.seperator +    ); +    ThreadsData::Brightness(result) +} diff --git a/src/utils/mod.rs b/src/utils/mod.rs index cf9ea0d..c565434 100644 --- a/src/utils/mod.rs +++ b/src/utils/mod.rs @@ -1,5 +1,6 @@  pub mod battery;  pub mod bitcoins; +pub mod brightness;  pub mod cpu;  pub mod disk;  pub mod load_average;  | 
