ध्यान दें कि टॉमी किन्नटोला का उत्तर उपयोग में होने वाली सिंक पर निर्भर करता है ताकि आप वास्तव में सिंक नंबर प्राप्त कर सकें।
यह भी ध्यान दें कि यह नामांकित अनुक्रमित पर निर्भर करता है कि गिने हुए सूचकांक के समान हो । मान लीजिए, उदाहरण के लिए, हमारे पास 3 सिंक 1, 2 और 3 हैं और वह 3 हमारा चयनित सिंक है, हम नंबर 2 को डिस्कनेक्ट करते हैं, हमें 1 और 3 के साथ छोड़ देते हैं। अब आप टॉमी किन्नटोला के घोल के साथ 3 को सिंक करने की गिनती नहीं कर सकते क्योंकि pactl list sinks | grep "^[[:space:]]Volume:"
केवल 2 वॉल्यूम फ़ील्ड्स का उत्पादन करेगा, इस प्रकार $SINK + 1
'वें लाइन से काम नहीं चलेगा।
मेरा समाधान इस धारणा पर आधारित है कि pacmd हमेशा एक विशिष्ट क्रम में सिंक को सूचीबद्ध करेगा। यदि आप अधिक विश्वसनीय समाधान चाहते हैं, तो आपको आउटपुट पार्स करने की आवश्यकता है।
#!/bin/sh
# Get the index of the selected sink:
getsink() {
pacmd list-sinks |
awk '/index:/{i++} /* index:/{print i; exit}'
}
# Get the selected sink volume
getvolume() {
pacmd list-sinks |
awk '/^\svolume:/{i++} i=='$(getsink)'{print $5; exit}'
}
getvolume
नोट: मुझे नहीं पता कि वॉल्यूम फ़ील्ड अलग-अलग हैं, मेरा ऐसा दिखता है (से pacmd list-sinks
):
volume: front-left: 42706 / 65% / -11.16 dB, front-right: 42706 / 65% / -11.16 dB
इसके अलावा, मुझे केवल पहले चैनल (फ्रंट-लेफ्ट) का प्रतिशत प्रतिशत प्रारूप (यानी, फ़ील्ड 5) में मिल रहा है, आपके चैनल विभिन्न स्तरों पर हो सकते हैं।
संपादित करें:
दूसरे सोचा पर आप वास्तव में pacmd stat
एक कम समाधान के लिए डिफ़ॉल्ट सिंक नाम प्राप्त करना चाहते हैं:
#/bin/sh
getdefaultsinkname() {
pacmd stat | awk -F": " '/^Default sink name: /{print $2}'
}
getdefaultsinkvol() {
pacmd list-sinks |
awk '/^\s+name: /{indefault = $2 == "<'$(getdefaultsinkname)'>"}
/^\s+volume: / && indefault {print $5; exit}'
}
setdefaulsinkvol() {
pactl $(getdefaultsinkname) $1
}
pactl list sinks
आपको वॉल्यूम देता है, लेकिन सेट-सिंक-वॉल्यूम जैसे अच्छे आसान प्रारूप में नहीं।