Update(procmon-plugin): Add keyboard navigation and reduce CPU sampling (#321)
* 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. * Add keyboard navigation and reduce CPU sampling - Panel: arrow keys move cursor, Ctrl+D kills selected, Ctrl+F focuses filter - Service: sample /proc stats every 1s, ps every 2s; 2s render floor - Widget: handle vertical bars, truncate text, use valid theme color - Bump version to 0.4.0, plugin_api 13
This commit is contained in:
+5
-5
@@ -25,14 +25,12 @@ usage (plus the process count). Click the widget to toggle the process panel:
|
||||
```sh
|
||||
noctalia msg panel-toggle weinguyen/procmon:panel
|
||||
```
|
||||
|
||||
The panel shows CPU, RAM and swap bars with the 1/5/15-minute load averages,
|
||||
then a process table. Sort by the column dropdown (PID, CPU%, MEM%, RSS,
|
||||
COMMAND) and flip asc/desc with the arrow button. Type in the filter box to
|
||||
match a process by name, user or PID. Click the ✕ button on a row to run the
|
||||
configured kill command against that PID (default `kill -TERM`). Zombie
|
||||
processes are tinted with the error color so they stand out.
|
||||
|
||||
The table refreshes on the interval set in the `refresh_interval` setting. The
|
||||
panel re-renders automatically as new samples arrive, so the view stays live
|
||||
while it is open.
|
||||
@@ -48,13 +46,15 @@ while it is open.
|
||||
|
||||
## Notes
|
||||
|
||||
- **Spawns processes.** A background service runs `ps` on every refresh
|
||||
interval and `runAsync` runs the configured `kill_command` when a row's ✕ is
|
||||
- **Spawns processes.** A background service runs `ps` every 2nd refresh
|
||||
interval (the process table changes slowly) and reads `/proc` stats every
|
||||
interval; `runAsync` runs the configured `kill_command` when a row's ✕ is
|
||||
clicked. There is no confirmation dialog, so check the PID before clicking.
|
||||
|
||||
- The bar widget only renders data the service publishes; it never runs
|
||||
commands. The panel runs the configured `kill_command` when a row's ✕ is
|
||||
clicked.
|
||||
- Requires `plugin_api = 12`. CPU%, RAM%, swap and the 1/5/15-minute load
|
||||
- Requires `plugin_api = 13`. CPU%, RAM%, swap and the 1/5/15-minute load
|
||||
averages are sampled from `/proc` (`/proc/stat`, `/proc/meminfo`,
|
||||
`/proc/loadavg`) by the service, so they work with no separate system-monitor
|
||||
dependency.
|
||||
|
||||
Reference in New Issue
Block a user