__init__.py 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. # pylint: disable=missing-docstring
  2. import argparse
  3. import os
  4. import acpi_backlight.evaluate
  5. _ACPI_BACKLIGHT_ROOT_DIR_PATH = "/sys/class/backlight"
  6. class Backlight:
  7. def __init__(self, name="intel_backlight"):
  8. self._acpi_dir_path = os.path.join(_ACPI_BACKLIGHT_ROOT_DIR_PATH, name)
  9. @property
  10. def _brightness_path(self):
  11. return os.path.join(self._acpi_dir_path, "brightness")
  12. @property
  13. def _max_brightness_path(self):
  14. return os.path.join(self._acpi_dir_path, "max_brightness")
  15. @property
  16. def _brightness_absolute(self):
  17. with open(self._brightness_path, "r") as brightness_file:
  18. return int(brightness_file.read())
  19. @_brightness_absolute.setter
  20. def _brightness_absolute(self, brightness_absolute):
  21. with open(self._brightness_path, "w") as brightness_file:
  22. return brightness_file.write(str(round(brightness_absolute)))
  23. @property
  24. def _max_brightness_absolute(self):
  25. with open(self._max_brightness_path, "r") as max_brightness_file:
  26. return int(max_brightness_file.read())
  27. @property
  28. def brightness_relative(self):
  29. return self._brightness_absolute / self._max_brightness_absolute
  30. @brightness_relative.setter
  31. def brightness_relative(self, brightness_relative):
  32. self._brightness_absolute = (
  33. max(0, min(1, brightness_relative)) * self._max_brightness_absolute
  34. )
  35. def backlight_eval(expr_str):
  36. backlight = acpi_backlight.Backlight()
  37. backlight.brightness_relative = acpi_backlight.evaluate.evaluate_expression(
  38. expr_str=expr_str,
  39. names={"b": backlight.brightness_relative},
  40. )
  41. print(backlight.brightness_relative)
  42. def main():
  43. argparser = argparse.ArgumentParser()
  44. argparser.add_argument("expr_str")
  45. args = argparser.parse_args()
  46. backlight_eval(expr_str=args.expr_str)
  47. if __name__ == "__main__":
  48. main()