create `--ignore-lid` flag
This commit is contained in:
parent
a4202b3150
commit
a016c0a415
|
@ -58,6 +58,7 @@ Contributors to this version of autorandr are:
|
||||||
* Tomasz Bogdal
|
* Tomasz Bogdal
|
||||||
* Victor Häggqvist
|
* Victor Häggqvist
|
||||||
* Jan-Oliver Kaiser
|
* Jan-Oliver Kaiser
|
||||||
|
* Alexandre Viau
|
||||||
|
|
||||||
## Installation/removal
|
## Installation/removal
|
||||||
|
|
||||||
|
|
|
@ -56,6 +56,9 @@ Fingerprint the current hardware setup
|
||||||
.BR \-\-match-edid
|
.BR \-\-match-edid
|
||||||
Match displays based on edid instead of name
|
Match displays based on edid instead of name
|
||||||
.TP
|
.TP
|
||||||
|
.BR \-\-ignore-lid
|
||||||
|
By default, closed lids are considered as disconnected if other outputs are detected. This flag disables this behaviour.
|
||||||
|
.TP
|
||||||
.BR \-\-force
|
.BR \-\-force
|
||||||
Force loading or reloading of a profile
|
Force loading or reloading of a profile
|
||||||
.TP
|
.TP
|
||||||
|
|
52
autorandr.py
52
autorandr.py
|
@ -541,7 +541,10 @@ def debug_regexp(pattern, string):
|
||||||
return "Debug information would be available if the `regex' module was installed."
|
return "Debug information would be available if the `regex' module was installed."
|
||||||
|
|
||||||
|
|
||||||
def parse_xrandr_output():
|
def parse_xrandr_output(
|
||||||
|
*,
|
||||||
|
ignore_lid,
|
||||||
|
):
|
||||||
"Parse the output of `xrandr --verbose' into a list of outputs"
|
"Parse the output of `xrandr --verbose' into a list of outputs"
|
||||||
xrandr_output = os.popen("xrandr -q --verbose").read()
|
xrandr_output = os.popen("xrandr -q --verbose").read()
|
||||||
if not xrandr_output:
|
if not xrandr_output:
|
||||||
|
@ -564,7 +567,11 @@ def parse_xrandr_output():
|
||||||
modes[output_name] = output_modes
|
modes[output_name] = output_modes
|
||||||
|
|
||||||
# consider a closed lid as disconnected if other outputs are connected
|
# consider a closed lid as disconnected if other outputs are connected
|
||||||
if sum(o.edid != None for o in outputs.values()) > 1:
|
if not ignore_lid and sum(
|
||||||
|
o.edid != None
|
||||||
|
for o
|
||||||
|
in outputs.values()
|
||||||
|
) > 1:
|
||||||
for output_name in outputs.keys():
|
for output_name in outputs.keys():
|
||||||
if is_closed_lid(output_name):
|
if is_closed_lid(output_name):
|
||||||
outputs[output_name].edid = None
|
outputs[output_name].edid = None
|
||||||
|
@ -1281,10 +1288,32 @@ def read_config(options, directory):
|
||||||
|
|
||||||
def main(argv):
|
def main(argv):
|
||||||
try:
|
try:
|
||||||
opts, args = getopt.getopt(argv[1:], "s:r:l:d:cfh",
|
opts, args = getopt.getopt(
|
||||||
["batch", "dry-run", "change", "cycle", "default=", "save=", "remove=", "load=",
|
argv[1:],
|
||||||
"force", "fingerprint", "config", "debug", "skip-options=", "help",
|
"s:r:l:d:cfh",
|
||||||
"list", "current", "detected", "version", "match-edid"])
|
[
|
||||||
|
"batch",
|
||||||
|
"dry-run",
|
||||||
|
"change",
|
||||||
|
"cycle",
|
||||||
|
"default=",
|
||||||
|
"save=",
|
||||||
|
"remove=",
|
||||||
|
"load=",
|
||||||
|
"force",
|
||||||
|
"fingerprint",
|
||||||
|
"config",
|
||||||
|
"debug",
|
||||||
|
"skip-options=",
|
||||||
|
"help",
|
||||||
|
"list",
|
||||||
|
"current",
|
||||||
|
"detected",
|
||||||
|
"version",
|
||||||
|
"match-edid",
|
||||||
|
"ignore-lid"
|
||||||
|
]
|
||||||
|
)
|
||||||
except getopt.GetoptError as e:
|
except getopt.GetoptError as e:
|
||||||
print("Failed to parse options: {0}.\n"
|
print("Failed to parse options: {0}.\n"
|
||||||
"Use --help to get usage information.".format(str(e)),
|
"Use --help to get usage information.".format(str(e)),
|
||||||
|
@ -1341,7 +1370,12 @@ def main(argv):
|
||||||
raise AutorandrException("Failed to load profiles", e)
|
raise AutorandrException("Failed to load profiles", e)
|
||||||
|
|
||||||
exec_scripts(None, "predetect")
|
exec_scripts(None, "predetect")
|
||||||
config, modes = parse_xrandr_output()
|
|
||||||
|
ignore_lid = "--ignore-lid" in options
|
||||||
|
|
||||||
|
config, modes = parse_xrandr_output(
|
||||||
|
ignore_lid=ignore_lid,
|
||||||
|
)
|
||||||
|
|
||||||
if "--match-edid" in options:
|
if "--match-edid" in options:
|
||||||
update_profiles_edid(profiles, config)
|
update_profiles_edid(profiles, config)
|
||||||
|
@ -1533,7 +1567,9 @@ def main(argv):
|
||||||
raise AutorandrException("Failed to apply profile '%s'" % load_profile, e, True)
|
raise AutorandrException("Failed to apply profile '%s'" % load_profile, e, True)
|
||||||
|
|
||||||
if "--dry-run" not in options and "--debug" in options:
|
if "--dry-run" not in options and "--debug" in options:
|
||||||
new_config, _ = parse_xrandr_output()
|
new_config, _ = parse_xrandr_output(
|
||||||
|
ignore_lid=ignore_lid,
|
||||||
|
)
|
||||||
if not is_equal_configuration(new_config, load_config):
|
if not is_equal_configuration(new_config, load_config):
|
||||||
print("The configuration change did not go as expected:")
|
print("The configuration change did not go as expected:")
|
||||||
print_profile_differences(new_config, load_config)
|
print_profile_differences(new_config, load_config)
|
||||||
|
|
Loading…
Reference in New Issue