From f5a72b755880f51ec56653fd46b4606c1e8c5fbb Mon Sep 17 00:00:00 2001 From: LucasOe Date: Wed, 15 Jul 2026 04:57:34 +0200 Subject: [PATCH] feat: add proton-pass plugin (#4) * feat: add proton-pass plugin * feat: make plugin setQuery prefix-relative See: https://github.com/noctalia-dev/noctalia/commit/1bc8308cb29cc29439c1837fcd553424087dddc1 --- proton-pass/README.md | 15 +++ proton-pass/launcher.luau | 211 +++++++++++++++++++++++++++++++ proton-pass/plugin.toml | 17 +++ proton-pass/thumbnail.webp | Bin 0 -> 44016 bytes proton-pass/translations/en.json | 7 + 5 files changed, 250 insertions(+) create mode 100644 proton-pass/README.md create mode 100644 proton-pass/launcher.luau create mode 100644 proton-pass/plugin.toml create mode 100644 proton-pass/thumbnail.webp create mode 100644 proton-pass/translations/en.json diff --git a/proton-pass/README.md b/proton-pass/README.md new file mode 100644 index 0000000..4a0b36f --- /dev/null +++ b/proton-pass/README.md @@ -0,0 +1,15 @@ +# Proton Pass + +A Noctalia Launcher plugin that integrates with the Proton Pass CLI. + +## Features + +- Browse your Proton Pass vaults +- Browse items within each vault +- Copy passwords to the clipboard +- Display TOTP codes as a notification (when available) + +## Requirements + +- [proton-pass-cli](https://protonpass.github.io/pass-cli/) installed and available in your `PATH` +- An authenticated Proton Pass CLI session (run `pass-cli login`) diff --git a/proton-pass/launcher.luau b/proton-pass/launcher.luau new file mode 100644 index 0000000..0251758 --- /dev/null +++ b/proton-pass/launcher.luau @@ -0,0 +1,211 @@ +--!nonstrict + +-- Type returned by `pass-cli vault list --output=json` +type Vault = { name: string, vault_id: string, share_id: string } +type Vaults = { [number]: Vault } + +-- Type returned by `pass-cli item list --output=json` +type Item = { id: string, share_id: string, vault_id: string, state: string, title: string, item_type: string } +type Items = { [number]: Item } + +-- Caches to avoid repeated CLI calls while the launcher session is active +local cachedVaults: Vaults = {} +local cachedItems: { [string]: Items } = {} + +-- Utility functions ----------------------------------------------------------- + +-- Search cached items by item id across all cached vaults +local function searchCachedItems(item_id: string): Item? + for _, vault in cachedItems do + for _, item in vault do + if item.id == item_id then + return item + end + end + end + return nil +end + +-- Map + filter: transform each element, include only non-nil results +local function filterMap(sequence: { T }, fn: (T) -> U?) + local out = {} + for _, v in sequence do + local res = fn(v) + if res ~= nil then + table.insert(out, res) + end + end + return out +end + +local function glyphTable(item_type: string) + local lookupTable: { [string]: string } = { + alias = "at", + credit_card = "credit-card", + custom = "note", + identity = "user-circle", + login = "lock", + ssh_key = "key", + wifi = "router", + } + + return lookupTable[item_type] or "question-mark" +end + +-- Proton Pass CLI functions --------------------------------------------------- + +local function getVaultsAsync(callback) + if #cachedVaults ~= 0 then + callback(cachedVaults) + return + end + + noctalia.runAsync(`pass-cli vault list --output=json`, function(result) + if result.exitCode ~= 0 then + noctalia.log("proton-pass: failed to list vaults") + noctalia.notifyError("Proton Pass", noctalia.tr("failed-list-vaults")) + return callback({}) + end + + local decoded = noctalia.json.decode(result.stdout) + local vaults: Vaults = decoded["vaults"] or {} + cachedVaults = vaults + return callback(vaults) + end) +end + +local function getItemsAsync(vaultName: string, callback) + if cachedItems[vaultName] ~= nil then + callback(cachedItems[vaultName]) + return + end + + noctalia.runAsync(`pass-cli item list "{vaultName}" --output=json`, function(result) + if result.exitCode ~= 0 then + -- noctalia.log(`proton-pass: failed to list items in vault: {vaultName}`) + return callback({}) + end + + local decoded = noctalia.json.decode(result.stdout) + local items: Items = decoded["items"] or {} + cachedItems[vaultName] = items + return callback(items) + end) +end + +local function getPasswordAsync(item: Item, callback) + noctalia.runAsync(`pass-cli item view "pass://{item.share_id}/{item.id}/password"`, function(result) + if result.exitCode ~= 0 then + noctalia.log(`proton-pass: no password found for item: {item.title}`) + return + end + + local password: string = result.stdout + callback(password) + end) +end + +local function getItemTotpAsync(item: Item, callback) + noctalia.runAsync(`pass-cli item totp "pass://{item.share_id}/{item.id}" --output=json`, function(result) + if result.exitCode ~= 0 then + -- It's not an error if a TOTP is absent; just log for debugging + -- noctalia.log(`proton-pass: no TOTP code for item: {item.title}`) + return + end + + local decoded = noctalia.json.decode(result.stdout) + local totp: string = decoded["totp"] + callback(totp) + end) +end + +-- Row constructors ------------------------------------------------------------ + +local function vaultRows(pattern: string, callback) + getVaultsAsync(function(vaults) + callback(filterMap(vaults, function(vault) + local score = noctalia.fuzzyScore(pattern, vault.name) + if score == nil then + return nil + end + + return { + id = noctalia.json.encode({ type = "vault", id = vault.name }), + title = vault.name, + glyph = "folder", + score = score, + query = `{vault.name} `, + } + end)) + end) +end + +local function itemRows(vault: string, pattern: string, callback) + getItemsAsync(vault, function(items) + callback(filterMap(items, function(item) + -- Exclude Trashed items before scoring + if item.state ~= "Active" then + return nil + end + + local score = noctalia.fuzzyScore(pattern, item.title) + if score == nil then + return nil + end + + return { + id = noctalia.json.encode({ type = "item", id = item.id }), + title = item.title, + glyph = glyphTable(item.item_type), + score = score, + } + end)) + end) +end + +-- Entry points ---------------------------------------------------------------- + +function onQuery(query: string) + local vault, rest = query:match("^(%S+)%s+(.*)$") + + -- Reset cache when query is empty + if query == "" then + cachedVaults = {} + cachedItems = {} + end + + if not vault then + launcher.setResults(query, { { id = "loading", title = noctalia.tr("loading-vaults"), glyph = "loader" } }) + vaultRows(query, function(rows) + launcher.setResults(query, rows) + end) + else + launcher.setResults(query, { { id = "loading", title = noctalia.tr("loading-items"), glyph = "loader" } }) + itemRows(vault, rest, function(rows) + launcher.setResults(query, rows) + end) + end +end + +function onActivate(_id: string) + local id: { type: string, id: string } = noctalia.json.decode(_id) + + if id.type == "item" then + local item = searchCachedItems(id.id) + + if item == nil then + noctalia.notifyError("Proton Pass", noctalia.tr("item-not-found")) + return + end + + getPasswordAsync(item, function(password) + noctalia.copyToClipboard(password, "text/plain") + noctalia.notify(`{item.title}`, noctalia.tr("copied-password")) + + -- Try to fetch TOTP and notify + getItemTotpAsync(item, function(totp) + noctalia.notify(`{item.title} TOTP`, totp) + end) + end) + end +end diff --git a/proton-pass/plugin.toml b/proton-pass/plugin.toml new file mode 100644 index 0000000..5449e96 --- /dev/null +++ b/proton-pass/plugin.toml @@ -0,0 +1,17 @@ +id = "lucasoe/proton-pass" +name = "Proton Pass" +version = "0.1.0" +min_noctalia = "5.0.0" +author = "LucasOe" +license = "MIT" +icon = "lock" +description = "Access Proton Pass from the launcher" +tags = ["launcher"] +dependencies = ["proton-pass-cli"] + +[[launcher_provider]] +id = "proton-pass" +entry = "launcher.luau" +prefix = "pass" +glyph = "lock" +include_in_global_search = false diff --git a/proton-pass/thumbnail.webp b/proton-pass/thumbnail.webp new file mode 100644 index 0000000000000000000000000000000000000000..0aef7186ddebb4e65801b353f4af94a276e09614 GIT binary patch literal 44016 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