É claro que a troca de dispositivos usando o Applet também está funcionando bem. Mas o legal de escrever um script é que é super rápido. Coloquei o meu, por exemplo, no atalho de teclado alt + s. portanto, quando eu quero mudar de fones de ouvido para alto-falantes, só preciso pressionar alt + s.
De qualquer forma. Andrew disse:
Se você possui mais de dois dispositivos de áudio e deseja trocar por outro, precisará substituir a lógica na linha 7 por alguns condicionais.
Isso é o que eu fiz. Eu o compartilho, caso alguém tenha problemas com ele:
#!/usr/bin/env bash
#sinks=($(pacmd list-sinks | grep index | \
# awk '{ if ($1 == "*") print "1",$3; else print "0",$2 }'))
sinks=($(pacmd list-sinks | grep index | \
awk '{ if ($1 == "*") print "1"; else print "0" }'))
inputs=($(pacmd list-sink-inputs | grep index | awk '{print $2}'))
#find active sink
active=0
for i in ${sinks[*]}
do
if [ $i -eq 0 ]
then active=$((active+1))
else break
fi
done
#switch to next sink
swap=$(((active+1)%${#sinks[@]}))
pacmd set-default-sink $swap &> /dev/null
for i in ${inputs[*]}; do pacmd move-sink-input $i $swap &> /dev/null; done
O que fiz de diferente foi: a) encontrar o coletor ativo em um loop for. Eb) mude para o próximo coletor aumentando o índice em 1. Então modulo o resultado pelo número de sumidouros. Isso garante que, por exemplo, ao ter 3 pias, (2 + 1)% 3 = 0. Assim, no índice 2 do coletor, mudaríamos para o índice 0.
Dessa maneira, o comutador permite mover-se para cima pelas pias disponíveis.