aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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()