Зауважте, що відповідь Томмі Кентоли покладається на те, що мийка використовується, щоб ви могли фактично отримати номер раковини.
Також зауважте, що він покладається на названі індекси мийки, щоб вони були такими ж, як і підрахований індекс. Скажімо, наприклад, у нас є 3 раковини 1, 2 і 3, і що 3 - це наша вибрана раковина, ми від'єднуємо номер 2, залишаючи нас з 1 і 3. Тепер ви не можете розраховувати, щоб потопити 3 за допомогою рішення Tommi Kyntola, оскільки 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
надає обсяг, але не в такому приємному простому форматі, як set-sink-volume.