X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=autorandr.py;h=a2d8b56916e13be80d208ef00c68d32e12ce8cd6;hb=9ebe3716c147d7d82a09bef8dbde14f771fcb65e;hp=217b2b44e859a9da48809365543149cb437bd674;hpb=b8eb298a22cc07a54e2876f768fbcae62dde6ff6;p=deb_pkgs%2Fautorandr.git diff --git a/autorandr.py b/autorandr.py index 217b2b4..a2d8b56 100755 --- a/autorandr.py +++ b/autorandr.py @@ -44,17 +44,13 @@ from collections import OrderedDict from functools import reduce from itertools import chain -try: - from packaging.version import Version -except ModuleNotFoundError: - from distutils.version import LooseVersion as Version if sys.version_info.major == 2: import ConfigParser as configparser else: import configparser -__version__ = "1.12.1" +__version__ = "1.13.3" try: input = raw_input @@ -122,6 +118,35 @@ Usage: autorandr [options] """.strip() +class Version(object): + def __init__(self, version): + self._version = version + self._version_parts = re.split("([0-9]+)", version) + + def __eq__(self, other): + return self._version_parts == other._version_parts + + def __lt__(self, other): + for my, theirs in zip(self._version_parts, other._version_parts): + if my.isnumeric() and theirs.isnumeric(): + my = int(my) + theirs = int(theirs) + if my < theirs: + return True + return len(theirs) > len(my) + + def __ge__(self, other): + return not (self < other) + + def __ne__(self, other): + return not (self == other) + + def __le__(self, other): + return (self < other) or (self == other) + + def __gt__(self, other): + return self >= other and not (self == other) + def is_closed_lid(output): if not re.match(r'(eDP(-?[0-9]\+)*|LVDS(-?[0-9]\+)*)', output): return False @@ -334,6 +359,8 @@ class XrandrOutput(object): if self.edid: if self.EDID_UNAVAILABLE in self.edid: return + if "*" in self.edid: + return # Thx to pyedid project, the following code was # copied (and modified) from pyedid/__init__py:21 [parse_edid()] raw = bytes.fromhex(self.edid) @@ -989,6 +1016,13 @@ def apply_configuration(new_configuration, current_configuration, dry_run=False) if call_and_retry(argv, dry_run=dry_run) != 0: raise AutorandrException("Command failed: %s" % " ".join(map(shlex.quote, argv))) + # Adjust the frame buffer to match (see #319) + if fb_args: + argv = base_argv + if call_and_retry(argv, dry_run=dry_run) != 0: + raise AutorandrException("Command failed: %s" % " ".join(map(shlex.quote, argv))) + + def is_equal_configuration(source_configuration, target_configuration): """ @@ -1186,7 +1220,7 @@ def exec_scripts(profile_path, script_name, meta_information=None): try: all_ok &= subprocess.call(script, env=env) != 0 except Exception as e: - raise AutorandrException("Failed to execute user command: %s error: %s" % (script,str(e))) + raise AutorandrException("Failed to execute user command: %s. Error: %s" % (script, str(e))) ran_scripts.add(script_name) script_folder = os.path.join(folder, "%s.d" % script_name) @@ -1199,7 +1233,7 @@ def exec_scripts(profile_path, script_name, meta_information=None): try: all_ok &= subprocess.call(script, env=env) != 0 except Exception as e: - raise AutorandrException("Failed to execute user command: %s error: %s" % (script,str(e))) + raise AutorandrException("Failed to execute user command: %s. Error: %s" % (script, str(e))) ran_scripts.add(check_name) return all_ok