else:
import configparser
-__version__ = "1.13.1"
+__version__ = "1.14"
try:
input = raw_input
--dry-run don't change anything, only print the xrandr commands
--fingerprint fingerprint your current hardware setup
--ignore-lid treat outputs as connected even if their lids are closed
---match-edid match diplays based on edid instead of name
+--match-edid match displays based on edid instead of name
--force force (re)loading of a profile / overwrite exiting files
--list list configurations
--skip-options <option> comma separated list of xrandr arguments (e.g. "gamma")
return x + 10000 * y
def __init__(self, output, edid, options):
- "Instanciate using output name, edid and a dictionary of XRandR command line parameters"
+ "Instantiate using output name, edid and a dictionary of XRandR command line parameters"
self.output = output
self.edid = edid
self.options = options
self.ignored_options = list(options)
def remove_default_option_values(self):
- "Remove values from the options dictionary that are superflous"
+ "Remove values from the options dictionary that are superfluous"
if "off" in self.options and len(self.options.keys()) > 1:
self.options = {"off": None}
return
@classmethod
def from_xrandr_output(cls, xrandr_output):
- """Instanciate an XrandrOutput from the output of `xrandr --verbose'
+ """Instantiate an XrandrOutput from the output of `xrandr --verbose'
This method also returns a list of modes supported by the output.
"""
@classmethod
def from_config_file(cls, profile, edid_map, configuration):
- "Instanciate an XrandrOutput from the contents of a configuration file"
+ "Instantiate an XrandrOutput from the contents of a configuration file"
options = {}
for line in configuration.split("\n"):
if line:
# We are not interested in screens
xrandr_output = re.sub("(?m)^Screen [0-9].+", "", xrandr_output).strip()
- # Split at output boundaries and instanciate an XrandrOutput per output
+ # Split at output boundaries and instantiate an XrandrOutput per output
split_xrandr_output = re.split("(?m)^([^ ]+ (?:(?:dis)?connected|unknown connection).*)$", xrandr_output)
if len(split_xrandr_output) < 2:
raise AutorandrException("No output boundaries found", report_bug=True)
if profile_config[c].fingerprint != fingerprint or c == fp_map[fingerprint]:
continue
- print("%s: renaming display %s to %s" % (p, c, fp_map[fingerprint]))
+ print("%s: renaming display %s to %s" % (p, c, fp_map[fingerprint]), file=sys.stderr)
tmp_disp = profile_config[c]
# If we did not find a candidate, we might need to inject a call
# If there is no output to disable, we will enable 0x and x0 at the same time
if not found_top_left_monitor and len(disable_outputs) > 0:
- # If the call to 0x and x0 is splitted, inject one of them
+ # If the call to 0x and x0 is split, inject one of them
if found_top_monitor and found_left_monitor:
enable_outputs.insert(0, enable_outputs[0])
# Cannot work with this environment, skip.
continue
+ if "WAYLAND_DISPLAY" in process_environ and process_environ["WAYLAND_DISPLAY"]:
+ if "--debug" in argv:
+ print("Detected Wayland session '{0}'. Skipping.".format(process_environ["WAYLAND_DISPLAY"]))
+ continue
+
# To allow scripts to detect batch invocation (especially useful for predetect)
process_environ["AUTORANDR_BATCH_PID"] = str(os.getpid())
process_environ["UID"] = str(uid)
user = pwd.getpwuid(os.getuid())
user = user.pw_name if user else "#%d" % os.getuid()
print("autorandr running as user %s (started from batch instance)" % user)
+ if ("WAYLAND_DISPLAY" in os.environ and os.environ["WAYLAND_DISPLAY"]):
+ print("Detected Wayland session '{0}'. Exiting.".format(os.environ["WAYLAND_DISPLAY"]), file=sys.stderr)
+ sys.exit(1)
profiles = {}
profile_symlinks = {}