Come ottenere il livello del volume dalla riga di comando?


15

Ho una barra di stato del testo su un gestore di finestre di affiancamento e sto usando tcl per fornire informazioni ad esso. Al momento ho bisogno di una riga di comando che generi il livello del volume dallo 0% al 100%. Sto usando Arch Linux.


Sembra che dovresti essere in grado di farlo analizzando /var/lib/alsa/asound.state.
Giordania,

Nota: in futuro, dire che stai usando Arch non è molto rilevante. Ciò che conta davvero è quale sottosistema audio si sta utilizzando, ad esempio ALSA, OSS o PulseAudio.
Strugee,

1
Invece di aggiungere "chiuso" al tuo titolo, dovresti semplicemente rispondere alla tua domanda e lasciarla
jordanm

Risposte:


15

Un one-liner per analizzare amixerl'output del volume in una barra di stato:

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

cosa [][]significa?
circa

4
@approximatenumber Imposta il separatore di campo come ]o [.
jasonwryan,

Freddo. Non sapevo che potresti avere una regex per ilF
mihai del

Come memorizzeresti questo comando in una variabile?
mike23,

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

12

Puoi usare amixerper fare questo.

Esempi

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

Puoi anche cambiarlo e disattivarlo in questo modo:

volume impostato 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]

attivazione / disattivazione volume

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

È possibile silenziare l'output se non si desidera vederlo con l' --quietinterruttore.

$ amixer --quiet set Master 75%
$ 

6

Giusto

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

Sinistra

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

Server audio

Se non si utilizza pulseaudio come impostazione predefinita, è possibile specificare con amixerquale server utilizzare-D pulse

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

Questo non funziona per me ... Master per qualche motivo non ha "Sinistra" e "Destra" nonostante altri canali come "Speaker" ce l'hanno.
Michael,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.