Acabei lidando com isso em um script bash que testa a saída de xrandr
para dispositivos conectados e define os layouts apropriados por ambiente.
Abaixo está uma versão simplificada que demonstra como fazê-lo.
#!/bin/bash
# Unity doesn't remember my screen layouts, so I made this to do it for me.
# GPLv3+, (c) Chris Burgess @xurizaemon
CONNECTED=$( xrandr | grep ' connected' )
LAYOUT=unknown
if [[ $CONNECTED = *"DP-1 connected"* ]] ; then
LAYOUT=thunderbolt
elif [[ $CONNECTED = *"HDMI-2 connected"* ]] ; then
LAYOUT=hdmi-2
fi
case "$LAYOUT" in
"thunderbolt")
# Thunderbolt, laptop
xrandr --output DP-1 --auto --left-of eDP-1 --primary
echo "Configured for $LAYOUT"
;;
"hdmi-2")
# Set to 57Hz for monitor support
xrandr --newmode "1920x1080_57.00" 163.00 1920 2040 2240 2560 1080 1083 1088 1119 -hsync +vsync
xrandr --addmode HDMI-2 "1920x1080_57.00"
# HDMI, laptop
xrandr --output HDMI-2 --mode "1920x1080_57.00" --left-of eDP-1 --primary
echo "Configured for $LAYOUT"
;;
*)
echo "Layout $LAYOUT not known."
esac
Meu script atual está disponível no link