Como escrever um script bash para configurar meus monitores quando o HDMI estiver conectado ou desconectado


8

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

Quando assisto a 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 conecto o cabo HDMI, o Kubuntu o detecta, mas tenho que passar por uma sequência estranha de dança (que funciona, mas é complicada) para que seja configurada sempre corretamente, tanto para vídeo quanto para áudio. Para corrigir isso, estou tentando escrever um script bash xrandrpara fazer certo da primeira vez.

Eu obtive a idéia básica da resposta de Peoro a essas perguntas e respostas da U&L intitulada: Uma ferramenta para aplicar automaticamente a configuração do RandR quando o monitor externo é conectado .

Sobre o meu script

Meu script (incluído abaixo) funciona, mas precisa de melhorias.

Ele 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 o fundo.

Eu tentei consertar isso --scale, mas minha primeira tentativa estragou as coisas o suficiente para que eu tivesse que reiniciar para obter uma tela funcionando de volta.

Existe uma maneira de fazer com que os dois monitores mostrem o mesmo conteúdo, mas cada um deles usa sua própria resolução preferida?

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

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

Meu script

#!/bin/bash
## hdmi_set
## Copyleft 11/13/2013 JPmicrosystems
## Adapted from
## /unix/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

Aqui está 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)

Respostas:


3

Você provavelmente deve simplesmente usar o kscreen , o que deve resolver todos os seus problemas. Ele lembrará as configurações de uma tela conectada anteriormente e as restaurará quando você conectá-la novamente.

Se você ainda tiver esses problemas enquanto estiver usando o kscreen, vale a pena relatar um bug .

Como o Kubuntu 12.04 é bastante antigo, você provavelmente deve dar uma olhada nisso .


Santo Moley! Esse ppa me deu 347 atualizações! Não sei por que não o instalei antes. E isso é antes de instalar o kscreen. Agora, se apenas mudar o som (phonon) de e para HDMI também ... Voltarei aqui assim que a atualização estiver concluída e posso testar o kscreen.
31413 Joe

A troca dinâmica de som funciona muito bem se você definir as prioridades do dispositivo na configuração do Phonon.
Elias Probst

O kscreen balança totalmente! Obrigado. Agora só preciso me acostumar ou consertar tudo o que o ppa atualizou. Entrei em Configurações do sistema-> Multimídia-> Configurações de áudio e vídeo e movi o Estéreo digital de áudio embutido (HDMI) acima do Estéreo analógico de áudio embutido, mas nenhuma alternância de áudio ocorre quando ligo / desconecto o cabo HDMI. O que mais estou perdendo?
31413 Joe

Quais aplicativos são afetados / não mudam a saída?
Elias Probst

Acabei de atualizar do kubuntu 12.04 para 14.04.1. Eu estava esperando para comentar, porque esperava que isso ajudasse, mas nada mudou. Eu ainda tenho que mudar o áudio manualmente. Acho que vou abrir uma nova pergunta no SE Ask Ubuntu. Eu não acho que nenhuma troca de áudio. Eu apenas tentei vlc, dragonplayer e amarok.
Joe Joe
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.