Como listar exibições ativas (na linha de comando)?

3

xrandr -q me fornece uma lista de exibições conectadas, mas como posso saber (compatível com scripts) se uma exibição está ativa no momento?

Contexto: Eu gostaria de escrever um script para alternar um Display. Se estiver ativo, deve ser desligado, se não estiver, deve estar ligado.

Nota: xrandr -q basicamente fornece essas informações, pois os modos ativos são marcados com * , mas essas informações são difíceis de extrair em um script bash.

    
por innerand 29.01.2014 / 12:10

3 respostas

1

Os displays ativos têm sua resolução e número de offset mostrados na linha de identificação de xrandr output. Aqui está o que eu quero dizer:

$ xrandr | grep connected                                    
eDP1 connected primary 1366x768+1280+256 (normal left inverted right x axis y axis) 345mm x 194mm
DP1 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
VGA1 connected 1280x1024+0+0 (normal left inverted right x axis y axis) 340mm x 270mm
VIRTUAL1 disconnected (normal left inverted right x axis y axis)

Na saída, você pode ver que o monitor embutido do meu laptop e o VGA1 estão conectados e têm resolução (no caso do monitor embutido eDP1 é 1366x768). Assim, a tarefa simplesmente se transforma em processamento de texto da saída. Para esse propósito, eu escrevi uma pequena função que você pode usar em seus scripts ou ~/.bashrc :

get_active_monitors()
{
    xrandr | awk '/\ connected/ && /[[:digit:]]x[[:digit:]].*+/{print }'
}

Veja as execuções de teste:

Com monitor VGA ligado

Com o monitor VGA desligado

    
por Sergiy Kolodyazhnyy 31.12.2016 / 03:07
0

com xrandr na lista de resolução, a resolução de exibição ativa deve ter um asterisco logo após, se não estiver presente, a exibição não estará ativa.

    
por Sharkytrs 29.01.2014 / 13:47
0

Coloque todo o monitor conectado usando

 xrandr -q

Então você pode criar uma variável de todo o display conectado como

Display1=VGA1

e assim por diante

use o script

 #!/bin/bash

 if (xrandr | grep "$DISPLAY1 connected"); then
    if (ls | grep status_flag); then  
        xrandr --output $DISPLAY1 --off
        rm status_flag
    else
        xrandr --output $DISPLAY1 --auto
        touch status_flag
    fi
 fi

Executar este script pela primeira vez ativará o monitor sem saber se o monitor está ativado ou desativado e, a partir da segunda vez, ele será desligado se o monitor estiver ligado e ligado se o monitor estiver desligado.

    
por s.m 29.01.2014 / 12:59