Antworten:
xdpyinfo | grep dimensions | sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$/\1/'
Der Befehl xdpyinfo
zeigt verschiedene Informationen zu Ihrem X-Server an. Es schreibt viele Dinge in die Standardausgabe, aber wir brauchen nur die Zeile, die mit dem Wort beginnt dimensions
, also verwenden wir grep
. Schließlich verwenden wir, sed
um das Ergebnis zu reinigen.
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:
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
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)
############################################# ## Ich benutze dies mit einem Videoaufzeichnungsprogramm. # Fenstergröße - Root-Option - Informationen zum Root-Fenster des Bildschirms echo $ (xwininfo -root | grep 'geometry' | awk '{print $ 2;}') # Ausgabe (n): 1024 x 768 + 0 + 0 # Höhe x Breite + x + y Positionen. ###################### ## Reference Manual ## Mann xwininfo
xwininfo -root|sed '/Height/!d;s/.* //'
für die Höhe und xwininfo -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üssen
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
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
$ 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)
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.
Extended Display Identification Data (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
Dann lies die edid
Datei
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
Verhexen Sie die Edid-Daten
Falls edid-tools nicht installiert sind, können Sie die edid
Hex-Datei sichern , zB:
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 .
$( )
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//')
.