From 469cddb5d4b8e3acf2dd3d97c4652cbb8e895e89 Mon Sep 17 00:00:00 2001 From: Adam Nagy Date: Sun, 1 Mar 2026 23:33:47 +0100 Subject: [PATCH] fix: allow root user to view details and manage all processes Add Process.is_own property that accounts for root having full access to all processes. Previously, uid comparison alone caused the detail pane to be hidden and kill/end buttons disabled for non-root processes when the app was run as root. --- src/Managers/Process.vala | 5 +++++ src/Views/ProcessView/ProcessInfoView/ProcessInfoView.vala | 2 +- src/Views/ProcessView/ProcessView.vala | 4 ++-- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/Managers/Process.vala b/src/Managers/Process.vala index db527f839..398460fed 100644 --- a/src/Managers/Process.vala +++ b/src/Managers/Process.vala @@ -23,6 +23,11 @@ public class Monitor.Process : GLib.Object { // User id public int uid; + // Whether the current user can access this process's data and send signals + public bool is_own { + get { return uid == Posix.getuid () || Posix.getuid () == 0; } + } + public string username = Utils.NO_DATA; Icon _icon; diff --git a/src/Views/ProcessView/ProcessInfoView/ProcessInfoView.vala b/src/Views/ProcessView/ProcessInfoView/ProcessInfoView.vala index d32fcaa3a..3d167f6a4 100644 --- a/src/Views/ProcessView/ProcessInfoView/ProcessInfoView.vala +++ b/src/Views/ProcessView/ProcessInfoView/ProcessInfoView.vala @@ -18,7 +18,7 @@ public class Monitor.ProcessInfoView : Gtk.Box { process_info_header.update (_process); - if (_process.uid != Posix.getuid ()) { + if (!_process.is_own) { process_info_cpu_ram.hide (); process_info_io_stats.hide (); process_action_bar.hide (); diff --git a/src/Views/ProcessView/ProcessView.vala b/src/Views/ProcessView/ProcessView.vala index 0b7abda9d..aac3fde0d 100644 --- a/src/Views/ProcessView/ProcessView.vala +++ b/src/Views/ProcessView/ProcessView.vala @@ -140,8 +140,8 @@ public class Monitor.ProcessView : Granite.Bin { process_info_view.process = process; process_info_view.visible = true; - end_action.set_enabled (process.uid == Posix.getuid ()); - kill_action.set_enabled (process.uid == Posix.getuid ()); + end_action.set_enabled (process.is_own); + kill_action.set_enabled (process.is_own); } public void update () {