gdritter repos GRUtils / master scripts / adjust-screens
master

Tree @master (Download .tar.gz)

adjust-screens @masterraw · history · blame

#!/usr/bin/python2

import subprocess
import sys

def invoke(args):
    sys.stderr.write('invoke("{0}")\n'.format(' '.join(args)))
    p = subprocess.Popen(args, stdout=subprocess.PIPE)
    return p.stdout.readlines()

disps = set()
for x in invoke(['xrandr']):
    if x and not x[0].isspace():
        cdisp = x.split()[0]
    else:
        disps.add(cdisp)

if disps:
    sys.stderr.write("connected displays: {0}\n".format(', '.join(disps)))

if len(disps) <= 0:
    sys.stderr.write("no displays connected.\n")
    sys.exit(1)
elif len(disps) == 1:
    args = ['xrandr', '--auto']
    invoke(args)
elif len(disps) == 2:
    other = (disps ^ set(['eDP1'])).pop()
    invoke(['xrandr', '--output', 'eDP1', '--primary', '--left-of',
            other, '--output', other, '--auto'])
else:
    sys.stderr.write("more than two connected displays;\n")
    sys.stderr.write("unsure how to continue\n")
    sys.exit(1)
# invoke(['/home/gdritter/Pictures/ghibli/rand.sh'])