A KDE Plasma 6 panel widget for quick access to your Bitwarden vault via the
Bitwarden CLI (bw). Click the panel icon, unlock with your master password,
search your items by name, and copy passwords or TOTP codes with one click.
| Locked | Loading | Unlocked | Filtering |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
- In-panel master-password unlock (no terminal needed).
- Search/filter your vault items by name.
- One-click copy of password (already in memory, no extra
bwcall) and TOTP (bw get totp <id>). - Auto-locks after a configurable idle timeout (default 1 minute) and on a manual Lock button.
- Clipboard secrets are tagged so Klipper won't keep them in history, and are auto-cleared after a configurable delay (default 30 s).
Secrets never touch the command line or disk:
- The master password is fed to
bw unlockvia stdin. - The session token is passed to every
bwcall via the process environment (BW_SESSION), which is owner-only readable — never argv. - The token lives only in the widget's memory and is wiped on lock.
This is why the heavy lifting is a small C++ QML plugin (org.quickbw.backend)
rather than pure QML: only QProcess gives us stdin + per-process env control.
- KDE Plasma 6 / Qt 6 / KF6
- Bitwarden CLI
bwon yourPATH(or in~/.local/bin), already logged in (bw login). - Build deps:
gcc-c++,qt6-qtbase-devel,qt6-qtdeclarative-devel,cmake,ninja. Optional:extra-cmake-modules,plasma-sdk(forplasmoidviewer).
There are two parts: a C++ QML plugin (installed into Qt's QML path, needs sudo) and the plasmoid package (installed into your home dir).
# 1. Build the C++ backend plugin
cmake -B build -S . -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr
cmake --build build
# 2. Install the backend plugin into Qt's QML import path (sudo).
# The exact path (e.g. /usr/lib64/qt6/qml) is queried from Qt at configure time.
sudo cmake --install build
# 3. Install the plasmoid (no sudo). If it's already installed, use --upgrade.
kpackagetool6 --type Plasma/Applet --install ./package
# 4. Force-restart plasmashell so it loads the new plugin + widget.
kquitapp6 plasmashell; sleep 1; killall -9 plasmashell 2>/dev/null; sleep 2; kstart plasmashellThen add the Quick BW widget to a panel.
Updating after a change: re-run steps 1–4, using
--upgrade ./packagein step 3. The force-restart in step 4 is mandatory for changes to take effect.
Remove the two installed pieces — the plasmoid (in your home dir) and the C++
backend plugin (in /usr, needs sudo):
# 1. Remove the widget from any panel first (right-click -> Remove), then:
kpackagetool6 --type Plasma/Applet -r org.quickbw
# 2. Remove the backend plugin (uses the install manifest, so the path is exact)
sudo xargs rm -v < build/install_manifest.txt
sudo rmdir /usr/lib64/qt6/qml/org/quickbw 2>/dev/null # remove the now-empty dir
# 3. Make plasmashell forget the unloaded plugin
kquitapp6 plasmashell && (kstart plasmashell >/dev/null 2>&1 &)If build/ is gone, remove the plugin directly instead of using the manifest:
sudo rm -rf /usr/lib64/qt6/qml/org/quickbwRun the applet in its own window — no plasmashell, no cache to fight. Install
the plasmoid once (user-level, no sudo), then point Qt at the freshly built
plugin via QML_IMPORT_PATH (so you don't need to sudo-install the backend):
kpackagetool6 --type Plasma/Applet --install ./package # once; --upgrade afterwards
cmake -B build -S . -G Ninja
cmake --build build
QML_IMPORT_PATH="$PWD/build/qml" plasmoidviewer -a org.quickbwAdd -f horizontal to plasmoidviewer to preview the panel (compact) form.
Right-click the widget → Configure to set the idle auto-lock minutes and the clipboard auto-clear seconds.



