¿Cómo obtener el nivel de volumen desde la línea de comando?

15

Tengo una barra de estado de texto en un administrador de ventanas de mosaico y estoy usando tcl para enviarle información. Por el momento necesito una línea de comando que muestre el nivel de volumen del 0% al 100%. Estoy usando Arch Linux.

milarepa
fuente
Parece que deberías poder hacerlo analizando /var/lib/alsa/asound.state.
jordanm
Nota: en el futuro, decir que estás usando Arch no es realmente relevante. Lo que realmente importa es qué subsistema de sonido está utilizando, por ejemplo, ALSA, OSS o PulseAudio.
Strugee
1
En lugar de agregar "cerrado" a su título, debe responder a su propia pregunta y dejarla
jordanm

Respuestas:

15

Una línea para analizar amixerla salida de volumen en una barra de estado:

awk -F"[][]" '/dB/ { print $2 }' <(amixer sget Master)
jasonwryan
fuente
que [][]significa
aproximadamente
44
@approximatenumber Establece el separador de campo como ]o [.
jasonwryan
Frio. No sabía que podría tener una expresión regular para elF
mihai
¿Cómo almacenarías este comando en una variable?
mike23
@ mike23vol=$(awk '/%/ {gsub(/[\[\]]/,""); print $4}' <(amixer sget Master))
jasonwryan
12

Puedes usar amixerpara hacer esto.

Ejemplos

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

También puede cambiarlo y silenciarlo así:

establecer volumen 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]

silenciar / activar

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

Puede silenciar la salida si no quiere ver nada con el --quietinterruptor.

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

Derecho

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

Izquierda

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

Servidor de sonido

Si no está utilizando pulseaudio por defecto, puede especificar a amixerqué servidor usar-D pulse

amixer -D pulse sget Master | grep 'Left:' | awk -F'[][]' '{ print $2 }'
85%
intika
fuente
Esto no funciona para mí ... Master por alguna razón no tiene "Izquierda" y "Derecha" a pesar de que otros canales como "Altavoz" lo tienen.
Michael