From e66fe95530687ccd922200a2da19daf7cc873b76 Mon Sep 17 00:00:00 2001
From: Karthik Mudaliar <45604318+karthikmudaliarX@users.noreply.github.com>
Date: Wed, 22 Jul 2026 20:37:02 +0530
Subject: [PATCH] system-monitor-graph@rcassani: Add CPU fan monitoring (#1868)
* system-monitor-graph@rcassani: Add CPU fan monitoring
* system-monitor-graph@rcassani: Add fan speed graph
* system-monitor-graph@rcassani: Refine fan status display
* system-monitor-graph@rcassani: Address fan review feedback
* system-monitor-graph@rcassani: Use fixed fan graph scale
* system-monitor-graph@rcassani: Rename fan setting
---
README.md | 11 +-
.../system-monitor-graph@rcassani/desklet.js | 100 ++++++++++++++++++
.../metadata.json | 2 +-
files/system-monitor-graph@rcassani/po/ca.po | 88 +++++++++------
files/system-monitor-graph@rcassani/po/da.po | 84 ++++++++++-----
files/system-monitor-graph@rcassani/po/de.po | 84 ++++++++++-----
files/system-monitor-graph@rcassani/po/es.po | 87 ++++++++++-----
files/system-monitor-graph@rcassani/po/fi.po | 86 ++++++++++-----
files/system-monitor-graph@rcassani/po/hu.po | 88 +++++++++------
files/system-monitor-graph@rcassani/po/it.po | 84 ++++++++++-----
files/system-monitor-graph@rcassani/po/nl.po | 84 ++++++++++-----
.../system-monitor-graph@rcassani/po/pt_BR.po | 86 ++++++++++-----
files/system-monitor-graph@rcassani/po/ro.po | 91 ++++++++++------
files/system-monitor-graph@rcassani/po/ru.po | 84 ++++++++++-----
.../po/system-monitor-graph@rcassani.pot | 82 +++++++++-----
files/system-monitor-graph@rcassani/po/vi.po | 87 ++++++++++-----
.../settings-schema.json | 3 +-
screenshot5.png | Bin 0 -> 83294 bytes
18 files changed, 852 insertions(+), 379 deletions(-)
create mode 100644 screenshot5.png
diff --git a/README.md b/README.md
index c0fec67..81344f4 100644
--- a/README.md
+++ b/README.md
@@ -10,12 +10,13 @@ Four instances of the Desklet in action.
This project has been inspired from other Desklets such as [Disk Space](https://cinnamon-spices.linuxmint.com/desklets/view/39), [CPU Load](https://cinnamon-spices.linuxmint.com/desklets/view/44), [Simple system monitor](https://cinnamon-spices.linuxmint.com/desklets/view/29), [Network usage monitor](https://cinnamon-spices.linuxmint.com/desklets/view/15), [Top](https://cinnamon-spices.linuxmint.com/desklets/view/41), and the [Rainmeter Win10 Widgets](https://win10widgets.com/).
## Features
-### Variables to monitor (v2.0 - July 2025)
+### Variables to monitor (v2.2 - July 2026)
| System variable | Description |
| ----------- | ----------- |
| CPU | CPU usage in % |
-| CPU Temperature | CPU temperature C or F |
+| CPU Temperature | CPU temperature in C or F |
+| CPU Fan | CPU fan speed in RPM and on/off status |
| RAM | Used RAM as % of total, and in GB |
| Swap | Used Swap space as % of total, and in GB |
| HDD | % of I/O activity, and free and total space in the filesystem (partition) indicated by the user |
@@ -27,6 +28,7 @@ This project has been inspired from other Desklets such as [Disk Space](https://
Each variable is calculated every `Refresh interval` seconds (Min. 1 s, Max. 60 s.), and the graph shows the last `Duration of the graph` period (Min. 30 s, Max. 60 min).
GPU graphs work for NVIDIA, discrete AMD and built-in AMD.
+Fan monitoring uses CPU-labelled sensors and known laptop cooling drivers. It avoids guessing from unrelated unlabelled fans, and reports when an identifiable CPU fan is not detected.
### Customizable visual elements
@@ -57,6 +59,11 @@ Another screenshot.
Screenshot with temperature and battery graphs.
+
+
+CPU fan speed history while the fan is running and stopped.
+
+
## TODO
- [x] Add network
- [x] Battery levels for main battery (laptop)
diff --git a/files/system-monitor-graph@rcassani/desklet.js b/files/system-monitor-graph@rcassani/desklet.js
index 317fc83..338c053 100644
--- a/files/system-monitor-graph@rcassani/desklet.js
+++ b/files/system-monitor-graph@rcassani/desklet.js
@@ -18,6 +18,10 @@ const KIB_TO_B = 1024; // 1 KiB = 1,024 B
const CPU_TEMP_MIN = 20; // Minimum CPU temperature
const CPU_TEMP_MAX = 100; // Maximum CPU temperature
+const CPU_FANSPEED_MAX = 4000; // CPU fan graph full-scale speed
+const CPU_FAN_RETRY_MIN = 5; // Initial retry delay in seconds
+const CPU_FAN_RETRY_MAX = 300; // Maximum retry delay in seconds
+const CPU_FAN_RETRY_MULTIPLIER = 2;
const UUID = "system-monitor-graph@rcassani";
const DESKLET_PATH = imports.ui.deskletManager.deskletMeta[UUID].path;
@@ -190,6 +194,10 @@ SystemMonitorGraph.prototype = {
// temperature values
this.cpu_temperature = NaN;
this.gpu_temperature = NaN;
+ // cpu fan values
+ this.cpu_fan_rpm = NaN;
+ this.cpu_fan_file = "";
+ this.cpu_fan_discovery_complete = false;
// set colors
switch (this.type) {
@@ -232,6 +240,9 @@ SystemMonitorGraph.prototype = {
});
}
});
+ if (this.type == "cpu" && this.cpu_variable == "fan") {
+ this.rediscover_cpu_fan();
+ }
// find file for overall AMD GPU temperature
let gpu_path_temp = "/sys/class/drm/card" + this.gpu_id + "/device/hwmon/";
this.get_temperature_file_by_label(gpu_path_temp, 'edge', (result) => {
@@ -290,6 +301,26 @@ SystemMonitorGraph.prototype = {
text2 = Math.round(this.cpu_temperature * 9 / 5 + 32).toString() + "°F";
}
break;
+
+ case "fan":
+ this.get_cpu_fan_speed(this.cpu_fan_file);
+ value = isNaN(this.cpu_fan_rpm) ? 0 : this.cpu_fan_rpm / CPU_FANSPEED_MAX;
+ value = value < 0 ? 0 : value > 1 ? 1 : value;
+ text1 = _("CPU Fan");
+ text2_size = Math.max(1, text2_size - 1);
+ if (!isNaN(this.cpu_fan_rpm)) {
+ if (this.cpu_fan_rpm >= 1) {
+ text2 = this.cpu_fan_rpm + " " + _("RPM");
+ text3 = "🟢 " + _("On");
+ } else {
+ text3 = "🔴 " + _("Off");
+ }
+ } else if (this.cpu_fan_discovery_complete) {
+ text2 = _("Not detected");
+ } else {
+ text2 = _("Detecting...");
+ }
+ break;
}
break;
@@ -1142,6 +1173,75 @@ SystemMonitorGraph.prototype = {
});
},
+ get_cpu_fan_file: function(callback) {
+ // Prefer explicitly labelled CPU fans, then known laptop cooling drivers.
+ // Do not guess from an unrelated, unlabelled hwmon fan.
+ let argv = ['/bin/sh', '-c', "for fan_file in $({ grep -s -i -l -d skip -E 'cpu|processor' /sys/class/hwmon/hwmon*/fan*_label | sed 's/_label/_input/'; grep -s -l -d skip -E '^(dell_smm|thinkpad)$' /sys/class/hwmon/hwmon*/name | sed 's#/name#/fan1_input#'; }); do [ -r \"$fan_file\" ] && { printf '%s' \"$fan_file\"; break; }; done"];
+ spawnAsyncWithOutput(argv, (success, output) => {
+ callback(success && output ? output.trim() : "");
+ });
+ },
+
+ schedule_cpu_fan_retry: function() {
+ if (this.cpu_fan_retry_delay == null) this.cpu_fan_retry_delay = CPU_FAN_RETRY_MIN;
+ this.cpu_fan_file = "";
+ this.cpu_fan_rpm = NaN;
+ this.cpu_fan_discovery_complete = true;
+ this.cpu_fan_next_discovery_time = GLib.get_monotonic_time()
+ + (this.cpu_fan_retry_delay * GLib.USEC_PER_SEC);
+ this.cpu_fan_retry_delay = Math.min(
+ this.cpu_fan_retry_delay * CPU_FAN_RETRY_MULTIPLIER,
+ CPU_FAN_RETRY_MAX);
+ },
+
+ rediscover_cpu_fan: function() {
+ // Clear a stale hwmon path first. Missing or failed sensors are retried
+ // with bounded backoff instead of spawning another lookup every refresh.
+ if (this.cpu_fan_discovery_in_progress) return;
+ if (this.cpu_fan_retry_delay == null) this.cpu_fan_retry_delay = CPU_FAN_RETRY_MIN;
+ this.cpu_fan_discovery_in_progress = true;
+ this.cpu_fan_file = "";
+ this.cpu_fan_rpm = NaN;
+ this.cpu_fan_discovery_complete = false;
+ this.get_cpu_fan_file((result) => {
+ this.cpu_fan_discovery_in_progress = false;
+ if (result == "") {
+ this.schedule_cpu_fan_retry();
+ } else {
+ this.cpu_fan_file = result;
+ this.cpu_fan_discovery_complete = true;
+ this.cpu_fan_next_discovery_time = 0;
+ }
+ });
+ },
+
+ get_cpu_fan_speed: function(fan_file) {
+ if(fan_file == null || fan_file == "") {
+ if (this.cpu_fan_discovery_complete
+ && GLib.get_monotonic_time() >= this.cpu_fan_next_discovery_time) {
+ this.rediscover_cpu_fan();
+ }
+ return;
+ }
+ Gio.file_new_for_path(fan_file).load_contents_async(null, (file, response) => {
+ try {
+ let [success, contents, tag] = file.load_contents_finish(response);
+ if (success) {
+ let rpm = parseInt(ByteArray.toString(contents).trim());
+ this.cpu_fan_rpm = isNaN(rpm) ? NaN : Math.max(0, rpm);
+ this.cpu_fan_retry_delay = CPU_FAN_RETRY_MIN;
+ this.cpu_fan_next_discovery_time = 0;
+ } else {
+ this.schedule_cpu_fan_retry();
+ }
+ GLib.free(contents);
+ } catch(error) {
+ this.schedule_cpu_fan_retry();
+ global.log('CPU fan speed file read error: ' + error.toString());
+ }
+ });
+ },
+
get_temperature_file_by_label: function(path, label, callback) {
// search for temperture file: 'path'/*/temp*_input associated to file path/*/temp*_label with content 'label'
let argv = ['/bin/sh', '-c', "grep -s -l -d skip '" + label + "' " + path + "*/temp*_label | sed 's/_label/_input/' | head -n 1"];
diff --git a/files/system-monitor-graph@rcassani/metadata.json b/files/system-monitor-graph@rcassani/metadata.json
index dd88a9b..f8c9b67 100644
--- a/files/system-monitor-graph@rcassani/metadata.json
+++ b/files/system-monitor-graph@rcassani/metadata.json
@@ -3,6 +3,6 @@
"uuid": "system-monitor-graph@rcassani",
"name": "System monitor graph",
"description": "Creates graphs for system variables.",
- "version": "2.1",
+ "version": "2.2",
"prevent-decorations": true
}
diff --git a/files/system-monitor-graph@rcassani/po/ca.po b/files/system-monitor-graph@rcassani/po/ca.po
index a8337ab..4c9dafe 100644
--- a/files/system-monitor-graph@rcassani/po/ca.po
+++ b/files/system-monitor-graph@rcassani/po/ca.po
@@ -6,9 +6,8 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: https://github.com/linuxmint/cinnamon-spices-desklets/"
-"issues\n"
-"POT-Creation-Date: 2026-03-23 21:24-0400\n"
+"Report-Msgid-Bugs-To: https://github.com/linuxmint/cinnamon-spices-desklets/issues\n"
+"POT-Creation-Date: 2026-07-22 14:45+0530\n"
"PO-Revision-Date: 2025-09-29 04:41+0200\n"
"Last-Translator: Daniel \n"
"Language-Team: \n"
@@ -20,104 +19,128 @@ msgstr ""
"X-Generator: Poedit 3.6\n"
#. settings-schema.json->type->options
-#. desklet.js:275
+#. desklet.js:288
msgid "CPU"
msgstr "CPU"
-#. desklet.js:284
+#. desklet.js:297
msgid "CPU Temperature"
msgstr ""
-#. desklet.js:301 desklet.js:319 desklet.js:339 desklet.js:380 desklet.js:684
+#. desklet.js:309
+msgid "CPU Fan"
+msgstr ""
+
+#. desklet.js:313
+msgid "RPM"
+msgstr ""
+
+#. desklet.js:314
+msgid "On"
+msgstr ""
+
+#. desklet.js:316
+msgid "Off"
+msgstr ""
+
+#. desklet.js:319
+msgid "Not detected"
+msgstr ""
+
+#. desklet.js:321
+msgid "Detecting..."
+msgstr ""
+
+#. desklet.js:334 desklet.js:352 desklet.js:372 desklet.js:413 desklet.js:717
msgid "GB"
msgstr "GB"
-#. desklet.js:304 desklet.js:322 desklet.js:342 desklet.js:383 desklet.js:698
+#. desklet.js:337 desklet.js:355 desklet.js:375 desklet.js:416 desklet.js:731
msgid "GiB"
msgstr "GiB"
#. settings-schema.json->type->options
-#. desklet.js:306
+#. desklet.js:339
msgid "RAM"
msgstr "RAM"
#. settings-schema.json->type->options
-#. desklet.js:324
+#. desklet.js:357
msgid "Swap"
msgstr "Swap"
-#. desklet.js:347
+#. desklet.js:380
msgid "free of"
msgstr "lliure de"
-#. desklet.js:363
+#. desklet.js:396
msgid "GPU Usage"
msgstr "Ús de GPU"
-#. desklet.js:385
+#. desklet.js:418
msgid "GPU Memory"
msgstr "Memòria de la GPU"
-#. desklet.js:401
+#. desklet.js:434
#, fuzzy
msgid "GPU Temperature"
msgstr "Fabricant de la GPU"
#. settings-schema.json->type->options
-#. desklet.js:415
+#. desklet.js:448
msgid "Network"
msgstr "Xarxa"
#. settings-schema.json->type->options
-#. desklet.js:428
+#. desklet.js:461
msgid "Battery"
msgstr ""
-#. desklet.js:431
+#. desklet.js:464
msgid "Fully charged"
msgstr ""
-#. desklet.js:432
+#. desklet.js:465
msgid "Not charging"
msgstr ""
-#. desklet.js:434
+#. desklet.js:467
msgid " hrs"
msgstr ""
-#. desklet.js:655 desklet.js:678
+#. desklet.js:688 desklet.js:711
msgid "b"
msgstr "b"
-#. desklet.js:657 desklet.js:692 desklet.js:706
+#. desklet.js:690 desklet.js:725 desklet.js:739
msgid "B"
msgstr "B"
-#. desklet.js:670
+#. desklet.js:703
msgid "Gb"
msgstr "Gb"
-#. desklet.js:673
+#. desklet.js:706
msgid "Mb"
msgstr "Mb"
-#. desklet.js:676
+#. desklet.js:709
msgid "Kb"
msgstr "Kb"
-#. desklet.js:687
+#. desklet.js:720
msgid "MB"
msgstr "MB"
-#. desklet.js:690
+#. desklet.js:723
msgid "KB"
msgstr "KB"
-#. desklet.js:701
+#. desklet.js:734
msgid "MiB"
msgstr "MiB"
-#. desklet.js:704
+#. desklet.js:737
msgid "KiB"
msgstr "KiB"
@@ -173,6 +196,10 @@ msgstr "Ús"
msgid "Temperature"
msgstr ""
+#. settings-schema.json->cpu-variable->options
+msgid "Fan Speed"
+msgstr ""
+
#. settings-schema.json->temperature-units-cpu->options
#. settings-schema.json->temperature-units-gpu->options
msgid "°C"
@@ -252,10 +279,11 @@ msgstr "Interfície de xarxa a monitorar"
#. settings-schema.json->network-interface->tooltip
msgid ""
-"Leave empty to monitor all interfaces combined. Examples: eth0, wlan0, enp0s3"
+"Leave empty to monitor all interfaces combined. Examples: eth0, wlan0, "
+"enp0s3"
msgstr ""
-"Deixeu-ho en blanc per a monitorar totes les interfícies. Per exemple: eth0, "
-"wlan0, enp0s3"
+"Deixeu-ho en blanc per a monitorar totes les interfícies. Per exemple: eth0,"
+" wlan0, enp0s3"
#. settings-schema.json->battery-name->description
#, fuzzy
diff --git a/files/system-monitor-graph@rcassani/po/da.po b/files/system-monitor-graph@rcassani/po/da.po
index e9776c8..ced31ba 100644
--- a/files/system-monitor-graph@rcassani/po/da.po
+++ b/files/system-monitor-graph@rcassani/po/da.po
@@ -6,9 +6,8 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: https://github.com/linuxmint/cinnamon-spices-desklets/"
-"issues\n"
-"POT-Creation-Date: 2026-03-23 21:24-0400\n"
+"Report-Msgid-Bugs-To: https://github.com/linuxmint/cinnamon-spices-desklets/issues\n"
+"POT-Creation-Date: 2026-07-22 14:45+0530\n"
"PO-Revision-Date: 2026-04-06 14:06+0200\n"
"Last-Translator: Alan Mortensen \n"
"Language-Team: \n"
@@ -20,103 +19,127 @@ msgstr ""
"X-Generator: Poedit 3.4.2\n"
#. settings-schema.json->type->options
-#. desklet.js:275
+#. desklet.js:288
msgid "CPU"
msgstr "CPU"
-#. desklet.js:284
+#. desklet.js:297
msgid "CPU Temperature"
msgstr "CPU-temperatur"
-#. desklet.js:301 desklet.js:319 desklet.js:339 desklet.js:380 desklet.js:684
+#. desklet.js:309
+msgid "CPU Fan"
+msgstr ""
+
+#. desklet.js:313
+msgid "RPM"
+msgstr ""
+
+#. desklet.js:314
+msgid "On"
+msgstr ""
+
+#. desklet.js:316
+msgid "Off"
+msgstr ""
+
+#. desklet.js:319
+msgid "Not detected"
+msgstr ""
+
+#. desklet.js:321
+msgid "Detecting..."
+msgstr ""
+
+#. desklet.js:334 desklet.js:352 desklet.js:372 desklet.js:413 desklet.js:717
msgid "GB"
msgstr "GB"
-#. desklet.js:304 desklet.js:322 desklet.js:342 desklet.js:383 desklet.js:698
+#. desklet.js:337 desklet.js:355 desklet.js:375 desklet.js:416 desklet.js:731
msgid "GiB"
msgstr "GiB"
#. settings-schema.json->type->options
-#. desklet.js:306
+#. desklet.js:339
msgid "RAM"
msgstr "RAM"
#. settings-schema.json->type->options
-#. desklet.js:324
+#. desklet.js:357
msgid "Swap"
msgstr "Swap"
-#. desklet.js:347
+#. desklet.js:380
msgid "free of"
msgstr "ledig ud af"
-#. desklet.js:363
+#. desklet.js:396
msgid "GPU Usage"
msgstr "GPU-forbrug"
-#. desklet.js:385
+#. desklet.js:418
msgid "GPU Memory"
msgstr "GPU-hukommelse"
-#. desklet.js:401
+#. desklet.js:434
msgid "GPU Temperature"
msgstr "GPU-temperatur"
#. settings-schema.json->type->options
-#. desklet.js:415
+#. desklet.js:448
msgid "Network"
msgstr "Netværk"
#. settings-schema.json->type->options
-#. desklet.js:428
+#. desklet.js:461
msgid "Battery"
msgstr "Batteri"
-#. desklet.js:431
+#. desklet.js:464
msgid "Fully charged"
msgstr "Fuldt opladet"
-#. desklet.js:432
+#. desklet.js:465
msgid "Not charging"
msgstr "Oplader ikke"
-#. desklet.js:434
+#. desklet.js:467
msgid " hrs"
msgstr "timer"
-#. desklet.js:655 desklet.js:678
+#. desklet.js:688 desklet.js:711
msgid "b"
msgstr "b"
-#. desklet.js:657 desklet.js:692 desklet.js:706
+#. desklet.js:690 desklet.js:725 desklet.js:739
msgid "B"
msgstr "B"
-#. desklet.js:670
+#. desklet.js:703
msgid "Gb"
msgstr "Gb"
-#. desklet.js:673
+#. desklet.js:706
msgid "Mb"
msgstr "Mb"
-#. desklet.js:676
+#. desklet.js:709
msgid "Kb"
msgstr "Kb"
-#. desklet.js:687
+#. desklet.js:720
msgid "MB"
msgstr "MB"
-#. desklet.js:690
+#. desklet.js:723
msgid "KB"
msgstr "KB"
-#. desklet.js:701
+#. desklet.js:734
msgid "MiB"
msgstr "MiB"
-#. desklet.js:704
+#. desklet.js:737
msgid "KiB"
msgstr "KiB"
@@ -170,6 +193,10 @@ msgstr "Forbrug"
msgid "Temperature"
msgstr "Temperatur"
+#. settings-schema.json->cpu-variable->options
+msgid "Fan Speed"
+msgstr ""
+
#. settings-schema.json->temperature-units-cpu->options
#. settings-schema.json->temperature-units-gpu->options
msgid "°C"
@@ -246,7 +273,8 @@ msgstr "Netværksgrænseflade der skal overvåges"
#. settings-schema.json->network-interface->tooltip
msgid ""
-"Leave empty to monitor all interfaces combined. Examples: eth0, wlan0, enp0s3"
+"Leave empty to monitor all interfaces combined. Examples: eth0, wlan0, "
+"enp0s3"
msgstr ""
"Lad feltet være tomt for at overvåge alle grænseflader samlet. Eksempler: "
"eth0, wlan0, enp0s3"
diff --git a/files/system-monitor-graph@rcassani/po/de.po b/files/system-monitor-graph@rcassani/po/de.po
index a3791e3..6bb2ecb 100644
--- a/files/system-monitor-graph@rcassani/po/de.po
+++ b/files/system-monitor-graph@rcassani/po/de.po
@@ -6,9 +6,8 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: https://github.com/linuxmint/cinnamon-spices-desklets/"
-"issues\n"
-"POT-Creation-Date: 2026-03-23 21:24-0400\n"
+"Report-Msgid-Bugs-To: https://github.com/linuxmint/cinnamon-spices-desklets/issues\n"
+"POT-Creation-Date: 2026-07-22 14:45+0530\n"
"PO-Revision-Date: 2022-04-17 18:13+0100\n"
"Last-Translator: Georg Sieber\n"
"Language-Team: \n"
@@ -18,106 +17,130 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
#. settings-schema.json->type->options
-#. desklet.js:275
+#. desklet.js:288
msgid "CPU"
msgstr "CPU"
-#. desklet.js:284
+#. desklet.js:297
msgid "CPU Temperature"
msgstr ""
-#. desklet.js:301 desklet.js:319 desklet.js:339 desklet.js:380 desklet.js:684
+#. desklet.js:309
+msgid "CPU Fan"
+msgstr ""
+
+#. desklet.js:313
+msgid "RPM"
+msgstr ""
+
+#. desklet.js:314
+msgid "On"
+msgstr ""
+
+#. desklet.js:316
+msgid "Off"
+msgstr ""
+
+#. desklet.js:319
+msgid "Not detected"
+msgstr ""
+
+#. desklet.js:321
+msgid "Detecting..."
+msgstr ""
+
+#. desklet.js:334 desklet.js:352 desklet.js:372 desklet.js:413 desklet.js:717
msgid "GB"
msgstr "GB"
-#. desklet.js:304 desklet.js:322 desklet.js:342 desklet.js:383 desklet.js:698
+#. desklet.js:337 desklet.js:355 desklet.js:375 desklet.js:416 desklet.js:731
msgid "GiB"
msgstr "GiB"
#. settings-schema.json->type->options
-#. desklet.js:306
+#. desklet.js:339
msgid "RAM"
msgstr "RAM"
#. settings-schema.json->type->options
-#. desklet.js:324
+#. desklet.js:357
msgid "Swap"
msgstr "Swap"
-#. desklet.js:347
+#. desklet.js:380
msgid "free of"
msgstr "frei von"
-#. desklet.js:363
+#. desklet.js:396
msgid "GPU Usage"
msgstr "GPU-Auslastung"
-#. desklet.js:385
+#. desklet.js:418
msgid "GPU Memory"
msgstr "GPU-Speicher"
-#. desklet.js:401
+#. desklet.js:434
#, fuzzy
msgid "GPU Temperature"
msgstr "GPU-Hersteller"
#. settings-schema.json->type->options
-#. desklet.js:415
+#. desklet.js:448
msgid "Network"
msgstr ""
#. settings-schema.json->type->options
-#. desklet.js:428
+#. desklet.js:461
msgid "Battery"
msgstr ""
-#. desklet.js:431
+#. desklet.js:464
msgid "Fully charged"
msgstr ""
-#. desklet.js:432
+#. desklet.js:465
msgid "Not charging"
msgstr ""
-#. desklet.js:434
+#. desklet.js:467
msgid " hrs"
msgstr ""
-#. desklet.js:655 desklet.js:678
+#. desklet.js:688 desklet.js:711
msgid "b"
msgstr ""
-#. desklet.js:657 desklet.js:692 desklet.js:706
+#. desklet.js:690 desklet.js:725 desklet.js:739
#, fuzzy
msgid "B"
msgstr "GB"
-#. desklet.js:670
+#. desklet.js:703
msgid "Gb"
msgstr ""
-#. desklet.js:673
+#. desklet.js:706
msgid "Mb"
msgstr ""
-#. desklet.js:676
+#. desklet.js:709
msgid "Kb"
msgstr ""
-#. desklet.js:687
+#. desklet.js:720
msgid "MB"
msgstr ""
-#. desklet.js:690
+#. desklet.js:723
msgid "KB"
msgstr ""
-#. desklet.js:701
+#. desklet.js:734
#, fuzzy
msgid "MiB"
msgstr "GiB"
-#. desklet.js:704
+#. desklet.js:737
#, fuzzy
msgid "KiB"
msgstr "GiB"
@@ -174,6 +197,10 @@ msgstr "Auslastung"
msgid "Temperature"
msgstr ""
+#. settings-schema.json->cpu-variable->options
+msgid "Fan Speed"
+msgstr ""
+
#. settings-schema.json->temperature-units-cpu->options
#. settings-schema.json->temperature-units-gpu->options
msgid "°C"
@@ -256,7 +283,8 @@ msgstr "Zu überwachendes Netzwerkinterface"
#. settings-schema.json->network-interface->tooltip
msgid ""
-"Leave empty to monitor all interfaces combined. Examples: eth0, wlan0, enp0s3"
+"Leave empty to monitor all interfaces combined. Examples: eth0, wlan0, "
+"enp0s3"
msgstr ""
#. settings-schema.json->battery-name->description
diff --git a/files/system-monitor-graph@rcassani/po/es.po b/files/system-monitor-graph@rcassani/po/es.po
index 053ca84..aa5e37b 100644
--- a/files/system-monitor-graph@rcassani/po/es.po
+++ b/files/system-monitor-graph@rcassani/po/es.po
@@ -6,9 +6,8 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: https://github.com/linuxmint/cinnamon-spices-desklets/"
-"issues\n"
-"POT-Creation-Date: 2026-03-23 21:24-0400\n"
+"Report-Msgid-Bugs-To: https://github.com/linuxmint/cinnamon-spices-desklets/issues\n"
+"POT-Creation-Date: 2026-07-22 14:45+0530\n"
"PO-Revision-Date: 2026-03-29 10:45-0300\n"
"Last-Translator: Daniel \n"
"Language-Team: \n"
@@ -20,103 +19,127 @@ msgstr ""
"X-Generator: Poedit 3.9\n"
#. settings-schema.json->type->options
-#. desklet.js:275
+#. desklet.js:288
msgid "CPU"
msgstr "CPU"
-#. desklet.js:284
+#. desklet.js:297
msgid "CPU Temperature"
msgstr "Temperatura de la CPU"
-#. desklet.js:301 desklet.js:319 desklet.js:339 desklet.js:380 desklet.js:684
+#. desklet.js:309
+msgid "CPU Fan"
+msgstr ""
+
+#. desklet.js:313
+msgid "RPM"
+msgstr ""
+
+#. desklet.js:314
+msgid "On"
+msgstr ""
+
+#. desklet.js:316
+msgid "Off"
+msgstr ""
+
+#. desklet.js:319
+msgid "Not detected"
+msgstr ""
+
+#. desklet.js:321
+msgid "Detecting..."
+msgstr ""
+
+#. desklet.js:334 desklet.js:352 desklet.js:372 desklet.js:413 desklet.js:717
msgid "GB"
msgstr "GB"
-#. desklet.js:304 desklet.js:322 desklet.js:342 desklet.js:383 desklet.js:698
+#. desklet.js:337 desklet.js:355 desklet.js:375 desklet.js:416 desklet.js:731
msgid "GiB"
msgstr "GiB"
#. settings-schema.json->type->options
-#. desklet.js:306
+#. desklet.js:339
msgid "RAM"
msgstr "RAM"
#. settings-schema.json->type->options
-#. desklet.js:324
+#. desklet.js:357
msgid "Swap"
msgstr "Swap"
-#. desklet.js:347
+#. desklet.js:380
msgid "free of"
msgstr "libres de"
-#. desklet.js:363
+#. desklet.js:396
msgid "GPU Usage"
msgstr "Uso de GPU"
-#. desklet.js:385
+#. desklet.js:418
msgid "GPU Memory"
msgstr "Memoria de GPU"
-#. desklet.js:401
+#. desklet.js:434
msgid "GPU Temperature"
msgstr "Temperatura de la GPU"
#. settings-schema.json->type->options
-#. desklet.js:415
+#. desklet.js:448
msgid "Network"
msgstr "Red"
#. settings-schema.json->type->options
-#. desklet.js:428
+#. desklet.js:461
msgid "Battery"
msgstr "Batería"
-#. desklet.js:431
+#. desklet.js:464
msgid "Fully charged"
msgstr "Completamente cargada"
-#. desklet.js:432
+#. desklet.js:465
msgid "Not charging"
msgstr "No se está cargando"
-#. desklet.js:434
+#. desklet.js:467
msgid " hrs"
msgstr " hrs"
-#. desklet.js:655 desklet.js:678
+#. desklet.js:688 desklet.js:711
msgid "b"
msgstr "b"
-#. desklet.js:657 desklet.js:692 desklet.js:706
+#. desklet.js:690 desklet.js:725 desklet.js:739
msgid "B"
msgstr "B"
-#. desklet.js:670
+#. desklet.js:703
msgid "Gb"
msgstr "Gb"
-#. desklet.js:673
+#. desklet.js:706
msgid "Mb"
msgstr "Mb"
-#. desklet.js:676
+#. desklet.js:709
msgid "Kb"
msgstr "Kb"
-#. desklet.js:687
+#. desklet.js:720
msgid "MB"
msgstr "MB"
-#. desklet.js:690
+#. desklet.js:723
msgid "KB"
msgstr "KB"
-#. desklet.js:701
+#. desklet.js:734
msgid "MiB"
msgstr "MiB"
-#. desklet.js:704
+#. desklet.js:737
msgid "KiB"
msgstr "KiB"
@@ -170,6 +193,10 @@ msgstr "Uso"
msgid "Temperature"
msgstr "TemperaturA"
+#. settings-schema.json->cpu-variable->options
+msgid "Fan Speed"
+msgstr ""
+
#. settings-schema.json->temperature-units-cpu->options
#. settings-schema.json->temperature-units-gpu->options
msgid "°C"
@@ -248,7 +275,8 @@ msgstr "Interfaz de red a monitorear"
#. settings-schema.json->network-interface->tooltip
msgid ""
-"Leave empty to monitor all interfaces combined. Examples: eth0, wlan0, enp0s3"
+"Leave empty to monitor all interfaces combined. Examples: eth0, wlan0, "
+"enp0s3"
msgstr ""
"Dejar vacío para monitorizar todas las interfaces combinadas. Ejemplos: "
"eth0, wlan0, enp0s3"
@@ -418,7 +446,8 @@ msgstr "Color de la línea de la CPU"
#. settings-schema.json->line-color-battery->tooltip
msgid "RGB or RGBA. Alpha is ignored"
msgstr ""
-"El color se puede guardar en formato RGB o RGBA, pero se ignorará la opacidad"
+"El color se puede guardar en formato RGB o RGBA, pero se ignorará la "
+"opacidad"
#. settings-schema.json->line-color-ram->description
msgid "Line color RAM"
diff --git a/files/system-monitor-graph@rcassani/po/fi.po b/files/system-monitor-graph@rcassani/po/fi.po
index 200c6a5..7ab7932 100644
--- a/files/system-monitor-graph@rcassani/po/fi.po
+++ b/files/system-monitor-graph@rcassani/po/fi.po
@@ -6,9 +6,8 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: https://github.com/linuxmint/cinnamon-spices-desklets/"
-"issues\n"
-"POT-Creation-Date: 2026-03-23 21:24-0400\n"
+"Report-Msgid-Bugs-To: https://github.com/linuxmint/cinnamon-spices-desklets/issues\n"
+"POT-Creation-Date: 2026-07-22 14:45+0530\n"
"PO-Revision-Date: 2024-11-09 13:32+0200\n"
"Last-Translator: Kimmo Kujansuu \n"
"Language-Team: \n"
@@ -16,110 +15,134 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 2.3\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Poedit 2.3\n"
#. settings-schema.json->type->options
-#. desklet.js:275
+#. desklet.js:288
msgid "CPU"
msgstr "CPU"
-#. desklet.js:284
+#. desklet.js:297
msgid "CPU Temperature"
msgstr ""
-#. desklet.js:301 desklet.js:319 desklet.js:339 desklet.js:380 desklet.js:684
+#. desklet.js:309
+msgid "CPU Fan"
+msgstr ""
+
+#. desklet.js:313
+msgid "RPM"
+msgstr ""
+
+#. desklet.js:314
+msgid "On"
+msgstr ""
+
+#. desklet.js:316
+msgid "Off"
+msgstr ""
+
+#. desklet.js:319
+msgid "Not detected"
+msgstr ""
+
+#. desklet.js:321
+msgid "Detecting..."
+msgstr ""
+
+#. desklet.js:334 desklet.js:352 desklet.js:372 desklet.js:413 desklet.js:717
msgid "GB"
msgstr "GB"
-#. desklet.js:304 desklet.js:322 desklet.js:342 desklet.js:383 desklet.js:698
+#. desklet.js:337 desklet.js:355 desklet.js:375 desklet.js:416 desklet.js:731
msgid "GiB"
msgstr "GiB"
#. settings-schema.json->type->options
-#. desklet.js:306
+#. desklet.js:339
msgid "RAM"
msgstr "RAM"
#. settings-schema.json->type->options
-#. desklet.js:324
+#. desklet.js:357
msgid "Swap"
msgstr "Swap"
-#. desklet.js:347
+#. desklet.js:380
msgid "free of"
msgstr "vapaa"
-#. desklet.js:363
+#. desklet.js:396
msgid "GPU Usage"
msgstr "GPU Käyttö"
-#. desklet.js:385
+#. desklet.js:418
msgid "GPU Memory"
msgstr "GPU Muisti"
-#. desklet.js:401
+#. desklet.js:434
#, fuzzy
msgid "GPU Temperature"
msgstr "GPU valmistaja"
#. settings-schema.json->type->options
-#. desklet.js:415
+#. desklet.js:448
msgid "Network"
msgstr ""
#. settings-schema.json->type->options
-#. desklet.js:428
+#. desklet.js:461
msgid "Battery"
msgstr ""
-#. desklet.js:431
+#. desklet.js:464
msgid "Fully charged"
msgstr ""
-#. desklet.js:432
+#. desklet.js:465
msgid "Not charging"
msgstr ""
-#. desklet.js:434
+#. desklet.js:467
msgid " hrs"
msgstr ""
-#. desklet.js:655 desklet.js:678
+#. desklet.js:688 desklet.js:711
msgid "b"
msgstr ""
-#. desklet.js:657 desklet.js:692 desklet.js:706
+#. desklet.js:690 desklet.js:725 desklet.js:739
#, fuzzy
msgid "B"
msgstr "GB"
-#. desklet.js:670
+#. desklet.js:703
msgid "Gb"
msgstr ""
-#. desklet.js:673
+#. desklet.js:706
msgid "Mb"
msgstr ""
-#. desklet.js:676
+#. desklet.js:709
msgid "Kb"
msgstr ""
-#. desklet.js:687
+#. desklet.js:720
msgid "MB"
msgstr ""
-#. desklet.js:690
+#. desklet.js:723
msgid "KB"
msgstr ""
-#. desklet.js:701
+#. desklet.js:734
#, fuzzy
msgid "MiB"
msgstr "GiB"
-#. desklet.js:704
+#. desklet.js:737
#, fuzzy
msgid "KiB"
msgstr "GiB"
@@ -178,6 +201,10 @@ msgstr "Käyttö"
msgid "Temperature"
msgstr ""
+#. settings-schema.json->cpu-variable->options
+msgid "Fan Speed"
+msgstr ""
+
#. settings-schema.json->temperature-units-cpu->options
#. settings-schema.json->temperature-units-gpu->options
msgid "°C"
@@ -260,7 +287,8 @@ msgstr "Valitse valvottava GPU:n muuttuja näytölle."
#. settings-schema.json->network-interface->tooltip
msgid ""
-"Leave empty to monitor all interfaces combined. Examples: eth0, wlan0, enp0s3"
+"Leave empty to monitor all interfaces combined. Examples: eth0, wlan0, "
+"enp0s3"
msgstr ""
#. settings-schema.json->battery-name->description
diff --git a/files/system-monitor-graph@rcassani/po/hu.po b/files/system-monitor-graph@rcassani/po/hu.po
index b297690..4dea3a6 100644
--- a/files/system-monitor-graph@rcassani/po/hu.po
+++ b/files/system-monitor-graph@rcassani/po/hu.po
@@ -6,9 +6,8 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: https://github.com/linuxmint/cinnamon-spices-desklets/"
-"issues\n"
-"POT-Creation-Date: 2026-03-23 21:24-0400\n"
+"Report-Msgid-Bugs-To: https://github.com/linuxmint/cinnamon-spices-desklets/issues\n"
+"POT-Creation-Date: 2026-07-22 14:45+0530\n"
"PO-Revision-Date: 2026-04-06 21:25+0200\n"
"Last-Translator: \n"
"Language-Team: \n"
@@ -20,103 +19,127 @@ msgstr ""
"X-Generator: Poedit 3.4.2\n"
#. settings-schema.json->type->options
-#. desklet.js:275
+#. desklet.js:288
msgid "CPU"
msgstr "CPU"
-#. desklet.js:284
+#. desklet.js:297
msgid "CPU Temperature"
msgstr "CPU Hőmérséklet"
-#. desklet.js:301 desklet.js:319 desklet.js:339 desklet.js:380 desklet.js:684
+#. desklet.js:309
+msgid "CPU Fan"
+msgstr ""
+
+#. desklet.js:313
+msgid "RPM"
+msgstr ""
+
+#. desklet.js:314
+msgid "On"
+msgstr ""
+
+#. desklet.js:316
+msgid "Off"
+msgstr ""
+
+#. desklet.js:319
+msgid "Not detected"
+msgstr ""
+
+#. desklet.js:321
+msgid "Detecting..."
+msgstr ""
+
+#. desklet.js:334 desklet.js:352 desklet.js:372 desklet.js:413 desklet.js:717
msgid "GB"
msgstr "GB"
-#. desklet.js:304 desklet.js:322 desklet.js:342 desklet.js:383 desklet.js:698
+#. desklet.js:337 desklet.js:355 desklet.js:375 desklet.js:416 desklet.js:731
msgid "GiB"
msgstr "GiB"
#. settings-schema.json->type->options
-#. desklet.js:306
+#. desklet.js:339
msgid "RAM"
msgstr "RAM"
#. settings-schema.json->type->options
-#. desklet.js:324
+#. desklet.js:357
msgid "Swap"
msgstr "Cserehely"
-#. desklet.js:347
+#. desklet.js:380
msgid "free of"
msgstr "szabad, összesen:"
-#. desklet.js:363
+#. desklet.js:396
msgid "GPU Usage"
msgstr "GPU használat"
-#. desklet.js:385
+#. desklet.js:418
msgid "GPU Memory"
msgstr "GPU memória"
-#. desklet.js:401
+#. desklet.js:434
msgid "GPU Temperature"
msgstr "CPU Hőmérséklet"
#. settings-schema.json->type->options
-#. desklet.js:415
+#. desklet.js:448
msgid "Network"
msgstr "Hálózat"
#. settings-schema.json->type->options
-#. desklet.js:428
+#. desklet.js:461
msgid "Battery"
msgstr "Akkumlátor"
-#. desklet.js:431
+#. desklet.js:464
msgid "Fully charged"
msgstr "Teljesen feltöltve"
-#. desklet.js:432
+#. desklet.js:465
msgid "Not charging"
msgstr "nem tölt"
-#. desklet.js:434
+#. desklet.js:467
msgid " hrs"
msgstr "óra"
-#. desklet.js:655 desklet.js:678
+#. desklet.js:688 desklet.js:711
msgid "b"
msgstr "b"
-#. desklet.js:657 desklet.js:692 desklet.js:706
+#. desklet.js:690 desklet.js:725 desklet.js:739
msgid "B"
msgstr "B"
-#. desklet.js:670
+#. desklet.js:703
msgid "Gb"
msgstr "Gb"
-#. desklet.js:673
+#. desklet.js:706
msgid "Mb"
msgstr "Mb"
-#. desklet.js:676
+#. desklet.js:709
msgid "Kb"
msgstr "Kb"
-#. desklet.js:687
+#. desklet.js:720
msgid "MB"
msgstr "MB"
-#. desklet.js:690
+#. desklet.js:723
msgid "KB"
msgstr "KB"
-#. desklet.js:701
+#. desklet.js:734
msgid "MiB"
msgstr "MiB"
-#. desklet.js:704
+#. desklet.js:737
msgid "KiB"
msgstr "KiB"
@@ -170,6 +193,10 @@ msgstr "Használat"
msgid "Temperature"
msgstr "Hőmérséklet"
+#. settings-schema.json->cpu-variable->options
+msgid "Fan Speed"
+msgstr ""
+
#. settings-schema.json->temperature-units-cpu->options
#. settings-schema.json->temperature-units-gpu->options
msgid "°C"
@@ -246,10 +273,11 @@ msgstr "Hálózati interfész a monitorozáshoz"
#. settings-schema.json->network-interface->tooltip
msgid ""
-"Leave empty to monitor all interfaces combined. Examples: eth0, wlan0, enp0s3"
+"Leave empty to monitor all interfaces combined. Examples: eth0, wlan0, "
+"enp0s3"
msgstr ""
-"Hagyja üresen, ha az összes interfészt együttesen szeretné figyelni. Példák: "
-"eth0, wlan0, enp0s3"
+"Hagyja üresen, ha az összes interfészt együttesen szeretné figyelni. Példák:"
+" eth0, wlan0, enp0s3"
#. settings-schema.json->battery-name->description
msgid "Name of battery name to monitor"
diff --git a/files/system-monitor-graph@rcassani/po/it.po b/files/system-monitor-graph@rcassani/po/it.po
index 6796f5c..e835f97 100644
--- a/files/system-monitor-graph@rcassani/po/it.po
+++ b/files/system-monitor-graph@rcassani/po/it.po
@@ -6,9 +6,8 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: https://github.com/linuxmint/cinnamon-spices-desklets/"
-"issues\n"
-"POT-Creation-Date: 2026-03-23 21:24-0400\n"
+"Report-Msgid-Bugs-To: https://github.com/linuxmint/cinnamon-spices-desklets/issues\n"
+"POT-Creation-Date: 2026-07-22 14:45+0530\n"
"PO-Revision-Date: 2025-08-26 19:59+0200\n"
"Last-Translator: Dragone2 \n"
"Language-Team: \n"
@@ -20,104 +19,128 @@ msgstr ""
"X-Generator: Poedit 3.4.2\n"
#. settings-schema.json->type->options
-#. desklet.js:275
+#. desklet.js:288
msgid "CPU"
msgstr "CPU"
-#. desklet.js:284
+#. desklet.js:297
msgid "CPU Temperature"
msgstr ""
-#. desklet.js:301 desklet.js:319 desklet.js:339 desklet.js:380 desklet.js:684
+#. desklet.js:309
+msgid "CPU Fan"
+msgstr ""
+
+#. desklet.js:313
+msgid "RPM"
+msgstr ""
+
+#. desklet.js:314
+msgid "On"
+msgstr ""
+
+#. desklet.js:316
+msgid "Off"
+msgstr ""
+
+#. desklet.js:319
+msgid "Not detected"
+msgstr ""
+
+#. desklet.js:321
+msgid "Detecting..."
+msgstr ""
+
+#. desklet.js:334 desklet.js:352 desklet.js:372 desklet.js:413 desklet.js:717
msgid "GB"
msgstr "GB"
-#. desklet.js:304 desklet.js:322 desklet.js:342 desklet.js:383 desklet.js:698
+#. desklet.js:337 desklet.js:355 desklet.js:375 desklet.js:416 desklet.js:731
msgid "GiB"
msgstr "GiB"
#. settings-schema.json->type->options
-#. desklet.js:306
+#. desklet.js:339
msgid "RAM"
msgstr "RAM"
#. settings-schema.json->type->options
-#. desklet.js:324
+#. desklet.js:357
msgid "Swap"
msgstr "Swap"
-#. desklet.js:347
+#. desklet.js:380
msgid "free of"
msgstr "liberi su"
-#. desklet.js:363
+#. desklet.js:396
msgid "GPU Usage"
msgstr "Utilizzo GPU"
-#. desklet.js:385
+#. desklet.js:418
msgid "GPU Memory"
msgstr "Memoria GPU"
-#. desklet.js:401
+#. desklet.js:434
#, fuzzy
msgid "GPU Temperature"
msgstr "Produttore GPU"
#. settings-schema.json->type->options
-#. desklet.js:415
+#. desklet.js:448
msgid "Network"
msgstr "Rete"
#. settings-schema.json->type->options
-#. desklet.js:428
+#. desklet.js:461
msgid "Battery"
msgstr ""
-#. desklet.js:431
+#. desklet.js:464
msgid "Fully charged"
msgstr ""
-#. desklet.js:432
+#. desklet.js:465
msgid "Not charging"
msgstr ""
-#. desklet.js:434
+#. desklet.js:467
msgid " hrs"
msgstr ""
-#. desklet.js:655 desklet.js:678
+#. desklet.js:688 desklet.js:711
msgid "b"
msgstr "b"
-#. desklet.js:657 desklet.js:692 desklet.js:706
+#. desklet.js:690 desklet.js:725 desklet.js:739
msgid "B"
msgstr "B"
-#. desklet.js:670
+#. desklet.js:703
msgid "Gb"
msgstr "Gb"
-#. desklet.js:673
+#. desklet.js:706
msgid "Mb"
msgstr "Mb"
-#. desklet.js:676
+#. desklet.js:709
msgid "Kb"
msgstr "Kb"
-#. desklet.js:687
+#. desklet.js:720
msgid "MB"
msgstr "MB"
-#. desklet.js:690
+#. desklet.js:723
msgid "KB"
msgstr "KB"
-#. desklet.js:701
+#. desklet.js:734
msgid "MiB"
msgstr "MiB"
-#. desklet.js:704
+#. desklet.js:737
msgid "KiB"
msgstr "KiB"
@@ -173,6 +196,10 @@ msgstr "Utilizzo"
msgid "Temperature"
msgstr ""
+#. settings-schema.json->cpu-variable->options
+msgid "Fan Speed"
+msgstr ""
+
#. settings-schema.json->temperature-units-cpu->options
#. settings-schema.json->temperature-units-gpu->options
msgid "°C"
@@ -250,7 +277,8 @@ msgstr "Interfaccia di rete da monitorare"
#. settings-schema.json->network-interface->tooltip
msgid ""
-"Leave empty to monitor all interfaces combined. Examples: eth0, wlan0, enp0s3"
+"Leave empty to monitor all interfaces combined. Examples: eth0, wlan0, "
+"enp0s3"
msgstr ""
"Lasciare vuoto per monitorare tutte le interfacce combinate. Esempi: eth0, "
"wlan0, enp0s3"
diff --git a/files/system-monitor-graph@rcassani/po/nl.po b/files/system-monitor-graph@rcassani/po/nl.po
index ba6e2e5..345402c 100644
--- a/files/system-monitor-graph@rcassani/po/nl.po
+++ b/files/system-monitor-graph@rcassani/po/nl.po
@@ -6,9 +6,8 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: https://github.com/linuxmint/cinnamon-spices-desklets/"
-"issues\n"
-"POT-Creation-Date: 2026-03-23 21:24-0400\n"
+"Report-Msgid-Bugs-To: https://github.com/linuxmint/cinnamon-spices-desklets/issues\n"
+"POT-Creation-Date: 2026-07-22 14:45+0530\n"
"PO-Revision-Date: 2025-08-25 16:25+0200\n"
"Last-Translator: qadzek\n"
"Language-Team: \n"
@@ -18,104 +17,128 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
#. settings-schema.json->type->options
-#. desklet.js:275
+#. desklet.js:288
msgid "CPU"
msgstr "CPU"
-#. desklet.js:284
+#. desklet.js:297
msgid "CPU Temperature"
msgstr ""
-#. desklet.js:301 desklet.js:319 desklet.js:339 desklet.js:380 desklet.js:684
+#. desklet.js:309
+msgid "CPU Fan"
+msgstr ""
+
+#. desklet.js:313
+msgid "RPM"
+msgstr ""
+
+#. desklet.js:314
+msgid "On"
+msgstr ""
+
+#. desklet.js:316
+msgid "Off"
+msgstr ""
+
+#. desklet.js:319
+msgid "Not detected"
+msgstr ""
+
+#. desklet.js:321
+msgid "Detecting..."
+msgstr ""
+
+#. desklet.js:334 desklet.js:352 desklet.js:372 desklet.js:413 desklet.js:717
msgid "GB"
msgstr "GB"
-#. desklet.js:304 desklet.js:322 desklet.js:342 desklet.js:383 desklet.js:698
+#. desklet.js:337 desklet.js:355 desklet.js:375 desklet.js:416 desklet.js:731
msgid "GiB"
msgstr "GiB"
#. settings-schema.json->type->options
-#. desklet.js:306
+#. desklet.js:339
msgid "RAM"
msgstr "RAM"
#. settings-schema.json->type->options
-#. desklet.js:324
+#. desklet.js:357
msgid "Swap"
msgstr "Swap"
-#. desklet.js:347
+#. desklet.js:380
msgid "free of"
msgstr "vrij van"
-#. desklet.js:363
+#. desklet.js:396
msgid "GPU Usage"
msgstr "GPU Gebruik"
-#. desklet.js:385
+#. desklet.js:418
msgid "GPU Memory"
msgstr "GPU Geheugen"
-#. desklet.js:401
+#. desklet.js:434
#, fuzzy
msgid "GPU Temperature"
msgstr "GPU fabrikant"
#. settings-schema.json->type->options
-#. desklet.js:415
+#. desklet.js:448
msgid "Network"
msgstr "Netwerk"
#. settings-schema.json->type->options
-#. desklet.js:428
+#. desklet.js:461
msgid "Battery"
msgstr ""
-#. desklet.js:431
+#. desklet.js:464
msgid "Fully charged"
msgstr ""
-#. desklet.js:432
+#. desklet.js:465
msgid "Not charging"
msgstr ""
-#. desklet.js:434
+#. desklet.js:467
msgid " hrs"
msgstr ""
-#. desklet.js:655 desklet.js:678
+#. desklet.js:688 desklet.js:711
msgid "b"
msgstr "b"
-#. desklet.js:657 desklet.js:692 desklet.js:706
+#. desklet.js:690 desklet.js:725 desklet.js:739
msgid "B"
msgstr "B"
-#. desklet.js:670
+#. desklet.js:703
msgid "Gb"
msgstr "Gb"
-#. desklet.js:673
+#. desklet.js:706
msgid "Mb"
msgstr "Mb"
-#. desklet.js:676
+#. desklet.js:709
msgid "Kb"
msgstr "Kb"
-#. desklet.js:687
+#. desklet.js:720
msgid "MB"
msgstr "MB"
-#. desklet.js:690
+#. desklet.js:723
msgid "KB"
msgstr "KB"
-#. desklet.js:701
+#. desklet.js:734
msgid "MiB"
msgstr "MiB"
-#. desklet.js:704
+#. desklet.js:737
msgid "KiB"
msgstr "KiB"
@@ -171,6 +194,10 @@ msgstr "Gebruik"
msgid "Temperature"
msgstr ""
+#. settings-schema.json->cpu-variable->options
+msgid "Fan Speed"
+msgstr ""
+
#. settings-schema.json->temperature-units-cpu->options
#. settings-schema.json->temperature-units-gpu->options
msgid "°C"
@@ -248,7 +275,8 @@ msgstr "Netwerkinterface om te monitoren"
#. settings-schema.json->network-interface->tooltip
msgid ""
-"Leave empty to monitor all interfaces combined. Examples: eth0, wlan0, enp0s3"
+"Leave empty to monitor all interfaces combined. Examples: eth0, wlan0, "
+"enp0s3"
msgstr ""
"Leeg laten om alle interfaces samen te monitoren. Voorbeelden: eth0, wlan0, "
"enp0s3"
diff --git a/files/system-monitor-graph@rcassani/po/pt_BR.po b/files/system-monitor-graph@rcassani/po/pt_BR.po
index e27fb97..247b015 100644
--- a/files/system-monitor-graph@rcassani/po/pt_BR.po
+++ b/files/system-monitor-graph@rcassani/po/pt_BR.po
@@ -6,9 +6,8 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: https://github.com/linuxmint/cinnamon-spices-desklets/"
-"issues\n"
-"POT-Creation-Date: 2026-03-23 21:24-0400\n"
+"Report-Msgid-Bugs-To: https://github.com/linuxmint/cinnamon-spices-desklets/issues\n"
+"POT-Creation-Date: 2026-07-22 14:45+0530\n"
"PO-Revision-Date: 2021-11-29 15:20-0300\n"
"Last-Translator: Marcelo Aof\n"
"Language-Team: \n"
@@ -16,110 +15,134 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 3.0\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"X-Generator: Poedit 3.0\n"
#. settings-schema.json->type->options
-#. desklet.js:275
+#. desklet.js:288
msgid "CPU"
msgstr "CPU"
-#. desklet.js:284
+#. desklet.js:297
msgid "CPU Temperature"
msgstr ""
-#. desklet.js:301 desklet.js:319 desklet.js:339 desklet.js:380 desklet.js:684
+#. desklet.js:309
+msgid "CPU Fan"
+msgstr ""
+
+#. desklet.js:313
+msgid "RPM"
+msgstr ""
+
+#. desklet.js:314
+msgid "On"
+msgstr ""
+
+#. desklet.js:316
+msgid "Off"
+msgstr ""
+
+#. desklet.js:319
+msgid "Not detected"
+msgstr ""
+
+#. desklet.js:321
+msgid "Detecting..."
+msgstr ""
+
+#. desklet.js:334 desklet.js:352 desklet.js:372 desklet.js:413 desklet.js:717
msgid "GB"
msgstr "GB"
-#. desklet.js:304 desklet.js:322 desklet.js:342 desklet.js:383 desklet.js:698
+#. desklet.js:337 desklet.js:355 desklet.js:375 desklet.js:416 desklet.js:731
msgid "GiB"
msgstr "GiB"
#. settings-schema.json->type->options
-#. desklet.js:306
+#. desklet.js:339
msgid "RAM"
msgstr "RAM"
#. settings-schema.json->type->options
-#. desklet.js:324
+#. desklet.js:357
msgid "Swap"
msgstr ""
-#. desklet.js:347
+#. desklet.js:380
msgid "free of"
msgstr "livres de"
-#. desklet.js:363
+#. desklet.js:396
msgid "GPU Usage"
msgstr "Uso da GPU"
-#. desklet.js:385
+#. desklet.js:418
msgid "GPU Memory"
msgstr "Memória da GPU"
-#. desklet.js:401
+#. desklet.js:434
#, fuzzy
msgid "GPU Temperature"
msgstr "Fabricante da GPU"
#. settings-schema.json->type->options
-#. desklet.js:415
+#. desklet.js:448
msgid "Network"
msgstr ""
#. settings-schema.json->type->options
-#. desklet.js:428
+#. desklet.js:461
msgid "Battery"
msgstr ""
-#. desklet.js:431
+#. desklet.js:464
msgid "Fully charged"
msgstr ""
-#. desklet.js:432
+#. desklet.js:465
msgid "Not charging"
msgstr ""
-#. desklet.js:434
+#. desklet.js:467
msgid " hrs"
msgstr ""
-#. desklet.js:655 desklet.js:678
+#. desklet.js:688 desklet.js:711
msgid "b"
msgstr ""
-#. desklet.js:657 desklet.js:692 desklet.js:706
+#. desklet.js:690 desklet.js:725 desklet.js:739
#, fuzzy
msgid "B"
msgstr "GB"
-#. desklet.js:670
+#. desklet.js:703
msgid "Gb"
msgstr ""
-#. desklet.js:673
+#. desklet.js:706
msgid "Mb"
msgstr ""
-#. desklet.js:676
+#. desklet.js:709
msgid "Kb"
msgstr ""
-#. desklet.js:687
+#. desklet.js:720
msgid "MB"
msgstr ""
-#. desklet.js:690
+#. desklet.js:723
msgid "KB"
msgstr ""
-#. desklet.js:701
+#. desklet.js:734
#, fuzzy
msgid "MiB"
msgstr "GiB"
-#. desklet.js:704
+#. desklet.js:737
#, fuzzy
msgid "KiB"
msgstr "GiB"
@@ -176,6 +199,10 @@ msgstr "Uso"
msgid "Temperature"
msgstr ""
+#. settings-schema.json->cpu-variable->options
+msgid "Fan Speed"
+msgstr ""
+
#. settings-schema.json->temperature-units-cpu->options
#. settings-schema.json->temperature-units-gpu->options
msgid "°C"
@@ -254,7 +281,8 @@ msgstr "Selecione a variável da GPU para monitorar."
#. settings-schema.json->network-interface->tooltip
msgid ""
-"Leave empty to monitor all interfaces combined. Examples: eth0, wlan0, enp0s3"
+"Leave empty to monitor all interfaces combined. Examples: eth0, wlan0, "
+"enp0s3"
msgstr ""
#. settings-schema.json->battery-name->description
diff --git a/files/system-monitor-graph@rcassani/po/ro.po b/files/system-monitor-graph@rcassani/po/ro.po
index 603118c..b41d338 100644
--- a/files/system-monitor-graph@rcassani/po/ro.po
+++ b/files/system-monitor-graph@rcassani/po/ro.po
@@ -6,9 +6,8 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: https://github.com/linuxmint/cinnamon-spices-desklets/"
-"issues\n"
-"POT-Creation-Date: 2026-03-23 21:24-0400\n"
+"Report-Msgid-Bugs-To: https://github.com/linuxmint/cinnamon-spices-desklets/issues\n"
+"POT-Creation-Date: 2026-07-22 14:45+0530\n"
"PO-Revision-Date: 2022-04-17 23:21+0200\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
@@ -16,110 +15,133 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
-"20)) ? 1 : 2;\n"
+"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < 20)) ? 1 : 2;\n"
#. settings-schema.json->type->options
-#. desklet.js:275
+#. desklet.js:288
msgid "CPU"
msgstr "CPU"
-#. desklet.js:284
+#. desklet.js:297
msgid "CPU Temperature"
msgstr ""
-#. desklet.js:301 desklet.js:319 desklet.js:339 desklet.js:380 desklet.js:684
+#. desklet.js:309
+msgid "CPU Fan"
+msgstr ""
+
+#. desklet.js:313
+msgid "RPM"
+msgstr ""
+
+#. desklet.js:314
+msgid "On"
+msgstr ""
+
+#. desklet.js:316
+msgid "Off"
+msgstr ""
+
+#. desklet.js:319
+msgid "Not detected"
+msgstr ""
+
+#. desklet.js:321
+msgid "Detecting..."
+msgstr ""
+
+#. desklet.js:334 desklet.js:352 desklet.js:372 desklet.js:413 desklet.js:717
msgid "GB"
msgstr "GB"
-#. desklet.js:304 desklet.js:322 desklet.js:342 desklet.js:383 desklet.js:698
+#. desklet.js:337 desklet.js:355 desklet.js:375 desklet.js:416 desklet.js:731
msgid "GiB"
msgstr "GiB"
#. settings-schema.json->type->options
-#. desklet.js:306
+#. desklet.js:339
msgid "RAM"
msgstr "RAM"
#. settings-schema.json->type->options
-#. desklet.js:324
+#. desklet.js:357
msgid "Swap"
msgstr "Schimbă"
-#. desklet.js:347
+#. desklet.js:380
msgid "free of"
msgstr "liber din"
-#. desklet.js:363
+#. desklet.js:396
msgid "GPU Usage"
msgstr "Utilizare GPU"
-#. desklet.js:385
+#. desklet.js:418
msgid "GPU Memory"
msgstr "Memorie GPU"
-#. desklet.js:401
+#. desklet.js:434
#, fuzzy
msgid "GPU Temperature"
msgstr "Producător GPU"
#. settings-schema.json->type->options
-#. desklet.js:415
+#. desklet.js:448
msgid "Network"
msgstr ""
#. settings-schema.json->type->options
-#. desklet.js:428
+#. desklet.js:461
msgid "Battery"
msgstr ""
-#. desklet.js:431
+#. desklet.js:464
msgid "Fully charged"
msgstr ""
-#. desklet.js:432
+#. desklet.js:465
msgid "Not charging"
msgstr ""
-#. desklet.js:434
+#. desklet.js:467
msgid " hrs"
msgstr ""
-#. desklet.js:655 desklet.js:678
+#. desklet.js:688 desklet.js:711
msgid "b"
msgstr ""
-#. desklet.js:657 desklet.js:692 desklet.js:706
+#. desklet.js:690 desklet.js:725 desklet.js:739
#, fuzzy
msgid "B"
msgstr "GB"
-#. desklet.js:670
+#. desklet.js:703
msgid "Gb"
msgstr ""
-#. desklet.js:673
+#. desklet.js:706
msgid "Mb"
msgstr ""
-#. desklet.js:676
+#. desklet.js:709
msgid "Kb"
msgstr ""
-#. desklet.js:687
+#. desklet.js:720
msgid "MB"
msgstr ""
-#. desklet.js:690
+#. desklet.js:723
msgid "KB"
msgstr ""
-#. desklet.js:701
+#. desklet.js:734
#, fuzzy
msgid "MiB"
msgstr "GiB"
-#. desklet.js:704
+#. desklet.js:737
#, fuzzy
msgid "KiB"
msgstr "GiB"
@@ -176,6 +198,10 @@ msgstr "Utilizare"
msgid "Temperature"
msgstr ""
+#. settings-schema.json->cpu-variable->options
+msgid "Fan Speed"
+msgstr ""
+
#. settings-schema.json->temperature-units-cpu->options
#. settings-schema.json->temperature-units-gpu->options
msgid "°C"
@@ -254,7 +280,8 @@ msgstr "Selectează variabila GPU care urmează să fie monitorizată."
#. settings-schema.json->network-interface->tooltip
msgid ""
-"Leave empty to monitor all interfaces combined. Examples: eth0, wlan0, enp0s3"
+"Leave empty to monitor all interfaces combined. Examples: eth0, wlan0, "
+"enp0s3"
msgstr ""
#. settings-schema.json->battery-name->description
@@ -468,5 +495,5 @@ msgstr "Numărul de linii verticale din grilă"
#. settings-schema.json->scale-size->description
msgid "Scale factor for desklet size (scale factor of 1 = 330 x 120 px)"
msgstr ""
-"Factorul de scară pentru dimensiunea deskletului (factor de scară de 1 = 330 "
-"x 120 px)"
+"Factorul de scară pentru dimensiunea deskletului (factor de scară de 1 = 330"
+" x 120 px)"
diff --git a/files/system-monitor-graph@rcassani/po/ru.po b/files/system-monitor-graph@rcassani/po/ru.po
index 4ebb36a..083afda 100644
--- a/files/system-monitor-graph@rcassani/po/ru.po
+++ b/files/system-monitor-graph@rcassani/po/ru.po
@@ -2,9 +2,8 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: https://github.com/linuxmint/cinnamon-spices-desklets/"
-"issues\n"
-"POT-Creation-Date: 2026-03-23 21:24-0400\n"
+"Report-Msgid-Bugs-To: https://github.com/linuxmint/cinnamon-spices-desklets/issues\n"
+"POT-Creation-Date: 2026-07-22 14:45+0530\n"
"PO-Revision-Date: \n"
"Last-Translator: blogdron\n"
"Language-Team: \n"
@@ -15,104 +14,128 @@ msgstr ""
"X-Generator: Poedit 3.4.2\n"
#. settings-schema.json->type->options
-#. desklet.js:275
+#. desklet.js:288
msgid "CPU"
msgstr "Процессор"
-#. desklet.js:284
+#. desklet.js:297
msgid "CPU Temperature"
msgstr ""
-#. desklet.js:301 desklet.js:319 desklet.js:339 desklet.js:380 desklet.js:684
+#. desklet.js:309
+msgid "CPU Fan"
+msgstr ""
+
+#. desklet.js:313
+msgid "RPM"
+msgstr ""
+
+#. desklet.js:314
+msgid "On"
+msgstr ""
+
+#. desklet.js:316
+msgid "Off"
+msgstr ""
+
+#. desklet.js:319
+msgid "Not detected"
+msgstr ""
+
+#. desklet.js:321
+msgid "Detecting..."
+msgstr ""
+
+#. desklet.js:334 desklet.js:352 desklet.js:372 desklet.js:413 desklet.js:717
msgid "GB"
msgstr "ГБ"
-#. desklet.js:304 desklet.js:322 desklet.js:342 desklet.js:383 desklet.js:698
+#. desklet.js:337 desklet.js:355 desklet.js:375 desklet.js:416 desklet.js:731
msgid "GiB"
msgstr "ГиБ"
#. settings-schema.json->type->options
-#. desklet.js:306
+#. desklet.js:339
msgid "RAM"
msgstr "Память"
#. settings-schema.json->type->options
-#. desklet.js:324
+#. desklet.js:357
msgid "Swap"
msgstr "Подкачка"
-#. desklet.js:347
+#. desklet.js:380
msgid "free of"
msgstr "свободно из"
-#. desklet.js:363
+#. desklet.js:396
msgid "GPU Usage"
msgstr "Видеокарта"
-#. desklet.js:385
+#. desklet.js:418
msgid "GPU Memory"
msgstr "Память видеокарты"
-#. desklet.js:401
+#. desklet.js:434
#, fuzzy
msgid "GPU Temperature"
msgstr "Производитель GPU"
#. settings-schema.json->type->options
-#. desklet.js:415
+#. desklet.js:448
msgid "Network"
msgstr "Сеть"
#. settings-schema.json->type->options
-#. desklet.js:428
+#. desklet.js:461
msgid "Battery"
msgstr ""
-#. desklet.js:431
+#. desklet.js:464
msgid "Fully charged"
msgstr ""
-#. desklet.js:432
+#. desklet.js:465
msgid "Not charging"
msgstr ""
-#. desklet.js:434
+#. desklet.js:467
msgid " hrs"
msgstr ""
-#. desklet.js:655 desklet.js:678
+#. desklet.js:688 desklet.js:711
msgid "b"
msgstr "б"
-#. desklet.js:657 desklet.js:692 desklet.js:706
+#. desklet.js:690 desklet.js:725 desklet.js:739
msgid "B"
msgstr "Б"
-#. desklet.js:670
+#. desklet.js:703
msgid "Gb"
msgstr "Гб"
-#. desklet.js:673
+#. desklet.js:706
msgid "Mb"
msgstr "Мб"
-#. desklet.js:676
+#. desklet.js:709
msgid "Kb"
msgstr "Кб"
-#. desklet.js:687
+#. desklet.js:720
msgid "MB"
msgstr "МБ"
-#. desklet.js:690
+#. desklet.js:723
msgid "KB"
msgstr "КБ"
-#. desklet.js:701
+#. desklet.js:734
msgid "MiB"
msgstr "МиБ"
-#. desklet.js:704
+#. desklet.js:737
msgid "KiB"
msgstr "КиБ"
@@ -168,6 +191,10 @@ msgstr "Загрузка"
msgid "Temperature"
msgstr ""
+#. settings-schema.json->cpu-variable->options
+msgid "Fan Speed"
+msgstr ""
+
#. settings-schema.json->temperature-units-cpu->options
#. settings-schema.json->temperature-units-gpu->options
msgid "°C"
@@ -245,7 +272,8 @@ msgstr "Сетевой интерфейс"
#. settings-schema.json->network-interface->tooltip
msgid ""
-"Leave empty to monitor all interfaces combined. Examples: eth0, wlan0, enp0s3"
+"Leave empty to monitor all interfaces combined. Examples: eth0, wlan0, "
+"enp0s3"
msgstr ""
"Например, eth0, wlan0, enp0s3. Оставьте пустым, чтобы взять суммарные "
"значения по всем интерфейсам"
diff --git a/files/system-monitor-graph@rcassani/po/system-monitor-graph@rcassani.pot b/files/system-monitor-graph@rcassani/po/system-monitor-graph@rcassani.pot
index 1c7bca9..33c2661 100644
--- a/files/system-monitor-graph@rcassani/po/system-monitor-graph@rcassani.pot
+++ b/files/system-monitor-graph@rcassani/po/system-monitor-graph@rcassani.pot
@@ -1,14 +1,14 @@
# SYSTEM MONITOR GRAPH
# This file is put in the public domain.
-# rcassani, 2020
+# rcassani, 2026
#
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: system-monitor-graph@rcassani 2.0\n"
+"Project-Id-Version: system-monitor-graph@rcassani 2.2\n"
"Report-Msgid-Bugs-To: https://github.com/linuxmint/cinnamon-spices-desklets/"
"issues\n"
-"POT-Creation-Date: 2026-03-23 21:24-0400\n"
+"POT-Creation-Date: 2026-07-22 14:45+0530\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"
@@ -18,103 +18,127 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
#. settings-schema.json->type->options
-#. desklet.js:275
+#. desklet.js:288
msgid "CPU"
msgstr ""
-#. desklet.js:284
+#. desklet.js:297
msgid "CPU Temperature"
msgstr ""
-#. desklet.js:301 desklet.js:319 desklet.js:339 desklet.js:380 desklet.js:684
+#. desklet.js:309
+msgid "CPU Fan"
+msgstr ""
+
+#. desklet.js:313
+msgid "RPM"
+msgstr ""
+
+#. desklet.js:314
+msgid "On"
+msgstr ""
+
+#. desklet.js:316
+msgid "Off"
+msgstr ""
+
+#. desklet.js:319
+msgid "Not detected"
+msgstr ""
+
+#. desklet.js:321
+msgid "Detecting..."
+msgstr ""
+
+#. desklet.js:334 desklet.js:352 desklet.js:372 desklet.js:413 desklet.js:717
msgid "GB"
msgstr ""
-#. desklet.js:304 desklet.js:322 desklet.js:342 desklet.js:383 desklet.js:698
+#. desklet.js:337 desklet.js:355 desklet.js:375 desklet.js:416 desklet.js:731
msgid "GiB"
msgstr ""
#. settings-schema.json->type->options
-#. desklet.js:306
+#. desklet.js:339
msgid "RAM"
msgstr ""
#. settings-schema.json->type->options
-#. desklet.js:324
+#. desklet.js:357
msgid "Swap"
msgstr ""
-#. desklet.js:347
+#. desklet.js:380
msgid "free of"
msgstr ""
-#. desklet.js:363
+#. desklet.js:396
msgid "GPU Usage"
msgstr ""
-#. desklet.js:385
+#. desklet.js:418
msgid "GPU Memory"
msgstr ""
-#. desklet.js:401
+#. desklet.js:434
msgid "GPU Temperature"
msgstr ""
#. settings-schema.json->type->options
-#. desklet.js:415
+#. desklet.js:448
msgid "Network"
msgstr ""
#. settings-schema.json->type->options
-#. desklet.js:428
+#. desklet.js:461
msgid "Battery"
msgstr ""
-#. desklet.js:431
+#. desklet.js:464
msgid "Fully charged"
msgstr ""
-#. desklet.js:432
+#. desklet.js:465
msgid "Not charging"
msgstr ""
-#. desklet.js:434
+#. desklet.js:467
msgid " hrs"
msgstr ""
-#. desklet.js:655 desklet.js:678
+#. desklet.js:688 desklet.js:711
msgid "b"
msgstr ""
-#. desklet.js:657 desklet.js:692 desklet.js:706
+#. desklet.js:690 desklet.js:725 desklet.js:739
msgid "B"
msgstr ""
-#. desklet.js:670
+#. desklet.js:703
msgid "Gb"
msgstr ""
-#. desklet.js:673
+#. desklet.js:706
msgid "Mb"
msgstr ""
-#. desklet.js:676
+#. desklet.js:709
msgid "Kb"
msgstr ""
-#. desklet.js:687
+#. desklet.js:720
msgid "MB"
msgstr ""
-#. desklet.js:690
+#. desklet.js:723
msgid "KB"
msgstr ""
-#. desklet.js:701
+#. desklet.js:734
msgid "MiB"
msgstr ""
-#. desklet.js:704
+#. desklet.js:737
msgid "KiB"
msgstr ""
@@ -168,6 +192,10 @@ msgstr ""
msgid "Temperature"
msgstr ""
+#. settings-schema.json->cpu-variable->options
+msgid "Fan Speed"
+msgstr ""
+
#. settings-schema.json->temperature-units-cpu->options
#. settings-schema.json->temperature-units-gpu->options
msgid "°C"
diff --git a/files/system-monitor-graph@rcassani/po/vi.po b/files/system-monitor-graph@rcassani/po/vi.po
index 1136013..f191ed7 100644
--- a/files/system-monitor-graph@rcassani/po/vi.po
+++ b/files/system-monitor-graph@rcassani/po/vi.po
@@ -6,9 +6,8 @@
msgid ""
msgstr ""
"Project-Id-Version: system-monitor-graph@rcassani 2.0\n"
-"Report-Msgid-Bugs-To: https://github.com/linuxmint/cinnamon-spices-desklets/"
-"issues\n"
-"POT-Creation-Date: 2026-03-23 21:24-0400\n"
+"Report-Msgid-Bugs-To: https://github.com/linuxmint/cinnamon-spices-desklets/issues\n"
+"POT-Creation-Date: 2026-07-22 14:45+0530\n"
"PO-Revision-Date: \n"
"Last-Translator: loccun \n"
"Language-Team: \n"
@@ -19,104 +18,128 @@ msgstr ""
"X-Generator: Poedit 3.4.2\n"
#. settings-schema.json->type->options
-#. desklet.js:275
+#. desklet.js:288
msgid "CPU"
msgstr "CPU"
-#. desklet.js:284
+#. desklet.js:297
msgid "CPU Temperature"
msgstr ""
-#. desklet.js:301 desklet.js:319 desklet.js:339 desklet.js:380 desklet.js:684
+#. desklet.js:309
+msgid "CPU Fan"
+msgstr ""
+
+#. desklet.js:313
+msgid "RPM"
+msgstr ""
+
+#. desklet.js:314
+msgid "On"
+msgstr ""
+
+#. desklet.js:316
+msgid "Off"
+msgstr ""
+
+#. desklet.js:319
+msgid "Not detected"
+msgstr ""
+
+#. desklet.js:321
+msgid "Detecting..."
+msgstr ""
+
+#. desklet.js:334 desklet.js:352 desklet.js:372 desklet.js:413 desklet.js:717
msgid "GB"
msgstr "GB"
-#. desklet.js:304 desklet.js:322 desklet.js:342 desklet.js:383 desklet.js:698
+#. desklet.js:337 desklet.js:355 desklet.js:375 desklet.js:416 desklet.js:731
msgid "GiB"
msgstr "GiB"
#. settings-schema.json->type->options
-#. desklet.js:306
+#. desklet.js:339
msgid "RAM"
msgstr "RAM"
#. settings-schema.json->type->options
-#. desklet.js:324
+#. desklet.js:357
msgid "Swap"
msgstr "Swap"
-#. desklet.js:347
+#. desklet.js:380
msgid "free of"
msgstr "trống trong"
-#. desklet.js:363
+#. desklet.js:396
msgid "GPU Usage"
msgstr "Sử dụng GPU"
-#. desklet.js:385
+#. desklet.js:418
msgid "GPU Memory"
msgstr "Bộ nhớ GPU"
-#. desklet.js:401
+#. desklet.js:434
#, fuzzy
msgid "GPU Temperature"
msgstr "Nhà sản xuất GPU"
#. settings-schema.json->type->options
-#. desklet.js:415
+#. desklet.js:448
msgid "Network"
msgstr "Mạng"
#. settings-schema.json->type->options
-#. desklet.js:428
+#. desklet.js:461
msgid "Battery"
msgstr ""
-#. desklet.js:431
+#. desklet.js:464
msgid "Fully charged"
msgstr ""
-#. desklet.js:432
+#. desklet.js:465
msgid "Not charging"
msgstr ""
-#. desklet.js:434
+#. desklet.js:467
msgid " hrs"
msgstr ""
-#. desklet.js:655 desklet.js:678
+#. desklet.js:688 desklet.js:711
msgid "b"
msgstr "b"
-#. desklet.js:657 desklet.js:692 desklet.js:706
+#. desklet.js:690 desklet.js:725 desklet.js:739
msgid "B"
msgstr "B"
-#. desklet.js:670
+#. desklet.js:703
msgid "Gb"
msgstr "Gb"
-#. desklet.js:673
+#. desklet.js:706
msgid "Mb"
msgstr "Mb"
-#. desklet.js:676
+#. desklet.js:709
msgid "Kb"
msgstr "Kb"
-#. desklet.js:687
+#. desklet.js:720
msgid "MB"
msgstr "MB"
-#. desklet.js:690
+#. desklet.js:723
msgid "KB"
msgstr "KB"
-#. desklet.js:701
+#. desklet.js:734
msgid "MiB"
msgstr "MiB"
-#. desklet.js:704
+#. desklet.js:737
msgid "KiB"
msgstr "KiB"
@@ -172,6 +195,10 @@ msgstr "Sử dụng"
msgid "Temperature"
msgstr ""
+#. settings-schema.json->cpu-variable->options
+msgid "Fan Speed"
+msgstr ""
+
#. settings-schema.json->temperature-units-cpu->options
#. settings-schema.json->temperature-units-gpu->options
msgid "°C"
@@ -249,9 +276,11 @@ msgstr "Giao diện mạng để giám sát"
#. settings-schema.json->network-interface->tooltip
msgid ""
-"Leave empty to monitor all interfaces combined. Examples: eth0, wlan0, enp0s3"
+"Leave empty to monitor all interfaces combined. Examples: eth0, wlan0, "
+"enp0s3"
msgstr ""
-"Để trống để giám sát tất cả các giao diện kết hợp. Ví dụ: eth0, wlan0, enp0s3"
+"Để trống để giám sát tất cả các giao diện kết hợp. Ví dụ: eth0, wlan0, "
+"enp0s3"
#. settings-schema.json->battery-name->description
#, fuzzy
diff --git a/files/system-monitor-graph@rcassani/settings-schema.json b/files/system-monitor-graph@rcassani/settings-schema.json
index 537bf4b..4516d7d 100644
--- a/files/system-monitor-graph@rcassani/settings-schema.json
+++ b/files/system-monitor-graph@rcassani/settings-schema.json
@@ -30,7 +30,8 @@
"tooltip": "Select the CPU variable to monitor.",
"options" : {
"Usage" : "usage",
- "Temperature" : "temperature"
+ "Temperature" : "temperature",
+ "Fan" : "fan"
},
"dependency": "type=cpu"
},
diff --git a/screenshot5.png b/screenshot5.png
new file mode 100644
index 0000000000000000000000000000000000000000..2ceff9e2451a9b84701c540f280d1634f80c8af9
GIT binary patch
literal 83294
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