Bagaimana cara mendapatkan level volume dari baris perintah?


15

Saya memiliki bilah status teks pada manajer jendela ubin dan saya menggunakan tcl untuk memasukkan informasi ke sana. Saat ini saya memerlukan baris perintah yang menampilkan tingkat volume 0% hingga 100%. Saya menggunakan Arch Linux.


Sepertinya Anda harus bisa melakukannya dengan parsing /var/lib/alsa/asound.state.
jordanm

Catatan: di masa depan, mengatakan Anda menggunakan Arch tidak benar-benar relevan. Yang sebenarnya penting adalah subsistem suara apa yang Anda gunakan, mis. ALSA, OSS, atau PulseAudio.
strugee

1
Alih-alih menambahkan "ditutup" ke judul Anda, Anda hanya harus menjawab pertanyaan Anda sendiri dan meninggalkannya
jordanm

Jawaban:


15

Satu baris untuk mengurai amixeroutput untuk volume di bilah status:

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

apa [][]artinya
kurang lebih

4
@ approximatenumber Ini mengatur pemisah bidang sebagai ]atau [.
jasonwryan

Keren. Saya tidak tahu Anda bisa memiliki regex untukF
mihai

Bagaimana Anda menyimpan perintah ini dalam sebuah variabel?
mike23

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

12

Anda dapat menggunakannya amixeruntuk melakukan ini.

Contohnya

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

Anda juga dapat mengubahnya dan membisukannya seperti ini:

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

bisu / bersuara

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

Anda dapat --quietmenonaktifkan output jika Anda tidak ingin melihatnya dengan saklar.

$ amixer --quiet set Master 75%
$ 

6

Baik

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

Kiri

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

Server suara

Jika Anda tidak menggunakan pulseaudio sebagai default, Anda dapat menentukan dengan amixerserver apa untuk digunakan-D pulse

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

Ini tidak berfungsi untuk saya ... Guru karena alasan tertentu tidak memiliki "Kiri" dan "Benar" meskipun ada saluran lain seperti "Pembicara" memilikinya.
Michael
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.