Bitwarden auto-type and autofill for desktop apps on Windows and Linux.
A keyboard-driven picker that types your Bitwarden logins into any desktop app, not just the browser. Press a hotkey over a desktop app's login screen (a game launcher, Discord, a VPN client…), search, and press Enter.
Unofficial. BwPicker is an independent project and is not affiliated with, endorsed by, or supported by Bitwarden Inc. It uses the official, signed Bitwarden CLI for all vault access.
Recorded with a made-up demo vault.
The Bitwarden browser extension only fills web pages. The desktop app's Autotype works only when a login is tagged with an apptitle:// URI, types the first match without letting you choose, and needs a server feature flag that some self-hosted servers don't send. BwPicker gives you the browser-style list for every app instead.
- Global hotkey (
Ctrl+Alt+B) opens a search popup over the app you're in. - Ranks logins for that app by its process name and window title (Discord → logins named or hosted at "discord"). No URI tagging needed.
- Two-step logins: type the username and password together, or each on its own for sign-ins that ask for them on separate pages.
- Copy the username or password instead, kept out of Windows clipboard history and cleared after 30 seconds.
- Settings window: start at sign-in, choose bitwarden.com, bitwarden.eu or your self-hosted server (including Vaultwarden), and sign in or out. No terminal needed.
- Sign in with email, master password and a two-step code (authenticator, email or YubiKey), or with a personal API key.
- Updates itself from GitHub Releases after checking the download's SHA-256 checksum. Checks daily; you can turn it off.
- Follows the system light/dark mode.
- Locks automatically after 15 minutes idle (change it or turn it off in Settings), and immediately when the screen locks, the computer sleeps or you sign out.
| Key | Action |
|---|---|
Enter |
Type username, Tab, password |
Tab |
Type username only |
Ctrl+Enter |
Type password only |
Shift + any of the above |
Also press Enter afterwards (submit) |
Ctrl+U / Ctrl+P |
Copy username / password |
↑ ↓ PgUp PgDn |
Move selection |
Esc |
Close |
- Windows 10 or 11, or a 64-bit Linux desktop (see Linux for what works where)
- Nothing else for the release build (it includes its own .NET runtime); the .NET 10 SDK to build from source
- The official Bitwarden CLI. If it's missing, BwPicker offers to install it (with winget on Windows, from Bitwarden's GitHub releases on Linux). On Windows it refuses to run a
bw.exethat isn't signed by Bitwarden Inc.
winget install Bitwarden.CLI- Start BwPicker. It sits in the system tray; click the icon to open Settings.
- Under Account, choose your server (bitwarden.com, bitwarden.eu or self-hosted) and sign in.
- Turn on Start with Windows (Start at sign-in on Linux) if you want it running all the time.
- Click into an app's login field and press
Ctrl+Alt+B. After the vault auto-locks, it asks for your master password again.
New-device check: Bitwarden's cloud may email a one-time code when you sign in from a new device. The CLI only accepts that code interactively, so if sign-in reports it, either choose Use an API key instead (web vault → Settings → Security → Keys) or run bw login once in a terminal.
Download the zip from Releases. Releases are built by GitHub Actions from the tagged source. Each one includes a SHA256SUMS.txt and a signed build provenance attestation, which you can verify with:
gh attestation verify BwPicker-win-x64.zip --repo capkz/bw-pickerUnzip it into a folder you can write to, such as %LOCALAPPDATA%\Programs\BwPicker, so it can update itself. The executable is not code-signed, so Windows SmartScreen may warn on first run. Building from source is the most trustworthy option:
git clone https://github.com/capkz/bw-picker
cd bw-picker
dotnet build BwPicker.sln -c Release
.\src\BwPicker\bin\Release\net10.0-windows\BwPicker.exeBuilds from source report version 0.0.0-dev and never update themselves.
Beta. Tested in VMs (Xfce on X11, GNOME 50 on Wayland) but not yet widely. Feedback welcome in the Linux beta discussion.
Download BwPicker-linux-x64.zip, unzip it and run the installer, which puts BwPicker in ~/.local/share/BwPicker (so it can update itself), adds it to the applications menu and starts it:
unzip BwPicker-linux-x64.zip -d BwPicker && cd BwPicker
sh install-linux.sh- X11 (Xfce, MATE, Cinnamon, KDE or GNOME on Xorg): everything works as on Windows. Copying needs
xclip; typing needslibxtst6(both are installed on most desktops). - Wayland (GNOME 46+, KDE Plasma 6, Hyprland): BwPicker asks the desktop for the
Ctrl+Alt+Bshortcut and for permission to type, each once (the desktop shows a dialog; the choice is remembered). It finds the app you're in through the accessibility bus, so logins are ranked and typing is checked like on Windows. Two differences: only characters on your keyboard layout can be typed there (a login with others is copied instead, never typed partially), and if an app doesn't report itself the picker says "unverified" before typing. Copying needswl-clipboard. On desktops without these portals, bind a shortcut to~/.local/share/BwPicker/BwPicker --pickyourself and copy withCtrl+U/Ctrl+P. - The tray icon uses the StatusNotifierItem standard: built into KDE, Xfce and Cinnamon; GNOME needs the AppIndicator extension (included in Ubuntu).
To build from source on Linux: dotnet build BwPicker.sln -c Release -p:TargetOS=linux.
Windows doesn't let a normal app type into an app running as administrator (some game launchers do), so BwPicker tells you to use Ctrl+U / Ctrl+P and paste instead. To have it type there too, install it with the included script:
.\Install-Admin.ps1 # from the unzipped release; asks for administrator rights once
.\Install-Admin.ps1 -UninstallIt copies BwPicker to C:\Program Files\BwPicker, where only administrators can change it, and starts it as administrator at sign-in through a scheduled task (no UAC prompt each time). BwPicker refuses to set up admin autostart from any other folder: an admin app in a folder you can write to could be swapped by malware to gain admin rights. The trade-off is that BwPicker, the Bitwarden CLI it starts and its updater then run with administrator rights.
Read SECURITY.md before relying on this with important accounts. In short:
- BwPicker stores no vault data of its own. Signing in and syncing are done by the official CLI, which it launches with a cleaned-up environment after verifying its signature.
- Unlocking is instant, like the browser extension: BwPicker decrypts the CLI's end-to-end encrypted local vault in-process, using only .NET's built-in PBKDF2, HKDF, AES-256 and HMAC-SHA256, and verifies every item's MAC before decrypting it. Anything else (Argon2 accounts, organization items, a password that doesn't verify) goes through
bw unlockinstead. - The master password and API key reach the CLI through environment variables, never on the command line. The session key and cached passwords are encrypted in memory and wiped when the vault locks.
- Typing checks, before every keystroke, that the same app is still in front with focus inside it, and that no modifier keys are held. It stops if anything changes.
- Updates come only from this repository's GitHub releases and must match the release's SHA-256 checksum.
What it cannot protect against:
- It can't verify where it's typing. It checks the window, process and title, not a web page's real origin. If you pick a login while a fake window is in front, it will type into that window. You choosing the login is the safeguard.
- Malware already running as your user, keyloggers, or a compromised destination app. On X11 any app you run can read keystrokes and the clipboard, so this matters more there.
- A compromised GitHub account publishing a malicious release. Turn off update checks and build from source if that matters to you.
- Antivirus heuristics: a global hotkey plus simulated typing looks like a keylogger, so some products may flag it.
The security review in SECURITY.md was AI-assisted and has not been independently audited. Reports are welcome; please open a private security advisory rather than a public issue.
src/BwPicker/
App/ entry point, tray app, settings storage
Vault/ Bitwarden CLI client, sign-in and server choice, protected memory, vault parsing
Input/ window matching, guarded typing
UI/ Avalonia windows: picker, unlock, sign-in, settings, CLI setup
Updates/ GitHub release check and self-update
Platform/
Windows/ hotkey, SendInput typing, clipboard, tray and notifications, autostart, admin mode, CLI signature check
Linux/ X11 and Wayland (portals, AT-SPI) hotkey and typing, clipboard, tray, DBus notifications, autostart, CLI checks
tests/BwPicker.Tests/ regression checks with a fake CLI
Each build compiles the shared folders plus its own Platform/ folder; the Linux build is selected with -p:TargetOS=linux or -r linux-x64.
dotnet build BwPicker.sln -c Release
dotnet run --project tests\BwPicker.Tests # never touches your vault or keyboard
dotnet run --project src\BwPicker -- --preview --dark # sample-data UI; also --light, --unlock, --settings, --signin, --query <text>Exit the running tray app before rebuilding. To release, push a tag like v1.2.3: CI builds, tests, stamps that version into the app and publishes the release. See tests/BwPicker.Tests/README.md for what the checks cover.
PolyForm Noncommercial 1.0.0: free for personal and other non-commercial use; commercial use requires permission.

