Wie finde ich meine Bildschirmauflösung aus einem Shell-Skript heraus?
ubuntu
gnome
xorg
resolution
dave4420
quelle
quelle
$( )
Syntax (dhDIMENSIONS=$(xdpyinfo ...
) in eine Variable . Verwenden Sie dannsed
erneut, um die beiden zu erhalten:WIDTH=$(echo $DIMENSIONS | sed -r 's/x.*//')
undHEIGHT=$(echo $DIMENSIONS | sed -r 's/.*x//')
.xdpyinfo
Gibt eine Fehlermeldung aus, wenn kein Zugriff auf Informationen möglich ist. Fehlerumleitung an/dev/null
. Aus diesem Grund können Sie einen Fehler Umleitung hinzuzufügen:xdpyinfo 2> /dev/null
. So sieht die volle piple wie folgt aus :xdpyinfo 2> /dev/null | grep dimensions | sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$/\1/'
. Dadurch wird Ihr Skript stabiler.xdpyinfo | grep dimensions
gibt Ihnen die Gesamtauflösung, wenn Sie mehrere Monitore haben, ist es die Summe von allen.xrandr --current
gibt Ihnen die Auflösung für jeden Monitor.Ich verwende dieses Snippet, um die maximal mögliche Auflösung für rDesktop zu finden, ohne in den Vollbildmodus zu wechseln:
Ausgabe:
Minus Fensterdekoration (mehr oder weniger):
Ausgabe:
Welches ist die maximale Auflösung für rDesktop ohne Vollbild.
Befehl beenden:
Bisher funktioniert es einwandfrei, aber ich habe es nicht gründlich getestet.
Ein weiteres Beispiel ist für einen Screencast mit
avconv
:quelle
xdpyinfo: Unable to open display "".
rdesktop [other_args] -g $(xrandr --current | grep '*' | uniq | awk '{print $1}')
.xrandr --current | grep '*' | awk -v line="$SCREEN" 'NR==line{print $1}' | cut -d 'x' -f1
Wenn Sie einen Bildschirm angeben möchten (mit einem Multi-Monitor-Setup) (SCREEN
ist 1-indiziert)Sie könnten den
xrandr -q
Befehl verwenden. Daraus können Sie bei Bedarf ein Shell-Skript erstellen.Weitere Informationen zum Befehl finden Sie hier oder geben Sie man xrandr ein
quelle
quelle
xwininfo -root|sed '/Height/!d;s/.* //'
für die Höhe undxwininfo -root|sed '/Width/!d;s/.* //'
für die Breite verwendet.xdpyinfo
werde es tun, mit etwas Analyse. Es gibt viele Informationen, von denen Sie dann die Bildschirmnummer und die Abmessungen abgraben müssenquelle
Zwei mögliche Alternativen ergaben sich aus der Kombination der Antworten von @ user31752 und @ eliezer-e-vargas
Ein einfacher regulärer Ausdruck:
oder mit cut:
Bei Verwendung
grep '*' | uniq
von @ eliezer-e-vargas wird eine andere Zeile (z. B. "1440x900 59.90 * + 59.89") der xrandr-Ausgabe ausgegeben, während bei Verwendung von grep "connected" eine einfache Zeile (z. B. "LVDS1 connected 1440x900 + 0 + 0") ausgegeben wird ..... ").Die Verwendung von Regex durch @ user31752 ist nett, daher benötigt die von mir verwendete Zeile einen einfacheren Regex oder kann durch den einfacheren Befehl cut ersetzt werden.
Beispiel für eine xrandr-Ausgabe
quelle
Wie in der akzeptierten Antwort, aber weniger kompliziert:
Ausgabebeispiel:
quelle
Bildschirmdaten lesen
Der vesa-Standard bietet eine Methode zum Lesen der Bildschirmauflösung.
Ein Monitor unterstützt normalerweise mehrere Auflösungen und Aktualisierungen. Natürlich wird jemand das Maximum (physisch) bevorzugen.
Versuchen Sie eine der folgenden Lösungen, um diese Monitordaten zu lesen:
edid-decode
Wenn nicht installiert, geben Sie ein
Dann lies die
edid
Dateiread-edid
Installieren Sie mit
Dann über i2c die Bildschirmmonitordaten lesen und analysieren
Verhexen Sie die Edid-Daten
Falls edid-tools nicht installiert sind, können Sie die
edid
Hex-Datei sichern , zB:Um diese Hex-Datei zu verschlüsseln, schauen Sie sich das Wiki an oder laden Sie die Edid-Spezifikationen herunter .
quelle