it-swarm.com.de

Wie finde ich meine Bildschirmauflösung aus einem Shell-Skript heraus?

Wie finde ich meine Bildschirmauflösung aus einem Shell-Skript heraus?

47
dave4420
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.

54
user31752

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
27

Sie können den Befehl xrandr -q verwenden. Daraus können Sie bei Bedarf ein Shell-Skript erstellen.

Weitere Informationen zum Befehl erhalten Sie hier oder geben Sie man xrandr

4
ricbax
 ############################################# 
 ## 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 
2

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)
1
campisano

xdpyinfo erledigt das mit einigem Parsing. Es gibt eine Menge Informationen, von denen Sie dann die Bildschirmnummer und die Abmessungen abgraben müssen

1
Rich Homolka

Wie in der akzeptierten Antwort, aber weniger kompliziert:

xdpyinfo | grep dimensions

Ausgabebeispiel:

dimensions:    1366x768 pixels (361x203 millimeters)
0

Lesen der Bildschirmdaten

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 .

0
abu_bua