rbw-rofi
A rofi (and dmenu-like) frontend for Bitwarden
Based on the alternative Bitwarden CLI rbw and inspired by rofi-pass, rbw-rofi is a simplistic password typer/copier using rofi, wofi, fuzzel, and bemenu.
!Screenshot of rofi-rbw !Screenshot of a rofi-rbw entry menu
Features
- Autotype password or username (
Enter/Alt+3andAlt+2, respectively) - Autotype username and password (with a
tabcharacter in between) withAlt+1(and copy TOTP to clipboard) - Configure autotyping either as a keybinding or by having a
_autotypefield in your credential - Copy username, password or TOTP to the clipboard (
Alt+u,Alt+pandAlt+t, respectively) - Show an autotype menu with all fields
Usage
First, you need to configurerbw. See its documentation for that.
Then, you can start rofi-rbw. It is not available as a rofi mode.
Configuration
You can configurerofi-rbw either with cli arguments or with a config file called $XDG_CONFIG_HOME/rofi-rbw.rc. In the file, use the long option names without double dashes.
Please check the man page for details.
Options
| long option | short option | possible values | description |
|---------------------------|--------------|---------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| --action | -a | type (default), copy, print | Choose what rofi-rbw should do. |
| --target | -t | username, password, notes, totp (or any custom field) | Choose which components of the selected entry are interesting. Can be passed multiple times to type/copy/print several components. Default is username and password. |
| --prompt | -r | any string | Define the text of the prompt. |
| --keybindings | | | Define custom keybindings in the format , for example Alt+x:copy:username. Multiple keybindings can be concatenated with ,; multiple targets for one shortcut can be concatenated with :. Note that wofi doesn't support keybindings. |
| --menu-keybindings | | | Define custom keybindings for the target menu in the format , similar to --keybindings. Note that wofi doesn't support keybindings. |
| --no-cache | | | Disable the automatic frecency cache. It contains sha1-hashes of the selected entries and how often they were used. |
| --clear-after | | integer number >= 0 (default is 0) | Limit the duration in seconds passwords stay in your clipboard (unless overwritten). When set to 0, passwords will be kept indefinitely. |
| --typing-start-delay | | delay in milliseconds (default is 0) | Set a delay before the typing starts. |
| --typing-key-delay | | delay in milliseconds (default is 0) | Set a delay between key presses when typing. |
| --action-sequence-delay | | delay in milliseconds (default is 1000) | Duration to wait when a delay step is encountered in a keybinding sequence (e.g. Alt+c:copy:username:delay:password), for both type and copy actions. |
| --no-help | | | Don't show the help message about the available shortcuts. |
| --display-fields | | name_only, name_with_folder, folder, user, uri | Ordered list of fields to show in the overview, given as separate arguments (e.g. --display-fields name_only user). Defaults to name_with_folder user. |
| --selector-args | | | Define arguments that will be passed through to rofi, wofi, fuzzel or bemenu.
Please note that you need to specify it as --selector-args=" or --selector-args " because of a bug in argparse |
| --selector | | rofi, wofi, fuzzel, bemenu | Show the selection dialog with this application. Chosen automatically by default. |
| --clipboarder | | xsel, xclip, wl-copy | Access the clipboard with this application. Chosen automatically by default. |
| --typer | | xdotool, wtype, ydotool, dotool | Type the characters using this application. Chosen automatically by default. |
| --use-notify-send | | | Send a desktop notification after each field is copied (e.g. "username copied to clipboard"). |
Autotyping
By default,Alt+1 will type username and password, separated with a tab character. However, you can change this behavior by defining your own keybinding (if your selector supports this). For example, Alt+1:type:username:enter:delay:password:enter will type the username, enter, wait for a second and then type the password and enter again.
This sequence can also be defined as a field _autotype on each credential.
Installation
From distribution repositories
From PyPI
rofi-rbw is on PyPI. You can install it with pip install --user rofi-rbw (or sudo pip install rofi-rbw).
Manually
Download the wheel file from releases and install it withpipx install $filename.
Note that it needs configargparse to work.
Dependencies
You also need:- Python 3.9 or higher
rofi,wofi,fuzzelorbemenurbw1.14 or higher- Something to programmatically type characters into other applications. Depending on your display server, it's
xdotool,wtype,ydotoolordotool. - Something to copy text to the clipboard. Again, depending on the display server, you want
xclip,xselorwl-copy. - Optionally
libnotifyto providenotify-sendneeded for--use-notify-send