#!/bin/bash set -e SINK='@DEFAULT_SINK@' TMP_FILE='/tmp/set-vol' for _ in 1 2 3; do [ -f "$TMP_FILE" ] || break sleep 0.03 done touch "$TMP_FILE" VOL="$(pactl get-sink-volume "$SINK")" VOL="$(grep -Po '\d+(?=%)' <<< "$VOL" | head -n 1)" VOL="$((VOL - VOL % "$1"))" case "${1:0:1}" in '') exit 1 ;; '+'|'-') VOL="$((VOL + "$1"))" ;; *) VOL="$1" ;; esac [ "$VOL" -lt 0 ] && VOL=0 [ "$VOL" -gt 100 ] && VOL=100 pactl set-sink-volume "$SINK" "$VOL%" pactl set-sink-mute "$SINK" 0 rm "$TMP_FILE" if [ -t 1 ]; then echo "$VOL" fi