#!/bin/bash
# ABOUTME: Checks Bluetooth devices for low battery and sends a notification.
# ABOUTME: Can be run periodically via timer or cron.

NOTIFY_AT_PERCENTAGE=70
ICON="battery-empty"

while IFS= read -r d; do
  [ -z "$d" ] && continue
  DEVICE_DATA=$(upower -i "$d")
  PER_INT=$(echo "$DEVICE_DATA" | grep -oP 'percentage:\s+\K[0-9]+')
  DEVICE_NAME=$(echo "$DEVICE_DATA" | grep -oP 'model:\s+\K.+')

  if [ -n "$DEVICE_NAME" ] && [ -n "$PER_INT" ] && [ "$PER_INT" -lt "$NOTIFY_AT_PERCENTAGE" ]; then
    notify-send -t 5000 -e "Low battery $DEVICE_NAME $PER_INT%" -i "$ICON" \
      -h string:x-canonical-private-synchronous:battery \
      -h int:value:"$PER_INT" -u critical
  fi
done < <(upower -e)
