* 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
79 lines
1.9 KiB
TOML
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"
|