42 lines
1.4 KiB
Bash
Executable File
42 lines
1.4 KiB
Bash
Executable File
#!/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 cat /proc/cpuinfo | grep -i intel > /dev/null; then
|
|
cpu_temp_sensor="/intelcpu/0/temperature/0"
|
|
elif cat /proc/cpuinfo | grep -i amd > /dev/null; then
|
|
cpu_temp_sensor="/amdcpu/0/temperature/0"
|
|
else
|
|
return 1
|
|
fi
|
|
|
|
while true; do
|
|
# Assumes OpenHardwareMonitor is running and emitting data to WMI so we can
|
|
# access it via the Windows hosts powershell.exe.
|
|
raw_cpu_temp=$(powershell.exe -NoProfile \
|
|
"(Get-WmiObject -Namespace \"root/OpenHardwareMonitor\" -Query 'select Value from Sensor WHERE Identifier LIKE \"$cpu_temp_sensor\"').Value" \
|
|
| sed 's/\r//')
|
|
cpu_temp=$(printf "%.1f°C" "$raw_cpu_temp")
|
|
|
|
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) }'`"
|
|
|
|
raw_battery=$(powershell.exe -NoProfile \
|
|
"(Get-WmiObject win32_battery).EstimatedChargeRemaining" \
|
|
| sed 's/\r//')
|
|
if [ "" != "$raw_battery" ]; then
|
|
battery=$(printf "%3d%%" "$raw_battery")
|
|
fi
|
|
|
|
echo "$cpu_temp$cpu_load$battery" > $cache_file
|
|
# echo -e "HTTP/1.1 200 OK\n\n$cpu_temp $cpu_load" | nc -l -k -p 8080 -q 1;
|
|
sleep 2
|
|
done
|