Mude automaticamente para alto-falantes quando os fones de ouvido estiverem desconectados

1

Atualmente, os alto-falantes estão conectados a uma placa de som e os fones de ouvido estão conectados a outra. Nas configurações de som no menu Output, posso ver os dois e posso escolher qual deles obter a saída.

Existe uma maneira que quando eu desconecto os fones de ouvido, o som é emitido automaticamente pelos alto-falantes? E vice-versa quando reconectar os fones de ouvido. Mais ou menos como um laptop faz isso. Quando você desconecta fones de ouvido, o som é emitido automaticamente pelos alto-falantes.

Em primeiro lugar, como eu verifico se o Ubuntu pode "ver" quando eu desconectar meus fones de ouvido? (apenas para saber se a abordagem é possível)

    
por Mina Michael 07.05.2017 / 17:53

1 resposta

0

$ ls -l ToggleAudioOutput
-rwxrwxr-x 1 willem willem    1845 May  7 01:32 ToggleAudioOutput

$ cat ToggleAudioOutput 
#!/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.
#
# $ 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 can differ except for the asterix (active device)
# and after (un)plugging usb audio devices.
###############################################################################

function GetSinks()
{
  Property="device.description"

  pacmd list-sinks                    | grep -e"index:" -e"${Property}" |\
    awk 'NR%2{printf "%s",$0;next;}1' | grep -v HDMI                    |\
    sed "s/^\ \ //"                   | sed "s/ index: //"              |\
    sed "s/[ \x9]*$Property = / /"    | tr -d '\"'
}

Sinks=$(GetSinks)
NrSinks=$(echo "$Sinks" | wc -l)
ActSink=$(echo "$Sinks" | grep '*' | cut -c2)

i=1
while read Line
do
  set -- $Line
  SinkNr[$i]=$1;shift
  SinkName[$i]="$@"
  ((SinkNr[$i]==ActSink)) && ((Index=i))
  ((i++))
done < <(echo "$Sinks" | tr -d '*')

((Index++))
if ((Index > NrSinks))
then
  Index=1
fi

###############################################################################
# Do the work...

pacmd set-default-sink ${SinkNr[$Index]}
notify-send "Audio output device set to:   >${SinkName[$Index]}<" -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 ${SinkNr[$Index]}
done
###############################################################################
#EOF
    
por user680858 08.05.2017 / 13:52