From 391791f6165653ebe4c4f25af953841a3b0fc6c7 Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Sat, 25 Nov 2023 19:23:41 +0100 Subject: Update setres MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- xorg-xrandr/setres/__main__.py | 153 +++++++++++++++++++++++++++++++++-------- 1 file changed, 124 insertions(+), 29 deletions(-) (limited to 'xorg-xrandr/setres/__main__.py') diff --git a/xorg-xrandr/setres/__main__.py b/xorg-xrandr/setres/__main__.py index 26f6f65..94a2db1 100755 --- a/xorg-xrandr/setres/__main__.py +++ b/xorg-xrandr/setres/__main__.py @@ -30,14 +30,15 @@ if pretend: print(repr(display.to_xrandr())) return True +phonies = [] -### Configurations +### Configurations if hostname == 'zenith': - prime = screen['DisplayPort-2' if not swap else 'DisplayPort-1'] - sec = screen['DisplayPort-1' if not swap else 'DisplayPort-2'] + prime = screen['DisplayPort-1' if not swap else 'DisplayPort-1'] + sec = screen['DisplayPort-0' if not swap else 'DisplayPort-0'] embed = None prime_alt = None @@ -45,15 +46,62 @@ if hostname == 'zenith': prime.want_mode = '1920x1200' sec.want_mode = '1920x1200' + + sec_position = 'left' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + else: - print('%s: no configurations found for this machine' % sys.argv[0], file = sys.stderr) + print('%s: no configurations found for this machine (%s)' % (sys.argv[0], hostname), + file = sys.stderr) sys.exit(1) -if not prime.connected and prime_alt is not None: +if prime is not None and not prime.connected and prime_alt is not None: prime, prime_alt = prime_alt, prime -if not sec.connected and sec_alt is not None: +if sec is not None and not sec.connected and sec_alt is not None: sec, sec_alt = sec_alt, sec @@ -102,7 +150,7 @@ if '-embed' in args: ### Apply -if prime.connected and sec.connected and not single: +if prime is not None and prime.connected and sec is not None and sec.connected and not single: display = Display() ok = True @@ -119,16 +167,24 @@ if prime.connected and sec.connected and not single: output.mode = sec.want_mode output.rate = sec.want_rate output.primary = False - output.relpos = 'left-of' if not mirror else 'same-as' + output.relpos = (sec_position + '-of') if not mirror else 'same-as' output.relto = prime.name if embed is not None: output = Output(embed.name) display.outputs.append(output) - output.off = True - - -elif prime.connected: + if embed.want_mode == prime.want_mode: + output.mode = embed.want_mode + output.rate = embed.want_rate + output.primary = False + output.off = False + output.relpos = 'same-as' + output.relto = prime.name + else: + output.off = True + + +elif prime is not None and prime.connected: display = Display() ok = True @@ -138,17 +194,26 @@ elif prime.connected: output.rate = prime.want_rate output.primary = True - output = Output(sec.name) - display.outputs.append(output) - output.off = True + if sec is not None: + output = Output(sec.name) + display.outputs.append(output) + output.off = True if embed is not None: output = Output(embed.name) display.outputs.append(output) - output.off = True - - -elif sec.connected: + if embed.want_mode == prime.want_mode: + output.mode = embed.want_mode + output.rate = embed.want_rate + output.primary = False + output.off = False + output.relpos = 'same-as' + output.relto = prime.name + else: + output.off = True + + +elif sec is not None and sec.connected: display = Display() ok = True @@ -158,14 +223,23 @@ elif sec.connected: output.rate = sec.want_rate output.primary = True - output = Output(prime.name) - display.outputs.append(output) - output.off = True + if prime is not None: + output = Output(prime.name) + display.outputs.append(output) + output.off = True if embed is not None: output = Output(embed.name) display.outputs.append(output) - output.off = True + if embed.want_mode == sec.want_mode: + output.mode = embed.want_mode + output.rate = embed.want_rate + output.primary = False + output.off = False + output.relpos = 'same-as' + output.relto = sec.name + else: + output.off = True elif embed is None or not embed.connected: @@ -182,13 +256,16 @@ else: output.rate = embed.want_rate output.primary = True - output = Output(prime.name) - display.outputs.append(output) - output.off = True + if prime is not None: + output = Output(prime.name) + display.outputs.append(output) + output.off = True + + if sec is not None: + output = Output(sec.name) + display.outputs.append(output) + output.off = True - output = Output(sec.name) - display.outputs.append(output) - output.off = True if ok: if prime_alt is not None: @@ -201,6 +278,11 @@ if ok: display.outputs.append(output) output.off = True + for phony in phonies: + output = Output(phony.name) + display.outputs.append(output) + output.off = True + ok = apply_setup(display) @@ -212,11 +294,24 @@ if not ok: if pretend: sys.exit(0) +reschargs = [] +for output in (prime, sec): + if output is not None: + output = screen[output.name] + reschargs.extend(output.size) + reschargs.extend(output.position) [screen] = get_setup() prime = screen[True] if prime.position[0] > 0: print(prime.position[0], flush = True) +file = '%s/.config/resolution-changed' % home +if os.path.exists(file): + try: + os.execlp(file, file, *reschargs) + except: + pass + for file in ('%s/.config/background.%s' % (home, session_), '%s/.config/background' % home): if os.path.exists(file): try: -- cgit v1.2.3-70-g09d2