else:
edid = "%s-%s" % (XrandrOutput.EDID_UNAVAILABLE, match["output"])
- if not match["width"]:
+ if not match["connected"]:
options["off"] = None
else:
if match["mode_name"]:
if "off" in output.options or not output.edid:
continue
# This won't work with all modes -- but it's a best effort.
- o_width, o_height = map(int, output.options["mode"].split("x"))
+ o_mode = re.search("[0-9]{3,}x[0-9]{3,}", output.options["mode"]).group(0)
+ o_width, o_height = map(int, o_mode.split("x"))
if "transform" in output.options:
a, b, c, d, e, f, g, h, i = map(float, output.options["transform"].split(","))
w = (g * o_width + h * o_height + i)
if "panning" in output.options:
match = re.match("(?P<w>[0-9]+)x(?P<h>[0-9]+)(?:\+(?P<x>[0-9]+))?(?:\+(?P<y>[0-9]+))?.*", output.options["panning"])
if match:
- detail = match.groupdict()
- o_width = int(detail.get("w")) + int(detail.get("x", "0"))
- o_height = int(detail.get("h")) + int(detail.get("y", "0"))
+ detail = match.groupdict(default="0")
+ o_width = int(detail.get("w")) + int(detail.get("x"))
+ o_height = int(detail.get("h")) + int(detail.get("y"))
width = max(width, o_width)
height = max(height, o_height)
return int(width), int(height)