Como escrever um script bash para configurar minhas exibições quando o HDMI está conectado ou desconectado

8

Eu tenho um notebook rodando o Kubuntu Precise (12.04) que ocasionalmente uso para assistir vídeos. Quando faço isso, conecto um cabo HDMI conectado a um receptor A / V com um monitor HDMI conectado a ele.

Quando vejo vídeos dessa maneira, ainda preciso usar a tela do notebook quando estou interagindo com o sistema para controlar a reprodução, etc. O texto no monitor HDMI é difícil de ler de onde estou.

Quando eu conecto o cabo HDMI, o Kubuntu o detecta, mas eu tenho que passar por uma sequência de dança estranha (que funciona, mas é complicada) para configurá-lo corretamente toda vez, tanto para vídeo quanto para áudio. Para corrigir isso, estou tentando escrever um script bash com xrandr para fazer certo da primeira vez.

Eu recebi a ideia básica da resposta de Peoro a essa pergunta e respostas: Uma ferramenta para aplicar automaticamente a configuração RandR quando o monitor externo está conectado .

Sobre o meu script

Meu script (incluído abaixo) funciona, mas precisa ser melhorado.

Define o modo de vídeo corretamente para o monitor HDMI, mas o monitor LVDS1 (no notebook) muda para exibir apenas a parte superior esquerda da área de trabalho - o que é um problema porque corta as barras de rolagem da janela à direita e a barra de tarefas na parte inferior.

Eu tentei consertar isso com --scale , mas minha primeira tentativa atrapalhou as coisas o suficiente para que eu tivesse que reinicializar para obter uma exibição de trabalho.

Existe uma maneira de fazer com que ambos os displays mostrem o mesmo conteúdo, mas cada um usando sua própria resolução preferida separada?

Ou, pelo menos, uma maneira de definir o monitor do notebook para que toda a área de trabalho ainda esteja acessível quando o monitor HDMI estiver em uso?

Como estou depurando o script, ele não está limpo ainda. Eu posso querer fazer isso mais tarde.

Meu script

#!/bin/bash
## hdmi_set
## Copyleft 11/13/2013 JPmicrosystems
## Adapted from
## https://unix.stackexchange.com/questions/4489/a-tool-for-automatically-applying-randr-configuration-when-external-display-is-p
## Answer by peoro

# setting up new mode for my VGA
##xrandr --newmode "1920x1080" 148.5 1920 2008 2052 2200 1080 1089 1095 1125 +hsync +vsync
##xrandr --addmode VGA1 1920x1080

##source $HOME/bin/bash_trace
# default monitor is LVDS1
MONITOR=LVDS1

# functions to switch from LVDS1 to HDMI and vice versa
function ActivateHDMI {
    echo "Switching to HDMI"
    ##xrandr --output HDMI1 --mode 1920x1080 --dpi 160 --output LVDS1 --off
    ##xrandr --output HDMI1 --same-as LVDS1
    xrandr --output HDMI1 --mode 1920x1080
    xrandr --output LVDS1 --mode 1366x768
    MONITOR=HDMI1
}
function DeactivateHDMI {
    echo "Switching to LVDS1"
    xrandr --output HDMI1 --off --output LVDS1 --auto
    MONITOR=LVDS1
}

# functions to check if VGA is connected and in use
function HDMIActive {
    [ $MONITOR = "HDMI1" ]
}
function HDMIConnected {
    ! xrandr | grep "^HDMI1" | grep disconnected
}

## MONITOR doesn't do anything because it's not preserved between script executions
# actual script
##while true
##do
    if HDMIConnected
    then
        ActivateHDMI
    fi

    if ! HDMIConnected
    then
        DeactivateHDMI
    fi

    ##sleep 1s
##done

Saída do xrandr

Veja o que o xrandr vê:

bigbird@ramdass:~$ xrandr
Screen 0: minimum 320 x 200, current 1366 x 768, maximum 8192 x 8192
LVDS1 connected 1366x768+0+0 (normal left inverted right x axis y axis) 344mm x 194mm
   1366x768       60.0*+
   1360x768       59.8     60.0  
   1024x768       60.0  
   800x600        60.3     56.2  
   640x480        59.9  
VGA1 disconnected (normal left inverted right x axis y axis)
HDMI1 connected (normal left inverted right x axis y axis)
   1920x1080      60.0 +
   1680x1050      60.0  
   1280x1024      60.0  
   1440x900       59.9  
   1280x720       60.0  
   1024x768       60.0  
   800x600        60.3  
   720x480        59.9  
   640x480        60.0  
   720x400        70.1  
DP1 disconnected (normal left inverted right x axis y axis)
    
por Joe 13.11.2013 / 21:47

1 resposta

3

Você provavelmente deve usar o kscreen , que deve resolver todos os seus problemas. Ele irá se lembrar das configurações de uma tela conectada anteriormente e irá restaurá-las, assim que você conectá-la novamente.

Se você ainda tiver esses problemas enquanto ainda estiver usando o kscreen, valerá a pena um relatório de erros .

Como o Kubuntu 12.04 é bem antigo, você provavelmente deveria dar uma olhada em este .

    
por 25.11.2013 / 01:32