|
#!/bin/bash |
|
|
|
######################################################### |
|
# viewsensors.sh # |
|
# # |
|
# - Author: # |
|
# Bruno Moreira-Guedes <[email protected]> # |
|
# - Date: 2021-11-28 # |
|
# - Description: # |
|
# Small script to view CPU/GPU temperature in # |
|
# colors. I just wrote it because I wanted to see # |
|
# it well in a transparent terminal window on # |
|
# alacritty / wayfire. I'm not the best with # |
|
# colors, so feel free to define better ones. # |
|
# # |
|
######################################################### |
|
|
|
TMPFILE="/tmp/sensors" |
|
TAB_SIZE=9 |
|
LOG_DST="/dev/null" |
|
|
|
tabs $TAB_SIZE |
|
|
|
relabel(){ |
|
sed "s/$1/$2/" |
|
} |
|
|
|
sensors_read(){ |
|
sensors coretemp-isa-0000 \ |
|
nouveau-pci-0100 >"$TMPFILE" |
|
} |
|
|
|
s_log(){ |
|
cat >> $LOG_DST |
|
# Never mind those log lines, I was just using |
|
# it for debug purposes |
|
} |
|
|
|
file_read(){ |
|
cat $TMPFILE |
|
} |
|
|
|
process_input(){ |
|
relabel "temp1:" "GPU:" | |
|
relabel "Package id 0:" "Coreavg:" | |
|
grep -e '\+[[:digit:][:punct:]]\{1,\}C' | |
|
cut -d'(' -f1 | sed 's/[[:blank:]]//g' | |
|
grep -v '^[[:space:]]*$' |
|
} |
|
|
|
# Likely no longer necessary: |
|
# hdr_unspace(){ |
|
# sed \ |
|
# 's/\t\(\[[:alnum:]]\{1,\}\)\([[:space:]]\{1,\}\)\([[:alnum:]]\{1,\}\)\t/\1\3/g' |
|
# } |
|
|
|
get_col(){ |
|
# From when it was get_ln: |
|
# sed -n "$1"p |
|
cut -d':' -f"$1" |
|
} |
|
|
|
fillspace(){ |
|
n="$1" |
|
cur=0 |
|
spc="" |
|
while [ "$cur" -lt "$n" ]; do |
|
cur=$(($cur + 1)) |
|
spc="$spc " |
|
done |
|
echo "$spc" |
|
} |
|
|
|
tk_centralize(){ |
|
token=$(cat) |
|
tk_sz=${#token} |
|
size=$(($TAB_SIZE - 1)) |
|
if [ "$1" != "" ]; then |
|
size="$1" |
|
fi |
|
echo "tk_centralize" \ |
|
" size=$size tk_sz=$tk_sz" \ |
|
" token='$token':" | s_log |
|
|
|
offset=$(bc <<< "($size/2) - ($tk_sz/2)") |
|
echo "offset=$offset" | s_log |
|
|
|
end=$(($offset)) |
|
echo "end=$end" | s_log |
|
|
|
tk_ret=$(fillspace "$end") |
|
echo "tk_centralize size=$size tk_ret='$tk_ret'" | |
|
s_log |
|
|
|
tk_ret="$token""$tk_ret" |
|
echo "tk_centralize size=$size " \ |
|
"tk_ret='$tk_ret'" | s_log |
|
|
|
begin=$(($size - ${#tk_ret})) |
|
echo "begin=$begin " \ |
|
"fillspace='$(fillspace $begin)'" | |
|
s_log |
|
|
|
tk_ret=$(fillspace "$begin")"$tk_ret" |
|
echo "$tk_ret" |
|
echo "tk_ret='$tk_ret'" | s_log |
|
} |
|
|
|
field_tkformat(){ |
|
ret="" |
|
sep="" |
|
ctr=0 |
|
while read nx_tk; do |
|
ret="$ret""$sep"$(echo "$nx_tk" | \ |
|
tk_centralize) |
|
ctr=$(($ctr + 1)) |
|
sep="\t" |
|
done |
|
COLUMNS_LAST_TKLINE="$ctr" |
|
echo "$ret" |
|
} |
|
|
|
colorify(){ |
|
GREP_COLOR="$1" grep -E \ |
|
--color=always "^.*$" |
|
} |
|
|
|
color_chars(){ |
|
colormult=$1 |
|
count=0 |
|
shift 1 |
|
t_s="a" |
|
colorized_a=$(echo $t_s | \ |
|
GREP_COLOR="$*" grep --color=always a) |
|
echo $((${#colorized_a} - 1)) |
|
# Temporarily removed: |
|
#for i in $(echo $* | tr ';' '\n'); do |
|
# echo $i | \ |
|
# grep -E '^[[:digit:]]{1,3}$' \ |
|
# 2>&1 >/dev/null && \ |
|
# count=$(($count + $colormult)) |
|
#done |
|
#echo "$count" |
|
} |
|
|
|
process_column(){ |
|
col_n="$1" |
|
colors="$2" |
|
echo "process_column col_n='$col_n' " \ |
|
"colors='$colors' cols=$(tput cols) " \ |
|
"color_chars=$(color_chars 10)" | s_log |
|
process_input | get_col "$col_n" | |
|
field_tkformat | colorify "$2" | tk_centralize \ |
|
$((`tput cols` + $(color_chars 10 "$colors"))) |
|
} |
|
|
|
sensors_read |
|
HEADER=$(file_read | process_column 1 '01;02;04;31;40') |
|
DATA=$(file_read | process_column 2 '01;02;33;40') |
|
|
|
echo -e "$HEADER" |
|
echo -e "$DATA" |
|
|
|
# Kept for reference (of how this started) |
|
#tabs 9 && sensors coretemp-isa-0000 nouveau-pci-0100|sed 's/temp1:/ GPU: /'|sed 's/Package\ id\ 0:/Coreavg: /' |grep -e '\+[0-9\.]*°C\s'|cut -d'(' -f1|sed 's/[[:blank:]]\{1,\}/\ /g'|datamash transpose -t ':'|sed 's/\ *:\ */:/g'|sed 's/^\ //'|sed 's/:/\t/g'|sed 's/\(Core [0-9]\)/ \1/g'|sed 's/GPU/ GPU /'|GREP_COLOR='01;02;04;31;40' grep -E --color=always "^|^Core.*$"|GREP_COLOR='01;02;33;40' grep -E --color=auto "^|[[:punct:][:digit:]]{1,}C.*" |
|
tabs 8 |