xrandr: Höchste Auflösung/Hertz vom externen Display ansteuern

xrandr ist ein Befehlszeilen-Tool unter Unix- und Linux-basierten Betriebssystemen, das für die Konfiguration der Bildschirmausgabe verwendet wird. Es ermöglicht das Anpassen von Bildschirmauflösungen, Bildwiederholraten und Bildschirmausrichtungen.

Das Szenario ist wie folgt: Ein Laptop ist mit einem externen Monitor verbunden. Der angeschlossene Monitor soll dann automatisch mit der höchsten Auflösung/Hertz angesteuert werden. Der Bildschirm des Laptops wird in diesem Szenario deaktiviert – wenn kein externer Monitor angeschlossen ist, bleibt er eingeschaltet bzw. wird als Fallback angesteuert. Dazu habe ich mir das folgende Bash-Skript gebaut:

#!/bin/sh
## xrandr: display setup
## external screen connected

## Variables
# T480 display
DISPLAY_LAPTOP="eDP-1"
# Get external screen name
EXTERNAL="$(xrandr | awk '/ connected/ && !/'$DISPLAY_LAPTOP'/ {print $1; exit}')"
# Get external screen maximum resolution/hertz (Hz)
MAXMODE="$(xrandr | grep --after-context=1 $EXTERNAL | tail -1)"
RESOLUTION="$(echo $MAXMODE | grep -Po '[0-9]+x[0-9]+')"
HZ="$(echo $MAXMODE | grep -Eo '\b[0-9]+(\.[0-9]+)?\b' | sort -g | tail -1)"

## Set screen
# Reset to defaults
xrandr -s 0
if [ -n "$EXTERNAL" ]; then
   # External screen on
   xrandr --output "$EXTERNAL" --mode "$RESOLUTION" --rate "$HZ" || exit 1
   # Internal screen off
   xrandr --output "$DISPLAY_LAPTOP" --off
else
   # Fallback
   # Internal screen on
   xrandr --output "$DISPLAY_LAPTOP" --auto --mode 1920x1080
fi

Bei der Anmeldung oder per Shortcut (STRG + ALT + E) wird das Bash-Skript ausgeführt. Anpassen muss man die Variable DISPLAY_LAPTOP und die Auflösung des Notebook-Displays (–mode 1920×1080).

Falls jemand Verbesserungsvorschläge hat, gerne einsenden.

Hilf mit die Spendenziele zu erreichen! Mitmachen ➡