diff options
author | rjorgenson <rjorgenson@gmail.com> | 2015-10-18 20:55:37 +0300 |
---|---|---|
committer | rjorgenson <rjorgenson@gmail.com> | 2015-10-18 20:55:37 +0300 |
commit | acf5e97756a97c0feb12c38475266b0c079ca25f (patch) | |
tree | a0b603f901b6dc839753b6d2bf2ab189f16284ec /powerlevel9k.zsh-theme | |
parent | d46634a0a7c26c65307f976d208bc890739ef5d2 (diff) |
added battery prompt segment usable on OS X systems
Diffstat (limited to 'powerlevel9k.zsh-theme')
-rwxr-xr-x | powerlevel9k.zsh-theme | 47 |
1 files changed, 46 insertions, 1 deletions
diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 7063962f..6dd4f8da 100755 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -46,6 +46,7 @@ case $POWERLEVEL9K_MODE in BACKGROUND_JOBS_ICON $'\UE82F ' # TEST_ICON $'\UE891' # TODO_ICON $'\U2611' # ☑ + BATTERY_ICON $'\UE894' # OK_ICON $'\U2713' # ✓ FAIL_ICON $'\U2718' # ✘ SYMFONY_ICON 'SF' @@ -95,6 +96,7 @@ case $POWERLEVEL9K_MODE in BACKGROUND_JOBS_ICON $'\UF013 ' # TEST_ICON $'\UF291' # TODO_ICON $'\U2611' # ☑ + BATTERY_ICON $'\u1F50B' # 🔋 OK_ICON $'\UF23A' # FAIL_ICON $'\UF281' # SYMFONY_ICON 'SF' @@ -139,6 +141,7 @@ case $POWERLEVEL9K_MODE in BACKGROUND_JOBS_ICON $'\u2699' # ⚙ TEST_ICON '' TODO_ICON $'\U2611' # ☑ + BATTERY_ICON $'\u1F50B' # 🔋 OK_ICON $'\u2713' # ✓ FAIL_ICON $'\u2718' # ✘ SYMFONY_ICON 'SF' @@ -611,6 +614,48 @@ prompt_aws() { fi } +prompt_battery() { + if [[ -f /usr/sbin/ioreg && -x /usr/sbin/ioreg ]]; then + # return if there is no battery on system + [[ -z $(ioreg -n AppleSmartBattery | grep MaxCapacity) ]] && return + + # set default values of not specified in shell + [[ -z $POWERLEVEL9K_BATTERY_CHARGING ]] && POWERLEVEL9K_BATTERY_CHARGING="yellow" + [[ -z $POWERLEVEL9K_BATTERY_CHARGED ]] && POWERLEVEL9K_BATTERY_CHARGED="green" + [[ -z $POWERLEVEL9K_BATTERY_DISCONNECTED ]] && POWERLEVEL9K_BATTERY_DISCONNECTED="$DEFAULT_COLOR" + [[ -z $POWERLEVEL9K_BATTERY_LOW_THRESHOLD ]] && POWERLEVEL9K_BATTERY_LOW_THRESHOLD=10 + [[ -z $POWERLEVEL9K_BATTERY_LOW_COLOR ]] && POWERLEVEL9K_BATTERY_LOW_COLOR="red" + [[ -z $POWERLEVEL9K_BATTERY_FOREGROUND ]] && local fg_color="$DEFAULT_COLOR" || local fg_color=$POWERLEVEL9K_BATTERY_FOREGROUND + + # get charge status + [[ $(ioreg -n AppleSmartBattery | grep ExternalConnected | awk '{ print $5 }') =~ "Yes" ]] && local connected=true + [[ $(ioreg -n AppleSmartBattery | grep IsCharging | awk '{ print $5 }') =~ "Yes" ]] && local charging=true + + # convert time remaining from minutes to hours:minutes date string + local time_remaining=$(ioreg -n AppleSmartBattery | grep TimeRemaining | awk '{ print $5 }') + if [[ ! -z $time_remaining ]]; then + # this value is set to a very high number when the system is calculating + [[ $time_remaining -gt 10000 ]] && local tstring="..." || local tstring=${(f)$(date -u -r $(($time_remaining * 60)) +%k:%M)} + fi + + # get charge values + local max_capacity=$(ioreg -n AppleSmartBattery | grep MaxCapacity | awk '{ print $5 }') + local current_capacity=$(ioreg -n AppleSmartBattery | grep CurrentCapacity | awk '{ print $5 }') + + # logic for string output + [[ ! -z $max_capacity && ! -z $current_capacity ]] && local bat_percent=$(ruby -e "puts ($current_capacity.to_f / $max_capacity.to_f * 100).round.to_i") + [[ $charging =~ true && $connected =~ true ]] && local conn="%F{$POWERLEVEL9K_BATTERY_CHARGING}" && local remain="($tstring)" + [[ ! $charging =~ true && $connected =~ true ]] && local conn="%F{$POWERLEVEL9K_BATTERY_CHARGED}" && local remain="" + if [[ ! $connected =~ true ]]; then + [[ $bat_percent -lt $POWERLVEL9K_BATTERY_LOW_THRESHOLD ]] && local conn="%F{$POWERLEVEL9K_BATTERY_LOW_COLOR}" || local conn="%F{$POWERLEVEL9K_BATTERY_DISCONNECTED}" + local remain="($tstring)" + fi + + # display prompt_segment + [[ ! -z $bat_percent ]] && "$1_prompt_segment" "$0" "black" "$DEFAULT_COLOR" "$conn$(print_icon 'BATTERY_ICON'){$fg_color} $bat_percent%% $remain" + fi +} + # Context: user@hostname (who am I and where am I) # Note that if $DEFAULT_USER is not set, this prompt segment will always print prompt_context() { @@ -965,7 +1010,7 @@ powerlevel9k_init() { fi setopt prompt_subst - + setopt LOCAL_OPTIONS unsetopt XTRACE KSH_ARRAYS setopt PROMPT_CR PROMPT_PERCENT PROMPT_SUBST MULTIBYTE |