I am batman
This commit is contained in:
64
scripts/cpuinfo.sh
Executable file
64
scripts/cpuinfo.sh
Executable file
@@ -0,0 +1,64 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
map_floor() {
|
||||
|
||||
IFS=', ' read -r -a pairs <<< "$1"
|
||||
|
||||
if [[ ${pairs[-1]} != *":"* ]]; then
|
||||
def_val="${pairs[-1]}"
|
||||
unset 'pairs[${#pairs[@]}-1]'
|
||||
fi
|
||||
for pair in "${pairs[@]}"; do
|
||||
IFS=':' read -r key value <<< "$pair"
|
||||
if [ ${2%%.*} -gt $key ]; then
|
||||
echo "$value"
|
||||
return
|
||||
fi
|
||||
done
|
||||
[ -n "$def_val" ] && echo $def_val || echo " "
|
||||
}
|
||||
|
||||
# Define glyphs
|
||||
if [[ $NO_EMOJI -eq 1 ]]; then
|
||||
temp_lv="85:, 65:, 45:☁, ❄"
|
||||
else
|
||||
temp_lv="85:🌋, 65:🔥, 45:☁️, ❄️"
|
||||
fi
|
||||
util_lv="90:, 60:, 30:, "
|
||||
|
||||
# Get static CPU information
|
||||
model=$(lscpu | awk -F': ' '/Model name/ {gsub(/^ *| *$| CPU.*/,"",$2); print $2}')
|
||||
maxfreq=$(lscpu | awk '/CPU max MHz/ { sub(/\..*/,"",$4); print $4}')
|
||||
|
||||
# Get CPU stat
|
||||
statFile=$(cat /proc/stat | head -1)
|
||||
prevStat=$(awk '{print $2+$3+$4+$6+$7+$8 }' <<< $statFile)
|
||||
prevIdle=$(awk '{print $5 }' <<< $statFile)
|
||||
|
||||
while true; do
|
||||
# Get CPU stat
|
||||
statFile=$(cat /proc/stat | head -1)
|
||||
currStat=$(awk '{print $2+$3+$4+$6+$7+$8 }' <<< $statFile)
|
||||
currIdle=$(awk '{print $5 }' <<< $statFile)
|
||||
diffStat=$((currStat-prevStat))
|
||||
diffIdle=$((currIdle-prevIdle))
|
||||
|
||||
# Get dynamic CPU information
|
||||
utilization=$(awk -v stat="$diffStat" -v idle="$diffIdle" 'BEGIN {printf "%.1f", (stat/(stat+idle))*100}')
|
||||
temperature=$(sensors | awk -F': ' '/Package id 0|Tctl/ { gsub(/^ *\+?|\..*/,"",$2); print $2; f=1; exit} END { if (!f) print "N/A"; }')
|
||||
frequency=$(cat /proc/cpuinfo | awk '/cpu MHz/{ sum+=$4; c+=1 } END { printf "%.0f", sum/c }')
|
||||
|
||||
# Generate glyphs
|
||||
icons=$(echo "$(map_floor "$util_lv" $utilization)$(map_floor "$temp_lv" $temperature)")
|
||||
speedo=$(echo ${icons:0:1})
|
||||
thermo=$(echo ${icons:1:1})
|
||||
emoji=$(echo ${icons:2})
|
||||
|
||||
# Print the output
|
||||
echo "{\"text\":\"$thermo $temperature°C\", \"tooltip\":\"$model\n$thermo Temperature: $temperature°C $emoji\n$speedo Utilization: $utilization%\n Clock Speed: $frequency/$maxfreq MHz\"}"
|
||||
|
||||
# Store state and sleep
|
||||
prevStat=$currStat
|
||||
prevIdle=$currIdle
|
||||
sleep 5
|
||||
done
|
||||
Reference in New Issue
Block a user