#!/usr/bin/env bash cache_dir=~/.cache/tmux cache_file=$cache_dir/system-info # Make sure the output directory exists. if [ ! -d $cache_dir ]; then mkdir -p $cache_dir fi if sensors 'coretemp-isa-0000' &> /dev/null; then function get_cpu_temp() { sensors coretemp-isa-0000 | awk 'NR == 3 { print substr($4, 2) }' } elif sensors 'asus_wmi_sensors-virtual-0' &> /dev/null; then function get_cpu_temp { sensors asus_wmi_sensors-virtual-0 | grep 'CPU Temperature' | awk '{ print $3 }' } else function get_cpu_temp { echo 'cpu temp not available' } fi # Cleanup cache file when interrupted. trap '[ -f $cache_file ] && rm $cache_file; exit' INT trap '[ -f $cache_file ] && rm $cache_file; exit' TERM while true; do # Parse the current CPU load on all cores/threads. cpu_load=`mpstat -P ALL -n 1 -u 1 -o JSON | \ jq '.sysstat.hosts[0].statistics[0]["cpu-load"][1:]|.[].idle' | \ awk '$idle ~ /[-.0-9]*/ { printf "%s", substr("█▇▆▅▄▃▂▁ ", int($idle / 11), 1) }'` # Parse the current CPU package temperature. cpu_temp=$(get_cpu_temp) # Write to the cache file. echo "$cpu_temp $cpu_load" > $cache_file done