Há alguma maneira de definir automaticamente minha saída de som para HDMI quando o cabo é conectado e desligado quando está conectado?

1

Seria ótimo se eu tivesse um software para fazer isso por mim, mas acho que um script bash é inevitável. No entanto, como alguém que nunca escreveu uma única linha de código bash eu provavelmente precisaria de muita ajuda. Por onde começar?

    
por Nephilim 24.04.2017 / 17:18

1 resposta

0

Desculpe, não tenho a resposta certa para você, mas posso lhe oferecer a próxima melhor coisa:
Crie uma alternância para o próximo coletor de saída de áudio com um clique do mouse.

Motivação para a solução:
Meu sistema tem uma porta HDMI + áudio, uma barra de áudio USB e o soquete de áudio verde. Quando o áudio USB é selecionado, meu sistema não detecta quando a tomada de áudio dos fones de ouvido está (des) conectada. Por isso, não consigo usar eventos de hardware e reagir a eles.
Por isso, decidi usar pacmd ; uma ferramenta para manipular o sistema de áudio.
Pode ser usado interativamente (pacmd) ou com argumentos ( pacmd --help ).

Breve descrição:
Um script e um launcher no meu painel do Xubuntu. Um clique no lançador alternará para o próximo coletor de saída de áudio. Se algum programa estiver reproduzindo áudio, seu coletor de entrada de áudio será forçado para o coletor de saída e o notify-send será usado para informar qual coletor de saída de áudio está ativo.

Ações:
O número de dispositivos de áudio e seus nomes provavelmente são diferentes em seu sistema, portanto, algumas (pequenas) alterações no script são necessárias. Os comentários que coloco no script (mais abaixo) ajudarão a personalizá-lo.
Copiar & amp; cole o script em um arquivo chamado ToggleAudioOutput.
Torne isso executável. Gerenciador de arquivos - > Rightclik - > Permissões - > Tick Permitir ...
No terminal - > Mude o diretório para o local do arquivo.

% bl0ck_qu0te%

Lançador no painel:
Clique com o botão direito no painel - > Painel > Adicionar novos itens - > Lançador

Clique em Adicionar & amp; Close.
À direita, o lançador vazio aparece; clique com o botão direito.
Propriedades - > clique em pequenas e mais Nome: ToggleAudioOutput
Comando: navegue até onde você armazenou o arquivo e clique nele. Icon: selecione um bom
Clique em Criar & amp; Fechar
Clique com o botão direito no lançador novamente - > Mova-o para um local agradável no painel.

Link na área de trabalho:
Abra o Gerenciador de Arquivos e navegue até o local do ToggleAudioOutput.
Clique com o botão direito do mouse - > Enviar para a área de trabalho (criar link)

Deixe-me saber se é útil para você!

#!/bin/bash
# -- ToggleAudioOutput -- Script to change audio output sink.
#
# The script is based on the output of this command line.
# Of course the output varies per system. Copy & paste this command line
# in a terminal to find the number of devices and their names.
#
# $ pacmd list-sinks | grep -e 'index:' -e 'alsa.name' | awk 'NR%2{printf "%s",$0;next;}1'
#   index: 0                alsa.name = "HDMI 0"
# * index: 1                alsa.name = "USB Audio"
#   index: 2                alsa.name = "ALC662 rev3 Analog"
#
# Output sequence doesn't change except for the asterix (active device)
# and after (un)plugging usb audio devices. If your system has more or
# less devices, change the case statement accordingly.
##############################################################################
# Determine the current audio output sink, 0, 1 or 2.
OutputIndex=$(pacmd list-sinks | grep '\* index:' | awk '{ print $3 }')

# To force output to USB Audio add the command:  ToggleAudioOutput 1
# in an entry in Session and Startup -> Application Autostart.
if [ "$1" == "1" ]
then OutputIndex=1; Name="USB Audio"
else
   case $OutputIndex in
   0) OutputIndex=1; Name="USB Audio"
      ;;
   1) OutputIndex=2; Name="Speaker/Headphones"
      ;;
   2) OutputIndex=0; Name="HDMI 0"
# I don't use HDMI audio, so delete this and the following line if needed.
      OutputIndex=1; Name="USB Audio"
      ;;
   esac
fi
##############################################################################
# Do the work...
pacmd set-default-sink $OutputIndex
notify-send "Audio output device set to:   >$Name<" -t 5000

# Any programs playing audio? Force them to the current audio output sink.
for InputIndex in $(pacmd list-sink-inputs | grep 'index:' | awk '{print $2}')
do
   pacmd move-sink-input $InputIndex $OutputIndex
done
##############################################################################
#EOF
    
por user680858 24.04.2017 / 23:58