From 0ab8ee4110876a81ba9453e0bc928ffb63cee666 Mon Sep 17 00:00:00 2001 From: AngeD Date: Tue, 10 Jan 2023 09:48:26 +0100 Subject: [PATCH] fix: set-vol break if too fast, remove amixer --- bin/set-vol | 34 ++++++++++++---------------------- 1 file changed, 12 insertions(+), 22 deletions(-) diff --git a/bin/set-vol b/bin/set-vol index b4377a2..5ad633a 100755 --- a/bin/set-vol +++ b/bin/set-vol @@ -1,28 +1,16 @@ #!/bin/bash set -e -# TODO: multiple fast invocation cause volume not to be updated +SINK='@DEFAULT_SINK@' +TMP_FILE='/tmp/set-vol' -PACTL_SINK='@DEFAULT_SINK@' -SINK="$PACTL_SINK" - -function get_vol() { - VOL="$(pactl get-sink-volume "$SINK" 2> /dev/null)" - - if [ -n "$VOL" ]; then - CMD='pactl set-sink-volume' - else - CMD='amixer sset' - SINK='Master' - - VOL="$(amixer sget "$SINK")" - fi -} - -set +e -get_vol -set -e +for _ in 1 2 3; do + [ -f "$TMP_FILE" ] || break + sleep 0.03 +done +touch "$TMP_FILE" +VOL="$(pactl get-sink-volume "$SINK")" VOL="$(echo "$VOL" | grep -Po '\d+(?=%)' | head -n 1)" VOL="$((VOL - VOL % "$1"))" @@ -41,8 +29,10 @@ esac [ "$VOL" -lt 0 ] && VOL=0 [ "$VOL" -gt 100 ] && VOL=100 -$CMD "$SINK" "$VOL%" > /dev/null -pactl set-sink-mute "$PACTL_SINK" 0 +pactl set-sink-volume "$SINK" "$VOL%" +pactl set-sink-mute "$SINK" 0 + +rm "$TMP_FILE" if [ -t 1 ]; then echo "$VOL"