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.

milarepa
sumber
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)
jasonwryan
sumber
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%
$ 
slm
sumber
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%
intika
sumber
Ini tidak berfungsi untuk saya ... Guru karena alasan tertentu tidak memiliki "Kiri" dan "Benar" meskipun ada saluran lain seperti "Pembicara" memilikinya.
Michael