dotfiles/.local/bin/statusbar/sb-battery
2024-11-28 22:19:16 +03:00

53 lines
1.4 KiB
Bash
Executable file

#!/bin/bash
shopt -s extglob
declare -a batteries
declare -A custom_icons=(
["hid:b0003g0102v0000046Dp00004086"]=" "
["hid:b0005g0000v0000054Cp000005C4"]=" "
)
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 " ")
device_name=$(cat "${battery_path}/device/modalias")
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
if [ "$capacity" -eq 100 ]; then
status_symbol=" "
elif [ -n "${custom_icons[$device_name]}" ]; then
status_symbol="${custom_icons["$device_name"]}"
elif [[ "$status" = "Discharging" && "$capacity" -le 20 ]]; then
status_symbol="❗"
[ -n "$sep" ] && sep="" || sep=" ";
fi
batteries+=("${status_symbol}${sep}${capacity}%")
done
echo "${batteries[@]}"