Add script to show battery status.
Signed-off-by: Jacob Kiers <jacob@jacobkiers.net>
This commit is contained in:
parent
5da5ecef49
commit
43585e1519
122
bin/battery
Executable file
122
bin/battery
Executable file
@ -0,0 +1,122 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
HEART_FULL=♥
|
||||||
|
HEART_EMPTY=♡
|
||||||
|
[ -z "$NUM_HEARTS" ] &&
|
||||||
|
NUM_HEARTS=5
|
||||||
|
|
||||||
|
cutinate()
|
||||||
|
{
|
||||||
|
perc=$1
|
||||||
|
inc=$(( 100 / $NUM_HEARTS))
|
||||||
|
|
||||||
|
|
||||||
|
for i in `seq $NUM_HEARTS`; do
|
||||||
|
if [ $perc -lt 100 ]; then
|
||||||
|
echo $HEART_EMPTY
|
||||||
|
else
|
||||||
|
echo $HEART_FULL
|
||||||
|
fi
|
||||||
|
perc=$(( $perc + $inc ))
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
linux_get_bat ()
|
||||||
|
{
|
||||||
|
bf=$(cat $BAT_FULL)
|
||||||
|
bn=$(cat $BAT_NOW)
|
||||||
|
echo $(( 100 * $bn / $bf ))
|
||||||
|
}
|
||||||
|
|
||||||
|
freebsd_get_bat ()
|
||||||
|
{
|
||||||
|
sysctl -n hw.acpi.battery.life
|
||||||
|
}
|
||||||
|
|
||||||
|
# Do with grep and awk unless too hard
|
||||||
|
|
||||||
|
# TODO Identify which machine we're on from teh script.
|
||||||
|
|
||||||
|
battery_status()
|
||||||
|
{
|
||||||
|
case $(uname -s) in
|
||||||
|
"Linux")
|
||||||
|
BATPATH=${BATPATH:-/sys/class/power_supply/BAT0}
|
||||||
|
STATUS=$BATPATH/status
|
||||||
|
[ "$1" = `cat $STATUS` ] || [ "$1" = "" ] || return 0
|
||||||
|
if [ -f "$BATPATH/energy_full" ]; then
|
||||||
|
naming="energy"
|
||||||
|
elif [ -f "$BATPATH/charge_full" ]; then
|
||||||
|
naming="charge"
|
||||||
|
elif [ -f "$BATPATH/capacity" ]; then
|
||||||
|
cat "$BATPATH/capacity"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
BAT_FULL=$BATPATH/${naming}_full
|
||||||
|
BAT_NOW=$BATPATH/${naming}_now
|
||||||
|
linux_get_bat
|
||||||
|
;;
|
||||||
|
"FreeBSD")
|
||||||
|
STATUS=`sysctl -n hw.acpi.battery.state`
|
||||||
|
case $1 in
|
||||||
|
"Discharging")
|
||||||
|
if [ $STATUS -eq 1 ]; then
|
||||||
|
freebsd_get_bat
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
"Charging")
|
||||||
|
if [ $STATUS -eq 2 ]; then
|
||||||
|
freebsd_get_bat
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
"")
|
||||||
|
freebsd_get_bat
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
"Darwin")
|
||||||
|
case $1 in
|
||||||
|
"Discharging")
|
||||||
|
ext="No";;
|
||||||
|
"Charging")
|
||||||
|
ext="Yes";;
|
||||||
|
esac
|
||||||
|
|
||||||
|
ioreg -c AppleSmartBattery -w0 | \
|
||||||
|
grep -o '"[^"]*" = [^ ]*' | \
|
||||||
|
sed -e 's/= //g' -e 's/"//g' | \
|
||||||
|
sort | \
|
||||||
|
while read key value; do
|
||||||
|
case $key in
|
||||||
|
"MaxCapacity")
|
||||||
|
export maxcap=$value;;
|
||||||
|
"CurrentCapacity")
|
||||||
|
export curcap=$value;;
|
||||||
|
"ExternalConnected")
|
||||||
|
if [ -n "$ext" ] && [ "$ext" != "$value" ]; then
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
"FullyCharged")
|
||||||
|
if [ "$value" = "Yes" ]; then
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
if [[ -n "$maxcap" && -n $curcap ]]; then
|
||||||
|
echo $(( 100 * $curcap / $maxcap ))
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
BATTERY_STATUS=`battery_status $1`
|
||||||
|
[ -z "$BATTERY_STATUS" ] && exit
|
||||||
|
|
||||||
|
if [ -n "$CUTE_BATTERY_INDICATOR" ]; then
|
||||||
|
cutinate $BATTERY_STATUS
|
||||||
|
else
|
||||||
|
echo ${BATTERY_STATUS}%
|
||||||
|
fi
|
||||||
|
|
Loading…
Reference in New Issue
Block a user