Add procmon plugin with live process panel (#301)

* Add procmon plugin with live process panel

New Noctalia plugin: bar widget shows CPU/RAM usage and process
count; floating panel has a sortable, searchable process table
with per-process kill. Background service samples ps and /proc
stats and publishes via plugin state.

* Throttle data-driven panel renders

Rebuild table at most every 500ms to stay within the panel update
CPU budget. User interactions still render immediately; only state
watches and the tick go through maybeRender().

* Update procmon deps and fix timestamp precision

Document head, grep, and cat as required commands. Correct refresh
interval default to 1000 ms. Sample refreshedAtMs in milliseconds.
This commit is contained in:
weinguyen
2026-08-08 15:40:32 -04:00
committed by GitHub
parent 936f412599
commit 2b10a25ee0
7 changed files with 963 additions and 0 deletions
+59
View File
@@ -0,0 +1,59 @@
{
"settings": {
"refresh_interval": {
"label": "Refresh interval (ms)",
"description": "How often the process list is resampled."
},
"sort_by": {
"label": "Default sort column",
"description": "Column the process table is sorted by when the panel opens.",
"options": {
"cpu": "CPU",
"mem": "Memory",
"pid": "PID",
"cmd": "Command"
}
},
"kill_command": {
"label": "Kill command",
"description": "Command run against a selected PID (the PID is appended). Empty uses kill -TERM."
},
"show_count": {
"label": "Show process count",
"description": "Append the number of processes to the bar widget text."
},
"glyph": {
"label": "Widget icon",
"description": "Glyph shown in the bar widget."
},
"icon_only": {
"label": "Icon only",
"description": "Show only a CPU icon in the bar widget; details move to the tooltip."
}
},
"widget": {
"tooltip": "CPU {cpu}% RAM {ram}% · {n} processes"
},
"panel": {
"title": "Processes",
"refreshed_at": "Updated {time}",
"refresh": "Refresh",
"load": "Load",
"search_placeholder": "Filter by name, user or PID",
"sort_asc": "asc",
"sort_desc": "desc",
"col": {
"pid": "PID",
"cpu": "CPU%",
"cpu_raw": "CPU",
"mem": "MEM%",
"mem_raw": "MEM",
"rss": "RSS",
"stat": "S",
"cmd": "COMMAND"
},
"count": "{n} processes",
"no_processes": "No matching processes",
"kill_tip": "Kill {pid}"
}
}