Skip to content
ALL PROJECTS

...MAIN PROJECT... / 03

quick-bitwarden

Active

A password manager that opens like a command palette.

ROLE
Creator & maintainer
YEAR
2026
STATUS
Active
LANGUAGE
Rust
RustBitwarden CLIr-modalseguiX11/Wayland

...OVERVIEW...

What it is

The Bitwarden CLI is fast and scriptable, but typing bw get password name every time you need a login gets old. quick-bitwarden puts the vault behind a single shortcut: a centered, searchable picker that opens instantly, copies what you choose, and gets out of the way.

It is two pieces. A small daemon keeps the item list in memory so opening the window is immediate. The window itself is an r-modals dialog, which means it is borderless, keyboard-first, and works on both X11 and Wayland.

The copy flow is the product

On Enter, quick-bitwarden clears the clipboard first, then asks bw for the password you picked. Clearing first matters: without it, an old clipboard entry can be pasted while the lookup is still in flight. The password stays on the clipboard for QBW_CLEAR_AFTER seconds, then the daemon clears it.

If cliphist is installed, the password is deleted from clipboard history immediately. That is the difference between a password being on your clipboard and a password being in your clipboard history forever.

Search, shortcuts and prefixes

  • 01

    Two kinds of copy

    Enter copies the password. Shift+Enter copies the username instead.

  • 02

    Prefixes

    The search field doubles as a command line: >sync, >lock, >hide items, >show items, >restart and >stop are built in.

  • 03

    Your bindings

    Shortcuts and prefixes live in one config.toml. Bind a key to a tag on the highlighted row or to any r-modals action: a command, a shell one-liner, or a Rust closure.

  • 04

    No dead ends

    A query that is not in the list is forwarded to bw get password, so the cache never blocks you from finding an item.

One daemon, one window

Concurrent launches are serialized with a lock, and a show request that races an already-opening picker is dropped instead of stacking a second window. The daemon never opens a window itself: each dialog is a short-lived child process, which is what lets hide and toggle close it from outside.

The cache refreshes only when the window has been hidden for more than QBW_REFRESH_INTERVAL seconds — 30 by default. Passwords are never read from bw until you pick one, so locking the vault outside quick-bitwarden is enforced immediately.

Why Rust and r-modals

r-modals was already the picker I wanted for my own scripts. Using it here kept the UI layer small and made quick-bitwarden a real test of the library. The daemon, clipboard handling and vault logic are plain Rust with no GUI framework of their own.