Wie finde ich meine Bildschirmauflösung aus einem Shell-Skript heraus?
xdpyinfo | grep dimensions | sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$/\1/'
Mit dem Befehl xdpyinfo
werden verschiedene Informationen zu Ihrem X-Server angezeigt. Es werden viele Dinge in die Standardausgabe geschrieben, aber wir brauchen nur die Zeile, die mit dem Wort dimensions
beginnt. Daher verwenden wir grep
. Schließlich verwenden wir sed
, um das Ergebnis zu bereinigen.
xdpyinfo | grep dimensions
gibt Ihnen die Gesamtauflösung an. Wenn Sie mehrere Monitore haben, ist dies die Summe aller Monitore. 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:
Xaxis=$(xrandr --current | grep '*' | uniq | awk '{print $1}' | cut -d 'x' -f1)
Yaxis=$(xrandr --current | grep '*' | uniq | awk '{print $1}' | cut -d 'x' -f2)
Ausgabe:
Xaxis = 1280
Yaxis = 1024
Minus Fensterdekoration (mehr oder weniger):
MaxRes=$(($Xaxis-5))"x"$(($Yaxis-25))
Ausgabe:
MaxRes = 1275x999
Welches ist die maximale Auflösung für rDesktop ohne Vollbild.
Befehl beenden:
rdesktop -u $User -P -z -5 -g $MaxRes $Host &
Bisher funktioniert es einwandfrei, aber ich habe es nicht gründlich getestet.
Ein weiteres Beispiel ist für einen Screencast mit avconv
:
avconv -f x11grab -r 15 -s `xrandr --current | grep '*' | uniq | awk '{print $1}'` -i :0.0 -c:v libx264 ./output.mp4
############################################# ## Ich verwende dies mit einem Videoaufzeichnungsprogramm. # Fenstergröße - Wurzeloption - Informationen zum Hauptfenster des Bildschirms Echo $ (xwininfo -root | grep 'Geometrie '| awk' {print $ 2;} ') # Ausgabe (n): 1024x768 + 0 + 0 # Höhe x Breite + x + y Positionen. ### ################### ## Referenzhandbuch ## Man xwininfo
Zwei mögliche Alternativen ergaben sich aus der Kombination der Antworten von @ user31752 und @ eliezer-e-vargas
Ein einfacher regulärer Ausdruck:
$ xrandr --current | sed -n 's/.* connected \([0-9]*\)x\([0-9]*\)+.*/\1x\2/p'
1440x900
oder mit cut:
$ xrandr --current | grep ' connected ' | cut -d ' ' -f 3 | cut -d '+' -f 1
1440x900
Die Verwendung von grep '*' | uniq
von @ eliezer-e-vargas führt zu einer anderen Zeile (z. B. "1440x900 59.90 * + 59.89") der xrandr-Ausgabe, während das grep "connected" eine einfache Zeile (z. B. "LVDS1 connected 1440x900 + 0 +") erhält 0 ..... ").
Die Verwendung von regulären Ausdrücken durch @ user31752 ist in Ordnung, daher benötigt die von mir verwendete Zeile einen einfacheren regulären Ausdruck oder kann durch den einfacheren Befehl cut ersetzt werden.
Beispiel für eine xrandr-Ausgabe
$ xrandr --current
Screen 0: minimum 320 x 200, current 1440 x 900, maximum 8192 x 8192
LVDS1 connected 1440x900+0+0 (normal left inverted right x axis y axis) 331mm x 207mm
1440x900 59.90*+ 59.89
1360x768 59.80 59.96
1152x864 60.00
1024x768 60.00
800x600 60.32 56.25
640x480 59.94
VGA1 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
DP1 disconnected (normal left inverted right x axis y axis)
xdpyinfo
erledigt das mit einigem Parsing. Es gibt eine Menge Informationen, von denen Sie dann die Bildschirmnummer und die Abmessungen abgraben müssen
Wie in der akzeptierten Antwort, aber weniger kompliziert:
xdpyinfo | grep dimensions
Ausgabebeispiel:
dimensions: 1366x768 pixels (361x203 millimeters)
Der vesa-Standard bietet eine Methode zum Lesen der Bildschirmauflösung.
Erweiterte Anzeigeidentifikationsdaten (EDID ): Dieser Standard definiert Datenformate für Konfigurationsinformationen, um eine optimale Nutzung der Anzeigen zu ermöglichen.
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
Sudo apt install edid-decode
Lesen Sie dann die Datei edid
edid-decode /sys/class/drm/card0-eDP-1/edid
read-edid
Installieren Sie mit
Sudo apt install read-edid
Dann über i2c die Bildschirmmonitordaten lesen und analysieren
Sudo get-edid | parse-edid
Verhexe die edid Daten
Falls edid-tools nicht installiert sind, können Sie die Hex-Datei edid
sichern, z.
hd /sys/class/drm/card0-eDP-1/edid
Um diese Hex-Datei zu verschlüsseln, schauen Sie sich das Wiki an oder laden Sie die Edid-Spezifikationen herunter .