Як отримати рівень гучності з командного рядка?


15

У мене на панелі керування віконними панелями є текст, і я використовую tcl для подачі інформації до нього. На даний момент мені потрібен командний рядок, який виводить рівень гучності від 0% до 100%. Я використовую Arch Linux.


Схоже, ви повинні зробити це за допомогою розбору /var/lib/alsa/asound.state.
jordanm

Примітка. Надалі кажучи, що ви використовуєте Arch, це не дуже актуально. Насправді важливо, яку звукову підсистему ви використовуєте, наприклад, ALSA, OSS або PulseAudio.
strugee

1
Замість того, щоб додати свою назву "закрито", вам слід просто відповісти на власне запитання і залишити її
jordanm

Відповіді:


15

Одне вкладиш для розбору amixerрезультатів для гучності в рядку стану:

awk -F"[][]" '/dB/ { print $2 }' <(amixer sget Master)

що [][]означає?
орієнтовна кількість

4
@approximatenumber Він встановлює роздільник поля як ]або [.
Jasonwryan

Класно. Я не знав, що у вас може бути зворотний вираз дляF
mihai

Як би ви зберігали цю команду в змінній?
mike23

@ mike23vol=$(awk '/%/ {gsub(/[\[\]]/,""); print $4}' <(amixer sget Master))
jasonwryan

12

Ви можете використовувати amixerдля цього.

Приклади

$ amixer get Master
Simple mixer control 'Master',0
  Capabilities: pvolume pswitch pswitch-joined penum
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 65536
  Mono:
  Front Left: Playback 65536 [100%] [off]
  Front Right: Playback 65536 [100%] [off]

Ви також можете змінити його і відключити звук так:

встановити об'єм 75%

$ amixer set Master 75%
Simple mixer control 'Master',0
  Capabilities: pvolume pswitch pswitch-joined penum
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 65536
  Mono:
  Front Left: Playback 49152 [75%] [on]
  Front Right: Playback 49152 [75%] [on]

відключити звук / вимкнути

$ amixer set Master toggle
Simple mixer control 'Master',0
  Capabilities: pvolume pswitch pswitch-joined penum
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 65536
  Mono:
  Front Left: Playback 65536 [100%] [on]
  Front Right: Playback 65536 [100%] [on]

Ви можете заспокоїти вихід, якщо не хочете бачити будь-який з нього за допомогою --quietперемикача.

$ amixer --quiet set Master 75%
$ 

6

Правильно

amixer sget Master | grep 'Right:' | awk -F'[][]' '{ print $2 }'
85%

Зліва

amixer sget Master | grep 'Left:' | awk -F'[][]' '{ print $2 }'
85%

Звуковий сервер

Якщо ви не використовуєте pulseaudio за замовчуванням, ви можете вказати, для amixerякого сервера слід використовувати-D pulse

amixer -D pulse sget Master | grep 'Left:' | awk -F'[][]' '{ print $2 }'
85%

Це не працює для мене ... У майстра чомусь немає "Ліворуч" і "Право", незважаючи на те, що в інших каналах, таких як "Speaker", немає.
Майкл
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.