Автоматически переключитесь на динамики, когда наушники будут отключены

В настоящее время динамики подключены к звуковой карте, и наушники подключены к другому. В звуковых настройках в Output меню I видит обоих, и я могу выбрать который быть произведенным от.

Существует ли способ, которым, когда я разъединяю наушники, звук автоматически производится от докладчиков? И наоборот когда я повторно подключаю наушники. Отчасти как то, как ноутбук делает это. При разъединении наушников это автоматически, выводы звучат от докладчиков.

Во-первых, как я проверяю, может ли человечность "видеть", когда я отключаю свои наушники? (только, чтобы знать, возможен ли подход),

1
задан 7 May 2017 в 18:53

1 ответ

$ 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
0
ответ дан 8 December 2019 в 05:27

Другие вопросы по тегам:

Похожие вопросы: