Skip to content
This repository has been archived by the owner on Apr 24, 2020. It is now read-only.

Fix average selection in load segment. #608

Merged
merged 1 commit into from
Aug 28, 2017
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 28 additions & 21 deletions powerlevel9k.zsh-theme
Original file line number Diff line number Diff line change
Expand Up @@ -932,46 +932,53 @@ prompt_vpn_ip() {
done
}

set_default POWERLEVEL9K_LOAD_WHICH 5
prompt_load() {
# The load segment can have three different states
local current_state="unknown"
local load_select=2
local load_avg
local cores

set_default POWERLEVEL9K_LOAD_WHICH 5

typeset -AH load_states
load_states=(
'critical' 'red'
'warning' 'yellow'
'normal' 'green'
)

if [[ "$OS" == "OSX" ]] || [[ "$OS" == "BSD" ]]; then

if [[ "$POWERLEVEL9K_LOAD_WHICH" -eq 1 ]]; then
load_avg=$(sysctl vm.loadavg | grep -o -E '[0-9]+(\.|,)[0-9]+' | head -n 3 | sed -n 1p)
elif [[ "$POWERLEVEL9K_LOAD_WHICH" -eq 5 ]]; then
load_avg=$(sysctl vm.loadavg | grep -o -E '[0-9]+(\.|,)[0-9]+' | head -n 3 | sed -n 2p)
else
load_avg=$(sysctl vm.loadavg | grep -o -E '[0-9]+(\.|,)[0-9]+' | head -n 3 | sed -n 3p)
fi
case "$POWERLEVEL9K_LOAD_WHICH" in
1)
load_select=1
;;
5)
load_select=2
;;
15)
load_select=3
;;
esac

if [[ "$OS" == "OSX" ]]; then
cores=$(sysctl -n hw.logicalcpu)
else
cores=$(sysctl -n hw.ncpu)
fi
else
load_avg=$(grep -o "[0-9.]*" /proc/loadavg | head -n 1)
cores=$(nproc)
fi
case "$OS" in
OSX|BSD)
load_avg=$(sysctl vm.loadavg | grep -o -E '[0-9]+(\.|,)[0-9]+' | sed -n ${load_select}p)
if [[ "$OS" == "OSX" ]]; then
cores=$(sysctl -n hw.logicalcpu)
else
cores=$(sysctl -n hw.ncpu)
fi
;;
*)
load_avg=$(cut -d" " -f${load_select} /proc/loadavg)
cores=$(nproc)
esac

# Replace comma
load_avg=${load_avg//,/.}

if [[ "$load_avg" -gt $(bc -l <<< "${cores} * 0.7") ]]; then
current_state="critical"
elif [[ "$load_avg" -gt $(bc -l <<< "${cores} * 0.5") ]]; then
elif [[ "$load_avg" -gt $(bc -l <<< "${cores} * 0.5") ]]; then
current_state="warning"
else
current_state="normal"
Expand Down