Sysmon: nerd font icons only, CPU temp from /sys/class/thermal, network MB/s speed (delta), 1s refresh

swadhinbiswas committed 2 months ago
bdc0b85
1 parent 7dd47f5
commit bdc0b85
2 files changed
+20 -12
▼shell/plugins/sysmon/BarWidget.qml
+6-4
12
12
property int memPct: 0
13
13
property int diskPct: 0
14
14
property int gpuTemp: 0
15
+ property int cpuTemp: 0
15
16
property string netDown: "0"
16
17
property string netUp: "0"
17
18
23
24
command: ["bash", scriptPath]
24
25
stdout: SplitParser {
25
26
onRead: function(line) {
26
- var m = String(line).match(/C=(\d+) M=(\d+) D=(\d+) G=(\d+) RX=([\d.]+) TX=([\d.]+)/)
27
+ var m = String(line).match(/C=(\d+) M=(\d+) D=(\d+) G=(\d+) T=(\d+) RX=([\d.]+) TX=([\d.]+)/)
27
28
if (m) {
28
29
root.cpuPct = parseInt(m[1])
29
30
root.memPct = parseInt(m[2])
30
31
root.diskPct = parseInt(m[3])
31
32
root.gpuTemp = parseInt(m[4])
32
- root.netDown = m[5]
33
- root.netUp = m[6]
33
+ root.cpuTemp = parseInt(m[5])
34
+ root.netDown = m[6]
35
+ root.netUp = m[7]
34
36
}
35
37
}
36
38
}
44
46
id: label
45
47
anchors.verticalCenter: parent.verticalCenter
46
48
anchors.horizontalCenter: parent.horizontalCenter
47
- text: root.cpuPct + "%cpu " + root.memPct + "%ram " + root.gpuTemp + "°gpu " + root.diskPct + "%disk " + root.netDown + "↓ " + root.netUp + "↑"
49
+ text: "" + root.cpuPct + "% " + root.cpuTemp + "\u00b0 󰗻" + root.memPct + "% 󰋓" + root.diskPct + "% 󱋗" + root.gpuTemp + "\u00b0 󰇣" + root.netDown + "\u2193 " + root.netUp + "\u2191"
48
50
color: root.bar ? root.bar.barForeground : Color.foreground
49
51
font.family: root.bar ? root.bar.fontFamily : Style.font.family
50
52
font.pixelSize: Style.font.body
51
53
▼shell/plugins/sysmon/sysmon-stats.sh
+14-8
1
1
#!/bin/bash
2
-# sysmon-stats.sh — outputs "C=cpu M=mem D=disk G=gpu RX=down TX=up" every 2 seconds
3
2
prev_cpu=$(awk '/^cpu /{print $2+$3+$4+$5+$6+$7+$8}' /proc/stat)
4
3
prev_idle=$(awk '/^cpu /{print $5}' /proc/stat)
4
+prev_rx=$(awk 'NR>2{t+=$2} END{print t+0}' /proc/net/dev)
5
+prev_tx=$(awk 'NR>2{t+=$10} END{print t+0}' /proc/net/dev)
5
6
while true; do
6
7
sleep 1
7
8
cur_cpu=$(awk '/^cpu /{print $2+$3+$4+$5+$6+$7+$8}' /proc/stat)
8
9
cur_idle=$(awk '/^cpu /{print $5}' /proc/stat)
9
- dt=$(( cur_cpu - prev_cpu ))
10
- di=$(( cur_idle - prev_idle ))
10
+ dt=$(( cur_cpu - prev_cpu )); di=$(( cur_idle - prev_idle ))
11
11
if [ "$dt" -gt 0 ]; then cpu=$(( 100 * (dt - di) / dt )); else cpu=0; fi
12
- prev_cpu=$cur_cpu
13
- prev_idle=$cur_idle
12
+ prev_cpu=$cur_cpu; prev_idle=$cur_idle
14
13
mem=$(awk '/^MemTotal:/{t=$2} /^MemAvailable:/{a=$2} END{printf "%d", (t-a)*100/t}' /proc/meminfo)
15
14
dsk=$(df --output=pcent / 2>/dev/null | tail -1 | tr -dc '0-9')
16
15
gpu=0
18
17
gpu=$(nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader,nounits 2>/dev/null | head -1)
19
18
fi
20
19
gpu=${gpu:-0}
21
- rx=$(awk 'NR>2{t+=$2} END{printf "%.1f", t/1048576}' /proc/net/dev)
22
- tx=$(awk 'NR>2{t+=$10} END{printf "%.1f", t/1048576}' /proc/net/dev)
23
- echo "C=$cpu M=$mem D=${dsk:-0} G=$gpu RX=$rx TX=$tx"
20
+ cputemp=0
21
+ if [ -f /sys/class/thermal/thermal_zone0/temp ]; then
22
+ cputemp=$(awk '{printf "%d", $1/1000}' /sys/class/thermal/thermal_zone0/temp)
23
+ fi
24
+ cur_rx=$(awk 'NR>2{t+=$2} END{print t+0}' /proc/net/dev)
25
+ cur_tx=$(awk 'NR>2{t+=$10} END{print t+0}' /proc/net/dev)
26
+ rx_mbps=$(awk "BEGIN{printf \"%.1f\", ($cur_rx-$prev_rx)/1048576}")
27
+ tx_mbps=$(awk "BEGIN{printf \"%.1f\", ($cur_tx-$prev_tx)/1048576}")
28
+ prev_rx=$cur_rx; prev_tx=$cur_tx
29
+ echo "C=$cpu M=$mem D=${dsk:-0} G=$gpu T=$cputemp RX=$rx_mbps TX=$tx_mbps"
24
30
done
25
31