Hallo,
ich habe ein Skript gesucht, dass die Anzeige von Laptop mit Beamer sinnvoll klont, egal welche native Auflösungen die Anzeigegeräte haben. Nach kurzer weltweiter Recherche hab’ ich doch tatsächlich was gefunden und zwar hier bei uns:
http://www.linuxmuster.net/forum/post/6845
Ein großes Danke an Sven Röhrauer!
Ich habe das Skript so erweitert, dass es erst einmal abfragt, wie viele Anzeigegeräte angeschlossen sind und danach bei 2 Anzeigegeräten die Anzeige sinnvoll klont (größte gemeinsame Auflösung), bei nur 1 Anzeigegerät dessen Standardauflösung wieder herstellt und bei mehr als 2 Anzeigegeräten eine Warnmeldung für den Benutzer ausgibt.
Das schien mir sinnvoll für den Fall, dass Anzeigegeräte erst nach der Anmeldung am Computer angeschlossen oder ausgeschaltet werden. Wenn man das Skript dann nochmal startet, optimiert es die Anzeige entsprechend der gerade vorliegenden Situation. Dafür ist ein Starter für die Benutzer sinnvoll:
/usr/share/applications/BeamerModus.desktop
[Desktop Entry] Version=1.0 Type=Application Name=Anzeige optimieren Comment=Optimiert die Anzeige bei der Verwendung von ein oder zwei Anzeigegeräten, z.B. wenn ein Beamer nach der Anmeldung am Computer angeschaltet oder abgeschaltet wird. Tastaturkürzel: Strg+Alt+r Exec=/opt/xrandr-beamer/xrandr-beamer-clone.sh Icon=/usr/share/icons/beamer.png Path= Categories=Utility Terminal=false StartupNotify=false
Ich habe diesen übrigens unter /usr/share/applications abgelegt so dass er im App-Menü erscheint.
Ich habe für den XFCE-Desktop noch einen Tastatur-Shortcut hinzugefügt (ist im Skript durch # noch deaktiviert, da die meisten wohl kein XFCE einsetzen). Dadurch kann man das Skript per Strg+Alt+r aufrufen.
Ich hoffe, dass es mir dann dient, wenn die Anzeige mal wieder komplett abgeschaltet wird, sobald ich den PC an einer KVM-Station angeschlossen habe und auf einen anderen PC umschalte und dann wieder zurück. (Per ssh kann man dann mit xrandr ersehen, dass kein Anzeigemodus gesetzt ist, da das Sternchen-Symbol nirgends erscheint.)
Außerdem habe ich die groß geschriebenen Variablen von Sven gegen klein geschriebene ersetzt, damit man nicht mit Systemvariablen (z.B. DISPLAY) in Konflikt gerät, die wohl immer groß geschriebenen werden.
http://rowa.giso.de/german/shell-variablen.html
Bei den Clients, die an Beamern angeschlossen sind (lässt sich bei mir aus der 10.Stelle des Clientnamen ermitteln) kopiere ich den Starter auf den Desktop per Postsync:
### Auflösung automatisch anpassen # Desktop-Icon kopieren in Abhängigkeit vom Clientnamen displaytype="${HOSTNAME:9:1}" case $displaytype in b*) cp /mnt/usr/share/applications/BeamerModus.desktop /mnt/home/linuxadmin/Desktop/BeamerModus.desktop chmod +x /mnt/home/linuxadmin/Desktop/BeamerModus.desktop esac
Hier das eigentliche Skript:
/opt/xrandr-beamer/xrandr-beamer-clone.sh
#!/bin/bash
# Anzeige automatisch klonen # Sen 2017-07-02 # Linux Mint 17.0 Xfce 64bit # GPL v3 # Dank an Sven Röhrauer für seinen Code für 2 Anzeigegeräte
# NUR FÜR XFCE-Desktop geeignet: Shortcut setzen, um Skript per Shortcut aufrufen zu können # xfconf-query -c xfce4-keyboard-shortcuts -p "/commands/custom/<Primary><Alt>r" -n -t string -s "/opt/xrandr-beamer/xrandr-beamer-clone.sh"
# Alle angeschlossenen Anzeigeräte ermitteln disp=($(xrandr --query | grep " connected" | awk '{print $1}')) # Anzahl der angeschlossenen Anzeigeräte ermitteln dispnum=($(xrandr --query | grep -c " connected"))
case $dispnum in 1*) ### Ein Anzeigegerät angeschlossen # Standardauflösung ermitteln orires=($(xrandr | grep "+ "| awk '{print $1}')) # Standardauflösung einstellen xrandr --output ${disp[0]} --mode $orires ;; 2*) ### Zwei Anzeigegeräte angeschlossen # Finde die höchste gemeinsame Auflösung maxres=$(xrandr --query | awk '/^ *[0-9]*x[0-9]*/{ print $1 }' | \ sort -n | uniq -d | tail -1) # Auflösung einstellen xrandr --output ${disp[0]} --mode $maxres --output ${disp[1]} \ --mode $maxres --same-as ${disp[0]} ;; *) ### Andere Fälle: Skript funtkioniert nur für 1 und 2 Anzeigegeräte LANG=de_DE.utf8 /usr/bin/zenity --warning --text="\nDieses Skript funktioniert nur für 1 und 2 Anzeigegeräte. \n\nMehr Anzeigegeräte können nur manuell konfiguriert werden. \n\nVerwenden Sie dazu die Anzeigeeinstellungen." --title="Anzeige automatisch klonen" ;; esac
Gruß
Stefan