mirror of
https://github.com/romkatv/powerlevel10k.git
synced 2024-11-26 05:50:07 +00:00
Merge pull request #366 from rjorgenson/next
migrated battery segment to use pmset on OSX over ioreg
This commit is contained in:
commit
c86b4009ce
1 changed files with 21 additions and 28 deletions
|
@ -350,43 +350,36 @@ prompt_battery() {
|
||||||
# Set default values if the user did not configure them
|
# Set default values if the user did not configure them
|
||||||
set_default POWERLEVEL9K_BATTERY_LOW_THRESHOLD 10
|
set_default POWERLEVEL9K_BATTERY_LOW_THRESHOLD 10
|
||||||
|
|
||||||
if [[ $OS =~ OSX && -f /usr/sbin/ioreg && -x /usr/sbin/ioreg ]]; then
|
if [[ $OS =~ OSX && -f /usr/bin/pmset && -x /usr/bin/pmset ]]; then
|
||||||
# Pre-Grep as much information as possible to save some memory and
|
# obtain battery information from system
|
||||||
# avoid pollution of the xtrace output.
|
local raw_data="$(pmset -g batt)"
|
||||||
local raw_data="$(ioreg -n AppleSmartBattery | grep -E "MaxCapacity|TimeRemaining|CurrentCapacity|ExternalConnected|IsCharging")"
|
|
||||||
# return if there is no battery on system
|
# return if there is no battery on system
|
||||||
[[ -z $(echo $raw_data | grep MaxCapacity) ]] && return
|
[[ -z $(echo $raw_data | grep "InternalBattery") ]] && return
|
||||||
|
|
||||||
# Convert time remaining from minutes to hours:minutes date string
|
# Time remaining on battery operation (charging/discharging)
|
||||||
local time_remaining=$(echo $raw_data | grep TimeRemaining | awk '{ print $5 }')
|
local tstring=$(echo $raw_data | awk 'FNR==2{print $5}')
|
||||||
if [[ -n $time_remaining ]]; then
|
# If time has not been calculated by system yet
|
||||||
# this value is set to a very high number when the system is calculating
|
[[ $tstring =~ '\(no' ]] && tstring="..."
|
||||||
[[ $time_remaining -gt 10000 ]] && local tstring="..." || local tstring=${(f)$(/bin/date -u -r $(($time_remaining * 60)) +%k:%M)}
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Get charge values
|
# percent of battery charged
|
||||||
local max_capacity=$(echo $raw_data | grep MaxCapacity | awk '{ print $5 }')
|
typeset -i 10 bat_percent
|
||||||
local current_capacity=$(echo $raw_data | grep CurrentCapacity | awk '{ print $5 }')
|
bat_percent=$(echo $raw_data | grep -o '[0-9]*%' | sed 's/%//')
|
||||||
|
|
||||||
if [[ -n "$max_capacity" && -n "$current_capacity" ]]; then
|
|
||||||
typeset -i 10 bat_percent
|
|
||||||
bat_percent=$(( (current_capacity * 100) / max_capacity ))
|
|
||||||
fi
|
|
||||||
|
|
||||||
local remain=""
|
local remain=""
|
||||||
# Logic for string output
|
# Logic for string output
|
||||||
if [[ $(echo $raw_data | grep ExternalConnected | awk '{ print $5 }') =~ "Yes" ]]; then
|
case $(echo $raw_data | awk 'FNR==2{print $4}') in
|
||||||
# Battery is charging
|
'charging;|finishing charge;')
|
||||||
if [[ $(echo $raw_data | grep IsCharging | awk '{ print $5 }') =~ "Yes" ]]; then
|
|
||||||
current_state="charging"
|
current_state="charging"
|
||||||
remain=" ($tstring)"
|
remain=" ($tstring)"
|
||||||
else
|
;;
|
||||||
|
'discharging;')
|
||||||
|
[[ $bat_percent -lt $POWERLEVEL9K_BATTERY_LOW_THRESHOLD ]] && current_state="low" || current_state="disconnected"
|
||||||
|
remain=" ($tstring)"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
current_state="charged"
|
current_state="charged"
|
||||||
fi
|
;;
|
||||||
else
|
esac
|
||||||
[[ $bat_percent -lt $POWERLEVEL9K_BATTERY_LOW_THRESHOLD ]] && current_state="low" || current_state="disconnected"
|
|
||||||
remain=" ($tstring)"
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ $OS =~ Linux ]]; then
|
if [[ $OS =~ Linux ]]; then
|
||||||
|
|
Loading…
Reference in a new issue