aboutsummaryrefslogtreecommitdiff
path: root/.local/bin/vol
diff options
context:
space:
mode:
Diffstat (limited to '.local/bin/vol')
-rwxr-xr-x.local/bin/vol35
1 files changed, 23 insertions, 12 deletions
diff --git a/.local/bin/vol b/.local/bin/vol
index 4da6c18..84c913e 100755
--- a/.local/bin/vol
+++ b/.local/bin/vol
@@ -27,26 +27,31 @@ main()
[ $# -lt 1 ] && usage && exit 1
+ DEFAULT_SINK_NAME="$(pactl info | awk -F': ' '/Default Sink/ { print $NF }')"
+ DEFAULT_SINK_INDEX="$(pactl list short sinks | awk -v index_number="$DEFAULT_SINK_NAME" '$2==index_number {print $1}')"
+
case "$1" in
inc)
- amixer set Master ${2:-5}%+ > /dev/null
- notify="Level increased to $(volume_level)%"
+ pactl set-sink-volume @DEFAULT_SINK@ +${2:-5}% > /dev/null
+ notify="Increased '$DEFAULT_SINK_NAME' ($DEFAULT_SINK_INDEX) to $(volume_level)%"
;;
dec)
- amixer set Master ${2:-5}%- > /dev/null
- notify="Level decreased to $(volume_level)%"
+ pactl set-sink-volume @DEFAULT_SINK@ -${2:-5}% > /dev/null
+ notify="Decreased '$DEFAULT_SINK_NAME' ($DEFAULT_SINK_INDEX) to $(volume_level)%"
;;
set)
- amixer set Master $2% > /dev/null
- notify="Level set to $(volume_level)%"
+ [ -z "$2" ] && usage && exit 1
+
+ pactl set-sink-volume @DEFAULT_SINK@ $2% > /dev/null
+ notify="Set '$DEFAULT_SINK_NAME' ($DEFAULT_SINK_INDEX) to $(volume_level)%"
;;
on)
- amixer set Master on > /dev/null
- notify="Unmuted at $(volume_level)%"
+ pactl set-sink-mute @DEFAULT_SINK@ 0 > /dev/null
+ notify="Unmuted '$DEFAULT_SINK_NAME' ($DEFAULT_SINK_INDEX) at $(volume_level)%"
;;
off)
- amixer set Master off > /dev/null
- notify="Muted"
+ pactl set-sink-mute @DEFAULT_SINK@ 1 > /dev/null
+ notify="Muted '$DEFAULT_SINK_NAME' ($DEFAULT_SINK_INDEX)"
;;
toggle)
case "$(volume_state)" in
@@ -56,17 +61,23 @@ main()
;;
esac
+ printf "%s\n" "$notify"
notify-send -n 19269 -s -t 2 -i "$(volume_icon)" "Volume" "$notify"
}
volume_level()
{
- amixer get Master | awk '/Left:/ { print $5 }' | head -n 1 | tr -d '[]%'
+
+ pactl list sinks \
+ | perl -000ne 'if(/#'"$DEFAULT_SINK_INDEX"'/){/(Volume:.*)/; print "$1\n"}' \
+ | sed 's/.*\ \(.*\)%.*/\1/g'
}
volume_state()
{
- amixer get Master | awk '/Left:/ { print $6 }' | head -n 1 | tr -d '[]'
+ pactl list sinks \
+ | perl -000ne 'if(/#'"$DEFAULT_SINK_INDEX"'/){/(Mute:.*)/; print "$1\n"}' \
+ | awk '$NF == "no" { print "on" } $NF == "yes" { print "off" }'
}
volume_icon()