summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xmonitor-menu.py51
1 files changed, 51 insertions, 0 deletions
diff --git a/monitor-menu.py b/monitor-menu.py
new file mode 100755
index 0000000..4aeec25
--- /dev/null
+++ b/monitor-menu.py
@@ -0,0 +1,51 @@
+#!/usr/bin/env python3
+
+from os.path import expanduser
+
+import dialog
+import json
+import subprocess
+
+d = dialog.Dialog()
+
+class MonitorMenu():
+ def __init__(self, config_file='~/.config/monitor-profiles.json'):
+ with open(expanduser(config_file)) as fd:
+ self.profiles = json.load(fd)
+
+ def run(self):
+ choices = []
+
+ i = 0
+ for p in self.profiles:
+ choices.append((str(i), p['name']))
+ i += 1
+
+ code, profile_idx = d.menu('Select the profile you want to use.', choices=choices)
+
+ if code == d.ESC or code == d.CANCEL:
+ return
+
+ profile = self.profiles[int(profile_idx)]
+
+ # We build the command line starting from just "xrandr" and adding arguments.
+ cmd = ['xrandr']
+
+ try:
+ cmd += profile['xrandr-opts']
+ except KeyError:
+ pass
+
+ for monitor in profile['monitors']:
+ cmd += monitor['xrandr-opts']
+
+ subprocess.run(cmd)
+
+
+def main():
+ menu = MonitorMenu()
+
+ menu.run()
+
+if __name__ == '__main__':
+ main()