40 lines
1 KiB
Bash
Executable file
40 lines
1 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
shopt -s extglob
|
|
|
|
declare -a batteries
|
|
|
|
status_by_charge() {
|
|
capacity="$1"
|
|
|
|
if [ "$capacity" -ge 95 ]; then
|
|
echo ' '
|
|
elif [ "$capacity" -ge 65 ]; then
|
|
echo ' '
|
|
elif [ "$capacity" -ge 50 ]; then
|
|
echo ' '
|
|
elif [ "$capacity" -gt 20 ]; then
|
|
echo ' '
|
|
fi
|
|
}
|
|
|
|
for battery_path in /sys/class/power_supply/!(AC*); do
|
|
status="$(cat "${battery_path}/status")"
|
|
capacity="$(cat "${battery_path}/capacity")"
|
|
sep=$([ "$1" == "-s" ] && echo " ")
|
|
|
|
case "${status}" in
|
|
"Full") status_symbol=" " ;;
|
|
"Discharging") status_symbol="$(status_by_charge "${capacity}")" ;;
|
|
"Charging") status_symbol=" " ;;
|
|
"Not charging") status_symbol=" " ;;
|
|
"Unknown") status_symbol=" " ;;
|
|
*) status_symbol="?? " ;;
|
|
esac
|
|
|
|
[ "$capacity" -eq 100 ] && status_symbol=" "
|
|
[ "$status" = "Discharging" ] && [ "$capacity" -le 20 ] && { status_symbol="❗"; [ -n "$sep" ] && sep="" || sep=" "; }
|
|
batteries+=("${status_symbol}${sep}${capacity}%")
|
|
done
|
|
|
|
echo "${batteries[@]}"
|