termux_api/api/
brightness.rs

1use std::process::Command;
2
3use super::errors::TermuxError;
4
5pub enum Brightness {
6    Level(u8),
7    Auto,
8}
9
10pub struct TermuxBrightness {
11    level: Brightness,
12}
13impl TermuxBrightness {
14    pub fn new() -> Self {
15        Self {
16            level: Brightness::Auto,
17        }
18    }
19    pub fn set(mut self, brightness: Brightness) -> Self {
20        self.level = brightness;
21        self
22    }
23    pub fn run(&self) -> Result<(), TermuxError> {
24        let mut command = Command::new("termux-brightness");
25        match self.level {
26            Brightness::Level(lvl) => {
27                command.arg(format!("{lvl}"));
28            }
29            Brightness::Auto => {
30                command.arg("auto".to_string());
31            }
32        }
33        let output = command.output();
34        match output {
35            Ok(output) => {
36                if output.status.success() {
37                    return Ok(());
38                }
39                Err(TermuxError::Output(output))
40            }
41            Err(e) => Err(TermuxError::IOError(e)),
42        }
43    }
44}