Obtenha resolução de exibição na linha de comando do Linux Desktop

32

Estou procurando um método de relatar a resolução da tela. Quero configurar scripts para iniciar rdesktope quero iniciá-lo em várias máquinas com diferentes resoluções, por isso quero uma maneira de determiná-lo dinamicamente.

Barton Chittenden
fonte

Respostas:

37

Use o comando xrandr. Sem nenhum argumento, ele exibe as resoluções disponíveis e a atual (com um asterisco), por exemplo:

$ xrandr | fgrep '*'
Diego Woitasen
fonte
Você poderia acrescentar um exemplo de saída à resposta? E eu estou supondo que xrandr |g grep \*faz o truque?
Ehtesh Choudhury
11

Solução alternativa: xdpyinfo | grep dimensions. xdpyinfoé mais antigo que xrandr, portanto, pode ser mais portátil se você usar uma distribuição muito antiga ou algum servidor X diferente.

liori
fonte
2
De fato, mas algumas (todas?) Configurações de vários monitores aparecem como uma tela xdpyinfoenquanto xrandrenumera corretamente as telas e sua resolução. Isso pode ou não ser um problema, dependendo do contexto.
Stéphane Gourichon
Nota: embora xdpyinfopareça relatar dimensões corretas em pixels, ele informa a resolução incorreta (DPI). Por exemplo, no meu monitor com dimensões de 3840x2160 (nativas e reais) e tamanho 708mm x 399mm, conforme relatado por xrandr, xdpyinfodiz que a resolução é de 96x96 pontos por polegada.
Ruslan
7

Você pode obter as resoluções horizontal e vertical usando o seguinte comando:

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

ou, de forma mais compacta (como sugerido por Peter.O neste comentário):

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

Por exemplo, em uma tela de 1600x900, isso produzirá a seguinte saída:

1600 900

Você pode colocar os valores em variáveis ​​separadas usando o comando:

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

Exiba os valores das variáveis ​​acima usando o comando:

echo $RES_X, $RES_Y

Em uma tela de 1600x900, a saída é:

1600, 900
crayzeewulf
fonte
11
xdpyinfo | awk -F '[x] +' '/ dimensões: / {print $ 3, US $ 4}'
Peter.O
@ Peter.O, obrigado. Esta é uma boa forma compacta do comando. Eu atualizei a resposta.
precisa saber é o seguinte
De fato, mas algumas (todas?) Configurações de vários monitores aparecem como uma tela no xdpyinfo enquanto o xrandr enumera corretamente as telas e sua resolução. Isso pode ou não ser um problema, dependendo do contexto.
Stéphane Gourichon
5

Eu deveria ter olhado um pouco mais antes de postar. xrandrecoará as configurações de exibição atuais, se não houver outros argumentos.

Por padrão, isso irá despejar todas as configurações de exibição possíveis, e pode ser filtrado da seguinte maneira:

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

xrandrSaída limpa para uso de imagemagick

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