From a502706d5acc5219ade6a543c92dbba73932ead9 Mon Sep 17 00:00:00 2001 From: "Noah B." Date: Mon, 24 Aug 2026 14:29:39 +0200 Subject: [PATCH 1/3] Added the cmd-runner Plugin --- cmd-runner/README.md | 41 +++ cmd-runner/command-runner-thumbnail.webp | Bin 0 -> 81894 bytes cmd-runner/commands.json | 1 + cmd-runner/panel.luau | 341 +++++++++++++++++++++++ cmd-runner/plugin.toml | 41 +++ cmd-runner/service.luau | 255 +++++++++++++++++ cmd-runner/translations/de.json | 38 +++ cmd-runner/translations/en.json | 38 +++ cmd-runner/widget.luau | 60 ++++ 9 files changed, 815 insertions(+) create mode 100644 cmd-runner/README.md create mode 100644 cmd-runner/command-runner-thumbnail.webp create mode 100644 cmd-runner/commands.json create mode 100644 cmd-runner/panel.luau create mode 100644 cmd-runner/plugin.toml create mode 100644 cmd-runner/service.luau create mode 100644 cmd-runner/translations/de.json create mode 100644 cmd-runner/translations/en.json create mode 100644 cmd-runner/widget.luau diff --git a/cmd-runner/README.md b/cmd-runner/README.md new file mode 100644 index 00000000..397cec34 --- /dev/null +++ b/cmd-runner/README.md @@ -0,0 +1,41 @@ +# Command Runner + +Save and execute CLI commands silently in the background with a single click and one-time sudo password cache. + +## Plugin + +| Field | Value | +| --- | --- | +| ID | `nocode-96/cmd-runner` | +| Entries | Bar widget: `cmd-runner`; panel: `panel`; service: `cmd-service` | + +## Requirements + +No special system requirements. Requires Noctalia v5. + +## Usage + +Add the `cmd-runner` widget to a bar. Left-click it to open the command panel, where you can: +- **Run**: Execute custom CLI commands silently in the background. +- **Add**: Create a new command with a custom name, CLI command line, and optional sudo password. +- **Edit**: Edit an existing command. The sudo password is kept hidden and is not pre-populated in plain text. +- **Delete**: Remove a saved command. +- **Log**: Click the logs button on a command to view stdout/stderr output. + +Open the panel directly with: + +```sh +noctalia msg panel-toggle nocode-96/cmd-runner:panel +``` + +## Settings + +| Setting | Type | Default | Description | +| --- | --- | --- | --- | +| `show_toast` | `bool` | `true` | Shows a toast notification when a command completes or fails. | +| `show_label` | `bool` | `true` | Displays 'Commands' next to the icon in the top bar. | + +## Notes + +Command Runner runs custom CLI command lines in the background. If a command requires sudo (root) privileges, the password is encrypted locally in `commands.json` (inside the plugin's data folder) using base64 and character-shifting. The password is never sent in the public UI state, preventing other plugins from harvesting it. + diff --git a/cmd-runner/command-runner-thumbnail.webp b/cmd-runner/command-runner-thumbnail.webp new file mode 100644 index 0000000000000000000000000000000000000000..175fba42f14695c8fd216c4cb7ae444a456de1fc GIT binary patch literal 81894 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 @|HO8a>H$A~r0$wu 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

