[[!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]]