X-Git-Url: https://git.ralfj.de/lilass.git/blobdiff_plain/a9394222c323143c0fea03848a3f1daf79017a00..aaa0b27561726d84cc7c3fcfd16302c87dc628d7:/dsl.py diff --git a/dsl.py b/dsl.py index d13d0a0..9dd2223 100755 --- a/dsl.py +++ b/dsl.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python3 # DSL - easy Display Setup for Laptops # Copyright (C) 2012 Ralf Jung # @@ -17,7 +17,8 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. import argparse, sys, os, re, subprocess -import gui +from gui import getFrontend +frontend = getFrontend("cli") # the fallback, until we got a proper frontend. This is guaranteed to be available. # for auto-config: common names of internal connectors commonInternalConnectorNames = ['LVDS', 'LVDS0', 'LVDS1', 'LVDS-0', 'LVDS-1'] @@ -117,7 +118,7 @@ def getXrandrInformation(): # 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 + print("Warning: Unknown xrandr line %s" % line) return connectors # convert a (width, height) pair into a string accepted by xrandr as argument for --mode @@ -170,7 +171,7 @@ def classifyConnectors(allConnectors): if connector == internalConnector: raise Exception("%s is both internal and external, that doesn't make sense." % connector) else: - externalConnectors = allConnectors.keys() + externalConnectors = list(allConnectors.keys()) externalConnectors.remove(internalConnector) if not externalConnectors: raise Exception("No external connector found - either your config is wrong, or your machine has only one connector.") @@ -182,11 +183,17 @@ if __name__ == "__main__": try: # parse command-line arguments parser = argparse.ArgumentParser(description='easy Display Setup for Laptops') + parser.add_argument("-f, --frontend", + dest="frontend", + help="The frontend to be used for user interaction") parser.add_argument("-r, --relative-position", dest="rel_position", choices=('left', 'right', 'external-only'), help="Position of external screen relative to internal one") cmdArgs = parser.parse_args() + # load frontend + frontend = getFrontend(cmdArgs.frontend) + # load connectors and classify them connectors = getXrandrInformation() (internalConnector, externalConnectors) = classifyConnectors(connectors) @@ -212,7 +219,7 @@ if __name__ == "__main__": setup = ScreenSetup(relPosition, connectors[internalConnector][0], connectors[usedExternalConnector][0]) # use default resolutions else: # use GUI - setup = gui.setup(connectors[internalConnector], connectors[usedExternalConnector]) + setup = frontend.setup(connectors[internalConnector], connectors[usedExternalConnector]) if setup is None: sys.exit(1) # the user canceled # apply it connectorArgs[internalConnector] = setup.getInternalArgs() @@ -225,8 +232,8 @@ if __name__ == "__main__": call = ["xrandr"] for name in connectorArgs: call += ["--output", name] + connectorArgs[name] - print "Call that will be made:",call + print("Call that will be made:",call) subprocess.check_call(call) except Exception as e: - gui.error(str(e)) + frontend.error(str(e)) raise