48 lines
1.2 KiB
Bash
Executable file
48 lines
1.2 KiB
Bash
Executable file
#!/bin/sh
|
|
. libsb
|
|
|
|
n_cpu=$(grep -c 'cpu[0-9]\+' /proc/stat)
|
|
cache=$XDG_RUNTIME_DIR/cpubarscache
|
|
|
|
temp="$(sensors | awk '/CPU/ {printf ("%.f°C", $2)}' | tr -d "+")"
|
|
[ -n "$temp" ] && temp="${temp} "
|
|
|
|
new=$(awk '/cpu[0-9]+/ { printf "%d %d\n", $5, ($2 + $3 + $4 + $5) }' /proc/stat 2>/dev/null)
|
|
|
|
[ ! -f "$cache" ] && {
|
|
echo "$new" >"$cache"
|
|
exit
|
|
}
|
|
old=$(cat "$cache")
|
|
|
|
printf "%b" " $temp<span ${bggray}>"
|
|
|
|
first=true
|
|
IFS='
|
|
'
|
|
for i in $(seq "$n_cpu"); do
|
|
eval "$(echo "$old" | awk -v i="$i" 'NR==i { printf "old_idle=%s old_total=%s", $1, $2 }')"
|
|
eval "$(echo "$new" | awk -v i="$i" 'NR==i { printf "new_idle=%s new_total=%s", $1, $2 }')"
|
|
|
|
# shellcheck disable=SC2154
|
|
delta_idle=$((new_idle - old_idle))
|
|
# shellcheck disable=SC2154
|
|
delta_total=$((new_total - old_total))
|
|
|
|
percent=$(((delta_total - delta_idle) * 100 / delta_total))
|
|
|
|
eval "$(meter_bar "$percent" | awk -F: '{ printf "color=\"%s\" bar=\"%s\"", $1, $2 }')"
|
|
|
|
if [ "$color" != "$prevcolor" ]; then
|
|
$first || printf "%b" "</span>"
|
|
printf "%b" "<span $color>"
|
|
fi
|
|
printf "%b" "$bar"
|
|
|
|
first=false
|
|
prevcolor=$color
|
|
index=$((index + 1))
|
|
done
|
|
|
|
printf "%s" "</span></span>"
|
|
echo "$new" >"$cache"
|