nix/bin/battery.nix (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
{ pkgs, ... }:
let
name = "bat";
in
pkgs.writeScriptBin name
''
red="\e[31m"
grn="\e[32m"
ylw="\e[33m"
cyn="\e[36m"
blu="\e[34m"
prp="\e[35m"
bprp="\e[35;1m"
rst="\e[0m"
bat_status=""
bat_status=$( cat /sys/class/power_supply/BAT0/capacity )
charging_status=$( cat /sys/class/power_supply/BAT0/status )
health() {
for i in {0..4}
do
if [[ $i -le $(( $bat_status/20 )) ]]; then
echo -ne "#[fg=colour1]· "
else
echo -ne "#[fg=colour8]· "
fi
done
echo
}
bat_status_small() {
if [[ "$charging_status" = *Charging* ]]; then
echo -ne "+$bat_status%"
else
echo -ne "$bat_status%"
fi
}
[ -z "$1" ] && {
bat_status_small
}
while getopts qi options
do
case $options in
i)
bat_status_small
;;
q)
if [[ "$charging_status" = *Charging* ]]; then
echo -ne "+ $(health)"
else
health
fi
esac
done
''
|