niraletter/vitals • 1dcdbf7 • Scanned 8/25/2026, 11:55:14 AM
First scan — all files are new
Vitals adds a bar widget showing one pinned metric (CPU, memory, network, disk, GPU or storage) and a dashboard popup with six live tiles, sparkline graphs and expandable details. When open it polls /proc, sensors, lspci and nvidia-smi/intel_gpu_top to populate per-core CPU, memory pressure, network/disk rates, GPU VRAM/temperature and a searchable, sortable process list with terminate/force-kill.
Single flagged Qt.resolvedUrl is a benign local QML loader with no exec; plugin is a legitimate system monitor that polls hardcoded /proc/sys tools and only runs privileged actions (kill, pkexec) after explicit user confirmation and strict validation (PID>1, currentUser-scoped fdinfo).
Model opencode-go/muse-spark-1.2-contributor • 8/25/2026, 11:55:14 AM
sequenceDiagram
participant User
participant BarWidget
participant Panel
participant Sys as System Tools
User->>BarWidget: Click / middle-click widget
BarWidget->>Panel: Loader source Qt.resolvedUrl("Panel.qml")
Panel->>Sys: Poll cat /proc/stat, /proc/meminfo, /proc/net/dev, df, sensors -j, lspci, nvidia-smi
Sys-->>Panel: stdout parsed -> cpu/memory/network/disk/gpu/mounts state
Panel-->>User: Render tiles, graphs, tooltip and process list
User->>Panel: Expand tile / filter/search / select PID -> Terminate/Force kill
Panel->>Panel: ConfirmDialog check pid>1
Panel->>Sys: kill -TERM/-KILL <pid> or pkexec setcap/pacman for intel_gpu_top
Sys-->>Panel: exitCode -> actionMessage + refreshFull()Generated by AI from static findings + file context
Qt.resolvedUrl('Panel.qml') is a static local QML import used as Loader.source for UI composition; no user input, no filesystem traversal, and never passed to Process.command or shell execution.
No process execution detected — good.
No network calls — good.
No obfuscation detected.
| Severity | Category | Pattern | File | Line | Description | Snippet |
|---|---|---|---|---|---|---|
| medium | fileOps | Util.fileUrl | BarWidget.qml | 61 | Resolves file URL | source: Qt.resolvedUrl("Panel.qml") |
These are expected Quickshell imports, not counted as risk.
| Severity | Category | Pattern | File | Line | Description | Snippet |
|---|---|---|---|---|---|---|
| info | imports | import qs | BarWidget.qml | 2 | Expected local module import — normal for Omarchy plugins (no risk) | import qs.Commons |
| info | imports | import qs | MetricTiles.qml | 4 | Expected local module import — normal for Omarchy plugins (no risk) | import qs.Commons |
| info | imports | import Quickshell | Panel.qml | 4 | Expected Quickshell import — normal for Omarchy plugins (no risk) | import Quickshell |
| info | imports | import qs | Panel.qml | 6 | Expected local module import — normal for Omarchy plugins (no risk) | import qs.Commons |
| info | imports | import Quickshell | ProcessList.qml | 4 | Expected Quickshell import — normal for Omarchy plugins (no risk) | import Quickshell |
| info | imports | import qs | ProcessList.qml | 5 | Expected local module import — normal for Omarchy plugins (no risk) | import qs.Commons |
| Path | Type | Lines | Size |
|---|---|---|---|
| BarWidget.qml | qml | 98 | 2471 |
| GpuLogic.js | js | 94 | 3066 |
| MetricTiles.qml | qml | 741 | 33433 |
| Model.js | js | 33 | 852 |
| Panel.qml | qml | 3061 | 111007 |
| ProcessList.qml | qml | 488 | 18965 |
| ProcessLogic.js | js | 67 | 2849 |
| manifest.json | json | 20 | 481 |
| Severity | Category | Pattern | File | Line | Description | Snippet |
|---|---|---|---|---|---|---|
| medium | fileOps | Util.fileUrl | BarWidget.qml | 61 | Resolves file URL | source: Qt.resolvedUrl("Panel.qml") |
Generated by omarchy-audit at 2026-08-25T09:55:14.423Z • Commit 1dcdbf7 linked to GitHub for verification • Overview