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
Showing 2 changed files+20-12
▼shell/plugins/sysmon/BarWidget.qml
+6-4
| @@ -12,6 +12,7 @@ BarWidget { | ||
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,14 +24,15 @@ BarWidget { | ||
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,7 +46,7 @@ BarWidget { | ||
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,16 +1,15 @@ | ||
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,7 +17,14 @@ while true; do | ||
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 | |