Bien sûr, le changement de périphérique à l'aide de l'applet fonctionne également correctement. Mais ce qu'il y a de bien avec l'écriture d'un script, c'est qu'il est super rapide. J'ai mis le mien par exemple sur le raccourci clavier alt + s. ainsi quand je veux passer du casque aux haut-parleurs, je n'ai qu'à appuyer sur alt + s.
En tous cas. Andrew a déclaré:
Si vous avez plus de deux périphériques audio et que vous souhaitez passer à un autre, vous devrez remplacer la logique de la ligne 7 par des conditions.
C'est ce que j'ai fait. Je le partage, au cas où quelqu'un aurait des problèmes avec:
#!/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
Ce que j'ai fait différemment, c'est a) trouver le puits actif dans une boucle for. Et b) passer au prochain puits en augmentant l'indice de 1. Ensuite, je modulo le résultat par le nombre de puits. Cela garantit que, par exemple, lorsque vous avez 3 puits, (2 + 1)% 3 = 0. Ainsi, à partir de l'index de puits 2, nous passerions à l'indice de puits 0.
De cette façon, le commutateur permet de se déplacer vers le haut à travers les éviers disponibles.