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