Tenho uma configuração de tela dupla no meu laptop (usando 12.04 LTS) usando um monitor conectado a HDMI. Tudo funciona bem, mas sempre que eu conecto / desconecto o cabo, tenho que ir para as preferências de som e alterar o dispositivo de saída de som manualmente.
Existe alguma maneira de alterar o dispositivo de saída de som ao conectar / desconectar o cabo; portanto, quando conecto meu monitor, a saída de som é definida como HDMI e, quando o desconecto, o som volta aos alto-falantes do laptop?
Respostas:
Para o benefício de pessoas que se deparam com essa pergunta - a solução de Salem quase funcionou para mim em 13.04, acabei coletando pedaços de toda a web, acho que o rompimento de contrato para mim foi a falta da variável de ambiente PULSE_SERVER
Aqui está minha solução completa, que basicamente repete a solução de Salem com as poucas peças que faltam. Também o refiz como um script de shell (apesar do meu amor pelo Python) porque, inicialmente, eu tinha medo de que meu script Python estivesse com problemas no caminho de importação:
(igual à resposta de Salem) Crie um arquivo
/etc/udev/rules.d/hdmi_sound.rules
como root com o conteúdo:Crie um arquivo
/usr/local/bin/hdmi_sound_toggle
como raiz com o conteúdo:Em seguida, torne-o executável com
chmod 0755 /usr/local/bin/hdmi_sound_toggle
Tentei tornar esse script o mais genérico possível, mas você ainda pode precisar alterar algumas linhas, como o caminho do arquivo HDMI_STATUS ou os perfis usados. Você pode ver uma lista de perfis executando
pactl list cards
e procurando em Perfis.Observe que o script falhou para mim quando removi a palavra-chave "export" ao definir PULSE_SERVER, acho que o pactl está procurando a variável env
Não se esqueça de recarregar suas regras do udev:
sudo udevadm control --reload-rules
A atualização deste script é atualizada para 14.04. Antes disso, você usaria USER_NAME em vez de USER_ID em qualquer lugar
fonte
| uniq
ao comando USER_NAME. Observe também que as configurações de sons no Ubuntu podem enganar. Eu não estava vendo as alterações no painel de configurações de som, mas uma vez que eu estava reproduzindo algo, o áudio alternava suavemente e reparei que, depois de algumas vezes conectando e desconectando o HDMI, o script parou de ser executado (talvez alguns tipo de bug no udev).| sort -u
ao nome de usuário porque estava dizendo a opção extra elemer elemer --- Meu nome de usuário. O mesmo que a solução da FuegoFro no final do dia.| grep -v pts
, porque na verdade também consegui um usuário "root" - por estar editando o script via kate, que tinha um terminal raiz aberto.Eu finalmente consegui fazer esse trabalho usando
udev
. Portanto, se alguém quiser o mesmo comportamento, aqui estão as etapas:Primeiro, precisamos criar um arquivo
/etc/udev/rules.d/hdmi_sound.rules
com o seguinte conteúdo:isso fará com que
udev
o script seja executadohdmi_sound_toggle
toda vez que houver uma alteração na conexão HDMI. Esse script deve ter permissão de execução e o conteúdo é o seguinte:Provavelmente isso pode ser feito facilmente no bash, mas como minha linguagem principal é python, eu o usei. Tudo funciona, exceto a notificação: não aparece, eu realmente não sei por que. Se alguém souber como consertá-lo, diga alguma coisa.
Nota: os nomes da regra de script / udev podem ser alterados, mas você precisa usar o caminho completo.
fonte
Baseado em Salem 's resposta e daniel resposta' s
Peguei a resposta de Salem e a de Daniel e fiz algumas alterações necessárias, a solução deles não funcionou para mim imediatamente:
(semelhante à resposta de Salem).
Crie um arquivo
/etc/udev/rules.d/hdmi_sound.rules
como raiz com o conteúdo:Nota
ACTION=="change",
está faltando!Crie um arquivo
/usr/local/bin/hdmi_sound_toggle
como raiz com o conteúdo:Nota USER_NAME =
who | grep "(:0)" | cut -f 1 -d ' '| sort -u
adicionei| sort -u
porque, caso contrário, ele voltava comelemer elemer elemer
--my username três vezes.Em seguida, torne-o executável com
chmod 0755 /usr/local/bin/hdmi_sound_toggle
Não se esqueça de recarregar suas regras do udev:
sudo udevadm control --reload-rules
Importante: este script foi atualizado para 14.04. Antes disso, você usaria USER_NAME em vez de USER_ID em qualquer lugar
Créditos: Salem e Daniel .
fonte
Ubuntu 16.04 - 17.04 Resposta
Isso funciona no Ubuntu 16.04 - 17.04, que apresentou um bug no Pulse Audio 8. Crie o arquivo
hotplugtv
(ouhotplug-hdmi
se preferir) e copie nas seguintes linhas:IMPORTANTE: Altere o nome de usuário "rick" para o seu nome de usuário.
Para chamar esse script
udev
durante os eventos de hot plug, crie o arquivo que/etc/udev/rules.d/99-hotplugtv.rules
contém:Mude
/home/rick/bin/
para o caminho em que você colocou ohotplugtv
script.fonte