Rufen Sie die Bildschirmauflösung über die Befehlszeile für Linux Desktop ab

32

Ich suche nach einer Methode zum Melden der Bildschirmauflösung. Ich möchte Skripts zum Starten einrichten rdesktopund sie auf mehreren Computern mit unterschiedlichen Auflösungen starten . Daher möchte ich eine Möglichkeit, sie dynamisch zu bestimmen.

Barton Chittenden
quelle

Antworten:

37

Verwenden Sie den Befehl xrandr. Ohne Argument werden die verfügbaren Auflösungen und die aktuelle Auflösung (mit einem Sternchen) angezeigt, zum Beispiel:

$ xrandr | fgrep '*'
Diego Woitasen
quelle
Können Sie der Antwort eine Beispielausgabe hinzufügen? Und ich vermute, xrandr |g grep \*macht der Trick?
Ehtesh Choudhury
11

Alternative Lösung: xdpyinfo | grep dimensions. xdpyinfoist älter als xrandr, kann also portabler sein, wenn Sie eine sehr alte Distribution oder einen anderen X-Server verwenden.

Liori
quelle
2
In der Tat werden einige (alle?) Multi-Monitor-Setups als ein Bildschirm angezeigt, xdpyinfowährend xrandrdie Bildschirme und ihre Auflösung korrekt aufgelistet werden. Dies kann je nach Kontext ein Problem sein oder auch nicht.
Stéphane Gourichon
Hinweis: Während xdpyinfoscheinbar die korrekten Abmessungen in Pixeln angegeben werden, wird eine falsche Auflösung (DPI) angegeben. ZB auf meinem Monitor mit den Abmessungen 3840x2160 (nativ und aktuell) und einer Größe von 708 mm x 399 mm, wie von berichtet xrandr, ist xdpyinfodie Auflösung 96x96 Punkte pro Zoll.
Ruslan
7

Sie können die horizontale und vertikale Auflösung mit dem folgenden Befehl ermitteln:

xdpyinfo | grep dimensions | awk '{print $2}' | awk -Fx '{print $1, $2}'

oder, in kompakterer Form (wie von Peter.O in diesem Kommentar vorgeschlagen):

xdpyinfo | awk -F'[ x]+' '/dimensions:/{print $3, $4}' 

Beispielsweise wird auf einem 1600x900-Bildschirm die folgende Ausgabe erzeugt:

1600 900

Sie können die Werte dann mit dem folgenden Befehl in separate Variablen einfügen:

read RES_X RES_Y <<<$(xdpyinfo | awk -F'[ x]+' '/dimensions:/{print $3, $4}')

Zeigen Sie die Werte der obigen Variablen mit dem folgenden Befehl an:

echo $RES_X, $RES_Y

Auf einer 1600x900-Anzeige lautet die Ausgabe:

1600, 900
Crayzeewulf
quelle
1
xdpyinfo | awk -F '[x] +' '/ dimensions: / {print $ 3, $ 4}'
Peter.O
@ Peter.O, danke. Dies ist eine schöne kompakte Form des Befehls. Ich habe die Antwort aktualisiert.
Crayzeewulf
In der Tat werden einige (alle?) Multi-Monitor-Setups in xdpyinfo als ein Bildschirm angezeigt, während xrandr die Bildschirme und ihre Auflösung korrekt auflistet. Dies kann je nach Kontext ein Problem sein oder auch nicht.
Stéphane Gourichon
5

Ich hätte vor dem Posten etwas genauer hinschauen sollen. xrandrGibt die aktuellen Anzeigeeinstellungen wieder, wenn keine anderen Argumente angegeben wurden.

Standardmäßig werden alle möglichen Anzeigeeinstellungen gelöscht. Dies kann wie folgt gefiltert werden:

xrandr | egrep '^[^ ]|[0-9]\*\+'
Barton Chittenden
quelle
1

Saubere xrandrAusgabe für Imagemagick

xrandr |grep \* |awk '{print $1}'
Serge Stroobandt
quelle