bw-menu/README.md
Navid Sassan 5eb53d8b06 Move rofi keybindings from CLI flags to config file
Replace --custom-field, --kb-accept, and --kb-custom CLI flags with a
YAML config file at $XDG_CONFIG_HOME/bw-menu/config.yaml. The config
maps rofi key names to vault fields (e.g. Return: password), making
keybinding configuration simpler and more intuitive.
2026-02-17 20:16:12 +01:00

3.0 KiB

bw-menu

A rofi/fzf frontend for Bitwarden via the rbw CLI.

Installation

# dependencies
sudo dnf install -y rofi fzf wl-clipboard # or xclip instead of wl-clipboard
cargo install rbw

# install bw-menu
git clone https://git.navidsassan.ch/navid.sassan/bw-menu.git
cd bw-menu
uv sync

Usage

# interactive selection (rofi)
bw-menu select

# interactive selection (fzf)
bw-menu select --selector fzf

# select and print to stdout instead of clipboard
bw-menu select --field username --print

# list recent selections
bw-menu history list

# get password of last selected entry
bw-menu history get 0 --field password

# get username and print to stdout
bw-menu history get 0 --field username --print

Selectors

rofi

Runs in rofi's script mode. Recently used entries appear at the top with a clock icon. Custom input is disabled — only existing vault entries can be selected.

Default keybindings:

Key Action
Enter Copy password
Ctrl+Enter Copy username
Escape Cancel

Keybindings are configurable via $XDG_CONFIG_HOME/bw-menu/config.yaml (defaults to ~/.config/bw-menu/config.yaml):

keybindings:
  Return: password
  Control+Return: username

Each entry maps a rofi key name to the vault field it copies. The first entry is bound to rofi's accept key, additional entries become custom keybindings.

fzf

Launches fzf in the terminal with fuzzy matching. Recently used entries appear at the top, prefixed with *. Sorting is disabled so history entries stay on top.

Key Action
Enter Select the highlighted entry and copy to clipboard
Ctrl-C / Esc Cancel without selecting

Options

Flag Description Default
--selector rofi|fzf Which selector UI to use rofi
--field password|username|totp Which field to retrieve (fzf / history) password
--print Print to stdout instead of clipboard off

The selected field is copied to the clipboard using wl-copy (Wayland) or xclip (X11). When --print is passed, the value is printed to stdout instead.

History

Selections are saved to $XDG_CACHE_HOME/bw-menu/history.json (defaults to ~/.cache/bw-menu/history.json), up to 10 entries. The most recent selection is at index 0.

Sway keybindings

Example keybindings for ~/.config/sway/config:

# open bw-menu selector
bindsym $mod+p exec bw-menu select

# copy password of last selected entry
bindsym $mod+Shift+p exec bw-menu history get 0 --field password

# copy username of last selected entry
bindsym $mod+Shift+u exec bw-menu history get 0 --field username