Звичайно, комутація пристроїв за допомогою Applet також працює чудово. Але класна річ у написанні сценарію - це те, що це дуже швидко. Я кладу мою, наприклад, на комбінацію клавіш alt + s. таким чином, коли я хочу переключитися з навушників на динаміки, мені потрібно лише натиснути клавіші alt + s.
У всякому разі. Андрій сказав:
Якщо у вас є більше двох аудіопристроїв і ви хочете перейти на інший, вам потрібно буде замінити логіку в рядку 7 деякими умовами.
Це я і зробив. Я ділюсь цим, якщо у когось є проблеми:
#!/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
Що я зробив інакше, це: a) знайти активну раковину у циклі for. І б) перехід до наступної раковини, збільшивши індекс на 1. Потім я модулюю результат на кількість мийок. Це запевняє, що, наприклад, при наявності 3 раковин, (2 + 1)% 3 = 0. Таким чином, з індексу мийки 2 ми переходимо на індекс раковини 0.
Таким чином перемикач дозволяє рухатися вгору через доступні раковини.