X-Git-Url: https://git.ralfj.de/lilass.git/blobdiff_plain/1fabdda231c0be36747b39fd681773a03d1bcf93..ab78af6f47b8c3fc17a057e64208649e7d3a6141:/dsl.py diff --git a/dsl.py b/dsl.py index dad969a..d580276 100755 --- a/dsl.py +++ b/dsl.py @@ -21,7 +21,7 @@ from selector_window import PositionSelection import gui # for auto-config: common names of internal connectors -commonInternalConnectorNames = ['LVDS', 'LVDS1'] +commonInternalConnectorNames = ['LVDS', 'LVDS0', 'LVDS1', 'LVDS-0', 'LVDS-1'] # Load a section-less config file: maps parameter names to space-separated lists of strings (with shell quotation) def loadConfigFile(file): @@ -51,8 +51,11 @@ def getXrandrInformation(): 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"): + continue # new connector? - m = re.search(r'^([\w]+) (dis)?connected ', line) + m = re.search(r'^([\w\-]+) (dis)?connected ', line) if m is not None: connector = m.groups()[0] assert connector not in connectors @@ -83,9 +86,9 @@ def res2user(res): strRatio = '16:%d' % ratio return '%dx%d (%s)' %(w, h, strRatio) -def findAvailableConnector(tryConnectors): +def findAvailableConnector(tryConnectors, allConnectors): for connector in tryConnectors: - if connector in connectors and connectors[connector]: # if the connector exists and is active (i.e. there is a resolution) + if connector in allConnectors and allConnectors[connector]: # if the connector exists and is active (i.e. there is a resolution) return connector return None @@ -103,7 +106,7 @@ def main(): raise Exception("Connector %s does not exist, there is an error in your config file." % internalConnector) else: # auto-config - internalConnector = findAvailableConnector(commonInternalConnectorNames) + internalConnector = findAvailableConnector(commonInternalConnectorNames, connectors) if internalConnector is None: raise Exception("Could not automatically find internal connector, please use ~/.dsl.conf to specify it manually.") # all the rest is external then, obviously - unless the user wants to do that manually @@ -124,7 +127,7 @@ def main(): args[c] = ["--off"] # Check what to do - usedExternalConnector = findAvailableConnector(externalConnectors) # *the* external connector which is actually used + usedExternalConnector = findAvailableConnector(externalConnectors, connectors) # *the* external connector which is actually used if usedExternalConnector is not None: # there's an external screen connected, we need to ask what to do internalResolutions = connectors[internalConnector] externalResolutions = connectors[usedExternalConnector]