Tất nhiên các thiết bị chuyển mạch bằng cách sử dụng Applet cũng hoạt động tốt. Nhưng điều thú vị khi viết kịch bản là nó siêu nhanh. Tôi đặt ví dụ của tôi trên phím tắt alt + s. do đó, khi tôi muốn chuyển từ tai nghe sang loa, tôi chỉ cần nhấn alt + s.
Dù sao. Andrew nói:
Nếu bạn có nhiều hơn hai thiết bị âm thanh và muốn trao đổi sang một thiết bị khác, bạn sẽ cần thay thế logic trên dòng 7 bằng một số điều kiện.
Đó là những gì tôi đã làm. Tôi chia sẻ nó, trong trường hợp ai đó gặp rắc rối với nó:
#!/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
Những gì tôi đã làm khác nhau là a) tìm thấy hoạt động chìm trong một vòng lặp for. Và b) chuyển sang bồn tiếp theo bằng cách tăng chỉ số thêm 1. Sau đó, tôi điều chỉnh kết quả theo số lần chìm. Điều đó đảm bảo rằng ví dụ: khi có 3 bồn, (2 + 1)% 3 = 0. Do đó, từ chỉ số chìm 2, chúng tôi sẽ chuyển sang chỉ số chìm 0.
Theo cách này, công tắc cho phép di chuyển lên trên qua các bồn có sẵn.