Comment obtenir le niveau de volume à partir de la ligne de commande?


15

J'ai une barre d'état de texte sur un gestionnaire de fenêtres de mosaïque et j'utilise tcl pour lui fournir des informations. Pour le moment, j'ai besoin d'une ligne de commande qui affiche le niveau de volume de 0% à 100%. J'utilise Arch Linux.


Il semble que vous devriez pouvoir le faire en analysant /var/lib/alsa/asound.state.
jordanm

Remarque: à l'avenir, dire que vous utilisez Arch n'est pas vraiment pertinent. Ce qui importe réellement, c'est le sous-système audio que vous utilisez, par exemple ALSA, OSS ou PulseAudio.
strugee

1
Au lieu d'ajouter "fermé" à votre titre, vous devez simplement répondre à votre propre question et la laisser
jordanm

Réponses:


15

Une ligne pour analyser amixerla sortie du volume dans une barre d'état:

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

qu'est-ce que cela [][]signifie?
approximatif

4
@approximatenumber Il définit le séparateur de champ sur ]ou [.
jasonwryan

Cool. Je ne savais pas que vous pouviez avoir une expression F
régulière

Comment stockeriez-vous cette commande dans une variable?
mike23

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

12

Vous pouvez utiliser amixerpour ce faire.

Exemples

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

Vous pouvez également le modifier et le désactiver comme ceci:

volume réglé 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]

activer / désactiver le son

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

Vous pouvez calmer la sortie si vous ne voulez rien voir avec le --quietcommutateur.

$ amixer --quiet set Master 75%
$ 

6

Droite

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

La gauche

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

Serveur de son

Si vous n'utilisez pas pulseaudio par défaut, vous pouvez spécifier sur amixerquel serveur utiliser-D pulse

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

Cela ne fonctionne pas pour moi ... Master pour une raison quelconque n'a pas "Left" et "Right" malgré d'autres canaux tels que "Speaker".
Michael
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.