Add support for termux-battery-status

This commit is contained in:
Freed-Wu 2021-03-07 03:22:46 +08:00
parent 3920940ea8
commit 2194d96789
1 changed files with 60 additions and 40 deletions

View File

@ -1268,6 +1268,9 @@ _p9k_prompt_battery_init() {
_p9k__async_segments_compute+='_p9k_worker_invoke battery _p9k_prompt_battery_compute' _p9k__async_segments_compute+='_p9k_worker_invoke battery _p9k_prompt_battery_compute'
return return
fi fi
if [[ -x `which termux-battery-status` ]] && [[ -x `which jq` ]]; then
return
fi
if [[ $_p9k_os != (Linux|Android) || if [[ $_p9k_os != (Linux|Android) ||
-z /sys/class/power_supply/(CMB*|BAT*|battery)/(energy_full|charge_full|charge_counter)(#qN) ]]; then -z /sys/class/power_supply/(CMB*|BAT*|battery)/(energy_full|charge_full|charge_counter)(#qN) ]]; then
typeset -g "_p9k__segment_cond_${_p9k__prompt_side}[_p9k__segment_index]"='${:-}' typeset -g "_p9k__segment_cond_${_p9k__prompt_side}[_p9k__segment_index]"='${:-}'
@ -1328,8 +1331,7 @@ _p9k_prompt_battery_set_args() {
Linux|Android) Linux|Android)
# See https://sourceforge.net/projects/acpiclient. # See https://sourceforge.net/projects/acpiclient.
local -a bats=( /sys/class/power_supply/(CMB*|BAT*|battery)/(FN) ) local -a bats=( /sys/class/power_supply/(CMB*|BAT*|battery)/(FN) )
(( $#bats )) || return if (( $#bats )); then
local -i energy_now energy_full power_now local -i energy_now energy_full power_now
local -i is_full=1 is_calculating is_charching local -i is_full=1 is_calculating is_charching
local dir local dir
@ -1376,6 +1378,24 @@ _p9k_prompt_battery_set_args() {
remain="..." remain="..."
fi fi
fi fi
else
# See https://wiki.termux.com/wiki/Termux-battery-status
if [[ -x `which termux-battery-status` ]] && [[ -x `which jq` ]]; then
(( bat_percent = `termux-battery-status|jq -r .percentage` ))
state=`termux-battery-status|jq -r .status`
case $state in
NOT_CHARGING)
(( bat_percent < _POWERLEVEL9K_BATTERY_LOW_THRESHOLD )) && state=LOW || state=DISCONNECTED
;;
CHARGING)
(( bat_percent == 100 )) && state=CHARGED
;;
esac
else
return
fi
fi
;; ;;
*) *)