__init__.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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 = max(0, min(1, brightness_relative)) \
  33. * self._max_brightness_absolute
  34. def backlight_eval(expr_str):
  35. backlight = acpi_backlight.Backlight()
  36. backlight.brightness_relative = acpi_backlight.evaluate.evaluate_expression(
  37. expr_str=expr_str,
  38. names={'b': backlight.brightness_relative},
  39. )
  40. print(backlight.brightness_relative)
  41. def main():
  42. argparser = argparse.ArgumentParser()
  43. argparser.add_argument('expr_str')
  44. args = argparser.parse_args()
  45. backlight_eval(expr_str=args.expr_str)
  46. if __name__ == '__main__':
  47. main()