sxmo: battery_estimate: improve edge cases

This commit is contained in:
Colin 2023-07-21 22:51:24 +00:00
parent 6d216c14fa
commit e7d5b14ab0

View File

@ -10,22 +10,23 @@ bat_dis="󱊢"
bat_chg="󱊥"
fmt_minutes() {
if [[ $2 -gt 1440 ]]; then
echo "∞" # more than 1d
# args: <battery symbol> <text if ludicrous estimate> <estimated minutes to full/empty>
if [[ $3 -gt 1440 ]]; then
printf "%s %s" "$1" "$2" # more than 1d
else
hr=$(($2 / 60))
hr=$(($3 / 60))
hr_in_min=$(($hr * 60))
min=$(($2 - $hr_in_min))
min=$(($3 - $hr_in_min))
printf "%s %dh%02dm" "$1" "$hr" "$min"
fi
}
if [[ $rate -lt 0 ]]; then
# discharging
fmt_minutes "$bat_dis" $(($full * 60 * $perc / (-100 * $rate)))
fmt_minutes "$bat_dis" '∞' "$(($full * 60 * $perc / (-100 * $rate)))"
elif [[ $rate -gt 0 ]]; then
# charging
fmt_minutes "$bat_chg" $(($full * 60 * $perc_left / (100 * $rate)))
fmt_minutes "$bat_chg" '100%' "$(($full * 60 * $perc_left / (100 * $rate)))"
else
echo "󱊢 N/A"
echo "$bat_dis $perc%"
fi