-# Run xrandr and return a dict of output names mapped to lists of available resolutions, each being a (width, height) pair.
-# An empty list indicates that the connector is disabled.
-def getXrandrInformation():
- connectors = {} # map of connector names to a list of resolutions
- connector = None # current connector
- for line in processOutputGen("xrandr", "-q"):
- # screen?
- m = re.search(r'^Screen [0-9]+: ', line)
- if m is not None: # ignore this line
- connector = None
- continue
- # new connector?
- m = re.search(r'^([\w\-]+) (dis)?connected ', line)
- if m is not None:
- connector = m.groups()[0]
- assert connector not in connectors
- connectors[connector] = []
- continue
- # new resolution?
- m = re.search(r'^ ([\d]+)x([\d]+) +', line)
- if m is not None:
- assert connector is not None
- connectors[connector].append((int(m.groups()[0]), int(m.groups()[1])))
- continue
- # unknown line
- # not fatal as my xrandr shows strange stuff when a display is enabled, but not connected
- #raise Exception("Unknown line in xrandr output:\n"+line)
- print("Warning: Unknown xrandr line %s" % line)
- return connectors
-
-# convert a (width, height) pair into a string accepted by xrandr as argument for --mode
-def res2xrandr(res):
- (w, h) = res
- return str(w)+'x'+str(h)
-
-# convert a (width, height) pair into a string to be displayed to the user
-def res2user(res):
- (w, h) = res
- # get ratio
- ratio = int(round(16.0*h/w))
- if ratio == 12: # 16:12 = 4:3
- strRatio = '4:3'
- elif ratio == 13: # 16:12.8 = 5:4
- strRatio = '5:4'
- else: # let's just hope this will never be 14 or more...
- strRatio = '16:%d' % ratio
- return '%dx%d (%s)' %(w, h, strRatio)
-
-# return the first available connector from those listed in tryConnectors, skipping disabled connectors
-def findAvailableConnector(tryConnectors, allConnectors):
- for connector in tryConnectors:
- if connector in allConnectors and allConnectors[connector]: # if the connector exists and is active (i.e. there is a resolution)
- return connector
- return None
+# Make sure the backlight is turned on
+def turnOnBacklight():
+ try:
+ backlight = float(subprocess.check_output(["xbacklight", "-get"]).strip())
+ if backlight == 0: # it's completely turned off, we better enable it
+ subprocess.check_call(["xbacklight", "-set", "100"])
+ except FileNotFoundError:
+ print("xbacklight has not been found, unable to turn your laptop backlight on.")
+ except subprocess.CalledProcessError:
+ print("xbacklight returned an error while attempting to turn your laptop backlight on.")