About
Launcher pass
Browse a GNU Pass password store from the Noctalia launcher and copy or auto-type passwords, OTP codes, usernames, and any other field — without opening a terminal.
Plugin
| Field | Value |
|---|---|
| ID | mellotanica/launcher-pass |
| Entries | Launcher provider: pass |
| Launcher Prefix | /pass |
The prefix is pass preceded by your launcher's provider prefix
(shell.launcher.provider_prefix, / by default). Every example below assumes
the default, so adjust /pass if you changed it.
Requirements
Install pass, find, and grep on PATH. pass also needs gpg and a
Wayland clipboard helper (wl-clipboard) for its -c copy mode.
Optional:
pass-otp— enables the Copy OTP / Type OTP rows. They appear only for entries whose decrypted body contains anotpauth://line.wtype— enables every Type row. If it is not onPATHthe Type rows are hidden and only the Copy rows are shown.
A working password store is expected where pass looks for it:
$PASSWORD_STORE_DIR when set, otherwise ~/.password-store. Override it with
the Password store path setting.
Usage
Open the Noctalia launcher and type /pass.
| Input | Result |
|---|---|
/pass |
list the store root |
/pass <query> |
fuzzy-search the whole store (see below) |
/pass work/ |
browse inside the work folder |
/pass work/aws pr |
fuzzy-search inside work/aws |
Activating a folder drills into it; a "Go back" row returns to the
parent. Activating an entry decrypts it with pass show and opens its detail
view, which lists, in order:
- Copy Password / Type Password
- Copy OTP / Type OTP — only when the entry has an
otpauth://line - Copy Username / Type Username — the value of the first
login,user, orusernamefield (case-insensitive), or the entry's own name when there is none - Copy
<field>/ Type<field>for every remainingkey: valueline, in file order - Go back to the entry's folder
In the detail view, keep typing to filter these rows: /pass work/aws/root otp
shows only the two OTP rows. The filter uses the same match rule as search
(spaces are wildcards).
Copy puts the value on the clipboard. Password and OTP go through pass -c /
pass otp -c, so the clipboard is cleared automatically after the timeout;
usernames and other fields are copied directly and are not auto-cleared.
Type closes the launcher, waits Type delay, then types the value with
wtype.
If GPG needs a passphrase, a pinentry dialog appears; the launcher hides itself so the dialog can take focus and reopens once decryption finishes.
Settings
| Setting | Type | Default | Description |
|---|---|---|---|
storePath |
folder |
(empty → ~/.password-store) |
Exported as PASSWORD_STORE_DIR to every pass call. |
clipTimeout |
string |
(empty) | Seconds before pass clears the clipboard after Copy Password / Copy OTP. Empty falls back to the PASSWORD_STORE_CLIP_TIME environment variable, then to pass's own default. Only a positive integer takes effect. |
typeDelay |
int |
500 |
Milliseconds to wait after the launcher closes before wtype starts typing, so the compositor can restore focus to the field you were in. (Advanced. The v4 label "Launcher Close Delay" was misleading — this is the pre-typing delay.) |
wtypeDelay |
int |
12 |
Milliseconds between simulated keystrokes. Increase it if characters are dropped. (Advanced.) |
pinentryGraceMs |
int |
200 |
Milliseconds to wait for a decrypt to finish before assuming a pinentry dialog is blocking and hiding the launcher. If your GPG agent already has the passphrase cached, the launcher never flickers. (Advanced.) |
detailActionOrder |
select |
copy |
In an entry's detail view, whether the Copy row (copy) or the Type row (type) comes first for each value. (Advanced.) |
detailActionGrouping |
select |
interleaved |
interleaved: each value's Copy and Type rows sit together. grouped: every Copy row first, then every Type row (each block in the detailActionOrder direction). (Advanced.) |
IPC
This plugin exposes no custom IPC actions. To open the launcher straight into this provider, use Noctalia's panel IPC:
noctalia msg panel-open launcher "/pass "
noctalia msg panel-toggle launcher "/pass "
noctalia msg panel-close launcher
Replace / with your provider_prefix if you changed it. The plugin uses these
same panel-close / panel-open commands internally to juggle focus around the
GPG pinentry prompt.
Notes
- Auto-paste: Noctalia's
shell.launcher.auto_paste(Ctrl+V / Shift+Insert after a copy) only applies to the built-in providers — the plugin runtime has no hook to opt in. The Type rows exist to cover that case; they insert the value withwtyperegardless of theauto_pastesetting. - Index file:
findlists the non-hidden folders and*.gpgnames under the store once into<plugin data dir>/store.index(rebuilt in the background, ~once a minute). Every keystrokegreps that file — it holds paths only, never decrypted content. Decrypted contents are read only when you open an entry's detail view (pass show), and are cached in memory for 60 s. - Spawned processes:
find(index build);grep(per keystroke);pass show,pass -c,pass otp,pass otp -c(per action);wtypeandsleep(Type actions);noctalia msg panel-*(pinentry focus handling). - Secrets: decrypted values live only in the plugin's in-memory cache and on
the system clipboard via
pass/ Noctalia. Neither Noctalia state nor the index file holds decrypted content. Navigation state is encoded in the launcher query, not persisted. - Network: none.
- Writes: only the
store.indexfile above;pass,gpg, and clipboard tools manage their own runtime state.
Versions
| Version | Plugin API | Updated |
|---|---|---|
| v2.0.0 latest | 26 | Aug 30, 2026 |
Older versions stay installable on a Noctalia release whose plugin API is below the latest version's.