diff options
Diffstat (limited to 'xpybar/config/mybrilliance.py')
-rw-r--r-- | xpybar/config/mybrilliance.py | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/xpybar/config/mybrilliance.py b/xpybar/config/mybrilliance.py new file mode 100644 index 0000000..f7647e7 --- /dev/null +++ b/xpybar/config/mybrilliance.py @@ -0,0 +1,70 @@ +# -*- python -*- +import os +import sys +from common import * + +class MyBrilliance(Entry): + def __init__(self, *args, **kwargs): + self.show_label = True + self.brilliance = self.get_brilliance() + self.counter = 0 + self.path = os.getenv('XDG_RUNTIME_DIR', '/tmp') + '/.xpybar.brilliance' + Entry.__init__(self, *args, **kwargs) + + def get_brilliance(self): + try: + with open(self.path, 'rb') as file: + return float(file.read().decode('utf-8', 'strict')) + except: + return 1 + + def set_brilliance(self): + pid = os.fork() + if not pid: + if self.brilliance == 1: + os.execlp('cg-brilliance', 'cg-brilliance', '-x') + else: + os.execlp('cg-brilliance', 'cg-brilliance', '--', '%f' % self.brilliance) + sys.exit(1) + os.waitpid(pid, 0) + with open(self.path, 'wb') as file: + return file.write(('%f' % self.brilliance).encode('utf-8')) + + def action(self, col, button, x, y): + if button == LEFT_BUTTON: + pid = os.fork() + if not pid: + pid = os.fork() + if not pid: + os.execlp('xpybar', 'xpybar', '-c', '%s/.config/xpybar/adjbrilliance' % HOME) + sys.exit(1) + sys.exit(0) + os.waitpid(pid, 0) + elif button == MIDDLE_BUTTON: + self.show_label = not self.show_label + self.invalidate() + elif button == RIGHT_BUTTON: + self.brilliance = self.get_brilliance() + self.invalidate() + elif button == SCROLL_UP: + self.brilliance = min(self.brilliance + 0.05, 1) + self.set_brilliance() + self.invalidate() + elif button == SCROLL_DOWN: + self.brilliance = max(self.brilliance - 0.05, 0) + self.set_brilliance() + self.invalidate() + + def function(self): + self.counter += 1 + if self.counter == 6: + self.counter = 0 + self.brilliance = self.get_brilliance() + val = int(self.brilliance * 100 + 0.5) + if val >= 100: + val = str(val) + else: + val = '%2i%%' % val + if self.show_label: + val = 'Brill: ' + val + return val |