connectors = {} # map of connector names to a list of resolutions
connector = None # current connector
for line in p.stdout:
- # ignore screens
- if line.startswith("Screen"):
+ # 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:
assert connector is not None
connectors[connector].append((int(m.groups()[0]), int(m.groups()[1])))
+ continue
+ # unknown line
+ raise Exception("Unknown line in xrandr output:\n"+line)
+ # be sure to always proprly finish up with the xrandr
p.communicate()
+ # if everything succeededso far, check return code
if p.returncode != 0: raise Exception("Querying xrandr for data failed.")
return connectors