1
0
mirror of https://github.com/gryf/pyrandr.git synced 2025-12-19 21:48:01 +01:00

Added outputs arrangement function

This commit is contained in:
2017-10-15 11:58:22 +02:00
parent 940948f988
commit 83cbbf5e04

View File

@@ -139,6 +139,43 @@ class Organizer(object):
logging.debug("command to execute: \n%s", " ".join(cmd)) logging.debug("command to execute: \n%s", " ".join(cmd))
subprocess.call(cmd) subprocess.call(cmd)
def set_outputs(self, output_list, primary):
"""
Arrange displays in horizontal way, starting from first outpu in
output_list as leftmost
"""
logging.info('Set output horizontally in order: %s', '
'.join(output_list))
# check, if primary is in output_list
if primary and primary not in output_list:
raise ValueError("Cannot set primary to '%s', since it is not "
"connected or it is turned off" % primary)
# check if output_list contains right names
for name in output_list:
if name not in self._outputs:
raise ValueError("Output `%s' doesn't exists" % name)
# "disconnect" output, so that we can turn it off
for name in self._outputs:
if name not in output_list:
self._outputs[name].connected = False
# calculate position for every output
shift = 0
for name in output_list:
self._outputs[name].shift_x = shift
logging.debug(self._outputs[name])
shift = self._outputs[name].x
cmd = ['xrandr']
for name in self._outputs:
cmd.extend(self._outputs[name].get_randr_options(primary == name))
logging.debug("command to execute: \n%s", " ".join(cmd))
subprocess.call(cmd)
def main(): def main():
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
@@ -163,10 +200,13 @@ def main():
org.panic(args.primary) org.panic(args.primary)
return return
if not args.output: if args.outputs:
org.output_list() org.set_outputs(args.outputs, args.primary)
return return
# just display outputs
org.output_list()
if __name__ == "__main__": if __name__ == "__main__":
main() main()