#!/usr/bin/python3 import notify2 import os import subprocess import sys if len(sys.argv) < 2: sys.stdout.write('Usage: %s /sys/...//\n') sys.exit(0) path = sys.argv[1] with open(os.path.join(path, 'max_brightness'), 'r') as f: brightness_max = float(f.read().strip()) notify2.init(os.path.basename(sys.argv[0])) notification = notify2.Notification('Brightness') inotify_cmd = ['inotifywait', '--monitor', '--event=close_write', os.path.join(path, 'brightness')] child = subprocess.Popen(inotify_cmd, stdout = subprocess.PIPE, bufsize = 0) while True: # wait for updates child.stdout.read(4096) if child.poll() is not None: notification.message = 'inotify monitor has terminated' notification.set_urgency(notify2.URGENCY_CRITICAL) notification.show() sys.stderr.write(notification.message + '\n') break with open(os.path.join(path, 'brightness'), 'r') as f: brightness = float(f.read().strip()) notification.message = '%d%%' % (100 * brightness / brightness_max) notification.show()