Obtenga resolución de pantalla desde la línea de comandos para Linux Desktop

32

Estoy buscando un método para informar la resolución de pantalla. Quiero configurar scripts para que se inicien rdesktop, y quiero iniciarlo en varias máquinas con diferentes resoluciones, por lo que quiero una forma de determinarlo dinámicamente.

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

Respuestas:

37

Usa el comando xrandr. Sin ningún argumento, muestra las resoluciones disponibles y la actual (con un asterisco), por ejemplo:

$ xrandr | fgrep '*'
Diego Woitasen
fuente
¿Podría agregar algún resultado de muestra a la respuesta? Y supongo que xrandr |g grep \*hace el truco?
Ehtesh Choudhury
11

Solución alternativa: xdpyinfo | grep dimensions. xdpyinfoes anterior xrandr, por lo que podría ser más portátil si utiliza una distribución muy antigua o algún servidor X diferente.

liori
fuente
2
De hecho, pero algunas (¿todas?) Configuraciones de monitores múltiples aparecen como una sola pantalla xdpyinfomientras xrandrenumera correctamente las pantallas y su resolución. Esto puede o no ser un problema dependiendo del contexto.
Stéphane Gourichon
Nota: aunque xdpyinfoparece informar dimensiones correctas en píxeles, informa una resolución incorrecta (DPI). Por ejemplo, en mi monitor con dimensiones 3840x2160 (nativas y reales) y tamaño 708mm x 399mm según lo informado xrandr, xdpyinfodice que la resolución es 96x96 puntos por pulgada.
Ruslan
7

Puede obtener las resoluciones horizontal y vertical con el siguiente comando:

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

o, en forma más compacta (como lo sugiere Peter.O en este comentario):

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

Por ejemplo, en una pantalla de 1600x900 esto producirá la siguiente salida:

1600 900

Luego puede colocar los valores en variables separadas usando el comando:

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

Visualice los valores de las variables anteriores con el comando:

echo $RES_X, $RES_Y

En una pantalla de 1600x900, la salida es:

1600, 900
crayzeewulf
fuente
1
xdpyinfo | awk -F '[x] +' '/ dimensiones: / {print $ 3, $ 4}'
Peter.O
@ Peter.O, gracias. Esta es una buena forma compacta del comando. He actualizado la respuesta.
crayzeewulf
De hecho, pero algunas (¿todas?) Configuraciones de monitores múltiples aparecen como una pantalla en xdpyinfo mientras xrandr enumera correctamente las pantallas y su resolución. Esto puede o no ser un problema dependiendo del contexto.
Stéphane Gourichon
5

Debería haber mirado un poco más duro antes de publicar. xrandrse hará eco de la configuración de visualización actual, si no se le dan otros argumentos.

De forma predeterminada, esto volcará todas las configuraciones de visualización posibles, esto se puede filtrar de la siguiente manera:

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

xrandrSalida limpia para uso de imagemagick

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