#!/bin/zsh

# Used with the systemd battery monitor service and timer to alert
# when the battery has dropped below the threshold and is not currently
# charging.

THRESHOLD=20 # Notify when below 20%
NOTIFICATION_FLAG="/run/user/${UID}/user_battery_notified"

function get-battery-percentage() {
  local battery=$(upower --battery | grep percentage)
  echo "${battery//[^0-9]/}"
}

function send-battery-alert() {
  notify-send -u critical \
    "Recharge battery!" "Batttery is down to ${1}" \
    -i battery-caution \
    -t 30000
}

battery_percentage=$(get-battery-percentage)
battery_state=$(upower --battery | grep -E state | awk '{print $2}')

if [[ "$battery_state" == "discharging" && "$battery_percentage" -le "$THRESHOLD" ]]; then
  if [ ! -f "$NOTIFICATION_FLAG" ]; then
    send-battery-alert "$battery_percentage"
    touch "$NOTIFICATION_FLAG"
  fi
else
  rm -f "$NOTIFICATION_FLAG"
fi
