From d8eca8018138de26eae947a3f7357711a0b56d9c Mon Sep 17 00:00:00 2001 From: Phillip Berndt Date: Mon, 9 Feb 2015 08:24:25 +0100 Subject: [PATCH] Follow XDG completely: Also load configurations from the system-wide directories I doubt this will be used widely, but there clearly is a use-case for multi-user or centrally administrated systems. Per-user profiles always override system-wide profiles. --- autorandr.py | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/autorandr.py b/autorandr.py index 99ce9db..1e08e50 100755 --- a/autorandr.py +++ b/autorandr.py @@ -497,19 +497,21 @@ def main(argv): print(str(e)) options = { "--help": True } - profile_dir = os.path.expanduser("~/.autorandr") - if not os.path.isdir(profile_dir): - profile_dir = os.path.join(os.environ.get("XDG_CONFIG_HOME", os.path.expanduser("~/.config")), "autorandr") - - profile_path = os.path.join(profile_dir, "profiles") - + profiles = {} try: - profiles = load_profiles(profile_path) - except OSError as e: - if e.errno == 2: # No such file or directory - profiles = {} - else: - raise e + # Load profiles from each XDG config directory + for directory in os.environ.get("XDG_CONFIG_DIRS", "").split(":"): + system_profile_path = os.path.join(directory, "autorandr") + if os.path.isdir(system_profile_path): + profiles.update(load_profiles(system_profile_path)) + # For the user's profiles, prefer the legacy ~/.autorandr if it already exists + # profile_path is also used later on to store configurations + profile_path = os.path.expanduser("~/.autorandr") + if not os.path.isdir(profile_path): + # Elsewise, follow the XDG specification + profile_path = os.path.join(os.environ.get("XDG_CONFIG_HOME", os.path.expanduser("~/.config")), "autorandr") + if os.path.isdir(profile_path): + profiles.update(load_profiles(profile_path)) except Exception as e: print("Failed to load profiles:\n%s" % str(e), file=sys.stderr) sys.exit(1) -- 2.39.2