diff --git a/CHANGELOG.md b/CHANGELOG.md index 60cebb75..c2319347 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 + Support 8bit RGB, RGBA, 16bit Greyscalw, RGB, RGBA + add `AsusImage` type for slanted-template pixel-perfect images + `BREAKING:` plain `Image` with time period is changed and old anime configs break as a result (sorry) +- LED: + + By popular request LED prev/next cycle is added ### BREAKING CHANGES - Graphics control: + graphics control is pulled out of asusd and moved to new package; https://gitlab.com/asus-linux/supergfxctl diff --git a/asusctl/src/main.rs b/asusctl/src/main.rs index 09f6ad76..20669e72 100644 --- a/asusctl/src/main.rs +++ b/asusctl/src/main.rs @@ -31,6 +31,10 @@ struct CliStart { show_supported: bool, #[options(meta = "", help = "")] kbd_bright: Option, + #[options(help = "Toggle to next keyboard brightness")] + next_kbd_bright: bool, + #[options(help = "Toggle to previous keyboard brightness")] + prev_kbd_bright: bool, #[options(meta = "", help = "<20-100>")] chg_limit: Option, #[options(command)] @@ -158,8 +162,8 @@ fn main() -> Result<(), Box> { Some(CliCommand::Anime(cmd)) => handle_anime(&dbus, &supported.anime_ctrl, &cmd)?, Some(CliCommand::Bios(cmd)) => handle_bios_option(&dbus, &supported.rog_bios_ctrl, &cmd)?, None => { - if (!parsed.show_supported && parsed.kbd_bright.is_none() && parsed.chg_limit.is_none()) - || parsed.help + if (!parsed.show_supported && parsed.kbd_bright.is_none() && parsed.chg_limit.is_none() + && !parsed.next_kbd_bright && !parsed.prev_kbd_bright) || parsed.help { println!("{}", CliStart::usage()); println!(); @@ -181,6 +185,14 @@ fn main() -> Result<(), Box> { } } + if parsed.next_kbd_bright { + dbus.proxies().led().next_led_brightness()?; + } + + if parsed.prev_kbd_bright { + dbus.proxies().led().prev_led_brightness()?; + } + if parsed.show_supported { println!("Supported laptop functions:\n\n{}", supported); } diff --git a/daemon/src/ctrl_aura/controller.rs b/daemon/src/ctrl_aura/controller.rs index e294fa04..67e4b21e 100644 --- a/daemon/src/ctrl_aura/controller.rs +++ b/daemon/src/ctrl_aura/controller.rs @@ -239,6 +239,28 @@ impl CtrlKbdLed { Ok(()) } + pub fn next_brightness(&mut self) -> Result<(), RogError> { + let mut bright = (self.config.brightness as u32) + 1; + if bright > 3 { + bright = 0; + } + self.config.brightness = ::from(bright); + self.config.write(); + self.set_brightness(self.config.brightness) + } + + pub fn prev_brightness(&mut self) -> Result<(), RogError> { + let mut bright = self.config.brightness as u32; + if bright == 0 { + bright = 3; + } else { + bright -= 1; + } + self.config.brightness = ::from(bright); + self.config.write(); + self.set_brightness(self.config.brightness) + } + /// Set if awake/on LED active, and/or sleep animation active pub(super) fn set_states_enabled(&self, awake: bool, sleep: bool) -> Result<(), RogError> { let bytes = if awake && sleep { diff --git a/daemon/src/ctrl_aura/zbus.rs b/daemon/src/ctrl_aura/zbus.rs index d96fa095..eeab2619 100644 --- a/daemon/src/ctrl_aura/zbus.rs +++ b/daemon/src/ctrl_aura/zbus.rs @@ -105,6 +105,20 @@ impl CtrlKbdLedZbus { } } + fn next_led_brightness(&self) { + if let Ok(mut ctrl) = self.0.try_lock() { + ctrl.next_brightness() + .unwrap_or_else(|err| warn!("{}", err)); + } + } + + fn prev_led_brightness(&self) { + if let Ok(mut ctrl) = self.0.try_lock() { + ctrl.prev_brightness() + .unwrap_or_else(|err| warn!("{}", err)); + } + } + #[dbus_interface(property)] fn awake_enabled(&self) -> bool { if let Ok(ctrl) = self.0.try_lock() { diff --git a/rog-dbus/src/zbus_led.rs b/rog-dbus/src/zbus_led.rs index 675a4143..5440961f 100644 --- a/rog-dbus/src/zbus_led.rs +++ b/rog-dbus/src/zbus_led.rs @@ -38,6 +38,12 @@ trait Daemon { /// PrevLedMode method fn prev_led_mode(&self) -> zbus::Result<()>; + /// Toggle to next led brightness + fn next_led_brightness(&self) -> zbus::Result<()>; + + /// Toggle to previous led brightness + fn prev_led_brightness(&self) -> zbus::Result<()>; + /// SetBrightness method fn set_brightness(&self, brightness: LedBrightness) -> zbus::Result<()>; @@ -124,6 +130,16 @@ impl<'a> LedProxy<'a> { self.0.prev_led_mode() } + #[inline] + pub fn next_led_brightness(&self) -> Result<()> { + self.0.next_led_brightness() + } + + #[inline] + pub fn prev_led_brightness(&self) -> Result<()> { + self.0.prev_led_brightness() + } + #[inline] pub fn set_led_mode(&self, mode: &AuraEffect) -> Result<()> { self.0.set_led_mode(mode)