This repository has been archived on 2023-03-02. You can view files and clone it, but cannot push or open issues or pull requests.
dotfiles/.local/bin/statusbar/sb-battery
David JULIEN 3cef4855a4 feat: update battery actions
notify when total of batteries is > 40
display battery slots
2021-09-19 12:32:33 +02:00

59 lines
2.1 KiB
Bash
Executable File

#!/usr/bin/env sh
######################################################################
# @author : swytch (adapted from Luke Smith - lukesmith.xyz)
# @file : sb-battery
# @license : GPLv3
# @created : Saturday Feb 13, 2021 17:19:04 CET
#
# @description : battery block dwmblocks
######################################################################
# Will show all batteries with approximate icon for remaining power.
# Or show that the computer is plugged to a power source
# In any case, show the remaining battery percentage
# Also sends a notification if battery running low
notify() { \
now=$(date +%s)
if [ -e $XDG_CONFIG_HOME/batteryupdate ]; then
old=$(cat $XDG_CONFIG_HOME/batteryupdate)
delta=$(expr $now - $old)
else
delta=$now
fi
[ 300 -gt $delta ] && return;
echo $now > $XDG_CONFIG_HOME/batteryupdate
case "$total" in
[2-3][0-9]) notify-send -u "normal" "Battery is running low ($capacity%)" "Please plug your computer to a power source" ;;
*) notify-send -u "critical" "Battery is dangerously low ($capacity%)" "Please plug your computer to a power source - <b>NOW!</b>" ;;
esac
}
for bat in /sys/class/power_supply/BAT?/
do
status="$(cat "$bat/status")"
capacity="$(cat "$bat/capacity")"
total="$(expr $total + $capacity)"
slot="$(basename $bat)"
if [ "Full" = "$status" ]; then
status=" " && capacity="FULL"
printf " %s:%s(%s) " "$slot" "$status" "$capacity"
else
if [ "$status" = "Charging" ]; then
status=""
else
case "$capacity" in
100|[8-9][0-9]) status="" ;;
[6-7][0-9]) status="" ;;
[4-5][0-9]) status="" ;;
[2-3][0-9]) status="" ;;
*) status="" ;;
esac
[ 40 -gt $total ] && notify;
fi
printf " %s:%s (%0.2d%%) " "$slot" "$status" "$capacity";
fi
done