Tabii ki Applet kullanarak cihazları değiştirmek de iyi çalışıyor. Ama senaryo yazmanın en güzel yanı, süper hızlı olmasıdır. Benimkini alt + s klavye kısayoluna koydum. bu yüzden kulaklıktan hoparlöre geçmek istediğimde, sadece alt + s tuşlarına basmam gerekiyor.
Neyse. Andrew şöyle dedi:
İkiden fazla ses cihazınız varsa ve farklı bir cihazla değiştirmek istiyorsanız, 7. satırdaki mantığı bazı koşullarla değiştirmeniz gerekir.
Ben de öyle yaptım. Birisi onunla sorun yaşıyorsa, paylaşıyorum:
#!/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
Farklı yaptığım şey bir) for-döngüsünde aktif lavabo bulmak. Ve b) indeksi 1 artırarak bir sonraki lavaboya geçin. Sonra sonucu lavabo sayısı ile modüle ediyorum. Bu, örneğin 3 lavabo olduğunda (2 + 1)% 3 = 0 olmasını sağlar. Böylece, lavabo indeksi 2'den, lavabo indeksi 0'a geçeceğiz.
Bu şekilde anahtar mevcut lavabolar arasında yukarı doğru hareket etmeyi sağlar.