40 lines
608 B
Bash
Executable File
40 lines
608 B
Bash
Executable File
#!/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
|