Bitwarden porcelain for Emacs
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
Lucien Cartier-Tilet f1a5d7f125
Add remaining server settings, simplify config infix declaration
11 months ago
.gitignore Initial commit 12 months ago
CONTRIBUTING.org Start of bitwarden.el 12 months ago
LICENSE Initial commit 12 months ago
README.org Small README update 11 months ago
TODOs.org Login improvements, rename transient’s variables and functions 12 months ago
bitwarden.el Add remaining server settings, simplify config infix declaration 11 months ago

README.org

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

bitwarden.el

Introduction

Bitwarden.el is a Bitwarden porcelain for Emacs. It aims to be a complete text-based interface for the Bitwarden CLI.

Most of its public function are transient functions from the transient library to provide the user an easy-to-use interface with most of its options exposed.

This package is still very much a work in progress. Use at your own risks.

Installation

A couple of options are available for installing bitwarden.el.

The first one is to clone the repository in your load-path and add the following to your .emacs or your init.el:

(require 'bitwarden.el)

In my case, I prefer using use-package with straight:

(use-package bitwarden
  :ensure t
  :defer t
  :straight (bitwarden :type git
                       :host nil
                       :repo "https://labs.phundrak.com/phundrak/bitwarden.el"))

I personally also added :build t in the straight recipe to ensure Emacs compiles my package, both to .elc and .eln files (I am on Emacs 28.0, feature/native-comp got merged into master!)

There is probably a similar way to install it with pure straight.el or quelpa, but Im not knowledgable enough for that, feel free to create a PR to add some more installation instructions!

There is currently no plans of making this package available on MELPA or non-gnu elpa.

Notes

Login

Loging in with the --apikey option is not supported due to its interactive nature.

Bitwarden allows three different sources for your password:

  • a plain password as an argument following the username
  • an environment variable containing the password
  • a file containing the password

Bitwarden.el allows a fourth option: the authinfo file on computer. To use this option, simply add the following line in your .authinfo or .authinfo.gpg file:

machine bitwarden.example.com login yourusername password yourpassword

Of course, you will have to replace bitwarden.example.com with the actual server, yourusername with your actual username, and yourpassword with your actual password. If you do not set your username or your password in bitwarden.el, the package will look for them in your auth source file on login. Bitwarden.el retrieves the server name from the command

$ bw config server

and it strips the result from any http:// or https:// prefix. For instance, if the command returns https://example.com/bitwarden, bitwarden.el will look for example.com/bitwarden in your authinfo file.

Customizing

Bitwarden.el has a couple of customizable variables you can find in the bitwarden group when executing M-x customize-group. Here is a quick description of these variables:

bitwarden-cli-executable
Your Bitwarden CLI executable. Set this variable if Emacs doesnt find bw in your $PATH or if bw does not refer to your Bitwarden CLI. Default value: bw
bitwarden-default-cli-arguments
A list of the default arguments to pass to Bitwarden CLI. By default, only the package only passes --nointeraction in order to inhibit any attempt from the CLI to launch anything interactive — it should be taken care of by the package itself. Default value: '("--nointeraction")

License

bitwarden.el is available under the GNU GPL-3.0 license. You can find the full text in LICENSE.md.