__init__.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import argparse
  2. import pathlib
  3. import acpi_backlight.evaluate
  4. _ACPI_BACKLIGHT_ROOT_DIR_PATH = pathlib.Path("/sys/class/backlight")
  5. class Backlight:
  6. # pylint: disable=too-few-public-methods; does not count properties
  7. def __init__(self, name: str = "intel_backlight"):
  8. self._acpi_dir_path = _ACPI_BACKLIGHT_ROOT_DIR_PATH.joinpath(name)
  9. @property
  10. def _brightness_path(self) -> pathlib.Path:
  11. return self._acpi_dir_path.joinpath("brightness")
  12. @property
  13. def _max_brightness_path(self) -> pathlib.Path:
  14. return self._acpi_dir_path.joinpath("max_brightness")
  15. @property
  16. def _brightness_absolute(self) -> int:
  17. return int(self._brightness_path.read_text(encoding="ascii"))
  18. @_brightness_absolute.setter
  19. def _brightness_absolute(self, brightness_absolute: int):
  20. self._brightness_path.write_text(str(brightness_absolute), encoding="ascii")
  21. @property
  22. def _max_brightness_absolute(self) -> int:
  23. return int(self._max_brightness_path.read_text(encoding="ascii"))
  24. @property
  25. def brightness_relative(self) -> float:
  26. return self._brightness_absolute / self._max_brightness_absolute
  27. @brightness_relative.setter
  28. def brightness_relative(self, brightness_relative: float) -> None:
  29. self._brightness_absolute = round(
  30. max(0, min(1, brightness_relative)) * self._max_brightness_absolute
  31. )
  32. def backlight_eval(expr_str: str) -> None:
  33. backlight = acpi_backlight.Backlight()
  34. backlight.brightness_relative = acpi_backlight.evaluate.evaluate_expression(
  35. expr_str=expr_str, names={"b": backlight.brightness_relative}
  36. )
  37. print(backlight.brightness_relative)
  38. def _main() -> None:
  39. argparser = argparse.ArgumentParser()
  40. argparser.add_argument("expr_str")
  41. args = argparser.parse_args()
  42. backlight_eval(expr_str=args.expr_str)