#!/usr/bin/env bash

# https://github.com/asapdotid/battery-alert-linux/blob/main/LICENSE
#Copyright (c) 2022 Asapdotid
#
#Permission is hereby granted, free of charge, to any person obtaining a copy
#of this software and associated documentation files (the "Software"), to deal
#in the Software without restriction, including without limitation the rights
#to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
#copies of the Software, and to permit persons to whom the Software is
#furnished to do so, subject to the following conditions:
#
#The above copyright notice and this permission notice shall be included in all
#copies or substantial portions of the Software.
#
#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
#EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
#MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
#IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
#DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
#OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
#OR OTHER DEALINGS IN THE SOFTWARE.

sleep 10
while true; do
    export DISPLAY=:0.0

    while read line; do
        value=$(echo $line | sed 's/%//g' | cut -d " " -f 2)
        key=$(echo $line | sed 's/%//g' | cut -d ":" -f 1)

        if [ $key = 'state' ]; then
            bat_state=$value
        else
            bat_percent=$value
        fi
    done < <(upower -i $(upower -e | grep BAT) | grep -E "percentage|state")

    if [ $bat_state == 'discharging' ]; then
        if [ $bat_percent -lt 30 ]; then
            notify-send --urgency=CRITICAL "Battery Low" "Level: ${bat_percent}%"
            paplay /usr/share/sounds/freedesktop/stereo/suspend-error.oga
        fi
    else
        if [ $bat_percent -ge 100 ]; then
            notify-send --urgency=NORMAL "Battery Full" "Level: ${bat_percent}%"
        fi
    fi

    sleep 10
done
