Como descubro minha resolução de tela a partir de um script de shell?

46

Como descubro minha resolução de tela a partir de um script de shell?

    
por dave4420 06.10.2010 / 16:33

8 respostas

52
xdpyinfo | grep dimensions | sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$//'

O comando xdpyinfo exibe várias informações sobre o seu servidor X. Ele grava muitas coisas na saída padrão, mas precisamos apenas da linha que começa com a palavra dimensions , portanto, usamos grep . Finalmente, usamos sed para limpar o resultado.

    
por 06.10.2010 / 16:55
26

xdpyinfo | grep dimensions dará a resolução total, se você tiver vários monitores, será a soma de todos eles. xrandr --current fornecerá a resolução para cada monitor.

Eu uso este trecho para encontrar a resolução máxima possível para o rDesktop sem ir para tela inteira:

Xaxis=$(xrandr --current | grep '*' | uniq | awk '{print $1}' | cut -d 'x' -f1)

Yaxis=$(xrandr --current | grep '*' | uniq | awk '{print $1}' | cut -d 'x' -f2)

Saída:

Xaxis = 1280
Yaxis = 1024

Menos a decoração das janelas (mais ou menos):

MaxRes=$(($Xaxis-5))"x"$(($Yaxis-25))

Saída:

MaxRes = 1275x999

Qual é a resolução máxima para o rDesktop sem passar pela tela inteira.

Comando final:

rdesktop -u $User -P -z -5 -g $MaxRes $Host &

Funciona bem até agora, mas ainda não testei completamente.

Outro exemplo é para screencast com avconv :

avconv -f x11grab -r 15 -s 'xrandr --current | grep  '*' | uniq | awk '{print $1}'' -i :0.0 -c:v libx264 ./output.mp4
    
por 22.09.2011 / 18:44
4

Você pode usar o comando xrandr -q . A partir disso, você pode criar um script de shell, se necessário.

Para mais informações sobre o comando, vá para aqui ou digite man xrandr

    
por 06.10.2010 / 16:54
2
#############################################
## I use this with a Video Recording Program.
#  window size --root option - information on the screen's root window
echo $(xwininfo -root | grep 'geometry' | awk '{print $2;}')
# output(s): 1024x768+0+0
#            height x width + x + y positions.
######################
## Reference Manual ##
man xwininfo
    
por 07.11.2015 / 15:26
1

xdpyinfo fará isso, com alguma análise. Ele fornece muitas informações que você terá que descobrir o número da tela e as dimensões de

    
por 06.10.2010 / 16:55
1

Duas alternativas possíveis foram produzidas combinando as respostas de @ user31752 e @ eliezer-e-vargas

Um regex mais simples:

$ xrandr --current | sed -n 's/.* connected \([0-9]*\)x\([0-9]*\)+.*/x/p'
1440x900

ou usando o corte:

$ xrandr --current | grep ' connected ' | cut -d ' ' -f 3 | cut -d '+' -f 1
1440x900

O uso de grep '*' | uniq de @ eliezer-e-vargas obtém uma linha diferente (ex. "1440x900 59.90 * + 59.89") de saída xrandr, enquanto o grep 'connected' obtém um simples (ex. "LVDS1 conectado 1440x900 + 0 + 0 ..... ").

O uso de regex por @ user31752 é bom, então a linha que estou usando precisa de uma regex mais simples, ou pode ser substituída pelo comando cut mais simples.

Exemplo de saída xrandr

$ 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)
    
por 09.05.2017 / 03:17
0

Como na resposta aceita, mas menos complicada:

xdpyinfo | grep dimensions

Exemplo de saída:

dimensions:    1366x768 pixels (361x203 millimeters)
    
por 20.11.2017 / 18:38
0

Lendo os dados da tela do monitor

O padrão vesa fornece um método de como ler a resolução da tela do monitor.

Extended Display Identification Data (EDID): This standard defines data formats to carry configuration information, allowing optimum use of displays.

Um monitor geralmente suporta várias resoluções e taxas de atualização. Claro que alguém vai preferir o máximo (físico).

Para ler os dados deste monitor, tente uma destas soluções:

  • edid-decode

    Se não estiver instalado, digite

    sudo apt install edid-decode
    

    Em seguida, leia o arquivo edid

    edid-decode /sys/class/drm/card0-eDP-1/edid
    
  • read-edid

    Instale com

    sudo apt install read-edid 
    

    Em seguida, leia via i2c os dados do monitor de tela e analise-os

    sudo get-edid | parse-edid
    
  • Hexdump os dados edid

    Caso as ferramentas edid não estejam instaladas, você poderá fazer o dump do arquivo edid hex, por exemplo:

    hd /sys/class/drm/card0-eDP-1/edid
    

    Para criptografar este arquivo hexágono, dê uma olhada em wiki ou baixe o especificações do edid .

por 26.09.2018 / 18:39