X-Git-Url: https://git.donarmstrong.com/?p=deb_pkgs%2Fautorandr.git;a=blobdiff_plain;f=autorandr.py;h=c0ed5e17ffd40facaef5909ced73b09b5e22625f;hp=275b0c652d7a0ea22e570d57129b165c71c11336;hb=efb9fe49b4effd422aabd1ed57a166cb96bd61e1;hpb=4849bd3c35b471b3bfb772a7178060f4f8f8dd61 diff --git a/autorandr.py b/autorandr.py index 275b0c6..c0ed5e1 100755 --- a/autorandr.py +++ b/autorandr.py @@ -755,10 +755,24 @@ def apply_configuration(new_configuration, current_configuration, dry_run=False) def is_equal_configuration(source_configuration, target_configuration): - "Check if all outputs from target are already configured correctly in source" + """ + Check if all outputs from target are already configured correctly in source and + that no other outputs are active. + """ for output in target_configuration.keys(): - if (output not in source_configuration) or (source_configuration[output] != target_configuration[output]): - return False + if "off" in target_configuration[output].options: + if (output in source_configuration and "off" not in source_configuration[output].options): + return False + else: + if (output not in source_configuration) or (source_configuration[output] != target_configuration[output]): + return False + for output in source_configuration.keys(): + if "off" in source_configuration[output].options: + if output in target_configuration and "off" not in target_configuration[output].options: + return False + else: + if output not in target_configuration: + return False return True @@ -1059,6 +1073,15 @@ def dispatch_call_to_sessions(argv): X11_displays_done.add(display) +def enabled_monitors(config): + monitors = [] + for monitor in config: + if "--off" in config[monitor].option_vector: + continue + monitors.append(monitor) + return monitors + + def read_config(options, directory): """Parse a configuration config.ini from directory and merge it into the options dictionary""" @@ -1161,7 +1184,11 @@ def main(argv): try: profile_folder = os.path.join(profile_path, options["--save"]) save_configuration(profile_folder, config) - exec_scripts(profile_folder, "postsave", {"CURRENT_PROFILE": options["--save"], "PROFILE_FOLDER": profile_folder}) + exec_scripts(profile_folder, "postsave", { + "CURRENT_PROFILE": options["--save"], + "PROFILE_FOLDER": profile_folder, + "MONITORS": ":".join(enabled_monitors(config)), + }) except Exception as e: raise AutorandrException("Failed to save current configuration as profile '%s'" % (options["--save"],), e) print("Saved current configuration as profile '%s'" % options["--save"]) @@ -1243,7 +1270,7 @@ def main(argv): if "-d" in options: options["--default"] = options["-d"] - if not load_profile and "--default" in options and "--change" in options: + if not load_profile and "--default" in options and ("-c" in options or "--change" in options): load_profile = options["--default"] if load_profile: @@ -1281,6 +1308,7 @@ def main(argv): script_metadata = { "CURRENT_PROFILE": load_profile, "PROFILE_FOLDER": scripts_path, + "MONITORS": ":".join(enabled_monitors(load_config)), } exec_scripts(scripts_path, "preswitch", script_metadata) if "--debug" in options: