From 8aad18447c6b0a03c4cbff889052e53449d36e8b Mon Sep 17 00:00:00 2001 From: Patrick Spek Date: Wed, 13 Oct 2021 13:30:49 +0200 Subject: Use pactl for volume control --- .local/bin/vol | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/.local/bin/vol b/.local/bin/vol index 4da6c18..c3634dc 100755 --- a/.local/bin/vol +++ b/.local/bin/vol @@ -29,26 +29,27 @@ main() case "$1" in inc) - amixer set Master ${2:-5}%+ > /dev/null + pactl set-sink-volume @DEFAULT_SINK@ +${2:-5}% > /dev/null notify="Level increased to $(volume_level)%" ;; dec) - amixer set Master ${2:-5}%- > /dev/null + pactl set-sink-volume @DEFAULT_SINK@ -${2:-5}% > /dev/null notify="Level decreased to $(volume_level)%" ;; set) - amixer set Master $2% > /dev/null + pactl set-sink-volume @DEFAULT_SINK@ $2% > /dev/null notify="Level set to $(volume_level)%" ;; on) - amixer set Master on > /dev/null + pactl set-sink-mute @DEFAULT_SINK@ 0 > /dev/null notify="Unmuted at $(volume_level)%" ;; off) - amixer set Master off > /dev/null + pactl set-sink-mute @DEFAULT_SINK@ 1 > /dev/null notify="Muted" ;; toggle) + echo $(volume_state) case "$(volume_state)" in on) exec $0 off ;; off) exec $0 on ;; @@ -61,12 +62,22 @@ main() volume_level() { - amixer get Master | awk '/Left:/ { print $5 }' | head -n 1 | tr -d '[]%' + sink_name="$(pactl info | awk -F': ' '/Default Sink/ { print $NF }')" + sink_index="$(pactl list short sinks | awk -v index_number="$sink_name" '$2==index_number {print $1}')" + + pactl list sinks \ + | perl -000ne 'if(/#'"$sink_index"'/){/(Volume:.*)/; print "$1\n"}' \ + | sed 's/.*\ \(.*\)%.*/\1/g' } volume_state() { - amixer get Master | awk '/Left:/ { print $6 }' | head -n 1 | tr -d '[]' + sink_name="$(pactl info | awk -F': ' '/Default Sink/ { print $NF }')" + sink_index="$(pactl list short sinks | awk -v index_number="$sink_name" '$2==index_number {print $1}')" + + pactl list sinks \ + | perl -000ne 'if(/#'"$sink_index"'/){/(Mute:.*)/; print "$1\n"}' \ + | awk '$NF == "no" { print "on" } $NF == "yes" { print "off" }' } volume_icon() -- cgit v1.1