#!/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") PERCENTAGE=$(echo "$DEVICE_DATA" | grep -Po '(?<=(percentage: )).*(?= icon)') PER_INT=$(echo "${PERCENTAGE//%}") DEVICE_NAME=$(echo "$DEVICE_DATA" | grep -Po '(?<=(model: )).*(?= serial)') 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)