Files
community-plugins/procmon/plugin.toml
T
weinguyenandGitHub 44e32f58bc 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
2026-08-09 13:55:01 -04:00

79 lines
1.9 KiB
TOML

id = "weinguyen/procmon"
name = "Process Monitor"
version = "0.4.0"
plugin_api = 13
author = "weinguyen"
license = "MIT"
icon = "cpu"
description = "A bottom-style process monitor: live CPU/RAM/swap bars and a sortable, searchable process table with per-process kill."
tags = ["bar", "panel", "service", "system", "utility"]
dependencies = ["ps", "kill", "head", "grep", "cat"]
[[setting]]
key = "refresh_interval"
type = "int"
label_key = "settings.refresh_interval.label"
description_key = "settings.refresh_interval.description"
default = 1000
min = 250
max = 30000
[[setting]]
key = "sort_by"
type = "select"
label_key = "settings.sort_by.label"
description_key = "settings.sort_by.description"
default = "cpu"
options = [
{ value = "cpu", label_key = "settings.sort_by.options.cpu" },
{ value = "mem", label_key = "settings.sort_by.options.mem" },
{ value = "pid", label_key = "settings.sort_by.options.pid" },
{ value = "cmd", label_key = "settings.sort_by.options.cmd" },
]
[[setting]]
key = "kill_command"
type = "string"
label_key = "settings.kill_command.label"
description_key = "settings.kill_command.description"
default = "kill -TERM"
[[widget]]
id = "widget"
entry = "widget.luau"
[[widget.setting]]
key = "glyph"
type = "glyph"
label_key = "settings.glyph.label"
description_key = "settings.glyph.description"
default = "cpu"
[[widget.setting]]
key = "show_count"
type = "bool"
label_key = "settings.show_count.label"
description_key = "settings.show_count.description"
default = true
[[widget.setting]]
key = "icon_only"
type = "bool"
label_key = "settings.icon_only.label"
description_key = "settings.icon_only.description"
default = false
[[panel]]
id = "panel"
entry = "panel.luau"
width = 620
height = 660
placement = "floating"
position = "center"
open_near_click = true
capture_keys = ["ctrl+f", "ctrl+d", "up", "down", "escape"]
[[service]]
id = "service"
entry = "service.luau"