#!/usr/bin/env bash
#
# Read volume status in Linux
set -euo pipefail
IFS=$'\n\t'
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

SLEEP_INTERVAL=${SLEEP_INTERVAL:-30}

while true; do
    current_vol_decimal=$(wpctl get-volume @DEFAULT_AUDIO_SINK@ | sed 's/Volume: //g')
    if [[ "$current_vol_decimal" = *MUTED* ]]; then
        current_vol_percent=0
    else
        current_vol_percent=$(bc -s <<<"$current_vol_decimal * 100")
        current_vol_percent=${current_vol_percent%.*} # Remove decimal
    fi
    tooltip="<tt>$(wpctl status)</tt>"
    tooltip=${tooltip//$'\n'/\\n}
    tooltip=${tooltip//$'\t'/\\t}
    class=""
    icon=""

    if [ $current_vol_percent -eq 0 ]; then
        icon="🔇"
    elif [ $current_vol_percent -le 50 ]; then
        icon="🔉"
    else
        icon="🔊"
    fi

    jq --unbuffered --compact-output <<EOF
{
"text":"${current_vol_percent}% ${icon}",
"tooltip":"${tooltip}",
"percentage":${current_vol_percent},
"class":"${class}"
}
EOF
    sleep $SLEEP_INTERVAL
done
