dotfiles/themes/hacker/.config/sway/wob.sh

44 lines
1 KiB
Bash
Executable file

#!/bin/bash
until pactl info &>/dev/null; do
sleep 0.5
done
sleep 3
WOB_SOCK="${XDG_RUNTIME_DIR}/wob.sock"
prev_vol=""
prev_muted=""
get_vol() {
pactl get-sink-volume @DEFAULT_SINK@ 2>/dev/null | grep -oP '\d+(?=%)' | head -1
}
get_muted() {
pactl get-sink-mute @DEFAULT_SINK@ 2>/dev/null | grep -q yes && echo 1 || echo 0
}
pactl subscribe 2>/dev/null | grep --line-buffered "^Event 'change' on sink #" | while read -r _; do
# First read
vol1=$(get_vol)
muted1=$(get_muted)
# Wait and read again — if still changing (app connecting) the values won't match
sleep 0.25
vol2=$(get_vol)
muted2=$(get_muted)
# Skip if unstable
[ "$vol1" != "$vol2" ] || [ "$muted1" != "$muted2" ] && continue
# Skip if nothing changed from last shown value
[ "$vol2" = "$prev_vol" ] && [ "$muted2" = "$prev_muted" ] && continue
prev_vol="$vol2"
prev_muted="$muted2"
if [ "$muted2" = "1" ]; then
echo 0 > "$WOB_SOCK"
else
echo "$vol2" > "$WOB_SOCK"
fi
done