dotfiles/home/.config/lemonbar/applet-pulse

38 lines
919 B
Bash
Executable file

#!/usr/bin/env zsh
PANEL_FIFO="$1"
PREFIX="$2"
ICONS=($(echo "$3" | tr ";" "\n"))
exec 5>"$PANEL_FIFO"
main() {
local cmd=( $(amixer -M get Master) )
local playback_level="${cmd[-2][2,-3]}"
local icon=""
if [[ "${cmd[-1]}" == "[off]" ]]; then
icon="${ICONS[1]}"
else
if [[ "$playback_level" -eq 0 ]]; then
icon="${ICONS[2]}"
elif [[ "$playback_level" -lt 30 ]]; then
icon="${ICONS[3]}"
elif [[ "$playback_level" -lt 60 ]]; then
icon="${ICONS[4]}"
elif [[ "$playback_level" -lt 100 ]]; then
icon="${ICONS[5]}"
else
icon="${ICONS[6]}"
fi
fi
REPLY="$icon $playback_level%"
}
{print init; stdbuf -oL alsactl monitor pulse} | while read line; do
case ${line} in
*Master\ Playback*|init ) main; print "$PREFIX $REPLY" >&5 ;;
* ) continue ;;
esac
done