#!/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 while true; do # Assumes OpenHardwareMonitor is has the Remote Web Server enabled on port # 8085 of the Windows host. In WSL2 the Windows host IP is accessible using # $(homename).local, use this to grab sensor data but this depends on WSL2 # being allowed to make connections to the Windows host: # # ```powershell # New-NetFirewallRule -DisplayName "WSL" -Direction Inbound -InterfaceAlias "vEthernet (WSL)" -Action Allow # ``` # # However this setting must be applied each boot, there's probably a sticky # setting but not sure what it is. cpu_json=`curl --silent $(hostname).local:8085/data.json | jq \ ".Children[] | select(.Text | test(\"$(hostname | awk '{print toupper($0)}')\"))"\ '.Children[] | select(.ImageURL | test("images_icon/cpu.png"))'` # cpu_load=`echo $cpu_json | jq --raw-output \ # '.Children[] | select(.Text | test("Load"))'\ # '.Children[] | select(.Text | test("CPU Core #[0-9]+")).Value'` # echo cpu load: $cpu_load 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) }'` cpu_temp=`echo $cpu_json | jq --raw-output \ '.Children[] | select(.Text | test("Temperatures"))'\ '.Children[] | select(.Text | test("CPU Package")).Value' | \ awk '{gsub(/ /,""); print}'` echo "$cpu_temp $cpu_load" > $cache_file # echo -e "HTTP/1.1 200 OK\n\n$cpu_temp $cpu_load" | nc -l -k -p 8080 -q 1; sleep 1 done