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 @@ + +image/svg+xml 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 @@ - -image/svg+xml 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 @@ - image/svg+xml + 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 @@ - -image/svg+xml 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 @@ - - - - - - image/svg+xml - - - - - - - - - - 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) {