แน่นอนว่าการสลับอุปกรณ์โดยใช้ 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) หา sink ที่แอ็คทีฟใน for for loop และ b) สลับไปที่ sink ถัดไปโดยเพิ่มดัชนีโดย 1 จากนั้นฉัน modulo ผลลัพธ์ตามจำนวน sinks รับรองว่าเช่นเมื่อมี 3 อ่าง (2 + 1)% 3 = 0 ดังนั้นจาก sink index 2 เราจะเปลี่ยนไปที่ sink index 0
ด้วยวิธีนี้สวิตช์ช่วยให้สามารถเลื่อนขึ้นด้านบนผ่าน sinks ที่พร้อมใช้งาน