diff --git a/ambientd.py b/ambientd.py deleted file mode 100755 index c8bfb5e..0000000 --- a/ambientd.py +++ /dev/null @@ -1,73 +0,0 @@ -#!/usr/bin/python - -# Simple daemon to change brightness based on luminance -# TODO: add a config -# TODO: add debug option -# TODO: add dry-run -# TODO automatically find the right brightness path and do not assume intel_backlight - -import time - -# Open the luminance sensor device file -try: - luminance_file = open('/sys/bus/iio/devices/iio:device0/in_illuminance_raw', 'r') -except OSError as err: - print(err) - exit(1) - -# max luminance of the screen - 100 (maybe) -max_luminance = 400 - -# get luminance value, on fail return the max -def get_luminance(): - try: - l = int(luminance_file.read()) - luminance_file.seek(0) - except: - l = max_luminance - return l - -# Get the max brightness -max_brightness = 100 -with open('/sys/class/backlight/intel_backlight/max_brightness', 'r') as f: - max_brightness = int(f.read()) -min_brightness = int(max_brightness * 0.05) - -# loop delay in seconds -delay = 3 - -lum = [get_luminance()]*4 -user_offset = 0 -brightness_target = min_brightness -brightness_old = min_brightness -while True: - lum.append(lum.pop(0)) - lum[0] = get_luminance() - - luminance = sum(lum)/len(lum) - luminance_percent = min(luminance/max_luminance, 1.0) - brightness_old = brightness_target - brightness_target = max(int(luminance_percent * max_brightness), min_brightness) - brightness_delta = abs((brightness_target - brightness_old)/brightness_old) - - # if the brightness changes by more than 10% reduce the user offset, scaling - # with the delta, this accounts for large changes in brightness no longer - # corresponding to the adjustments that the user made to the brightness - if brightness_delta > 0.1: - user_offset = int(user_offset * max(min(1-(brightness_delta*1.2), 1), 0)) - - brightness_adjusted = min(max(brightness_target + user_offset, min_brightness), max_brightness) - b = open('/sys/class/backlight/intel_backlight/brightness', 'w') - b.write(str(brightness_adjusted)) - b.close() - - time.sleep(delay) - - # if the value of the brightness changed then update the user offset - a = open('/sys/class/backlight/intel_backlight/actual_brightness') - x = int(a.read()) - brightness_target - a.close() - if brightness_target != max_brightness or x < 0: - user_offset = x - - print("brightness target: ", brightness_target, "user offset: ", user_offset, "brightness adjusted: ", brightness_adjusted)