mirror of
https://github.com/fscotto/infra.git
synced 2026-05-30 15:39:58 +00:00
48 lines
1.0 KiB
Bash
Executable File
48 lines
1.0 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
total_now=0
|
|
total_full=0
|
|
status=""
|
|
|
|
for bat in /sys/class/power_supply/BAT*; do
|
|
[ -d "$bat" ] || continue
|
|
|
|
if [ -r "$bat/energy_now" ] && [ -r "$bat/energy_full" ]; then
|
|
now=$(cat "$bat/energy_now")
|
|
full=$(cat "$bat/energy_full")
|
|
elif [ -r "$bat/charge_now" ] && [ -r "$bat/charge_full" ]; then
|
|
now=$(cat "$bat/charge_now")
|
|
full=$(cat "$bat/charge_full")
|
|
else
|
|
continue
|
|
fi
|
|
|
|
st=$(cat "$bat/status" 2>/dev/null)
|
|
|
|
total_now=$((total_now + now))
|
|
total_full=$((total_full + full))
|
|
|
|
case "$st" in
|
|
Charging) status="⚡" ;;
|
|
Discharging) [ -z "$status" ] && status="🔋" ;;
|
|
Full) [ -z "$status" ] && status="✔" ;;
|
|
esac
|
|
done
|
|
|
|
[ "$total_full" -gt 0 ] || exit 0
|
|
|
|
pct=$((100 * total_now / total_full))
|
|
[ -n "$status" ] || status="BAT"
|
|
|
|
text="$status $pct%"
|
|
|
|
if [ "$pct" -le 15 ]; then
|
|
color="#ff5555"
|
|
elif [ "$pct" -le 30 ]; then
|
|
color="#f1fa8c"
|
|
else
|
|
color="#9ece6a"
|
|
fi
|
|
|
|
printf '%s\n%s\n%s\n' "$text" "$text" "$color"
|