Por supuesto, cambiar de dispositivo usando el Applet también funciona bien. Pero lo bueno de escribir un guión es que es súper rápido. Puse el mío, por ejemplo, en el atajo de teclado alt + s. así, cuando quiero cambiar de auriculares a altavoces, solo necesito presionar alt + s.
De todas formas. Andrew dijo:
Si tiene más de dos dispositivos de audio y desea cambiar a uno diferente, deberá reemplazar la lógica en la línea 7 con algunos condicionales.
Eso fue lo que hice. Lo comparto, en caso de que alguien tenga problemas con él:
#!/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
Lo que hice de manera diferente es a) encontrar el sumidero activo en un bucle for. Y b) cambie al siguiente sumidero aumentando el índice en 1. Luego modulo el resultado por el número de sumideros. Eso asegura que, por ejemplo, al tener 3 sumideros, (2 + 1)% 3 = 0. Así, desde el índice de hundimiento 2, pasaríamos al índice de hundimiento 0.
De esta manera, el interruptor permite moverse hacia arriba a través de los sumideros disponibles.