From 2ba19f9e6411bcd93e8ef467ba9874238ebffa74 Mon Sep 17 00:00:00 2001 From: Kenny Levinsen Date: Wed, 1 Jan 2020 17:18:25 +0100 Subject: [PATCH] Allow backlight device to be specified --- config.json | 2 +- config.yaml | 1 + src/config.rs | 12 ++++++++++-- src/widgets/backlight.rs | 13 ++----------- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/config.json b/config.json index 1885378..eb3915f 100644 --- a/config.json +++ b/config.json @@ -23,7 +23,7 @@ },{ "margin": { "margins": [0,0,0,8], - "widget": {"backlight": {"font_size": 24.0,"length": 600}} + "widget": {"backlight": {"device": "intel_backlight", "font_size": 24.0,"length": 600}} } },{ "margin": { diff --git a/config.yaml b/config.yaml index dddbee9..caacd75 100644 --- a/config.yaml +++ b/config.yaml @@ -30,6 +30,7 @@ widget: margins: [0, 0, 0, 8] widget: backlight: + device: "intel_backlight" font_size: 24.0 length: 600 - margin: diff --git a/src/config.rs b/src/config.rs index 7778eff..5d7c0df 100644 --- a/src/config.rs +++ b/src/config.rs @@ -45,6 +45,8 @@ pub enum Widget { length: u32, }, Backlight { + #[serde(default)] + device: String, font_size: f32, length: u32, }, @@ -121,8 +123,13 @@ impl Widget { Err(_) => None, } } - Widget::Backlight { font_size, length } => { - match widgets::backlight::Backlight::new(font_size, length) { + Widget::Backlight { device, font_size, length } => { + let d = if device == "" { + "intel_backlight" + } else { + &device + }; + match widgets::backlight::Backlight::new(d, font_size, length) { Ok(w) => Some(w), Err(_) => None, } @@ -192,6 +199,7 @@ impl Default for Config { Box::new(Widget::Margin { margins: (0, 0, 0, 8), widget: Box::new(Widget::Backlight { + device: "intel_backlight".to_string(), font_size: 24.0, length: 600, }), diff --git a/src/widgets/backlight.rs b/src/widgets/backlight.rs index c8a350a..5acfa55 100644 --- a/src/widgets/backlight.rs +++ b/src/widgets/backlight.rs @@ -71,18 +71,9 @@ impl Backlight { Ok(()) } - pub fn new(font_size: f32, length: u32) -> Result, Error> { - let devices = Path::new("/sys/class/backlight").read_dir()?; - - let first_device = match devices.take(1).next() { - Some(v) => match v { - Ok(v) => v, - Err(_) => return Err(Error::new(ErrorKind::Other, "no backlight device")), - }, - None => return Err(Error::new(ErrorKind::Other, "no backlight device")), - }; + pub fn new(path: &str, font_size: f32, length: u32) -> Result, Error> { let mut dev = Backlight { - device_path: first_device.path(), + device_path: Path::new("/sys/class/backlight").to_path_buf().join(path), cur_brightness: 0, max_brightness: 0, };