fix: set-vol break if too fast, remove amixer
This commit is contained in:
parent
d35c6e2b98
commit
0ab8ee4110
34
bin/set-vol
34
bin/set-vol
@ -1,28 +1,16 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
# TODO: multiple fast invocation cause volume not to be updated
|
SINK='@DEFAULT_SINK@'
|
||||||
|
TMP_FILE='/tmp/set-vol'
|
||||||
|
|
||||||
PACTL_SINK='@DEFAULT_SINK@'
|
for _ in 1 2 3; do
|
||||||
SINK="$PACTL_SINK"
|
[ -f "$TMP_FILE" ] || break
|
||||||
|
sleep 0.03
|
||||||
function get_vol() {
|
done
|
||||||
VOL="$(pactl get-sink-volume "$SINK" 2> /dev/null)"
|
touch "$TMP_FILE"
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
|
VOL="$(pactl get-sink-volume "$SINK")"
|
||||||
VOL="$(echo "$VOL" | grep -Po '\d+(?=%)' | head -n 1)"
|
VOL="$(echo "$VOL" | grep -Po '\d+(?=%)' | head -n 1)"
|
||||||
VOL="$((VOL - VOL % "$1"))"
|
VOL="$((VOL - VOL % "$1"))"
|
||||||
|
|
||||||
@ -41,8 +29,10 @@ esac
|
|||||||
[ "$VOL" -lt 0 ] && VOL=0
|
[ "$VOL" -lt 0 ] && VOL=0
|
||||||
[ "$VOL" -gt 100 ] && VOL=100
|
[ "$VOL" -gt 100 ] && VOL=100
|
||||||
|
|
||||||
$CMD "$SINK" "$VOL%" > /dev/null
|
pactl set-sink-volume "$SINK" "$VOL%"
|
||||||
pactl set-sink-mute "$PACTL_SINK" 0
|
pactl set-sink-mute "$SINK" 0
|
||||||
|
|
||||||
|
rm "$TMP_FILE"
|
||||||
|
|
||||||
if [ -t 1 ]; then
|
if [ -t 1 ]; then
|
||||||
echo "$VOL"
|
echo "$VOL"
|
||||||
|
Loading…
Reference in New Issue
Block a user