Jak uzyskać poziom głośności z wiersza poleceń?

15

Mam tekstowy pasek stanu w menedżerze okien kafelkowych i używam tcl do podawania do niego informacji. W tej chwili potrzebuję wiersza polecenia, który wyświetla poziom głośności od 0% do 100%. Używam Arch Linux.

milarepa
źródło
Wygląda na to, że powinieneś być w stanie to zrobić przez analizowanie /var/lib/alsa/asound.state.
jordanm
Uwaga: w przyszłości stwierdzenie, że korzystasz z Arch, nie jest tak naprawdę istotne. Ważne jest to, jakiego systemu dźwięku używasz, np. ALSA, OSS lub PulseAudio.
strugee
1
Zamiast dodawania „zamknięte” do tytułu, należy po prostu odpowiedzieć na swoje pytanie i pozostawić go
jordanm

Odpowiedzi:

15

Jednowierszowy program do analizowania amixerdanych wyjściowych dotyczących głośności na pasku stanu:

awk -F"[][]" '/dB/ { print $2 }' <(amixer sget Master)
jasonwryan
źródło
co [][]znaczy
przybliżony
4
@approximatenumber Ustawia separator pól jako jeden ]lub [.
jasonwryan
Chłodny. Nie wiedziałem, że możesz mieć regex dlaF
Mihai
Jak przechowujesz to polecenie w zmiennej?
mike23
@ mike23vol=$(awk '/%/ {gsub(/[\[\]]/,""); print $4}' <(amixer sget Master))
jasonwryan
12

Możesz użyć amixerdo tego.

Przykłady

$ 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]

Możesz go również zmienić i wyciszyć w następujący sposób:

Ustaw głośność 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]

wycisz / wyłącz wyciszenie

$ 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]

Możesz wyciszyć wyjście, jeśli nie chcesz widzieć go za pomocą --quietprzełącznika.

$ amixer --quiet set Master 75%
$ 
slm
źródło
6

Dobrze

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

Lewo

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

Serwer dźwięku

Jeśli domyślnie nie korzystasz z pulseaudio, możesz określić, z amixerktórym serwerem ma korzystać-D pulse

amixer -D pulse sget Master | grep 'Left:' | awk -F'[][]' '{ print $2 }'
85%
intika
źródło
To nie działa dla mnie ... Master z jakiegoś powodu nie ma „Left” i „Right”, mimo że mają inne kanały, takie jak „Speaker”.
Michael