p%_Jw^U&GuZy1E+4oh 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 and '1' or '0') end + return r; + end)..'0000'):gsub('%d%d%d%d%d%d', function(x) + if (#x < 6) then return '' end + local c=0 + for i=1,6 do c=c+(x:sub(i,i)=='1' and 2^(6-i) or 0) end + return b:sub(c+1,c+1) + end)..({ '', '==', '=' })[#data%3+1]) +end + +local function base64Decode(data) + local b = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' + data = string.gsub(data, '[^'..b..'=]', '') + return (data:gsub('.', function(x) + if (x == '=') then return '' end + local r,f='',(b:find(x)-1) + for i=6,1,-1 do r=r..(f%2^i-f%2^(i-1)>0 and '1' or '0') end + return r; + end):gsub('%d%d%d%d%d%d%d%d', function(x) + local c=0 + for i=1,8 do c=c+(x:sub(i,i)=='1' and 2^(8-i) or 0) end + return string.char(c) + end)) +end + +local function encryptPassword(pass) + if not pass or pass == "" then return "" end + if pass:sub(1, 4) == "enc:" then return pass end -- already encrypted + + local result = {} + for i = 1, #pass do + local p_byte = pass:byte(i) + local s_byte = SALT:byte(((i - 1) % #SALT) + 1) + local enc_byte = (p_byte + s_byte) % 256 + table.insert(result, string.char(enc_byte)) + end + return "enc:" .. base64Encode(table.concat(result)) +end + +local function decryptPassword(enc) + if not enc or enc == "" then return "" end + if enc:sub(1, 4) ~= "enc:" then return enc end -- plain text fallback + + local raw_enc = enc:sub(5) + local decoded = base64Decode(raw_enc) + local result = {} + for i = 1, #decoded do + local d_byte = decoded:byte(i) + local s_byte = SALT:byte(((i - 1) % #SALT) + 1) + local dec_byte = (d_byte - s_byte) % 256 + table.insert(result, string.char(dec_byte)) + end + return table.concat(result) +end + +local defaultCommands = { + { + id = "cmd_demo_1", + name = "System Update Check", + command = "echo 'Checking system updates...' && sleep 1 && echo 'System is up to date'", + icon = "refresh", + isSudo = false, + sudoPassword = "" + } +} + +local commandsFile = (noctalia.pluginDir() or "") .. "/commands.json" + +local function loadCommands() + local content = noctalia.readFile(commandsFile) + if content and trim(content) ~= "" then + local decoded, err = noctalia.json.decode(content) + if type(decoded) == "table" and #decoded >= 0 then + -- Auto-encrypt passwords on load if they are stored in plain text + local changed = false + for _, c in ipairs(decoded) do + if c.sudoPassword and c.sudoPassword ~= "" and c.sudoPassword:sub(1, 4) ~= "enc:" then + c.sudoPassword = encryptPassword(c.sudoPassword) + changed = true + end + end + if changed then + local encoded = noctalia.json.encode(decoded) + if encoded then + noctalia.writeFile(commandsFile, encoded) + end + end + return decoded + end + end + return defaultCommands +end + +local function saveCommands(list) + local savedList = {} + for _, c in ipairs(list) do + local copy = {} + for k, v in pairs(c) do + copy[k] = v + end + if copy.sudoPassword then + copy.sudoPassword = encryptPassword(copy.sudoPassword) + end + table.insert(savedList, copy) + end + + local encoded, err = noctalia.json.encode(savedList) + if encoded then + noctalia.writeFile(commandsFile, encoded) + end +end + +local currentCommands = loadCommands() +local runningMap = {} +local outputMap = {} +local exitCodeMap = {} + +local function publishState() + -- Scrub actual passwords from public state for security + local publicCommands = {} + for _, c in ipairs(currentCommands) do + local copy = {} + for k, v in pairs(c) do + if k ~= "sudoPassword" then + copy[k] = v + else + copy.hasPassword = (v ~= nil and v ~= "") + end + end + table.insert(publicCommands, copy) + end + + noctalia.state.set("cmd_runner_state", { + commands = publicCommands, + runningMap = runningMap, + outputMap = outputMap, + exitCodeMap = exitCodeMap, + updatedAt = os.time() + }) +end + +publishState() + +local function executeCommand(cmdId) + local targetCmd = nil + for _, c in ipairs(currentCommands) do + if c.id == cmdId then + targetCmd = c + break + end + end + + if not targetCmd or trim(targetCmd.command) == "" then + return + end + + runningMap[cmdId] = true + publishState() + + local fullCmd = "" + if targetCmd.isSudo then + local pass = decryptPassword(targetCmd.sudoPassword) + fullCmd = "printf '%s\\n' " .. shellQuote(pass) .. " | sudo -S -p '' -- " .. targetCmd.command + else + fullCmd = targetCmd.command + end + + noctalia.runAsync(fullCmd, function(result) + runningMap[cmdId] = false + local code = (result and type(result.exitCode) == "number") and result.exitCode or -1 + local outText = trim((result and result.stdout or "") .. "\n" .. (result and result.stderr or "")) + exitCodeMap[cmdId] = code + outputMap[cmdId] = outText + publishState() + + local showToast = noctalia.getConfig("show_toast") ~= false + if showToast then + if code == 0 then + noctalia.notify(noctalia.tr("title"), noctalia.tr("notify.success", { name = targetCmd.name })) + else + noctalia.notifyError(noctalia.tr("title"), noctalia.tr("notify.error", { name = targetCmd.name, code = code })) + end + end + end, 120000) +end + +local function handleCommandAction(actionData) + if type(actionData) ~= "table" then return end + + local act = actionData.action + if act == "run" and actionData.id then + executeCommand(actionData.id) + elseif act == "add" and actionData.item then + local item = actionData.item + item.sudoPassword = encryptPassword(item.sudoPassword or "") + table.insert(currentCommands, item) + saveCommands(currentCommands) + publishState() + elseif act == "update" and actionData.item then + for i, c in ipairs(currentCommands) do + if c.id == actionData.item.id then + local newPass = actionData.item.sudoPassword or "" + -- If the updated command keeps sudo but the sent password is empty and we had a password, keep it + if newPass == "" and c.sudoPassword and c.sudoPassword ~= "" and actionData.item.isSudo then + newPass = c.sudoPassword + else + newPass = encryptPassword(newPass) + end + + local updatedItem = { + id = actionData.item.id, + name = actionData.item.name, + command = actionData.item.command, + icon = actionData.item.icon, + isSudo = actionData.item.isSudo, + sudoPassword = newPass + } + currentCommands[i] = updatedItem + break + end + end + saveCommands(currentCommands) + publishState() + elseif act == "delete" and actionData.id then + local newList = {} + for _, c in ipairs(currentCommands) do + if c.id ~= actionData.id then + table.insert(newList, c) + end + end + currentCommands = newList + saveCommands(currentCommands) + publishState() + end +end + +noctalia.state.watch("cmd_runner_action", handleCommandAction) diff --git a/cmd-runner/translations/de.json b/cmd-runner/translations/de.json new file mode 100644 index 00000000..23895b7d --- /dev/null +++ b/cmd-runner/translations/de.json @@ -0,0 +1,38 @@ +{ + "title": "Command Runner", + "widget": { + "label": "Befehle", + "tooltip": "Command Runner - CLI-Befehle im Hintergrund ausführen" + }, + "panel": { + "title": "Command Runner", + "subtitle": "Befehle per Knopfdruck lautlos im Hintergrund ausführen", + "add_button": "Neuer Befehl", + "cancel_button": "Abbrechen", + "save_button": "Speichern", + "run_button": "Ausführen", + "running": "Läuft...", + "logs": "Log", + "delete": "Löschen", + "edit": "Bearbeiten", + "name_label": "Befehlsname", + "cmd_label": "CLI Befehl", + "sudo_label": "Sudo (root) erforderlich", + "sudo_pass_label": "Sudo-Passwort (einmalig)", + "no_commands": "Keine Befehle vorhanden." + }, + "settings": { + "show_toast": { + "label": "Benachrichtigungen anzeigen", + "description": "Zeigt eine Toast-Meldung bei Abschluss oder Fehler eines Befehls an" + }, + "show_label": { + "label": "Text-Label in der Bar anzeigen", + "description": "Blendet den Text 'Befehle' neben dem Icon in der Top-Bar ein" + } + }, + "notify": { + "success": "Befehl '{name}' erfolgreich ausgeführt.", + "error": "Befehl '{name}' fehlgeschlagen (Exit Code {code})." + } +} diff --git a/cmd-runner/translations/en.json b/cmd-runner/translations/en.json new file mode 100644 index 00000000..b019b663 --- /dev/null +++ b/cmd-runner/translations/en.json @@ -0,0 +1,38 @@ +{ + "title": "Command Runner", + "widget": { + "label": "Commands", + "tooltip": "Command Runner - Run CLI commands in background" + }, + "panel": { + "title": "Command Runner", + "subtitle": "Execute commands silently in background at a click", + "add_button": "New Command", + "cancel_button": "Cancel", + "save_button": "Save", + "run_button": "Run", + "running": "Running...", + "logs": "Log", + "delete": "Delete", + "edit": "Edit", + "name_label": "Command Name", + "cmd_label": "CLI Command", + "sudo_label": "Requires Sudo (root)", + "sudo_pass_label": "Sudo Password (entered once)", + "no_commands": "No commands saved." + }, + "settings": { + "show_toast": { + "label": "Show notifications", + "description": "Shows a toast notice upon command completion or error" + }, + "show_label": { + "label": "Show text label in bar", + "description": "Displays 'Commands' next to the icon in the top bar" + } + }, + "notify": { + "success": "Command '{name}' completed successfully.", + "error": "Command '{name}' failed (Exit Code {code})." + } +} diff --git a/cmd-runner/widget.luau b/cmd-runner/widget.luau new file mode 100644 index 00000000..155bc03f --- /dev/null +++ b/cmd-runner/widget.luau @@ -0,0 +1,60 @@ +--!nonstrict +-- Bar widget entry for Command Runner plugin + +local PANEL_ID = "nocode-96/cmd-runner:panel" +local state = noctalia.state.get("cmd_runner_state") or { runningMap = {} } + +local function isAnyRunning() + if type(state) == "table" and type(state.runningMap) == "table" then + for _, running in pairs(state.runningMap) do + if running == true then return true end + end + end + return false +end + +local function render() + local running = isAnyRunning() + local showLabel = noctalia.getConfig("show_label") ~= false + + local children = { + ui.glyph({ + name = running and "player-play" or "terminal", + size = 16, + color = running and "primary" or "on_surface", + }), + } + + if showLabel or running then + table.insert(children, ui.label({ + text = running and noctalia.tr("panel.running") or noctalia.tr("widget.label"), + fontWeight = "bold", + color = running and "primary" or "on_surface", + })) + end + + local container = barWidget.isVertical() and ui.column or ui.row + barWidget.render(container({ gap = 6, align = "center" }, children)) + barWidget.setTooltip(noctalia.tr("widget.tooltip")) +end + +noctalia.state.watch("cmd_runner_state", function(val) + if type(val) == "table" then + state = val + render() + end +end) + +render() + +function update() + render() +end + +function onClick() + noctalia.togglePanel(PANEL_ID) +end + +function onRightClick() + noctalia.togglePanel(PANEL_ID) +end From b8ea3f8fbeaa9379ca581d865de58100cef24e9b Mon Sep 17 00:00:00 2001 From: "Noah B." Date: Mon, 24 Aug 2026 14:31:54 +0200 Subject: [PATCH 2/3] Update README to clarify sudo password cache security --- cmd-runner/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd-runner/README.md b/cmd-runner/README.md index 397cec34..ae463846 100644 --- a/cmd-runner/README.md +++ b/cmd-runner/README.md @@ -1,6 +1,6 @@ # Command Runner -Save and execute CLI commands silently in the background with a single click and one-time sudo password cache. +Save and execute CLI commands silently in the background with a single click and secure sudo password cache. ## Plugin From b5b1ee01cbc514441b16969e7d33216707d1d0d5 Mon Sep 17 00:00:00 2001 From: "Noah B." Date: Mon, 24 Aug 2026 14:45:53 +0200 Subject: [PATCH 3/3] Rename command-runner-thumbnail.webp to thumbnail.webp --- ...command-runner-thumbnail.webp => thumbnail.webp} | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename cmd-runner/{command-runner-thumbnail.webp => thumbnail.webp} (100%) diff --git a/cmd-runner/command-runner-thumbnail.webp b/cmd-runner/thumbnail.webp similarity index 100% rename from cmd-runner/command-runner-thumbnail.webp rename to cmd-runner/thumbnail.webp