#!/bin/bash
#
# Author: Twily 2017
# Description: Battery monitor and notifier
# Requires: acpi, dunst, notify-send
# Usage: sh ./battery-monitor & disown
#
NOTIFY=(30 20 15 10 5 4 3 2 1 0)
I=0
F=1
B=1
C=1
while :; do
ACPI=$(acpi)
PERCENT=$(echo $ACPI | cut -d' ' -f4 | cut -d'%' -f1)
STATE=$(echo $ACPI | cut -d' ' -f3 | cut -d',' -f1)
TIME=$(date +'%T')
#echo "Battery "$PERCENT"% "$STATE"."
if [ "$STATE" == "" ] && [ "$B" -eq "1" ]; then
notify-send -t 0 "ACPI - $TIME" "N/A% Battery Not Found\!"
B=0
elif [ "$STATE" != "" ]; then
if [ "$B" -eq "0" ]; then
notify-send -t 0 "ACPI - $TIME" $PERCENT"% Battery Found\!"
B=1
fi
if [ "$STATE" == "Discharging" ] && [ "$C" -eq "1" ]; then
#State change to Discharging
notify-send -t 0 "ACPI - $TIME" $PERCENT"% "$STATE"\!"
C=0
elif [ "$STATE" == "Discharging" ]; then
if [ "$PERCENT" -eq "${NOTIFY[$I]}" ]; then
#Discharge warning - low bat
notify-send -t 0 "ACPI - $TIME" $PERCENT"% "$STATE"\!"
I=$(($I + 1))
fi
F=0
elif [ "$STATE" == "Charging" ] && [ "$C" -eq "0" ]; then
#State change to Charing
notify-send -t 0 "ACPI - $TIME" $PERCENT"% "$STATE"\!"
C=1
elif [ "$STATE" == "Charging" ]; then
F=0
else
if [ "$PERCENT" -eq "100" ] && [ "$F" -eq "0" ]; then
#Charge warning - bat Full
notify-send -t 0 "ACPI - $TIME" $PERCENT"% "$STATE"\!"
F=1
fi
I=0
fi
fi
sleep 10
done
Top