-def loadConfigFile(file):
- import shlex
- result = {}
- if not os.path.exists(file):
- return result # no config file
- # read config file
- linenr = 0
- with open(file) as file:
- for line in file:
- linenr += 1
- line = line.strip()
- if not len(line) or line.startswith("#"): continue # skip empty and comment lines
- try:
- # parse line
- pos = line.index("=") # will raise exception when substring is not found
- curKey = line[:pos].strip()
- result[curKey] = shlex.split(line[pos+1:]) # shlex.split also strips
- except Exception:
- raise Exception("Invalid config, line %d: Error parsing line (may be a quoting issue)." % linenr)
- # add some convencience get functions
- return result
-
-# 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():
- p = subprocess.Popen(["xrandr", "-q"], stdout=subprocess.PIPE)
- connectors = {} # map of connector names to a list of resolutions
- 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
- # 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
- # 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
-
-# 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)
+def loadConfigFile(filename):
+ import shlex
+ result = {}
+ if not os.path.exists(filename):
+ return result # no config file
+ # read config file
+ linenr = 0
+ with open(filename) as f:
+ for line in f:
+ linenr += 1
+ line = line.strip()
+ if not len(line) or line.startswith("#"): continue # skip empty and comment lines
+ try:
+ # parse line
+ pos = line.index("=") # will raise exception when substring is not found
+ curKey = line[:pos].strip()
+ result[curKey] = shlex.split(line[pos+1:]) # shlex.split also strips
+ except Exception:
+ raise Exception("Invalid config, line %d: Error parsing line (may be a quoting issue)." % linenr)
+ # add some convencience get functions
+ return result