Static medium → AI refined safe — see AI Review below for why (e.g., mx-ctl executable)
jankeesvw/omarchy-downloads • 3a48310 • Scanned 8/25/2026, 1:12:48 PM
Changed since 3a48310…3a48310 (0 files, 0 commits)
Usual omarchy plugin add https://github.com/jankeesvw/omarchy-downloads.git --enable installs latest. This pins to the exact commit audited here (3a48310):
omarchy plugin add https://github.com/jankeesvw/omarchy-downloads.git --yes && \ git -C ~/.config/omarchy/plugins/jankeesvw.downloads checkout 3a4831032fccc24173533f7adeda4bffb5dcb664 && \ omarchy plugin enable jankeesvw.downloads # audited commit 3a48310
Unpinned (latest): omarchy plugin add https://github.com/jankeesvw/omarchy-downloads.git --enable
Adds a download icon to the Omarchy bar with a badge counting files added in the last N minutes. Clicking opens a floating window listing recent downloads (fresh/all filter, age and size) where rows can be dragged via Wayland wl_data_device into browsers/chat apps or double-clicked to open, and right-clicking the bar icon opens the download folder.
Well-hardened downloads viewer with no shell execution, no network, and explicit hardening (PlainText, array-form execDetached, absolute-path guards, bounded FolderListModel). All flagged patterns are expected read-only folder enumeration and standard Quickshell IPC. No malicious or privilege-escalation behavior detected.
Model opencode-go/muse-spark-1.2-contributor • 8/25/2026, 1:12:48 PM
sequenceDiagram
participant User
participant Panel as Panel.qml
participant Store as DownloadsStore.qml
participant FLM as FolderListModel
participant Window as FloatingWindow/ListView
participant OS as OS (xdg-open / Wayland DnD)
User->>Panel: shell.json settings (folder, freshMinutes)
Panel->>Store: applySettings() -> configure() via Util.fileUrl(folder)
Store->>FLM: scanFolder = folderUrl (StandardPaths.DownloadLocation default)
FLM-->>Store: folderModel.count / get(i, fileName/fileUrl/fileModified)
Store->>Store: tick()/rebuild() filter isPartial, cap maxScan 2000 / maxRows 200, compute freshCount
Store-->>Panel: freshCount -> badge
Store-->>Window: files, displayPath, fresh state
User->>Panel: click bar button / IPC summon (jankeesvw.downloads)
Panel->>Store: toggle()/show() <-> open sync (guarded)
Store-->>Window: visible = open
User->>Window: drag row (DownloadRow.qml Drag.Automatic text/uri-list)
Window->>OS: Wayland start_drag
User->>Window: double-click row / right-click bar
Window->>OS: Quickshell.execDetached(["xdg-open", target]) if target[0]=="/"Generated by AI from static findings + file context
Default writableLocation(DownloadLocation) with override via configure(folder); read-only enumeration for user-visible list, bounded by maxScan/maxRows, no write or exec. Expected for a downloads viewer.
Read-only directory listing via Qt.labs.folderlistmodel, showDirs false, Time-sorted newest-first, capped to 2000 entries scanned and 200 rows shown, coalesced tick and polling fallback to avoid UI-thread DoS. No shell or exec.
Standard Quickshell Panel ipcTarget "jankeesvw.downloads" for summon/open/close; no custom IpcHandler parsing payloads. State sync is guarded both ways (onOpenedChanged if DownloadsStore.open !== root.opened and Connections onOpenChanged) preventing bounce/amplification.
Converts bar setting `folder` string to file:// URL for DownloadsStore.folderUrl; setting comes from shell.json, not IPC. Later use is FolderListModel watch or array-form xdg-open with leading-slash guard, no shell quoting needed.
No network calls — good.
No changes detected (first scan).
No obfuscation detected.
| Severity | Category | Pattern | File | Line | Description | Snippet |
|---|---|---|---|---|---|---|
| medium | fileOps | StandardPaths | DownloadsStore.qml | 34 | Accesses system paths via StandardPaths | property url folderUrl: StandardPaths.writableLocation(StandardPaths.DownloadLocation) |
| medium | fileOps | FolderListModel | DownloadsStore.qml | 224 | Reads directory via FolderListModel | if (String(root.scanFolder) === "" || folderModel.status !== FolderListModel.Ready) return |
| medium | fileOps | Util.fileUrl | Panel.qml | 69 | Resolves file URL | folder !== "" ? Util.fileUrl(folder) : undefined) |
These are expected Quickshell imports, not counted as risk.
| Severity | Category | Pattern | File | Line | Description | Snippet |
|---|---|---|---|---|---|---|
| info | imports | import Quickshell | DownloadRow.qml | 3 | Expected Quickshell import — normal for Omarchy plugins (no risk) | import Quickshell |
| info | imports | import qs | DownloadRow.qml | 4 | Expected local module import — normal for Omarchy plugins (no risk) | import qs.Commons |
| info | imports | import Quickshell | DownloadsStore.qml | 7 | Expected Quickshell import — normal for Omarchy plugins (no risk) | import Quickshell |
| info | imports | import qs | DownloadsStore.qml | 8 | Expected local module import — normal for Omarchy plugins (no risk) | import qs.Commons |
| info | imports | import Quickshell | Panel.qml | 2 | Expected Quickshell import — normal for Omarchy plugins (no risk) | import Quickshell |
| info | imports | import qs | Panel.qml | 3 | Expected local module import — normal for Omarchy plugins (no risk) | import qs.Commons |
| Path | Type | Lines | Size |
|---|---|---|---|
| DownloadRow.qml | qml | 170 | 7045 |
| DownloadsStore.qml | qml | 481 | 18716 |
| Panel.qml | qml | 145 | 5895 |
| manifest.json | json | 24 | 608 |
| Severity | Category | Pattern | File | Line | Description | Snippet |
|---|---|---|---|---|---|---|
| medium | fileOps | StandardPaths | DownloadsStore.qml | 34 | Accesses system paths via StandardPaths | property url folderUrl: StandardPaths.writableLocation(StandardPaths.DownloadLocation) |
| medium | fileOps | FolderListModel | DownloadsStore.qml | 224 | Reads directory via FolderListModel | if (String(root.scanFolder) === "" || folderModel.status !== FolderListModel.Ready) return |
| medium | ipc | ipcTarget | Panel.qml | 29 | IPC handler exposure — payload appears validated via conditional check (handler checks state before acting; review logic) | ipcTarget: "jankeesvw.downloads" |
| medium | fileOps | Util.fileUrl | Panel.qml | 69 | Resolves file URL | folder !== "" ? Util.fileUrl(folder) : undefined) |
Generated by omarchy-audit at 2026-08-25T11:12:48.624Z • Commit 3a48310 linked to GitHub for verification • Overview