Skip to content

ayushnix/pass-tessen

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

73 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

password store logo

pass-tessen

sourcehut Codeberg mirror GitHub mirror

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.

Why use pass-tessen?

  • unlike pass-clip, pass-tessen can copy all valid key-value pair data in a password store file

    For 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 of credit 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

pass-tessen preview showcase
  • focuses on doing one thing well, copying password store data while using a terminal

  • pass-tessen doesn't use any external dependencies unless absolutely necessary

    As 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)

Installation

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).

Dependencies

  • 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)

Arch Linux

pass-tessen is available in the Arch User Repository.

Git Release

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.

Stable Release

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

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

Assumptions

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.

What does tessen mean?

Here you go.

Why did you choose this weird name?

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.

Contributions

Please see the CONTRIBUTING.md file.