Obtenez la résolution d'affichage à partir de la ligne de commande pour Linux Desktop

32

Je recherche une méthode pour signaler la résolution d'affichage. Je veux configurer des scripts à lancer rdesktop, et je veux le lancer sur plusieurs machines avec différentes résolutions, donc je veux un moyen de le déterminer dynamiquement.

Barton Chittenden
la source
unix.stackexchange.com/questions/2672/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Réponses:

37

Utilisez la commande xrandr. Sans aucun argument, il affiche les résolutions disponibles et la résolution actuelle (avec un astérisque), par exemple:

$ xrandr | fgrep '*'
Diego Woitasen
la source
Pourriez-vous ajouter un exemple de sortie à la réponse? Et je suppose que xrandr |g grep \*ça fait l'affaire?
Ehtesh Choudhury
11

Autre solution: xdpyinfo | grep dimensions. xdpyinfoest plus ancien que xrandr, donc peut être plus portable si vous utilisez une distribution très ancienne ou un autre serveur X différent.

liori
la source
2
En effet, mais certaines (toutes?) Configurations multi-écrans apparaissent comme un seul écran xdpyinfotout en xrandrénumérant correctement les écrans et leur résolution. Cela peut ou non être un problème selon le contexte.
Stéphane Gourichon
Remarque: bien qu'il xdpyinfosemble signaler des dimensions correctes en pixels, il signale une mauvaise résolution (DPI). Par exemple, sur mon moniteur avec des dimensions 3840x2160 (natif et réel) et une taille de 708 mm x 399 mm, comme indiqué par xrandr, xdpyinfodit que la résolution est de 96x96 points par pouce.
Ruslan
7

Vous pouvez obtenir les résolutions horizontale et verticale à l'aide de la commande suivante:

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

ou, sous une forme plus compacte (comme suggéré par Peter.O dans ce commentaire):

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

Par exemple, sur un écran 1600x900, cela produira la sortie suivante:

1600 900

Vous pouvez ensuite placer les valeurs dans des variables distinctes à l'aide de la commande:

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

Affichez les valeurs des variables ci-dessus à l'aide de la commande:

echo $RES_X, $RES_Y

Sur un écran 1600x900, la sortie est:

1600, 900
crayzeewulf
la source
1
xdpyinfo | awk -F '[x] +' '/ dimensions: / {print 3 $, 4 $}'
Peter.O
@ Peter.O, merci. C'est une belle forme compacte de la commande. J'ai mis à jour la réponse.
crayzeewulf
En effet, mais certaines (toutes?) Configurations multi-écrans apparaissent comme un seul écran dans xdpyinfo tandis que xrandr énumère correctement les écrans et leur résolution. Cela peut ou non être un problème selon le contexte.
Stéphane Gourichon
5

J'aurais dû regarder un peu plus fort avant de poster. xrandrfera écho aux paramètres d'affichage actuels, si aucun autre argument n'est donné.

Par défaut, cela videra tous les paramètres d'affichage possibles, cela peut être filtré comme suit:

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

xrandrSortie propre pour une utilisation imagemagick

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