¿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.


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)

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

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%

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.