#!/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"