Como descubro minha resolução de tela a partir de um script de shell?
ubuntu
gnome
xorg
resolution
dave4420
fonte
fonte
$( )
sintaxe (ou sejaDIMENSIONS=$(xdpyinfo ...
). Em seguida, usesed
novamente para obter os dois:WIDTH=$(echo $DIMENSIONS | sed -r 's/x.*//')
eHEIGHT=$(echo $DIMENSIONS | sed -r 's/.*x//')
.xdpyinfo
imprime uma mensagem de erro se não puder acessar informações, portanto, redirecione o erro para/dev/null
. Por esta razão, você pode querer adicionar um redirecionamento de erro:xdpyinfo 2> /dev/null
. Assim, o piple completo fica assim:xdpyinfo 2> /dev/null | grep dimensions | sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$/\1/'
. Isso tornará seu script mais sólido.xdpyinfo | grep dimensions
fornecerá a resolução total; se você tiver vários monitores, será a soma de todos eles.xrandr --current
lhe dará a resolução para cada monitor.Eu uso esse snippet para encontrar a resolução máxima possível para o rDesktop sem ir para a tela cheia:
Resultado:
Menos decoração de janelas (mais ou menos):
Resultado:
Qual é a resolução máxima para o rDesktop sem passar em tela cheia.
Comando final:
Até agora, funciona bem, mas ainda não testei completamente.
Outro exemplo é para screencast com
avconv
:fonte
xdpyinfo: Unable to open display "".
rdesktop [other_args] -g $(xrandr --current | grep '*' | uniq | awk '{print $1}')
.xrandr --current | grep '*' | awk -v line="$SCREEN" 'NR==line{print $1}' | cut -d 'x' -f1
se você deseja especificar uma tela (com uma configuração de vários monitores) (comSCREEN
1 indexação)Você poderia usar o
xrandr -q
comando A partir disso, você pode criar um script de shell, se necessário.Para obter mais informações sobre o comando, clique aqui ou digite man xrandr
fonte
fonte
xwininfo -root|sed '/Height/!d;s/.* //'
para altura exwininfo -root|sed '/Width/!d;s/.* //'
largura.xdpyinfo
vai fazer isso, com algumas análises. Ele fornece muitas informações, das quais você terá que cavar o número da tela e as dimensões defonte
Duas alternativas possíveis produzidas combinando as respostas de @ user31752 e @ eliezer-e-vargas
Um regex mais simples:
ou usando corte:
O uso de
grep '*' | uniq
@ eliezer-e-vargas obtém uma linha diferente (ex. "1440x900 59,90 * + 59,89") de saída xrandr, enquanto o grep 'conectado' obtém uma linha simples (ex. "LVDS1 conectado 1440x900 + 0 + 0 ..... ").O uso de regex por @ user31752 é bom; portanto, a linha que estou usando precisa de um regex mais simples ou pode ser substituído pelo comando de corte mais simples.
Exemplo de saída xrandr
fonte
Como na resposta aceita, mas menos complicada:
Exemplo de saída:
fonte
Lendo os dados da tela do monitor
O padrão vesa fornece um método para ler a resolução da tela do monitor.
Um monitor geralmente suporta várias resoluções e atualizações. É claro que alguém prefere o máximo (físico).
Para ler esses dados do monitor, tente uma destas soluções:
edid-decode
Se não estiver instalado, digite
Então leia o
edid
arquivoread-edid
Instale com
Em seguida, leia via i2c os dados do monitor de tela e analise-os
Hexdump os dados edid
Caso o edid-tools não esteja instalado, você pode despejar o
edid
arquivo hexadecimal, por exemplo:Para criptografar esse arquivo hexadecimal, consulte o wiki ou faça o download das especificações edid .
fonte