aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Spek <p.spek@tyil.nl>2021-10-13 13:30:49 +0200
committerPatrick Spek <p.spek@tyil.nl>2021-10-13 13:30:49 +0200
commit8aad18447c6b0a03c4cbff889052e53449d36e8b (patch)
tree37c96ee6032ccdec80df20506b143b3c6a3e06e8
parent805a7f387c0be7cd9faa607364f3e0b658f0ba46 (diff)
Use pactl for volume control
-rwxr-xr-x.local/bin/vol25
1 files 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()