From 99457a4ad51a54e768e79af6cd18dddbe6508be4 Mon Sep 17 00:00:00 2001 From: romkatv Date: Wed, 22 May 2019 14:27:16 +0200 Subject: [PATCH] speed up disk_usage prompt --- powerlevel9k.zsh-theme | 49 ++++++++++++++---------------------------- 1 file changed, 16 insertions(+), 33 deletions(-) diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index cb55bf5c..29721998 100755 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -428,41 +428,24 @@ set_default POWERLEVEL9K_DISK_USAGE_ONLY_WARNING false set_default -i POWERLEVEL9K_DISK_USAGE_WARNING_LEVEL 90 set_default -i POWERLEVEL9K_DISK_USAGE_CRITICAL_LEVEL 95 prompt_disk_usage() { - local current_state="unknown" - typeset -AH hdd_usage_forecolors - hdd_usage_forecolors=( - 'normal' 'yellow' - 'warning' "$DEFAULT_COLOR" - 'critical' 'white' - ) - typeset -AH hdd_usage_backcolors - hdd_usage_backcolors=( - 'normal' $DEFAULT_COLOR - 'warning' 'yellow' - 'critical' 'red' - ) - - local disk_usage="${$(\df -P . | sed -n '2p' | awk '{ print $5 }')%%\%}" - - if [ "$disk_usage" -ge "$POWERLEVEL9K_DISK_USAGE_WARNING_LEVEL" ]; then - current_state='warning' - if [ "$disk_usage" -ge "$POWERLEVEL9K_DISK_USAGE_CRITICAL_LEVEL" ]; then - current_state='critical' - fi + (( $+commands[df] )) || return + local disk_usage=${${=${(f)"$(command df -P .)"}[2]}[5]%%%} + local state bg fg + if (( disk_usage >= POWERLEVEL9K_DISK_USAGE_CRITICAL_LEVEL )); then + state=critical + bg=red + fg=white + elif (( disk_usage >= POWERLEVEL9K_DISK_USAGE_WARNING_LEVEL )); then + state=warning + bg=yellow + fg=$DEFAULT_COLOR else - if [[ "$POWERLEVEL9K_DISK_USAGE_ONLY_WARNING" == true ]]; then - current_state='' - return - fi - current_state='normal' - fi - - local message="${disk_usage}%%" - - # Draw the prompt_segment - if [[ -n $disk_usage ]]; then - "$1_prompt_segment" "${0}_${current_state}" "$2" "${hdd_usage_backcolors[$current_state]}" "${hdd_usage_forecolors[$current_state]}" 'DISK_ICON' 0 '' "$message" + [[ "$POWERLEVEL9K_DISK_USAGE_ONLY_WARNING" == true ]] && return + state=normal + bg=$DEFAULT_COLOR + fg=yellow fi + $1_prompt_segment $0_$state $2 $bg $fg DISK_ICON 0 '' "$disk_usage%%" } ################################################################