-#!/usr/bin/python
+#!/usr/bin/python3
# DSL - easy Display Setup for Laptops
# Copyright (C) 2012 Ralf Jung <post@ralfj.de>
#
# 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
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.")
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:
frontend.error(str(e))
def __init__(self):
from PyQt4 import QtGui
self.app = QtGui.QApplication(sys.argv)
- print "Qt loaded"
+ print("Qt loaded")
def error(self, message):
from PyQt4 import QtGui
# CLI frontend
class CLIFrontend:
def error(self, message):
- print >> sys.stderr, message
+ print(message, file=sys.stderr)
def setup(self, internalResolutions, externalResolutions):
raise Exception("Choosing the setup interactively is not supported with the CLI frontend")
# frontend not found or not available
raise Exception("Frontend %s not found or not available" % name)
# auto-detect
- for frontend in frontends.values():
+ for frontend in list(frontends.values()):
if frontend.isAvailable():
return frontend() # call constructor
raise Exception("No frontend is available - this should not happen")
def userChoose (title, choices, returns, fallback):
assert len(choices) == len(returns)
args = ["zenity", "--list", "--text="+title, "--column="]+choices
- switch = dict (zip (choices,returns))
+ switch = dict (list(zip (choices,returns)))
for line in processOutputIt(*args):
return switch.get(line.strip(), fallback)
return fallback
return None
intres = internalResolutions[0]
if relpos != RelativeScreenPosition.EXTERNAL_ONLY:
- intres = userChoose ("internal display resolution", map(res2user,internalResolutions), internalResolutions, internalResolutions[0])
- extres = userChoose ("external display resolution", map(res2user,externalResolutions), externalResolutions, externalResolutions[0])
+ intres = userChoose ("internal display resolution", list(map(res2user,internalResolutions)), internalResolutions, internalResolutions[0])
+ extres = userChoose ("external display resolution", list(map(res2user,externalResolutions)), externalResolutions, externalResolutions[0])
extprim = userChoose ("Which display should be the primary display?", ["internal display", "external display"], [False, True], None)
if extprim == None:
return None