Como obter o nível de volume na linha de comando?


15

Eu tenho uma barra de status de texto em um gerenciador de janelas lado a lado e estou usando o tcl para fornecer informações a ele. No momento, preciso de uma linha de comando que produza o nível de volume de 0% a 100%. Estou usando o Arch Linux.


Parece que você deve conseguir fazer isso analisando /var/lib/alsa/asound.state.
jordanm

Nota: no futuro, dizer que você está usando o Arch não é realmente relevante. O que realmente importa é o subsistema de som que você está usando, por exemplo, ALSA, OSS ou PulseAudio.
strugee

1
Em vez de adicionar "fechado" para o seu título, você deve apenas responder à sua própria pergunta e deixá-lo
jordanm

Respostas:


15

Uma linha para analisar amixera saída do volume em uma barra de status:

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

o que [][]significa
Aproximadamente

4
@approximatenumber Define o separador de campos como ]ou [.
Jasonwryan

Legal. Eu não sabia que você poderia ter um regex para oF
mihai 15/03

Como você armazenaria esse comando em uma variável?
precisa saber é

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

12

Você pode usar amixerpara fazer isso.

Exemplos

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

Você também pode alterar e desativar o som da seguinte forma:

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

mudo / mudo

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

Você pode silenciar a saída se não quiser ver nada com a --quietchave.

$ amixer --quiet set Master 75%
$ 

6

Certo

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

Esquerda

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

Servidor de som

Se você não estiver usando o pulseaudio como padrão, poderá especificar em amixerqual servidor usar-D pulse

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

Isso não funciona para mim ... O Master, por algum motivo, não possui "Left" e "Right", apesar de outros canais como "Speaker".
Michael
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.