From 6a1f0659e6688d5483dbb48c367b55c2e0506e24 Mon Sep 17 00:00:00 2001 From: romkatv Date: Sun, 16 Jun 2019 11:28:13 +0200 Subject: [PATCH] make battery prompt work on WSL --- internal/p10k.zsh | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/internal/p10k.zsh b/internal/p10k.zsh index c92233b0..d76233d1 100755 --- a/internal/p10k.zsh +++ b/internal/p10k.zsh @@ -454,20 +454,28 @@ prompt_battery() { local -i is_full=1 is_calculating is_charching local dir for dir in $bats; do - local -i pow=0 - _p9k_read_file $dir/(energy|charge)_now(N) && (( energy_now+=_P9K_RETVAL )) - _p9k_read_file $dir/(energy|charge)_full(N) && (( energy_full+=_P9K_RETVAL )) - _p9k_read_file $dir/(power|current)_now(N) && (( power_now+=${pow::=$_P9K_RETVAL} )) + local -i pow=0 full=0 + if _p9k_read_file $dir/(energy_full|charge_full|charge_counter)(N); then + (( energy_full += ${full::=_P9K_RETVAL} )) + fi + if _p9k_read_file $dir/(power|current)_now(N) && (( $#_P9K_RETVAL < 9 )); then + (( power_now += ${pow::=$_P9K_RETVAL} )) + fi + if _p9k_read_file $dir/(energy|charge)_now(N); then + (( energy_now += _P9K_RETVAL )) + elif _p9k_read_file $dir/capacity(N); then + (( energy_now += _P9K_RETVAL * full / 100 )) + fi _p9k_read_file $dir/status(N) && local bat_status=$_P9K_RETVAL || continue [[ $bat_status != Full ]] && is_full=0 [[ $bat_status == Charging ]] && is_charching=1 [[ $bat_status == (Charging|Discharging) && $pow == 0 ]] && is_calculating=1 done - if (( energy_full )); then - bat_percent=$(( 100 * energy_now / energy_full )) - (( bat_percent > 100 )) && bat_percent=100 - fi + (( energy_full )) || return + + bat_percent=$(( 100 * energy_now / energy_full )) + (( bat_percent > 100 )) && bat_percent=100 if (( is_full || bat_percent == 100 )); then state=charged