42 lines
828 B
Bash
Executable File
42 lines
828 B
Bash
Executable File
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
# https://blog.dhampir.no/content/sleeping-without-a-subprocess-in-bash-and-how-to-sleep-forever
|
|
snore() {
|
|
local IFS
|
|
[[ -n "${_snore_fd:-}" ]] || exec {_snore_fd}<> <(:)
|
|
read -r ${1:+-t "$1"} -u $_snore_fd || :
|
|
}
|
|
|
|
DELAY=0.2
|
|
|
|
while snore $DELAY; do
|
|
WP_OUTPUT=$(wpctl get-volume @DEFAULT_AUDIO_SINK@)
|
|
|
|
if [[ $WP_OUTPUT =~ ^Volume:[[:blank:]]([0-9]+)\.([0-9]{2})([[:blank:]].MUTED.)?$ ]]; then
|
|
if [[ -n ${BASH_REMATCH[3]} ]]; then
|
|
printf "MUTE\n"
|
|
else
|
|
VOLUME=$((10#${BASH_REMATCH[1]}${BASH_REMATCH[2]}))
|
|
ICON=(
|
|
""
|
|
""
|
|
""
|
|
)
|
|
|
|
if [[ $VOLUME -gt 50 ]]; then
|
|
printf "%s" "${ICON[0]} "
|
|
elif [[ $VOLUME -gt 25 ]]; then
|
|
printf "%s" "${ICON[1]} "
|
|
elif [[ $VOLUME -ge 0 ]]; then
|
|
printf "%s" "${ICON[2]} "
|
|
fi
|
|
|
|
printf "$VOLUME%%\n"
|
|
fi
|
|
fi
|
|
done
|
|
|
|
exit 0
|