Wie erhalte ich die Lautstärke über die Befehlszeile?

15

Ich habe eine Textstatusleiste in einem Fenstermanager für Kacheln und benutze tcl, um ihm Informationen zuzuführen. Im Moment brauche ich eine Kommandozeile, die den Lautstärkepegel von 0% bis 100% ausgibt. Ich benutze Arch Linux.

milarepa
quelle
Sieht so aus, als ob Sie dies durch Parsen tun könnten /var/lib/alsa/asound.state.
Jordan
Hinweis: In Zukunft ist es nicht mehr wichtig zu sagen, dass Sie Arch verwenden. Was wirklich zählt, ist, welches Sound-Subsystem Sie verwenden, z. B. ALSA, OSS oder PulseAudio.
Strugee
1
Anstatt "closed" zu Ihrem Titel hinzuzufügen, sollten Sie einfach Ihre eigene Frage beantworten und sie
belassen

Antworten:

15

Ein Einzeiler zum Parsen amixerder Ausgabe nach Volumen in einer Statusleiste:

awk -F"[][]" '/dB/ { print $2 }' <(amixer sget Master)
jasonwryan
quelle
was tut [][]bedeuten?
ungefähr
4
@approximatenumber Legt das Feldtrennzeichen als entweder ]oder fest [.
Jasonwryan
Cool. Ich wusste nicht, dass Sie eine Regex für dieF
mihai
Wie würden Sie diesen Befehl in einer Variablen speichern?
Mike23
@ mike23vol=$(awk '/%/ {gsub(/[\[\]]/,""); print $4}' <(amixer sget Master))
jasonwryan
12

Sie können dazu verwenden amixer.

Beispiele

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

Sie können es auch wie folgt ändern und stumm schalten:

eingestellte Lautstärke 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]

Stumm / Laut

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

Sie können die Ausgabe beruhigen, wenn Sie nichts davon mit dem --quietSchalter sehen möchten .

$ amixer --quiet set Master 75%
$ 
slm
quelle
6

Richtig

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

Links

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

Sound Server

Wenn Sie pulseaudio nicht als Standard verwenden, können Sie angeben, mit amixerwelchem ​​Server Sie arbeiten möchten-D pulse

amixer -D pulse sget Master | grep 'Left:' | awk -F'[][]' '{ print $2 }'
85%
intika
quelle
Das funktioniert bei mir nicht ... Der Master hat aus irgendeinem Grund weder "Links" noch "Rechts", obwohl andere Kanäle wie "Lautsprecher" es haben.
Michael