Komut satırından ses seviyesi nasıl alınır?


16

Döşeme penceresi yöneticisinde bir metin durum çubuğum var ve bilgi vermek için tcl kullanıyorum. Şu anda% 0 ile% 100 arasındaki ses seviyesini gösteren bir komut satırına ihtiyacım var. Arch Linux kullanıyorum.


Ayrıştırarak bunu yapabilmeniz gerekir /var/lib/alsa/asound.state.
jordanm

Not: Gelecekte Arch kullandığınızı söylemek gerçekten alakalı değil. Asıl önemli olan, hangi ALSA, OSS veya PulseAudio gibi hangi ses alt sistemini kullandığınızdır.
strugee

1
Başlığınıza "kapalı" eklemek yerine, sadece kendi sorunuzu cevaplamalı ve bırakmalısınız
jordanm

Yanıtlar:


15

amixerDurum çubuğundaki ses için çıktıyı ayrıştırmak için tek satırlık :

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

ne [][]demek
yaklaşık

4
@approximatenumber Alan ayırıcısını ya ]da olarak ayarlar [.
jasonwryan

Güzel. Ben sizin için bir regex olabilir bilmiyordumF
mihai

Bu komutu bir değişkende nasıl saklarsınız?
mike23

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

12

Bunu amixeryapmak için kullanabilirsiniz .

Örnekler

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

Ayrıca değiştirebilir ve şu şekilde kapatabilirsiniz:

ses seviyesini ayarla% 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]

susturma / açma

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

--quietAnahtarla hiçbirini görmek istemiyorsanız çıkışı sessiz hale getirebilirsiniz .

$ amixer --quiet set Master 75%
$ 

6

Sağ

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

Ayrıldı

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

Ses sunucusu

Pulseaudio'yu varsayılan olarak kullanmıyorsanız, amixerhangi sunucuyla kullanılacağını belirtebilirsiniz-D pulse

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

Bu benim için işe yaramıyor ... Üstat, "Konuşmacı" gibi diğer kanallara rağmen nedense "Sol" ve "Sağ" a sahip değil.
Michael
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.