62 lines
1.4 KiB
Bash
Executable File
62 lines
1.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
icons=("" "" "" "" "" "" "" "" "" "" "")
|
|
num_icons=$(awk -v n="${#icons[@]}" 'BEGIN{print 100 / n}')
|
|
BATTERY="/sys/class/power_supply/BAT0"
|
|
|
|
geticon() {
|
|
level=$(awk -v n="$CAPACITY" -v c="$num_icons" 'BEGIN{print int(n/c-1)}')
|
|
echo "${icons[$level]}"
|
|
}
|
|
|
|
status() {
|
|
if [ "$STATE" = "Charging" ]; then
|
|
echo -n "charging"
|
|
|
|
if [ "$RATE" -gt 0 ]; then
|
|
echo ", $(gettime) left"
|
|
else
|
|
echo ""
|
|
fi
|
|
elif [ "$STATE" = "Discharging" ]; then
|
|
echo "$(gettime)h left"
|
|
else
|
|
echo "fully charged"
|
|
fi
|
|
}
|
|
|
|
color() {
|
|
[ "$CAPACITY" -le 20 ] && echo '#f38ba8' || echo '#a6e3a1'
|
|
}
|
|
|
|
wattage() {
|
|
awk -v rate="$RATE" -v uw="1000000" 'BEGIN{print sprintf("%.1f W", rate/uw)}'
|
|
}
|
|
|
|
gettime() {
|
|
FULL=$(cat $BATTERY/energy_full)
|
|
NOW=$(cat $BATTERY/energy_now)
|
|
|
|
if [ "$RATE" -gt 0 ]; then
|
|
if [ "$STATE" = "Discharging" ]; then
|
|
EX="$NOW / $RATE"
|
|
else
|
|
EX="($FULL - $NOW) / $RATE"
|
|
fi
|
|
date -u -d@"$(awk -v ex="$EX" 'BEGIN{print ex * 3600}')" +%H:%M
|
|
fi
|
|
}
|
|
|
|
if [ -d "$BATTERY" ]; then
|
|
while true; do
|
|
RATE=$(cat $BATTERY/power_now)
|
|
CAPACITY=$(cat $BATTERY/capacity)
|
|
STATE=$(cat $BATTERY/status)
|
|
|
|
echo '{ "icon": "'$(geticon)'", "percentage": '$CAPACITY', "wattage": "'$(wattage)'", "status": "'$(status)'", "color": "'$(color)'" }'
|
|
sleep 5
|
|
done
|
|
else
|
|
echo '{ "icon": "", "percentage": 0, "wattage": "", "status": "", "color": "#a6e3a1" }'
|
|
fi
|