pass-tessen
is a password store extension that uses a fuzzy data selection menu to copy
password store data while using a terminal. pass-tessen
can open URLs in a web browser of your
choice, generate OTPs using pass-otp, and copy all valid key-value pair data in a password
store file. The fuzzy data selection menu can be either fzf, skim, or fzy.
If you want to autotype and copy password store and gopass data on Wayland wlroots compositors like sway, check out tessen. If you're using Xorg/X11 window managers, check out rofi-pass.
-
unlike pass-clip,
pass-tessen
can copy all valid key-value pair data in a password store fileFor example, if you have something like
$ pass show mybank/username correct horse battery staple url: https://mybank.com credit card number: 1111 1111 1111 1111 otpauth://totp/ACME%20Co:john@example.com?secret=HXDMVJECJJWSRB3HWIZR4IFUGFTMXBOZ&issuer=ACME%20Co&algorithm=SHA1&digits=6&period=30
pass-tessen
can copy the value ofcredit card number
key -
pass-tessen
can generate and copy OTPs if pass-otp is installed -
pass-tessen
can open URLs using xdg-open or any other web browser of your choice -
pass-tessen
can show a preview of your password store data before you select it
-
focuses on doing one thing well, copying password store data while using a terminal
-
pass-tessen
doesn't use any external dependencies unless absolutely necessaryAs a result,
pass-tessen
doesn't depend on commonly used utilities like coreutils, sed, awk, and find (although password store needs them). -
the code is linted using shellcheck and formatted using shfmt
-
focuses on minimalism and security (please let me know if you have any suggestions for improvement)
Before installing pass-tessen
, make sure that the environment variable
PASSWORD_STORE_ENABLE_EXTENSIONS
is set to true
. This can be confirmed by executing,
env | grep PASSWORD_STORE_ENABLE_EXTENSIONS
If there's no output, add the following line in ~/.bash_profile
assuming you're using bash and
re-login.
export PASSWORD_STORE_ENABLE_EXTENSIONS=true
If this environment variable isn't set, password store extensions will not work. For more details,
please read the man page of PASS(1)
.
- pass
- at least one fuzzy data selection backend is needed - either fzf, skim, or fzy
- at least one copy paste program is needed - either wl-clipboard if you're using a Wayland compositor or xclip if you're using Xorg/X11
- xdg-utils (optional, if you want to open URLs using
xdg-open
) - pass-otp (optional, if you want to generate and copy TOTP/HOTP)
pass-tessen
is available in the Arch User Repository.
git clone https://git.sr.ht/~ayushnix/pass-tessen
cd pass-tessen
sudo make install
You can also do doas make install
if you're using doas on Linux, which you probably should.
curl -LO https://git.sr.ht/~ayushnix/pass-tessen/refs/download/v2.0.1/pass-tessen-2.0.1.tar.gz
tar xvzf pass-tessen-2.0.1.tar.gz
cd pass-tessen-2.0.1
sudo make install
or, you know, doas make install
.
usage: pass tessen [-p|--preview] [-f|--fuzzy fuzzy_backend_program]
[-u|--userkey custom_username_key]
[-U|--urlkey custom_url_key]
[-w|--web-browser custom_web_browser] [-h|--help]
[-v|--version]
pass tessen find a fuzzy selection program and show pass data
pass tessen -p show preview while selecting a pass file
pass tessen -p -f sk use skim as fuzzy backend and show preview
pass tessen -f fzy use fzy as fuzzy backend; doesn't support preview
pass tessen -u username set 'username' as the custom username key
pass tessen -U URL set 'URL' as the custom URL key
pass tessen -w qutebrowser use qutebrowser to open URLs
pass tessen -h show this help menu
pass tessen -v show the version of pass tessen
pass-tessen
assumes that the data organization format in a password store file is the same as
mentioned on the password store website. If a key is not detected, please raise a ticket on a
git forge website of your choice where pass-tessen
is hosted.
The password
key is reserved in a case-insensitive manner to avoid confusion. The custom username
and URL keys are also checked in a case-insensitive manner and the first unique key is selected. If
a custom username key is not mentioned, user
is assumed. If a custom URL key is not mentioned,
url
is assumed. If a username key is not found, the basename of the selected password store
(without the .gpg
extension) is considered as the username.
Because obvious names like pass-fzf and pass-clip are already taken by other projects? Also, for some reason, the way how FZF's UI instantly opens up and displays relevant information reminded me of Japanese hand fans. I guess I was thinking of some anime while coming up with this name.
Please see the CONTRIBUTING.md file.