#!/usr/bin/env python3 """ Tkinter GUI to adjust xrandr brightness and gamma settings on all connected screens on the fly """ from tkinter import * import os, subprocess config_file = os.path.expanduser('~') + "/.config/pybrite" c = 80 d = 5 g = .8 h = .1 screens = [] try: with open(config_file, "r") as f: c, g = [float(a) for a in f.readline().split()] except: print("No config file found.") def get_screens(): cmd = 'xrandr -q' r = subprocess.check_output(cmd.split()).decode("utf-8") for x in r.splitlines(): if " connected" in x: screens.append(x.split(' ')[0]) def setbg(): lab.config(text = "%u%%" % c) labg.config(text = "%.1f" % g) for scr in screens: os.system("xrandr --output %s --brightness %f --gamma %f:%f:%f" % ( scr, c / 100, g, g, g)) with open(config_file, "w") as f: f.write("%u %.1f" % (c, g)) def mb(): global c if c > d: c -= d setbg() def pb(): global c if c < 200 - d / 2: c += d setbg() def mg(): global g if g > 1.5 * h: g -= h setbg() def pg(): global g if g < 3 - h / 2: g += h setbg() get_screens() master = Tk() f1 = Frame(master) f1.pack(side = TOP, fill = Y) f2 = Frame(master) f2.pack(side = TOP, fill = Y) f3 = Frame(master) f3.pack(side = BOTTOM, fill = Y) minus_but = Button(f1, text = " − ", command = mb) minus_but.pack(side = LEFT) plus_but = Button(f1, text = " + ", command = pb) plus_but.pack(side = RIGHT) mg_but = Button(f2, text = " − ", command = mg) mg_but.pack(side = LEFT) pb_but = Button(f2, text = " + ", command = pg) pb_but.pack(side = RIGHT) lab = Label(f3, text = '') lab.pack(side = TOP) labg = Label(f3, text = '') labg.pack(side = TOP) setbg() master.title("PyBrite") master.resizable(0, 0) mainloop()