aboutsummaryrefslogtreecommitdiffstats
path: root/xorg-xrandr/setres/__main__.py
diff options
context:
space:
mode:
authorMattias Andrée <maandree@kth.se>2023-11-25 19:23:41 +0100
committerMattias Andrée <maandree@kth.se>2023-11-25 19:23:41 +0100
commit391791f6165653ebe4c4f25af953841a3b0fc6c7 (patch)
tree2c97d82e061ad8ffbc5a96e0c72a870109011cd4 /xorg-xrandr/setres/__main__.py
parentMisc updates (diff)
downloaddotfiles-391791f6165653ebe4c4f25af953841a3b0fc6c7.tar.gz
dotfiles-391791f6165653ebe4c4f25af953841a3b0fc6c7.tar.bz2
dotfiles-391791f6165653ebe4c4f25af953841a3b0fc6c7.tar.xz
Update setres
Signed-off-by: Mattias Andrée <maandree@kth.se>
Diffstat (limited to 'xorg-xrandr/setres/__main__.py')
-rwxr-xr-xxorg-xrandr/setres/__main__.py153
1 files changed, 124 insertions, 29 deletions
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
@@ -46,14 +47,61 @@ 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: