Lendo o status da tela

2

Eu costumava ler o status da rotação da minha tela com este comando no fedora 22:

status=$(xrandr --verbose | grep LVDS1 | awk '{print $6}'

e a saída seria algo como noraml ou inverted etc. Isso funcionou mesmo quando eu estava compartilhando a tela com alguns outros monitores / projetores. Depois de atualizar para o fedora 23, cada vez que eu conecto o laptop a um monitor externo ou projetor, as informações nessa linha de xrandr mudam um pouco e a parte $6 mostra a (normal parte do (normal left inverted right x axis y axis) que não me dá nenhuma informação e eu tenho que mudar o $6 para $5 para obter o status do monitor. Eu corrijo o problema testando o primeiro caractere e, se for ( , ele usa a outra saída. isto é,

testvalue=$(xrandr --verbose | grep LVDS1 | awk '{print $6}')
[ ${testvalue:0:1} == "(" ] && status=$(xrandr --verbose | grep LVDS1 | awk '{print $5}') || status=$(xrandr --verbose | grep LVDS1 | awk '{print $6}')

Isso faz o trabalho por enquanto. Minha pergunta é como corrigir isso de maneira mais estável?

    
por Keivan 23.11.2016 / 18:15

1 resposta

1
xrandr | awk -F'(' '/^LVDS1/{ split($2,a," "); print a[3]}'

xrandr imprime esta linha sem --verbose.

Use '(' como separador de arquivos

Veja apenas as linhas que correspondem a / ^ LVDS1 /

Divida o segundo campo em uma matriz (denominada a) usando "" como separador

Finalmente, imprima o terceiro elemento de um

    
por 25.02.2017 / 12:52