From 59f9c1154b5cb55269382c404ae4295171b19557 Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Sat, 6 Oct 2012 12:49:18 +0200 Subject: [PATCH] It does not like me to always properly clean up the xrandr process, so just don't do it --- dsl.py | 50 ++++++++++++++++++++++++-------------------------- gui.py | 1 - 2 files changed, 24 insertions(+), 27 deletions(-) diff --git a/dsl.py b/dsl.py index 0704d3e..fa7750a 100755 --- a/dsl.py +++ b/dsl.py @@ -49,32 +49,30 @@ def loadConfigFile(file): def getXrandrInformation(): p = subprocess.Popen(["xrandr", "-q"], stdout=subprocess.PIPE) connectors = {} # map of connector names to a list of resolutions - try: - connector = None # current connector - for line in p.stdout: - # 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 - raise Exception("Unknown line in xrandr output:\n"+line) - finally: - # be sure to always proprly finish up with the xrandr - p.communicate() + connector = None # current connector + for line in p.stdout: + # 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 + 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 diff --git a/gui.py b/gui.py index edb9b2b..a85f2d5 100644 --- a/gui.py +++ b/gui.py @@ -22,4 +22,3 @@ app = QtGui.QApplication(sys.argv) def error(message): QtGui.QMessageBox.critical(None, 'Fatal error', message) - raise Exception(message) -- 2.30.2