Ovviamente anche i dispositivi di commutazione usando l'applet funzionano bene. Ma la cosa bella di scrivere una sceneggiatura è che è super veloce. Metto il mio ad esempio sulla scorciatoia da tastiera alt + s. quindi, quando voglio passare dalle cuffie agli altoparlanti, devo solo premere alt + s.
In ogni caso. Andrew ha detto:
Se hai più di due dispositivi audio e vuoi passare a a
diverso, è necessario sostituire la logica della linea 7 con alcuni
condizionali.
Questo è quello che ho fatto. Lo condivido, nel caso qualcuno abbia problemi con esso:
#!/usr/bin/env bash
#sinks=($(pacmd list-sinks | grep index | \
# awk '{ if ( == "*") print "1",; else print "0", }'))
sinks=($(pacmd list-sinks | grep index | \
awk '{ if ( == "*") print "1"; else print "0" }'))
inputs=($(pacmd list-sink-inputs | grep index | awk '{print }'))
#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
Quello che ho fatto in modo diverso è a) trovare il sink attivo in un ciclo for. E b) passare al sink successivo aumentando l'indice di 1. Quindi modifico il risultato per il numero di sink. Ciò assicura che, ad es. quando si hanno 3 lavandini, (2 + 1)% 3 = 0. Quindi dall'indice di sink 2 dovremmo passare all'indice di sink 0.
In questo modo l'interruttore consente di spostarsi verso l'alto attraverso i lavandini disponibili.