add post about autorandr
authorDon Armstrong <don@donarmstrong.com>
Tue, 7 Nov 2017 03:04:42 +0000 (19:04 -0800)
committerDon Armstrong <don@donarmstrong.com>
Tue, 7 Nov 2017 03:04:42 +0000 (19:04 -0800)
posts/autorandr.mdwn [new file with mode: 0644]

diff --git a/posts/autorandr.mdwn b/posts/autorandr.mdwn
new file mode 100644 (file)
index 0000000..c94dcc6
--- /dev/null
@@ -0,0 +1,64 @@
+[[!meta title="Autorandr: automatically adjust screen layout"]]
+
+Like many laptop users, I often plug my laptop into different monitor
+setups (multiple monitors at my desk, projector when presenting, etc.)
+Running xrandr commands or clicking through interfaces gets tedious,
+and writing scripts isn't much better.
+
+Recently, I ran
+across [autorandr](https://github.com/phillipberndt/autorandr), which
+detects attached monitors using EDID (and other settings), saves
+xrandr configurations, and restores them. It can also run arbitrary
+scripts when a particular configuration is loaded. I've packed it, and
+it is currently waiting in NEW. If you can't wait,
+the
+[deb is here](https://www.donarmstrong.com/autorandr_1.2-1_all.deb)
+and
+the
+[git repo is here](https://git.donarmstrong.com/deb_pkgs/autorandr.git).
+
+To use it, simply install the package, and create your initial
+configuration (in my case, undocked):
+
+```
+autorandr --save undocked
+```
+
+then, dock your laptop (or plug in your external monitor(s)), change
+the configuration using xrandr (or whatever you use), and save your
+new configuration (in my case, workstation):
+
+```
+autorandr --save workstation
+```
+
+repeat for any additional configurations you have (or as you find new
+configurations).
+
+Autorandr has `udev`, `systemd`, and `pm-utils` hooks, and `autorandr
+--change` should be run any time that new displays appear. You can
+also run `autorandr --change` or `autorandr --load workstation`
+manually too if you need to. You can also add your own
+'~/.config/autorandr/$PROFILE/postswitch` script to run after a
+configuration is loaded. Since I run i3, my workstation configuration
+looks like this:
+
+```
+#!/bin/bash
+
+xrandr --dpi 92
+xrandr --output DP2-2 --primary
+i3-msg '[workspace="^(1|4|6)"] move workspace to output DP2-2;'
+i3-msg '[workspace="^(2|5|9)"] move workspace to output DP2-3;'
+i3-msg '[workspace="^(3|8)"] move workspace to output DP2-1;'
+```
+
+which fixes the dpi appropriately, sets the primary screen (possibly
+not needed?), and moves the i3 workspaces about. You can also arrange
+for configurations to never be run by adding a `block` hook in the
+profile directory.
+
+Check it out if you change your monitor configuration regularly!
+
+
+[[!tag debian tech]]