mirror of
https://gitlab.com/asus-linux/asusctl.git
synced 2026-02-06 00:15:04 +01:00
feature: add support for screenpad brightness
This commit is contained in:
@@ -54,6 +54,8 @@ pub enum CliCommand {
|
||||
driver, some of the settings will be the same as the older platform interface"
|
||||
)]
|
||||
Armoury(ArmouryCommand),
|
||||
#[options(name = "backlight", help = "Set screen backlight levels")]
|
||||
Backlight(BacklightCommand),
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Options)]
|
||||
@@ -102,3 +104,21 @@ pub struct ArmouryCommand {
|
||||
)]
|
||||
pub free: Vec<String>,
|
||||
}
|
||||
|
||||
#[derive(Options)]
|
||||
pub struct BacklightCommand {
|
||||
#[options(help = "print help message")]
|
||||
pub help: bool,
|
||||
#[options(meta = "", help = "Set screen brightness <0-100>")]
|
||||
pub screenpad_brightness: Option<i32>,
|
||||
#[options(
|
||||
meta = "",
|
||||
help = "Set screenpad gamma brightness 0.5 - 2.2, 1.0 == linear"
|
||||
)]
|
||||
pub screenpad_gamma: Option<f32>,
|
||||
#[options(
|
||||
meta = "",
|
||||
help = "Set screenpad brightness to sync with primary display"
|
||||
)]
|
||||
pub sync_screenpad_brightness: Option<bool>,
|
||||
}
|
||||
|
||||
@@ -19,6 +19,7 @@ use rog_dbus::list_iface_blocking;
|
||||
use rog_dbus::scsi_aura::ScsiAuraProxyBlocking;
|
||||
use rog_dbus::zbus_anime::AnimeProxyBlocking;
|
||||
use rog_dbus::zbus_aura::AuraProxyBlocking;
|
||||
use rog_dbus::zbus_backlight::BacklightProxyBlocking;
|
||||
use rog_dbus::zbus_fan_curves::FanCurvesProxyBlocking;
|
||||
use rog_dbus::zbus_platform::PlatformProxyBlocking;
|
||||
use rog_dbus::zbus_slash::SlashProxyBlocking;
|
||||
@@ -218,6 +219,7 @@ fn do_parsed(
|
||||
Some(CliCommand::Slash(cmd)) => handle_slash(cmd)?,
|
||||
Some(CliCommand::Scsi(cmd)) => handle_scsi(cmd)?,
|
||||
Some(CliCommand::Armoury(cmd)) => handle_armoury_command(cmd)?,
|
||||
Some(CliCommand::Backlight(cmd)) => handle_backlight(cmd)?,
|
||||
None => {
|
||||
if (!parsed.show_supported
|
||||
&& parsed.kbd_bright.is_none()
|
||||
@@ -381,6 +383,46 @@ fn do_gfx() {
|
||||
println!("This command will be removed in future");
|
||||
}
|
||||
|
||||
fn handle_backlight(cmd: &BacklightCommand) -> Result<(), Box<dyn std::error::Error>> {
|
||||
if (cmd.screenpad_brightness.is_none()
|
||||
&& cmd.screenpad_gamma.is_none()
|
||||
&& cmd.sync_screenpad_brightness.is_none())
|
||||
|| cmd.help
|
||||
{
|
||||
println!("Missing arg or command\n\n{}", cmd.self_usage());
|
||||
|
||||
let backlights = find_iface::<BacklightProxyBlocking>("xyz.ljones.Backlight")?;
|
||||
for backlight in backlights {
|
||||
println!("Current screenpad settings:");
|
||||
println!(" Brightness: {}", backlight.screenpad_brightness()?);
|
||||
println!(" Gamma: {}", backlight.screenpad_gamma()?);
|
||||
println!(
|
||||
" Sync with primary: {}",
|
||||
backlight.screenpad_sync_with_primary()?
|
||||
);
|
||||
}
|
||||
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
let backlights = find_iface::<BacklightProxyBlocking>("xyz.ljones.Backlight")?;
|
||||
for backlight in backlights {
|
||||
if let Some(brightness) = cmd.screenpad_brightness {
|
||||
backlight.set_screenpad_brightness(brightness)?;
|
||||
}
|
||||
|
||||
if let Some(gamma) = cmd.screenpad_gamma {
|
||||
backlight.set_screenpad_gamma(gamma.to_string().as_str())?;
|
||||
}
|
||||
|
||||
if let Some(sync) = cmd.sync_screenpad_brightness {
|
||||
backlight.set_screenpad_sync_with_primary(sync)?;
|
||||
}
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn handle_anime(cmd: &AnimeCommand) -> Result<(), Box<dyn std::error::Error>> {
|
||||
if (cmd.command.is_none()
|
||||
&& cmd.enable_display.is_none()
|
||||
|
||||
Reference in New Issue
Block a user