Gibt es ein Tool, mit dem man:
- Aktuelle RandR-Konfiguration (Position, Ausrichtung, Auflösung usw.) auf Monitorbasis merken
- die zuletzt als funktionierend bekannte Konfiguration automatisch anwenden, sobald das Display angeschlossen wird, ohne mit Applets oder xrandr(1) herumspielen zu müssen?
Die Konfigurationen müssten pro Benutzer und Display angewendet werden.
Wenn es kein solches Tool in freier Wildbahn gibt, würde ich gerne selbst eines zusammenschmeißen, aber soweit ich sehen kann, gibt es keine Möglichkeit zu erkennen, dass ein Monitor angeschlossen ist. Muss ich mit xrandr -q abfragen hin und wieder herausfinden, ob ein Ausgang verbunden oder getrennt wurde, oder gibt es einen effizienteren Weg, dies zu tun? Kann udev so eingestellt werden, dass es genau das tut?
Akzeptierte Antwort:
Ich verwende dieses einfache (hausgemachte) Skript, das RandR abfragt und zwischen LVDS1 und VGA1 wechselt, wenn VGA verbunden/getrennt wird. (Für HDMI Ausgaben ändern Sie in der folgenden Skriptdatei alle VGA1
an HDMI1
)
Es ist eine unsaubere Lösung, aber sie funktioniert einwandfrei.
Es ist für mein Setup angepasst:Sie müssen höchstwahrscheinlich die RandR-Ausgabenamen ändern (LVDS1
und VGA1
) und im Gegensatz zu mir werden Sie wahrscheinlich mit Ihrem RandR-Standardmodus für VGA zurechtkommen.
#!/bin/bash
# setting up new mode for my VGA
xrandr --newmode "1920x1080" 148.5 1920 2008 2052 2200 1080 1089 1095 1125 +hsync +vsync
xrandr --addmode VGA1 1920x1080
# default monitor is LVDS1
MONITOR=LVDS1
# functions to switch from LVDS1 to VGA and vice versa
function ActivateVGA {
echo "Switching to VGA1"
xrandr --output VGA1 --mode 1920x1080 --dpi 160 --output LVDS1 --off
MONITOR=VGA1
}
function DeactivateVGA {
echo "Switching to LVDS1"
xrandr --output VGA1 --off --output LVDS1 --auto
MONITOR=LVDS1
}
# functions to check if VGA is connected and in use
function VGAActive {
[ $MONITOR = "VGA1" ]
}
function VGAConnected {
! xrandr | grep "^VGA1" | grep disconnected
}
# actual script
while true
do
if ! VGAActive && VGAConnected
then
ActivateVGA
fi
if VGAActive && ! VGAConnected
then
DeactivateVGA
fi
sleep 1s
done
Vollständige Schritte:
-
Fügen Sie das obige Skript ein (
homemadeMonitor.sh
) in Ihr bevorzugtes Verzeichnis -
Machen Sie die .sh-Datei ausführbar, indem Sie im Terminal den folgenden Befehl eingeben
chmod +x homemadeMonitor.sh
-
Führen Sie die .sh-Datei
aus./homemadeMonitor.sh