From 83765c0d67a90da6c4b34c5944d9f2e2c267ea24 Mon Sep 17 00:00:00 2001 From: Phillip Berndt Date: Wed, 13 Dec 2017 22:08:11 +0100 Subject: [PATCH] Add a configuration file for default option values See #94 --- README.md | 4 ++++ autorandr.py | 15 +++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/README.md b/README.md index bdaf638..4d92fed 100644 --- a/README.md +++ b/README.md @@ -142,6 +142,10 @@ names in your configuration directory to have autorandr use any of them as the default configuration without you having to change the system-wide configuration. +You can store default values for any option in an INI-file in +`~/config/autorandr/settings.ini` in a section `config`. The most useful +candidate for doing that is `skip-options`, if you need it. + ## Hook scripts Three more scripts can be placed in the configuration directory (as diff --git a/autorandr.py b/autorandr.py index eae65a8..9c272a7 100755 --- a/autorandr.py +++ b/autorandr.py @@ -42,6 +42,11 @@ from distutils.version import LooseVersion as Version from functools import reduce from itertools import chain +if sys.version_info.major == 2: + import ConfigParser as configparser +else: + import configparser + try: input = raw_input except NameError: @@ -1008,6 +1013,14 @@ def dispatch_call_to_sessions(argv): X11_displays_done.add(display) +def read_config(options, directory): + """Parse a configuration config.ini from directory and merge it into + the options dictionary""" + config = configparser.ConfigParser() + config.read(os.path.join(directory, "settings.ini")) + for key, value in config.items("config"): + options.setdefault("--%s" % key, value) + def main(argv): try: opts, args = getopt.getopt(argv[1:], "s:r:l:d:cfh", @@ -1046,6 +1059,7 @@ def main(argv): if os.path.isdir(system_profile_path): profiles.update(load_profiles(system_profile_path)) profile_symlinks.update(get_symlinks(system_profile_path)) + read_config(options, 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") @@ -1055,6 +1069,7 @@ def main(argv): if os.path.isdir(profile_path): profiles.update(load_profiles(profile_path)) profile_symlinks.update(get_symlinks(profile_path)) + read_config(options, profile_path) # Sort by descending mtime profiles = OrderedDict(sorted(profiles.items(), key=lambda x: -x[1]["config-mtime"])) except Exception as e: