#!/bin/bash # omarchy:summary=Print CPU and memory stats for the shell # omarchy:group=system # omarchy:args=[--bar-widget] bar_widget_stats() { awk ' NR == 1 { idle = $5 total = 0 for (i = 2; i <= NF; i++) total += $i printf "cpu\t%s\t%s\n", idle, total } ' /proc/stat awk ' /^MemTotal:/ { total = $2 } /^MemAvailable:/ { avail = $2 } END { if (total > 0) printf "memory\t%.2f\n", ((total - avail) / total) * 100 } ' /proc/meminfo awk '{ print "load\t" $1 }' /proc/loadavg } case "${1:-}" in "") ;; --bar-widget) bar_widget_stats exit ;; *) echo "Usage: omarchy-system-stats [--bar-widget]" >&2 exit 1 ;; esac cpu=$(top -bn1 | awk '/^%?Cpu/ { gsub(/,/, "") for (i = 1; i <= NF; i++) { if ($(i + 1) == "id") { printf "%.0f%%", 100 - $i exit } } }') awk -v cpu="$cpu" ' /^MemTotal:/ { total = $2 } /^MemAvailable:/ { avail = $2 } END { used = total - avail printf "cpu\t%s\n", cpu printf "memory\t%.1fGB / %.0fGB\n", used / 1024 / 1024, total / 1024 / 1024 } ' /proc/meminfo