From 82d828c97df2d4a20b95d966fb3fcca63a042465 Mon Sep 17 00:00:00 2001
From: stsdc <6031763+stsdc@users.noreply.github.com>
Date: Thu, 24 Sep 2026 19:27:01 +0200
Subject: [PATCH 1/8] Create a group widget for metrics of the same device
---
src/Indicator/Widgets/DisplayWidget.vala | 121 ++++++++++--------
.../Widgets/IndicatorGroupWidget.vala | 25 ++++
src/Indicator/Widgets/IndicatorWidget.vala | 5 +-
.../Widgets/IndicatorWidgetBandwidth.vala | 3 -
.../Widgets/IndicatorWidgetFrequency.vala | 9 +-
.../Widgets/IndicatorWidgetPercentage.vala | 7 +-
.../Widgets/IndicatorWidgetTemperature.vala | 6 +-
src/Indicator/meson.build | 1 +
8 files changed, 107 insertions(+), 70 deletions(-)
create mode 100644 src/Indicator/Widgets/IndicatorGroupWidget.vala
diff --git a/src/Indicator/Widgets/DisplayWidget.vala b/src/Indicator/Widgets/DisplayWidget.vala
index 9a8becd72..c99dacbbd 100644
--- a/src/Indicator/Widgets/DisplayWidget.vala
+++ b/src/Indicator/Widgets/DisplayWidget.vala
@@ -7,18 +7,19 @@ public class Monitor.Widgets.DisplayWidget : Gtk.Box {
construct {
valign = Gtk.Align.CENTER;
- var cpu_widget = new IndicatorWidgetPercentage ("cpu-symbolic");
- var cpu_frequency_widget = new IndicatorWidgetFrequency ("cpu-symbolic");
- var cpu_temperature_widget = new IndicatorWidgetTemperature ("temperature-sensor-symbolic");
+ var cpu_group_widget = new IndicatorGroupWidget ("cpu-symbolic");
+ var cpu_widget = new IndicatorWidgetPercentage ();
+ var cpu_frequency_widget = new IndicatorWidgetFrequency ();
+ var cpu_temperature_widget = new IndicatorWidgetTemperature ();
- var memory_widget = new IndicatorWidgetPercentage ("ram-symbolic");
+ // var memory_widget = new IndicatorWidgetPercentage ("ram-symbolic");
- var network_up_widget = new IndicatorWidgetBandwidth ("go-up-symbolic");
- var network_down_widget = new IndicatorWidgetBandwidth ("go-down-symbolic");
+ // var network_up_widget = new IndicatorWidgetBandwidth ("go-up-symbolic");
+ // var network_down_widget = new IndicatorWidgetBandwidth ("go-down-symbolic");
- var gpu_widget = new IndicatorWidgetPercentage ("gpu-symbolic");
- var gpu_memory_widget = new IndicatorWidgetPercentage ("gpu-vram-symbolic");
- var gpu_temperature_widget = new IndicatorWidgetTemperature ("temperature-gpu-symbolic");
+ // var gpu_widget = new IndicatorWidgetPercentage ("gpu-symbolic");
+ // var gpu_memory_widget = new IndicatorWidgetPercentage ("gpu-vram-symbolic");
+ // var gpu_temperature_widget = new IndicatorWidgetTemperature ("temperature-gpu-symbolic");
unowned var dbusclient = DBusClient.get_default ();
@@ -26,23 +27,38 @@ public class Monitor.Widgets.DisplayWidget : Gtk.Box {
cpu_widget.visible = Indicator.settings.get_boolean ("indicator-cpu-state");
cpu_frequency_widget.visible = Indicator.settings.get_boolean ("indicator-cpu-frequency-state");
cpu_temperature_widget.visible = Indicator.settings.get_boolean ("indicator-cpu-temperature-state");
- memory_widget.visible = Indicator.settings.get_boolean ("indicator-memory-state");
- network_up_widget.visible = Indicator.settings.get_boolean ("indicator-network-upload-state");
- network_down_widget.visible = Indicator.settings.get_boolean ("indicator-network-download-state");
- gpu_widget.visible = Indicator.settings.get_boolean ("indicator-gpu-state");
- gpu_memory_widget.visible = Indicator.settings.get_boolean ("indicator-gpu-memory-state");
- gpu_temperature_widget.visible = Indicator.settings.get_boolean ("indicator-gpu-temperature-state");
+ cpu_group_widget.visible = cpu_widget.visible || cpu_frequency_widget.visible || cpu_temperature_widget.visible;
+
+ // memory_widget.visible = Indicator.settings.get_boolean ("indicator-memory-state");
+ // network_up_widget.visible = Indicator.settings.get_boolean ("indicator-network-upload-state");
+ // network_down_widget.visible = Indicator.settings.get_boolean ("indicator-network-download-state");
+ // gpu_widget.visible = Indicator.settings.get_boolean ("indicator-gpu-state");
+ // gpu_memory_widget.visible = Indicator.settings.get_boolean ("indicator-gpu-memory-state");
+ // gpu_temperature_widget.visible = Indicator.settings.get_boolean ("indicator-gpu-temperature-state");
});
- dbusclient.interface.indicator_cpu_state.connect ((state) => cpu_widget.visible = state);
- dbusclient.interface.indicator_cpu_frequency_state.connect ((state) => cpu_frequency_widget.visible = state);
- dbusclient.interface.indicator_cpu_temperature_state.connect ((state) => cpu_temperature_widget.visible = state);
- dbusclient.interface.indicator_memory_state.connect ((state) => memory_widget.visible = state);
- dbusclient.interface.indicator_network_up_state.connect ((state) => network_up_widget.visible = state);
- dbusclient.interface.indicator_network_down_state.connect ((state) => network_down_widget.visible = state);
- dbusclient.interface.indicator_gpu_state.connect ((state) => gpu_widget.visible = state);
- dbusclient.interface.indicator_gpu_memory_state.connect ((state) => gpu_memory_widget.visible = state);
- dbusclient.interface.indicator_gpu_temperature_state.connect ((state) => gpu_temperature_widget.visible = state);
+ dbusclient.interface.indicator_cpu_state.connect ((state) => {
+ cpu_widget.visible = state;
+ cpu_group_widget.visible = cpu_widget.visible || cpu_frequency_widget.visible || cpu_temperature_widget.visible;
+
+ });
+ dbusclient.interface.indicator_cpu_frequency_state.connect ((state) => {
+ cpu_frequency_widget.visible = state;
+ cpu_group_widget.visible = cpu_widget.visible || cpu_frequency_widget.visible || cpu_temperature_widget.visible;
+
+ });
+ dbusclient.interface.indicator_cpu_temperature_state.connect ((state) => {
+ cpu_temperature_widget.visible = state;
+ cpu_group_widget.visible = cpu_widget.visible || cpu_frequency_widget.visible || cpu_temperature_widget.visible;
+
+
+ });
+ // dbusclient.interface.indicator_memory_state.connect ((state) => memory_widget.visible = state);
+ // dbusclient.interface.indicator_network_up_state.connect ((state) => network_up_widget.visible = state);
+ // dbusclient.interface.indicator_network_down_state.connect ((state) => network_down_widget.visible = state);
+ // dbusclient.interface.indicator_gpu_state.connect ((state) => gpu_widget.visible = state);
+ // dbusclient.interface.indicator_gpu_memory_state.connect ((state) => gpu_memory_widget.visible = state);
+ // dbusclient.interface.indicator_gpu_temperature_state.connect ((state) => gpu_temperature_widget.visible = state);
dbusclient.interface.update.connect ((sysres) => {
var cpu_percentage = Value (typeof (uint));
@@ -57,39 +73,42 @@ public class Monitor.Widgets.DisplayWidget : Gtk.Box {
cpu_temperature.set_int ((int) Math.round (sysres.cpu_temperature));
cpu_temperature_widget.update_label (cpu_temperature);
- var memory_percentage = Value (typeof (uint));
- memory_percentage.set_uint (sysres.memory_percentage);
- memory_widget.update_label (memory_percentage);
+ // var memory_percentage = Value (typeof (uint));
+ // memory_percentage.set_uint (sysres.memory_percentage);
+ // memory_widget.update_label (memory_percentage);
- var network_up = Value (typeof (uint64));
- network_up.set_uint64 (sysres.network_up);
- network_up_widget.update_label (network_up);
+ // var network_up = Value (typeof (uint64));
+ // network_up.set_uint64 (sysres.network_up);
+ // network_up_widget.update_label (network_up);
- var network_down = Value (typeof (uint64));
- network_down.set_uint64 (sysres.network_down);
- network_down_widget.update_label (network_down);
+ // var network_down = Value (typeof (uint64));
+ // network_down.set_uint64 (sysres.network_down);
+ // network_down_widget.update_label (network_down);
- var gpu_percentage = Value (typeof (uint));
- gpu_percentage.set_uint (sysres.gpu_percentage);
- gpu_widget.update_label (gpu_percentage);
+ // var gpu_percentage = Value (typeof (uint));
+ // gpu_percentage.set_uint (sysres.gpu_percentage);
+ // gpu_widget.update_label (gpu_percentage);
- var gpu_memory_percentage = Value (typeof (uint));
- gpu_memory_percentage.set_uint (sysres.gpu_memory_percentage);
- gpu_memory_widget.update_label (gpu_memory_percentage);
+ // var gpu_memory_percentage = Value (typeof (uint));
+ // gpu_memory_percentage.set_uint (sysres.gpu_memory_percentage);
+ // gpu_memory_widget.update_label (gpu_memory_percentage);
- var gpu_temperature = Value (typeof (int));
- gpu_temperature.set_int ((int) Math.round (sysres.gpu_temperature));
- gpu_temperature_widget.update_label (gpu_temperature);
+ // var gpu_temperature = Value (typeof (int));
+ // gpu_temperature.set_int ((int) Math.round (sysres.gpu_temperature));
+ // gpu_temperature_widget.update_label (gpu_temperature);
});
- append (cpu_widget);
- append (cpu_frequency_widget);
- append (cpu_temperature_widget);
- append (memory_widget);
- append (gpu_widget);
- append (gpu_memory_widget);
- append (gpu_temperature_widget);
- append (network_down_widget);
- append (network_up_widget);
+
+ cpu_group_widget.append (cpu_widget);
+ cpu_group_widget.append (cpu_frequency_widget);
+ cpu_group_widget.append (cpu_temperature_widget);
+ append (cpu_group_widget);
+
+ // append (memory_widget);
+ // append (gpu_widget);
+ // append (gpu_memory_widget);
+ // append (gpu_temperature_widget);
+ // append (network_down_widget);
+ // append (network_up_widget);
}
}
diff --git a/src/Indicator/Widgets/IndicatorGroupWidget.vala b/src/Indicator/Widgets/IndicatorGroupWidget.vala
new file mode 100644
index 000000000..aa45a5917
--- /dev/null
+++ b/src/Indicator/Widgets/IndicatorGroupWidget.vala
@@ -0,0 +1,25 @@
+/*
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ * SPDX-FileCopyrightText: 2026 elementary, Inc. (https://elementary.io)
+ */
+
+public class Monitor.IndicatorGroupWidget : Gtk.Box {
+
+ public string icon_name { get; construct; }
+
+ protected Gtk.Label label;
+
+ public IndicatorGroupWidget (string icon_name) {
+ Object (
+ orientation: Gtk.Orientation.HORIZONTAL,
+ icon_name: icon_name,
+ visible: false
+ );
+ }
+
+ construct {
+ var icon = new Gtk.Image.from_icon_name (icon_name);
+ append (icon);
+ }
+
+}
diff --git a/src/Indicator/Widgets/IndicatorWidget.vala b/src/Indicator/Widgets/IndicatorWidget.vala
index 80301e90c..58789aeee 100644
--- a/src/Indicator/Widgets/IndicatorWidget.vala
+++ b/src/Indicator/Widgets/IndicatorWidget.vala
@@ -9,10 +9,9 @@ public class Monitor.IndicatorWidget : Gtk.Box {
protected Gtk.Label label;
- public IndicatorWidget (string icon_name) {
+ public IndicatorWidget () {
Object (
orientation: Gtk.Orientation.HORIZONTAL,
- icon_name: icon_name,
visible: false
);
}
@@ -26,9 +25,9 @@ public class Monitor.IndicatorWidget : Gtk.Box {
margin_top = 2,
margin_bottom = 2,
width_chars = 4,
+ use_markup = true,
};
- append (icon);
append (label);
}
diff --git a/src/Indicator/Widgets/IndicatorWidgetBandwidth.vala b/src/Indicator/Widgets/IndicatorWidgetBandwidth.vala
index 75bdad803..26ec761fa 100644
--- a/src/Indicator/Widgets/IndicatorWidgetBandwidth.vala
+++ b/src/Indicator/Widgets/IndicatorWidgetBandwidth.vala
@@ -4,9 +4,6 @@
*/
public class Monitor.IndicatorWidgetBandwidth : Monitor.IndicatorWidget {
- public IndicatorWidgetBandwidth (string icon_name) {
- base (icon_name);
- }
public override void update_label (Value value) {
uint64 bandwidth = value.get_uint64 ();
diff --git a/src/Indicator/Widgets/IndicatorWidgetFrequency.vala b/src/Indicator/Widgets/IndicatorWidgetFrequency.vala
index 5aabb5def..1cbe4ba21 100644
--- a/src/Indicator/Widgets/IndicatorWidgetFrequency.vala
+++ b/src/Indicator/Widgets/IndicatorWidgetFrequency.vala
@@ -4,13 +4,12 @@
*/
public class Monitor.IndicatorWidgetFrequency : Monitor.IndicatorWidget {
- public IndicatorWidgetFrequency (string icon_name) {
- base (icon_name);
- }
- public override void update_label (Value value) {
+public override void update_label (Value value) {
double frequency = value.get_double ();
- label.label = Utils.Strings.format_frequency (frequency);
+ label.width_chars = 8;
+ label.label = "%s".printf (Utils.Strings.format_frequency (frequency));
+
}
}
diff --git a/src/Indicator/Widgets/IndicatorWidgetPercentage.vala b/src/Indicator/Widgets/IndicatorWidgetPercentage.vala
index f1bb98a46..a0996a424 100644
--- a/src/Indicator/Widgets/IndicatorWidgetPercentage.vala
+++ b/src/Indicator/Widgets/IndicatorWidgetPercentage.vala
@@ -4,14 +4,13 @@
*/
public class Monitor.IndicatorWidgetPercentage : Monitor.IndicatorWidget {
- public IndicatorWidgetPercentage (string icon_name) {
- base (icon_name);
- }
+
public override void update_label (Value value) {
uint percentage = value.get_uint ();
- label.label = "%u%%".printf (percentage);
+ label.label = "%u%%".printf (percentage);
+
label.remove_css_class ("monitor-indicator-label-warning");
label.remove_css_class ("monitor-indicator-label-critical");
diff --git a/src/Indicator/Widgets/IndicatorWidgetTemperature.vala b/src/Indicator/Widgets/IndicatorWidgetTemperature.vala
index 4580559fd..ab1f69633 100644
--- a/src/Indicator/Widgets/IndicatorWidgetTemperature.vala
+++ b/src/Indicator/Widgets/IndicatorWidgetTemperature.vala
@@ -4,13 +4,11 @@
*/
public class Monitor.IndicatorWidgetTemperature : Monitor.IndicatorWidget {
- public IndicatorWidgetTemperature (string icon_name) {
- base (icon_name);
- }
public override void update_label (Value value) {
int temperature = value.get_int ();
- label.label = "%i℃".printf (temperature);
+ label.width_chars = 3;
+ label.label = "%i℃".printf (temperature);
}
}
diff --git a/src/Indicator/meson.build b/src/Indicator/meson.build
index 99457d978..8095fa375 100644
--- a/src/Indicator/meson.build
+++ b/src/Indicator/meson.build
@@ -3,6 +3,7 @@ source_indicator_files = [
'Services/DBusClient.vala',
'Widgets/DisplayWidget.vala',
'Widgets/IndicatorWidget.vala',
+ 'Widgets/IndicatorGroupWidget.vala',
'Widgets/IndicatorWidgetPercentage.vala',
'Widgets/IndicatorWidgetTemperature.vala',
'Widgets/IndicatorWidgetFrequency.vala',
From f05beb9387908ee51947250ba044489f7dd5ad94 Mon Sep 17 00:00:00 2001
From: stsdc <6031763+stsdc@users.noreply.github.com>
Date: Sat, 26 Sep 2026 16:34:29 +0200
Subject: [PATCH 2/8] Group memory and GPU metrics in the Indicator
---
src/Indicator/Widgets/DisplayWidget.vala | 82 ++++++++++++-------
.../Widgets/IndicatorGroupWidget.vala | 5 +-
src/Indicator/Widgets/IndicatorWidget.vala | 4 -
.../Widgets/IndicatorWidgetFrequency.vala | 2 +-
.../Widgets/IndicatorWidgetPercentage.vala | 1 -
5 files changed, 59 insertions(+), 35 deletions(-)
diff --git a/src/Indicator/Widgets/DisplayWidget.vala b/src/Indicator/Widgets/DisplayWidget.vala
index c99dacbbd..a637ec0ba 100644
--- a/src/Indicator/Widgets/DisplayWidget.vala
+++ b/src/Indicator/Widgets/DisplayWidget.vala
@@ -12,11 +12,17 @@ public class Monitor.Widgets.DisplayWidget : Gtk.Box {
var cpu_frequency_widget = new IndicatorWidgetFrequency ();
var cpu_temperature_widget = new IndicatorWidgetTemperature ();
- // var memory_widget = new IndicatorWidgetPercentage ("ram-symbolic");
+ var memory_group_widget = new IndicatorGroupWidget ("ram-symbolic");
+ var memory_widget = new IndicatorWidgetPercentage ();
// var network_up_widget = new IndicatorWidgetBandwidth ("go-up-symbolic");
// var network_down_widget = new IndicatorWidgetBandwidth ("go-down-symbolic");
+ var gpu_group_widget = new IndicatorGroupWidget ("gpu-symbolic");
+ var gpu_widget = new IndicatorWidgetPercentage ();
+ var gpu_memory_widget = new IndicatorWidgetPercentage ();
+ var gpu_temperature_widget = new IndicatorWidgetTemperature ();
+
// var gpu_widget = new IndicatorWidgetPercentage ("gpu-symbolic");
// var gpu_memory_widget = new IndicatorWidgetPercentage ("gpu-vram-symbolic");
// var gpu_temperature_widget = new IndicatorWidgetTemperature ("temperature-gpu-symbolic");
@@ -29,12 +35,16 @@ public class Monitor.Widgets.DisplayWidget : Gtk.Box {
cpu_temperature_widget.visible = Indicator.settings.get_boolean ("indicator-cpu-temperature-state");
cpu_group_widget.visible = cpu_widget.visible || cpu_frequency_widget.visible || cpu_temperature_widget.visible;
- // memory_widget.visible = Indicator.settings.get_boolean ("indicator-memory-state");
+ memory_widget.visible = Indicator.settings.get_boolean ("indicator-memory-state");
+ memory_group_widget.visible = memory_widget.visible;
+
// network_up_widget.visible = Indicator.settings.get_boolean ("indicator-network-upload-state");
// network_down_widget.visible = Indicator.settings.get_boolean ("indicator-network-download-state");
- // gpu_widget.visible = Indicator.settings.get_boolean ("indicator-gpu-state");
- // gpu_memory_widget.visible = Indicator.settings.get_boolean ("indicator-gpu-memory-state");
- // gpu_temperature_widget.visible = Indicator.settings.get_boolean ("indicator-gpu-temperature-state");
+
+ gpu_widget.visible = Indicator.settings.get_boolean ("indicator-gpu-state");
+ gpu_memory_widget.visible = Indicator.settings.get_boolean ("indicator-gpu-memory-state");
+ gpu_temperature_widget.visible = Indicator.settings.get_boolean ("indicator-gpu-temperature-state");
+ gpu_group_widget.visible = gpu_widget.visible || gpu_memory_widget.visible || gpu_temperature_widget.visible;
});
dbusclient.interface.indicator_cpu_state.connect ((state) => {
@@ -45,20 +55,32 @@ public class Monitor.Widgets.DisplayWidget : Gtk.Box {
dbusclient.interface.indicator_cpu_frequency_state.connect ((state) => {
cpu_frequency_widget.visible = state;
cpu_group_widget.visible = cpu_widget.visible || cpu_frequency_widget.visible || cpu_temperature_widget.visible;
-
});
+
dbusclient.interface.indicator_cpu_temperature_state.connect ((state) => {
cpu_temperature_widget.visible = state;
cpu_group_widget.visible = cpu_widget.visible || cpu_frequency_widget.visible || cpu_temperature_widget.visible;
+ });
-
+ dbusclient.interface.indicator_memory_state.connect ((state) => {
+ memory_widget.visible = state;
+ memory_group_widget.visible = memory_widget.visible;
});
- // dbusclient.interface.indicator_memory_state.connect ((state) => memory_widget.visible = state);
// dbusclient.interface.indicator_network_up_state.connect ((state) => network_up_widget.visible = state);
// dbusclient.interface.indicator_network_down_state.connect ((state) => network_down_widget.visible = state);
- // dbusclient.interface.indicator_gpu_state.connect ((state) => gpu_widget.visible = state);
- // dbusclient.interface.indicator_gpu_memory_state.connect ((state) => gpu_memory_widget.visible = state);
- // dbusclient.interface.indicator_gpu_temperature_state.connect ((state) => gpu_temperature_widget.visible = state);
+
+ dbusclient.interface.indicator_gpu_state.connect ((state) => {
+ gpu_widget.visible = state;
+ gpu_group_widget.visible = gpu_widget.visible || gpu_memory_widget.visible || gpu_temperature_widget.visible;
+ });
+ dbusclient.interface.indicator_gpu_memory_state.connect ((state) => {
+ gpu_memory_widget.visible = state;
+ gpu_group_widget.visible = gpu_widget.visible || gpu_memory_widget.visible || gpu_temperature_widget.visible;
+ });
+ dbusclient.interface.indicator_gpu_temperature_state.connect ((state) => {
+ gpu_temperature_widget.visible = state;
+ gpu_group_widget.visible = gpu_widget.visible || gpu_memory_widget.visible || gpu_temperature_widget.visible;
+ });
dbusclient.interface.update.connect ((sysres) => {
var cpu_percentage = Value (typeof (uint));
@@ -73,9 +95,9 @@ public class Monitor.Widgets.DisplayWidget : Gtk.Box {
cpu_temperature.set_int ((int) Math.round (sysres.cpu_temperature));
cpu_temperature_widget.update_label (cpu_temperature);
- // var memory_percentage = Value (typeof (uint));
- // memory_percentage.set_uint (sysres.memory_percentage);
- // memory_widget.update_label (memory_percentage);
+ var memory_percentage = Value (typeof (uint));
+ memory_percentage.set_uint (sysres.memory_percentage);
+ memory_widget.update_label (memory_percentage);
// var network_up = Value (typeof (uint64));
// network_up.set_uint64 (sysres.network_up);
@@ -85,17 +107,17 @@ public class Monitor.Widgets.DisplayWidget : Gtk.Box {
// network_down.set_uint64 (sysres.network_down);
// network_down_widget.update_label (network_down);
- // var gpu_percentage = Value (typeof (uint));
- // gpu_percentage.set_uint (sysres.gpu_percentage);
- // gpu_widget.update_label (gpu_percentage);
+ var gpu_percentage = Value (typeof (uint));
+ gpu_percentage.set_uint (sysres.gpu_percentage);
+ gpu_widget.update_label (gpu_percentage);
- // var gpu_memory_percentage = Value (typeof (uint));
- // gpu_memory_percentage.set_uint (sysres.gpu_memory_percentage);
- // gpu_memory_widget.update_label (gpu_memory_percentage);
+ var gpu_memory_percentage = Value (typeof (uint));
+ gpu_memory_percentage.set_uint (sysres.gpu_memory_percentage);
+ gpu_memory_widget.update_label (gpu_memory_percentage);
- // var gpu_temperature = Value (typeof (int));
- // gpu_temperature.set_int ((int) Math.round (sysres.gpu_temperature));
- // gpu_temperature_widget.update_label (gpu_temperature);
+ var gpu_temperature = Value (typeof (int));
+ gpu_temperature.set_int ((int) Math.round (sysres.gpu_temperature));
+ gpu_temperature_widget.update_label (gpu_temperature);
});
@@ -103,11 +125,15 @@ public class Monitor.Widgets.DisplayWidget : Gtk.Box {
cpu_group_widget.append (cpu_frequency_widget);
cpu_group_widget.append (cpu_temperature_widget);
append (cpu_group_widget);
-
- // append (memory_widget);
- // append (gpu_widget);
- // append (gpu_memory_widget);
- // append (gpu_temperature_widget);
+
+ memory_group_widget.append (memory_widget);
+ append (memory_group_widget);
+
+ gpu_group_widget.append (gpu_widget);
+ gpu_group_widget.append (gpu_memory_widget);
+ gpu_group_widget.append (gpu_temperature_widget);
+ append (gpu_group_widget);
+
// append (network_down_widget);
// append (network_up_widget);
}
diff --git a/src/Indicator/Widgets/IndicatorGroupWidget.vala b/src/Indicator/Widgets/IndicatorGroupWidget.vala
index aa45a5917..13edbc036 100644
--- a/src/Indicator/Widgets/IndicatorGroupWidget.vala
+++ b/src/Indicator/Widgets/IndicatorGroupWidget.vala
@@ -18,7 +18,10 @@ public class Monitor.IndicatorGroupWidget : Gtk.Box {
}
construct {
- var icon = new Gtk.Image.from_icon_name (icon_name);
+ var icon = new Gtk.Image.from_icon_name (icon_name) {
+ margin_start = 6,
+ margin_end = 2,
+ };
append (icon);
}
diff --git a/src/Indicator/Widgets/IndicatorWidget.vala b/src/Indicator/Widgets/IndicatorWidget.vala
index 58789aeee..3b8293052 100644
--- a/src/Indicator/Widgets/IndicatorWidget.vala
+++ b/src/Indicator/Widgets/IndicatorWidget.vala
@@ -5,8 +5,6 @@
public class Monitor.IndicatorWidget : Gtk.Box {
- public string icon_name { get; construct; }
-
protected Gtk.Label label;
public IndicatorWidget () {
@@ -17,8 +15,6 @@ public class Monitor.IndicatorWidget : Gtk.Box {
}
construct {
- var icon = new Gtk.Image.from_icon_name (icon_name);
-
label = new Gtk.Label (Utils.NOT_AVAILABLE) {
margin_start = 2,
margin_end = 2,
diff --git a/src/Indicator/Widgets/IndicatorWidgetFrequency.vala b/src/Indicator/Widgets/IndicatorWidgetFrequency.vala
index 1cbe4ba21..244a1dd6a 100644
--- a/src/Indicator/Widgets/IndicatorWidgetFrequency.vala
+++ b/src/Indicator/Widgets/IndicatorWidgetFrequency.vala
@@ -8,7 +8,7 @@ public class Monitor.IndicatorWidgetFrequency : Monitor.IndicatorWidget {
public override void update_label (Value value) {
double frequency = value.get_double ();
- label.width_chars = 8;
+ label.width_chars = 7;
label.label = "%s".printf (Utils.Strings.format_frequency (frequency));
}
diff --git a/src/Indicator/Widgets/IndicatorWidgetPercentage.vala b/src/Indicator/Widgets/IndicatorWidgetPercentage.vala
index a0996a424..92e796fce 100644
--- a/src/Indicator/Widgets/IndicatorWidgetPercentage.vala
+++ b/src/Indicator/Widgets/IndicatorWidgetPercentage.vala
@@ -5,7 +5,6 @@
public class Monitor.IndicatorWidgetPercentage : Monitor.IndicatorWidget {
-
public override void update_label (Value value) {
uint percentage = value.get_uint ();
From 4f493f0029c44c202388ade96d6b75f74af686ee Mon Sep 17 00:00:00 2001
From: stsdc <6031763+stsdc@users.noreply.github.com>
Date: Sat, 26 Sep 2026 17:01:38 +0200
Subject: [PATCH 3/8] Group the bandwitch metrics; add the network icon
---
data/icons/icons.indicator.gresource.xml | 1 +
data/icons/network-symbolic.svg | 51 ++++++++++++++++++
src/Indicator/Widgets/DisplayWidget.vala | 52 +++++++++++--------
.../Widgets/IndicatorWidgetBandwidth.vala | 3 +-
.../Widgets/IndicatorWidgetFrequency.vala | 1 -
5 files changed, 83 insertions(+), 25 deletions(-)
create mode 100644 data/icons/network-symbolic.svg
diff --git a/data/icons/icons.indicator.gresource.xml b/data/icons/icons.indicator.gresource.xml
index ad678d28b..046e2f0ab 100644
--- a/data/icons/icons.indicator.gresource.xml
+++ b/data/icons/icons.indicator.gresource.xml
@@ -7,6 +7,7 @@
ram-symbolic.svg
gpu-vram-symbolic.svg
swap-symbolic.svg
+ network-symbolic.svg
file-deleted-symbolic.svg
temperature-sensor-symbolic.svg
temperature-gpu-symbolic.svg
diff --git a/data/icons/network-symbolic.svg b/data/icons/network-symbolic.svg
new file mode 100644
index 000000000..b4031891b
--- /dev/null
+++ b/data/icons/network-symbolic.svg
@@ -0,0 +1,51 @@
+
+
diff --git a/src/Indicator/Widgets/DisplayWidget.vala b/src/Indicator/Widgets/DisplayWidget.vala
index a637ec0ba..30cdcd78b 100644
--- a/src/Indicator/Widgets/DisplayWidget.vala
+++ b/src/Indicator/Widgets/DisplayWidget.vala
@@ -15,17 +15,14 @@ public class Monitor.Widgets.DisplayWidget : Gtk.Box {
var memory_group_widget = new IndicatorGroupWidget ("ram-symbolic");
var memory_widget = new IndicatorWidgetPercentage ();
- // var network_up_widget = new IndicatorWidgetBandwidth ("go-up-symbolic");
- // var network_down_widget = new IndicatorWidgetBandwidth ("go-down-symbolic");
-
var gpu_group_widget = new IndicatorGroupWidget ("gpu-symbolic");
var gpu_widget = new IndicatorWidgetPercentage ();
var gpu_memory_widget = new IndicatorWidgetPercentage ();
var gpu_temperature_widget = new IndicatorWidgetTemperature ();
-
- // var gpu_widget = new IndicatorWidgetPercentage ("gpu-symbolic");
- // var gpu_memory_widget = new IndicatorWidgetPercentage ("gpu-vram-symbolic");
- // var gpu_temperature_widget = new IndicatorWidgetTemperature ("temperature-gpu-symbolic");
+
+ var network_group_widget = new IndicatorGroupWidget ("network-symbolic");
+ var network_up_widget = new IndicatorWidgetBandwidth ();
+ var network_down_widget = new IndicatorWidgetBandwidth ();
unowned var dbusclient = DBusClient.get_default ();
@@ -38,8 +35,9 @@ public class Monitor.Widgets.DisplayWidget : Gtk.Box {
memory_widget.visible = Indicator.settings.get_boolean ("indicator-memory-state");
memory_group_widget.visible = memory_widget.visible;
- // network_up_widget.visible = Indicator.settings.get_boolean ("indicator-network-upload-state");
- // network_down_widget.visible = Indicator.settings.get_boolean ("indicator-network-download-state");
+ network_up_widget.visible = Indicator.settings.get_boolean ("indicator-network-upload-state");
+ network_down_widget.visible = Indicator.settings.get_boolean ("indicator-network-download-state");
+ network_group_widget.visible = network_up_widget.visible || network_down_widget.visible;
gpu_widget.visible = Indicator.settings.get_boolean ("indicator-gpu-state");
gpu_memory_widget.visible = Indicator.settings.get_boolean ("indicator-gpu-memory-state");
@@ -66,9 +64,7 @@ public class Monitor.Widgets.DisplayWidget : Gtk.Box {
memory_widget.visible = state;
memory_group_widget.visible = memory_widget.visible;
});
- // dbusclient.interface.indicator_network_up_state.connect ((state) => network_up_widget.visible = state);
- // dbusclient.interface.indicator_network_down_state.connect ((state) => network_down_widget.visible = state);
-
+
dbusclient.interface.indicator_gpu_state.connect ((state) => {
gpu_widget.visible = state;
gpu_group_widget.visible = gpu_widget.visible || gpu_memory_widget.visible || gpu_temperature_widget.visible;
@@ -82,6 +78,15 @@ public class Monitor.Widgets.DisplayWidget : Gtk.Box {
gpu_group_widget.visible = gpu_widget.visible || gpu_memory_widget.visible || gpu_temperature_widget.visible;
});
+ dbusclient.interface.indicator_network_up_state.connect ((state) => {
+ network_up_widget.visible = state;
+ network_group_widget.visible = network_up_widget.visible || network_down_widget.visible;
+ });
+ dbusclient.interface.indicator_network_down_state.connect ((state) => {
+ network_down_widget.visible = state;
+ network_group_widget.visible = network_up_widget.visible || network_down_widget.visible;
+ });
+
dbusclient.interface.update.connect ((sysres) => {
var cpu_percentage = Value (typeof (uint));
cpu_percentage.set_uint (sysres.cpu_percentage);
@@ -99,14 +104,6 @@ public class Monitor.Widgets.DisplayWidget : Gtk.Box {
memory_percentage.set_uint (sysres.memory_percentage);
memory_widget.update_label (memory_percentage);
- // var network_up = Value (typeof (uint64));
- // network_up.set_uint64 (sysres.network_up);
- // network_up_widget.update_label (network_up);
-
- // var network_down = Value (typeof (uint64));
- // network_down.set_uint64 (sysres.network_down);
- // network_down_widget.update_label (network_down);
-
var gpu_percentage = Value (typeof (uint));
gpu_percentage.set_uint (sysres.gpu_percentage);
gpu_widget.update_label (gpu_percentage);
@@ -118,8 +115,16 @@ public class Monitor.Widgets.DisplayWidget : Gtk.Box {
var gpu_temperature = Value (typeof (int));
gpu_temperature.set_int ((int) Math.round (sysres.gpu_temperature));
gpu_temperature_widget.update_label (gpu_temperature);
- });
+ var network_up = Value (typeof (uint64));
+ network_up.set_uint64 (sysres.network_up);
+ network_up_widget.update_label (network_up);
+
+ var network_down = Value (typeof (uint64));
+ network_down.set_uint64 (sysres.network_down);
+ network_down_widget.update_label (network_down);
+
+ });
cpu_group_widget.append (cpu_widget);
cpu_group_widget.append (cpu_frequency_widget);
@@ -134,7 +139,8 @@ public class Monitor.Widgets.DisplayWidget : Gtk.Box {
gpu_group_widget.append (gpu_temperature_widget);
append (gpu_group_widget);
- // append (network_down_widget);
- // append (network_up_widget);
+ network_group_widget.append (network_up_widget);
+ network_group_widget.append (network_down_widget);
+ append (network_group_widget);
}
}
diff --git a/src/Indicator/Widgets/IndicatorWidgetBandwidth.vala b/src/Indicator/Widgets/IndicatorWidgetBandwidth.vala
index 26ec761fa..e41a7be01 100644
--- a/src/Indicator/Widgets/IndicatorWidgetBandwidth.vala
+++ b/src/Indicator/Widgets/IndicatorWidgetBandwidth.vala
@@ -8,6 +8,7 @@ public class Monitor.IndicatorWidgetBandwidth : Monitor.IndicatorWidget {
public override void update_label (Value value) {
uint64 bandwidth = value.get_uint64 ();
- label.label = Utils.Strings.format_network_speed (bandwidth);
+ label.width_chars = 9;
+ label.label = "%s".printf (Utils.Strings.format_network_speed (bandwidth));
}
}
diff --git a/src/Indicator/Widgets/IndicatorWidgetFrequency.vala b/src/Indicator/Widgets/IndicatorWidgetFrequency.vala
index 244a1dd6a..c4d0a024b 100644
--- a/src/Indicator/Widgets/IndicatorWidgetFrequency.vala
+++ b/src/Indicator/Widgets/IndicatorWidgetFrequency.vala
@@ -10,6 +10,5 @@ public override void update_label (Value value) {
label.width_chars = 7;
label.label = "%s".printf (Utils.Strings.format_frequency (frequency));
-
}
}
From 413ac9ae1c586ef46b6606caad52223c07c7cfa0 Mon Sep 17 00:00:00 2001
From: stsdc <6031763+stsdc@users.noreply.github.com>
Date: Sun, 27 Sep 2026 18:11:28 +0200
Subject: [PATCH 4/8] Introduce revelear to add smooth reveal/hide animation on
metrics enable/disable
---
src/Indicator/Widgets/DisplayWidget.vala | 75 +++++++++++--------
.../Widgets/IndicatorGroupWidget.vala | 17 ++++-
src/Indicator/Widgets/IndicatorWidget.vala | 4 +-
.../Widgets/IndicatorWidgetFrequency.vala | 6 ++
4 files changed, 64 insertions(+), 38 deletions(-)
diff --git a/src/Indicator/Widgets/DisplayWidget.vala b/src/Indicator/Widgets/DisplayWidget.vala
index 30cdcd78b..8cdb3a8d4 100644
--- a/src/Indicator/Widgets/DisplayWidget.vala
+++ b/src/Indicator/Widgets/DisplayWidget.vala
@@ -27,64 +27,64 @@ public class Monitor.Widgets.DisplayWidget : Gtk.Box {
unowned var dbusclient = DBusClient.get_default ();
dbusclient.monitor_appeared.connect (() => {
- cpu_widget.visible = Indicator.settings.get_boolean ("indicator-cpu-state");
- cpu_frequency_widget.visible = Indicator.settings.get_boolean ("indicator-cpu-frequency-state");
- cpu_temperature_widget.visible = Indicator.settings.get_boolean ("indicator-cpu-temperature-state");
- cpu_group_widget.visible = cpu_widget.visible || cpu_frequency_widget.visible || cpu_temperature_widget.visible;
-
- memory_widget.visible = Indicator.settings.get_boolean ("indicator-memory-state");
- memory_group_widget.visible = memory_widget.visible;
+ cpu_widget.revealed = Indicator.settings.get_boolean ("indicator-cpu-state");
+ cpu_frequency_widget.revealed = Indicator.settings.get_boolean ("indicator-cpu-frequency-state");
+ cpu_temperature_widget.revealed = Indicator.settings.get_boolean ("indicator-cpu-temperature-state");
+ cpu_group_widget.revealed = cpu_widget.revealed || cpu_frequency_widget.revealed || cpu_temperature_widget.revealed;
+
+ memory_widget.revealed = Indicator.settings.get_boolean ("indicator-memory-state");
+ memory_group_widget.revealed = memory_widget.revealed;
- network_up_widget.visible = Indicator.settings.get_boolean ("indicator-network-upload-state");
- network_down_widget.visible = Indicator.settings.get_boolean ("indicator-network-download-state");
- network_group_widget.visible = network_up_widget.visible || network_down_widget.visible;
+ network_up_widget.revealed = Indicator.settings.get_boolean ("indicator-network-upload-state");
+ network_down_widget.revealed = Indicator.settings.get_boolean ("indicator-network-download-state");
+ network_group_widget.revealed = network_up_widget.revealed || network_down_widget.revealed;
- gpu_widget.visible = Indicator.settings.get_boolean ("indicator-gpu-state");
- gpu_memory_widget.visible = Indicator.settings.get_boolean ("indicator-gpu-memory-state");
- gpu_temperature_widget.visible = Indicator.settings.get_boolean ("indicator-gpu-temperature-state");
- gpu_group_widget.visible = gpu_widget.visible || gpu_memory_widget.visible || gpu_temperature_widget.visible;
+ gpu_widget.revealed = Indicator.settings.get_boolean ("indicator-gpu-state");
+ gpu_memory_widget.revealed = Indicator.settings.get_boolean ("indicator-gpu-memory-state");
+ gpu_temperature_widget.revealed = Indicator.settings.get_boolean ("indicator-gpu-temperature-state");
+ gpu_group_widget.revealed = gpu_widget.revealed || gpu_memory_widget.revealed || gpu_temperature_widget.revealed;
});
dbusclient.interface.indicator_cpu_state.connect ((state) => {
- cpu_widget.visible = state;
- cpu_group_widget.visible = cpu_widget.visible || cpu_frequency_widget.visible || cpu_temperature_widget.visible;
+ cpu_widget.revealed = state;
+ cpu_group_widget.revealed = cpu_widget.revealed || cpu_frequency_widget.revealed || cpu_temperature_widget.revealed;
});
dbusclient.interface.indicator_cpu_frequency_state.connect ((state) => {
- cpu_frequency_widget.visible = state;
- cpu_group_widget.visible = cpu_widget.visible || cpu_frequency_widget.visible || cpu_temperature_widget.visible;
+ cpu_frequency_widget.revealed = state;
+ cpu_group_widget.revealed = cpu_widget.revealed || cpu_frequency_widget.revealed || cpu_temperature_widget.revealed;
});
dbusclient.interface.indicator_cpu_temperature_state.connect ((state) => {
- cpu_temperature_widget.visible = state;
- cpu_group_widget.visible = cpu_widget.visible || cpu_frequency_widget.visible || cpu_temperature_widget.visible;
+ cpu_temperature_widget.revealed = state;
+ cpu_group_widget.revealed = cpu_widget.revealed || cpu_frequency_widget.revealed || cpu_temperature_widget.revealed;
});
dbusclient.interface.indicator_memory_state.connect ((state) => {
- memory_widget.visible = state;
- memory_group_widget.visible = memory_widget.visible;
+ memory_widget.revealed = state;
+ memory_group_widget.revealed = memory_widget.revealed;
});
dbusclient.interface.indicator_gpu_state.connect ((state) => {
- gpu_widget.visible = state;
- gpu_group_widget.visible = gpu_widget.visible || gpu_memory_widget.visible || gpu_temperature_widget.visible;
+ gpu_widget.revealed = state;
+ gpu_group_widget.revealed = gpu_widget.revealed || gpu_memory_widget.revealed || gpu_temperature_widget.revealed;
});
dbusclient.interface.indicator_gpu_memory_state.connect ((state) => {
- gpu_memory_widget.visible = state;
- gpu_group_widget.visible = gpu_widget.visible || gpu_memory_widget.visible || gpu_temperature_widget.visible;
+ gpu_memory_widget.revealed = state;
+ gpu_group_widget.revealed = gpu_widget.revealed || gpu_memory_widget.revealed || gpu_temperature_widget.revealed;
});
dbusclient.interface.indicator_gpu_temperature_state.connect ((state) => {
- gpu_temperature_widget.visible = state;
- gpu_group_widget.visible = gpu_widget.visible || gpu_memory_widget.visible || gpu_temperature_widget.visible;
+ gpu_temperature_widget.revealed = state;
+ gpu_group_widget.revealed = gpu_widget.revealed || gpu_memory_widget.revealed || gpu_temperature_widget.revealed;
});
dbusclient.interface.indicator_network_up_state.connect ((state) => {
- network_up_widget.visible = state;
- network_group_widget.visible = network_up_widget.visible || network_down_widget.visible;
+ network_up_widget.revealed = state;
+ network_group_widget.revealed = network_up_widget.revealed || network_down_widget.revealed;
});
dbusclient.interface.indicator_network_down_state.connect ((state) => {
- network_down_widget.visible = state;
- network_group_widget.visible = network_up_widget.visible || network_down_widget.visible;
+ network_down_widget.revealed = state;
+ network_group_widget.revealed = network_up_widget.revealed || network_down_widget.revealed;
});
dbusclient.interface.update.connect ((sysres) => {
@@ -126,6 +126,7 @@ public class Monitor.Widgets.DisplayWidget : Gtk.Box {
});
+
cpu_group_widget.append (cpu_widget);
cpu_group_widget.append (cpu_frequency_widget);
cpu_group_widget.append (cpu_temperature_widget);
@@ -143,4 +144,14 @@ public class Monitor.Widgets.DisplayWidget : Gtk.Box {
network_group_widget.append (network_down_widget);
append (network_group_widget);
}
+
+ public new void append (IndicatorGroupWidget widget) {
+ var revealer = new Gtk.Revealer () {
+ child = widget,
+ transition_type = Gtk.RevealerTransitionType.SLIDE_LEFT,
+ };
+ widget.bind_property ("revealed", revealer, "reveal-child", DEFAULT);
+ base.append (revealer);
+ }
+
}
diff --git a/src/Indicator/Widgets/IndicatorGroupWidget.vala b/src/Indicator/Widgets/IndicatorGroupWidget.vala
index 13edbc036..ac5cc76ef 100644
--- a/src/Indicator/Widgets/IndicatorGroupWidget.vala
+++ b/src/Indicator/Widgets/IndicatorGroupWidget.vala
@@ -6,15 +6,15 @@
public class Monitor.IndicatorGroupWidget : Gtk.Box {
public string icon_name { get; construct; }
+ public bool revealed { get; set; }
protected Gtk.Label label;
public IndicatorGroupWidget (string icon_name) {
Object (
orientation: Gtk.Orientation.HORIZONTAL,
- icon_name: icon_name,
- visible: false
- );
+ icon_name: icon_name
+ );
}
construct {
@@ -22,7 +22,16 @@ public class Monitor.IndicatorGroupWidget : Gtk.Box {
margin_start = 6,
margin_end = 2,
};
- append (icon);
+ base.append (icon);
+ }
+
+ public new void append (IndicatorWidget widget) {
+ var revealer = new Gtk.Revealer () {
+ child = widget,
+ transition_type = Gtk.RevealerTransitionType.SLIDE_LEFT,
+ };
+ widget.bind_property ("revealed", revealer, "reveal-child", DEFAULT);
+ base.append (revealer);
}
}
diff --git a/src/Indicator/Widgets/IndicatorWidget.vala b/src/Indicator/Widgets/IndicatorWidget.vala
index 3b8293052..be1a84294 100644
--- a/src/Indicator/Widgets/IndicatorWidget.vala
+++ b/src/Indicator/Widgets/IndicatorWidget.vala
@@ -6,11 +6,11 @@
public class Monitor.IndicatorWidget : Gtk.Box {
protected Gtk.Label label;
+ public bool revealed { get; set; }
public IndicatorWidget () {
Object (
- orientation: Gtk.Orientation.HORIZONTAL,
- visible: false
+ orientation: Gtk.Orientation.HORIZONTAL
);
}
diff --git a/src/Indicator/Widgets/IndicatorWidgetFrequency.vala b/src/Indicator/Widgets/IndicatorWidgetFrequency.vala
index c4d0a024b..2c5d2cb2f 100644
--- a/src/Indicator/Widgets/IndicatorWidgetFrequency.vala
+++ b/src/Indicator/Widgets/IndicatorWidgetFrequency.vala
@@ -5,6 +5,12 @@
public class Monitor.IndicatorWidgetFrequency : Monitor.IndicatorWidget {
+// public IndicatorWidgetFrequency () {
+// Object (
+// revealed: false
+// );
+// }
+
public override void update_label (Value value) {
double frequency = value.get_double ();
From 919fd288c61fb6139d9b856ce271e3ec2c7fc4fe Mon Sep 17 00:00:00 2001
From: stsdc <6031763+stsdc@users.noreply.github.com>
Date: Mon, 28 Sep 2026 23:16:44 +0200
Subject: [PATCH 5/8] Switch from markup to NUMERIC css class
---
src/Indicator/Widgets/DisplayWidget.vala | 2 +-
src/Indicator/Widgets/IndicatorWidgetBandwidth.vala | 3 ++-
src/Indicator/Widgets/IndicatorWidgetFrequency.vala | 9 ++-------
src/Indicator/Widgets/IndicatorWidgetPercentage.vala | 5 +++--
src/Indicator/Widgets/IndicatorWidgetTemperature.vala | 3 ++-
src/Indicator/meson.build | 4 ++--
6 files changed, 12 insertions(+), 14 deletions(-)
diff --git a/src/Indicator/Widgets/DisplayWidget.vala b/src/Indicator/Widgets/DisplayWidget.vala
index 8cdb3a8d4..4faf74618 100644
--- a/src/Indicator/Widgets/DisplayWidget.vala
+++ b/src/Indicator/Widgets/DisplayWidget.vala
@@ -38,7 +38,7 @@ public class Monitor.Widgets.DisplayWidget : Gtk.Box {
network_up_widget.revealed = Indicator.settings.get_boolean ("indicator-network-upload-state");
network_down_widget.revealed = Indicator.settings.get_boolean ("indicator-network-download-state");
network_group_widget.revealed = network_up_widget.revealed || network_down_widget.revealed;
-
+
gpu_widget.revealed = Indicator.settings.get_boolean ("indicator-gpu-state");
gpu_memory_widget.revealed = Indicator.settings.get_boolean ("indicator-gpu-memory-state");
gpu_temperature_widget.revealed = Indicator.settings.get_boolean ("indicator-gpu-temperature-state");
diff --git a/src/Indicator/Widgets/IndicatorWidgetBandwidth.vala b/src/Indicator/Widgets/IndicatorWidgetBandwidth.vala
index e41a7be01..78b8823c7 100644
--- a/src/Indicator/Widgets/IndicatorWidgetBandwidth.vala
+++ b/src/Indicator/Widgets/IndicatorWidgetBandwidth.vala
@@ -8,7 +8,8 @@ public class Monitor.IndicatorWidgetBandwidth : Monitor.IndicatorWidget {
public override void update_label (Value value) {
uint64 bandwidth = value.get_uint64 ();
+ label.add_css_class (Granite.CssClass.NUMERIC);
label.width_chars = 9;
- label.label = "%s".printf (Utils.Strings.format_network_speed (bandwidth));
+ label.label = "%s".printf (Utils.Strings.format_network_speed (bandwidth));
}
}
diff --git a/src/Indicator/Widgets/IndicatorWidgetFrequency.vala b/src/Indicator/Widgets/IndicatorWidgetFrequency.vala
index 2c5d2cb2f..4293150d8 100644
--- a/src/Indicator/Widgets/IndicatorWidgetFrequency.vala
+++ b/src/Indicator/Widgets/IndicatorWidgetFrequency.vala
@@ -5,16 +5,11 @@
public class Monitor.IndicatorWidgetFrequency : Monitor.IndicatorWidget {
-// public IndicatorWidgetFrequency () {
-// Object (
-// revealed: false
-// );
-// }
-
public override void update_label (Value value) {
double frequency = value.get_double ();
+ label.add_css_class (Granite.CssClass.NUMERIC);
label.width_chars = 7;
- label.label = "%s".printf (Utils.Strings.format_frequency (frequency));
+ label.label = "%s".printf (Utils.Strings.format_frequency (frequency));
}
}
diff --git a/src/Indicator/Widgets/IndicatorWidgetPercentage.vala b/src/Indicator/Widgets/IndicatorWidgetPercentage.vala
index 92e796fce..4e35cb952 100644
--- a/src/Indicator/Widgets/IndicatorWidgetPercentage.vala
+++ b/src/Indicator/Widgets/IndicatorWidgetPercentage.vala
@@ -8,8 +8,9 @@ public class Monitor.IndicatorWidgetPercentage : Monitor.IndicatorWidget {
public override void update_label (Value value) {
uint percentage = value.get_uint ();
- label.label = "%u%%".printf (percentage);
-
+ label.add_css_class (Granite.CssClass.NUMERIC);
+ label.label = "%u%%".printf (percentage);
+
label.remove_css_class ("monitor-indicator-label-warning");
label.remove_css_class ("monitor-indicator-label-critical");
diff --git a/src/Indicator/Widgets/IndicatorWidgetTemperature.vala b/src/Indicator/Widgets/IndicatorWidgetTemperature.vala
index ab1f69633..a64a387e8 100644
--- a/src/Indicator/Widgets/IndicatorWidgetTemperature.vala
+++ b/src/Indicator/Widgets/IndicatorWidgetTemperature.vala
@@ -8,7 +8,8 @@ public class Monitor.IndicatorWidgetTemperature : Monitor.IndicatorWidget {
public override void update_label (Value value) {
int temperature = value.get_int ();
+ label.add_css_class (Granite.CssClass.NUMERIC);
label.width_chars = 3;
- label.label = "%i℃".printf (temperature);
+ label.label = "%i℃".printf (temperature);
}
}
diff --git a/src/Indicator/meson.build b/src/Indicator/meson.build
index 8095fa375..be5e7e5fb 100644
--- a/src/Indicator/meson.build
+++ b/src/Indicator/meson.build
@@ -15,11 +15,11 @@ source_indicator_files = [
]
wingpanel_dep = dependency('wingpanel-9')
-gtk_dep = dependency('gtk4', version: '>= 4.12')
indicator_dependencies = [
wingpanel_dep,
- gtk_dep
+ dependency('gtk4', version: '>= 4.12'),
+ dependency('granite-7', version: '>=7.7.0'),
]
shared_module(
From 3d22054e3f998b04345bea337e4a2b15f2e42d6e Mon Sep 17 00:00:00 2001
From: stsdc <6031763+stsdc@users.noreply.github.com>
Date: Sat, 10 Oct 2026 18:36:13 +0200
Subject: [PATCH 6/8] Set IndicatorGroupWidget's icon margins via css
---
src/Indicator/Indicator.vala | 4 ++++
src/Indicator/Widgets/IndicatorGroupWidget.vala | 6 ++----
src/Indicator/Widgets/IndicatorWidget.vala | 1 -
3 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/src/Indicator/Indicator.vala b/src/Indicator/Indicator.vala
index ef8f16730..96f42dcdf 100644
--- a/src/Indicator/Indicator.vala
+++ b/src/Indicator/Indicator.vala
@@ -82,6 +82,10 @@ public class Monitor.Indicator : Wingpanel.Indicator {
.composited-indicator > revealer label.monitor-indicator-label-critical {
color: @error_color;
}
+ .monitor-indicator-icon {
+ margin-right: 0.4em;
+ margin-left: 0.7em;
+ }
""";
provider.load_from_string (css);
diff --git a/src/Indicator/Widgets/IndicatorGroupWidget.vala b/src/Indicator/Widgets/IndicatorGroupWidget.vala
index ac5cc76ef..df32b7303 100644
--- a/src/Indicator/Widgets/IndicatorGroupWidget.vala
+++ b/src/Indicator/Widgets/IndicatorGroupWidget.vala
@@ -18,10 +18,8 @@ public class Monitor.IndicatorGroupWidget : Gtk.Box {
}
construct {
- var icon = new Gtk.Image.from_icon_name (icon_name) {
- margin_start = 6,
- margin_end = 2,
- };
+ var icon = new Gtk.Image.from_icon_name (icon_name);
+ icon.add_css_class ("monitor-indicator-icon");
base.append (icon);
}
diff --git a/src/Indicator/Widgets/IndicatorWidget.vala b/src/Indicator/Widgets/IndicatorWidget.vala
index be1a84294..299c4e663 100644
--- a/src/Indicator/Widgets/IndicatorWidget.vala
+++ b/src/Indicator/Widgets/IndicatorWidget.vala
@@ -21,7 +21,6 @@ public class Monitor.IndicatorWidget : Gtk.Box {
margin_top = 2,
margin_bottom = 2,
width_chars = 4,
- use_markup = true,
};
append (label);
From 74768f3939f110ad46f1480b6e0df5b63809c25c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Danielle=20For=C3=A9?=
Date: Tue, 13 Oct 2026 13:32:59 -0700
Subject: [PATCH 7/8] Icons: Remove unused, redo network (#581)
---
data/icons/gpu-vram-symbolic.svg | 151 ---------------------
data/icons/icons.indicator.gresource.xml | 5 +-
data/icons/network-symbolic.svg | 68 +++-------
data/icons/temperature-gpu-symbolic.svg | 49 -------
data/icons/temperature-sensor-symbolic.svg | 58 --------
5 files changed, 19 insertions(+), 312 deletions(-)
delete mode 100644 data/icons/gpu-vram-symbolic.svg
delete mode 100644 data/icons/temperature-gpu-symbolic.svg
delete mode 100644 data/icons/temperature-sensor-symbolic.svg
diff --git a/data/icons/gpu-vram-symbolic.svg b/data/icons/gpu-vram-symbolic.svg
deleted file mode 100644
index 5b97cf1a6..000000000
--- a/data/icons/gpu-vram-symbolic.svg
+++ /dev/null
@@ -1,151 +0,0 @@
-
-
diff --git a/data/icons/icons.indicator.gresource.xml b/data/icons/icons.indicator.gresource.xml
index 046e2f0ab..15601ef1b 100644
--- a/data/icons/icons.indicator.gresource.xml
+++ b/data/icons/icons.indicator.gresource.xml
@@ -4,13 +4,10 @@
bug-symbolic.svg
cpu-symbolic.svg
gpu-symbolic.svg
+ network-symbolic.svg
ram-symbolic.svg
- gpu-vram-symbolic.svg
swap-symbolic.svg
- network-symbolic.svg
file-deleted-symbolic.svg
- temperature-sensor-symbolic.svg
- temperature-gpu-symbolic.svg
process-attention-symbolic.svg
process-critical-symbolic.svg
process-information-symbolic.svg
diff --git a/data/icons/network-symbolic.svg b/data/icons/network-symbolic.svg
index b4031891b..b5f05eb73 100644
--- a/data/icons/network-symbolic.svg
+++ b/data/icons/network-symbolic.svg
@@ -1,51 +1,19 @@
-
+ xmlns='http://www.w3.org/2000/svg'
+ xmlns:svg='http://www.w3.org/2000/svg'
+ xmlns:gpa='https://www.gtk.org/grappa'
+ gpa:version='1'
+ gpa:state='0'
+ id='svg8'
+ width='16'
+ height='16'
+ xml:space='preserve'>
+
+
+
diff --git a/data/icons/temperature-gpu-symbolic.svg b/data/icons/temperature-gpu-symbolic.svg
deleted file mode 100644
index 138823fbe..000000000
--- a/data/icons/temperature-gpu-symbolic.svg
+++ /dev/null
@@ -1,49 +0,0 @@
-
-
diff --git a/data/icons/temperature-sensor-symbolic.svg b/data/icons/temperature-sensor-symbolic.svg
deleted file mode 100644
index acf316a2f..000000000
--- a/data/icons/temperature-sensor-symbolic.svg
+++ /dev/null
@@ -1,58 +0,0 @@
-
-
From 92cbad64403547404d77a0b60a73d63bf951ff40 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Danielle=20For=C3=A9?=
Date: Thu, 15 Oct 2026 03:49:01 -0700
Subject: [PATCH 8/8] DisplayWidget: add tooltips to groups (#583)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* DisplayWidget: add tooltips to groups
* More granular tooltips
---------
Co-authored-by: Stanisław <6031763+stsdc@users.noreply.github.com>
---
src/Indicator/Widgets/DisplayWidget.vala | 77 +++++++++++++++---------
1 file changed, 50 insertions(+), 27 deletions(-)
diff --git a/src/Indicator/Widgets/DisplayWidget.vala b/src/Indicator/Widgets/DisplayWidget.vala
index 4faf74618..2e2571719 100644
--- a/src/Indicator/Widgets/DisplayWidget.vala
+++ b/src/Indicator/Widgets/DisplayWidget.vala
@@ -7,22 +7,63 @@ public class Monitor.Widgets.DisplayWidget : Gtk.Box {
construct {
valign = Gtk.Align.CENTER;
+ var cpu_widget = new IndicatorWidgetPercentage () {
+ tooltip_text = _("Processor usage")
+ };
+
+ var cpu_frequency_widget = new IndicatorWidgetFrequency () {
+ tooltip_text = _("Processor frequency")
+ };
+
+ var cpu_temperature_widget = new IndicatorWidgetTemperature () {
+ tooltip_text = _("Processor temperature")
+ };
+
var cpu_group_widget = new IndicatorGroupWidget ("cpu-symbolic");
- var cpu_widget = new IndicatorWidgetPercentage ();
- var cpu_frequency_widget = new IndicatorWidgetFrequency ();
- var cpu_temperature_widget = new IndicatorWidgetTemperature ();
+ cpu_group_widget.append (cpu_widget);
+ cpu_group_widget.append (cpu_frequency_widget);
+ cpu_group_widget.append (cpu_temperature_widget);
+
+ var memory_widget = new IndicatorWidgetPercentage () {
+ tooltip_text = _("Memory usage")
+ };
var memory_group_widget = new IndicatorGroupWidget ("ram-symbolic");
- var memory_widget = new IndicatorWidgetPercentage ();
+ memory_group_widget.append (memory_widget);
+
+ var gpu_widget = new IndicatorWidgetPercentage () {
+ tooltip_text = _("Graphics processor usage")
+ };
+
+ var gpu_memory_widget = new IndicatorWidgetPercentage () {
+ tooltip_text = _("Graphics memory usage")
+ };
+
+ var gpu_temperature_widget = new IndicatorWidgetTemperature () {
+ tooltip_text = _("Graphics processor temperature")
+ };
var gpu_group_widget = new IndicatorGroupWidget ("gpu-symbolic");
- var gpu_widget = new IndicatorWidgetPercentage ();
- var gpu_memory_widget = new IndicatorWidgetPercentage ();
- var gpu_temperature_widget = new IndicatorWidgetTemperature ();
+ gpu_group_widget.append (gpu_widget);
+ gpu_group_widget.append (gpu_memory_widget);
+ gpu_group_widget.append (gpu_temperature_widget);
+
+ var network_up_widget = new IndicatorWidgetBandwidth () {
+ tooltip_text = _("Network upload speed")
+ };
+
+ var network_down_widget = new IndicatorWidgetBandwidth () {
+ tooltip_text = _("Network download speed")
+ };
var network_group_widget = new IndicatorGroupWidget ("network-symbolic");
- var network_up_widget = new IndicatorWidgetBandwidth ();
- var network_down_widget = new IndicatorWidgetBandwidth ();
+ network_group_widget.append (network_up_widget);
+ network_group_widget.append (network_down_widget);
+
+ append (cpu_group_widget);
+ append (memory_group_widget);
+ append (gpu_group_widget);
+ append (network_group_widget);
unowned var dbusclient = DBusClient.get_default ();
@@ -125,24 +166,6 @@ public class Monitor.Widgets.DisplayWidget : Gtk.Box {
network_down_widget.update_label (network_down);
});
-
-
- cpu_group_widget.append (cpu_widget);
- cpu_group_widget.append (cpu_frequency_widget);
- cpu_group_widget.append (cpu_temperature_widget);
- append (cpu_group_widget);
-
- memory_group_widget.append (memory_widget);
- append (memory_group_widget);
-
- gpu_group_widget.append (gpu_widget);
- gpu_group_widget.append (gpu_memory_widget);
- gpu_group_widget.append (gpu_temperature_widget);
- append (gpu_group_widget);
-
- network_group_widget.append (network_up_widget);
- network_group_widget.append (network_down_widget);
- append (network_group_widget);
}
public new void append (IndicatorGroupWidget widget) {