tessen

an interactive menu to autotype and copy gopass data
git clone https://git.awy.one/tessen
Log | Files | Refs | README | LICENSE

README.md (9980B) - View raw


tessen

I'm archiving this repository because I consider this script to be feature complete and because I'm no longer interested in using shell scripts and GPG as my password manager.

sourcehut Codeberg mirror GitHub mirror

tessen is a bash script that can autotype and copy data from password-store and gopass files. A wayland native dmenu is required to use tessen and the following dmenu backends are recognized

As of version 2.2.0 of tessen, fuzzel is the default dmenu backend.

If you want to add another Wayland native dmenu not mentioned above, please see the CONTRIBUTING.md file for information about how to contribute to tessen.

tessen is written to work only on wayland wlroots compositors such as sway that support the virtual-keyboard-unstable-v1 protocol. If you'd rather use a fuzzy data selection program like fzf to copy your password-store data on both Xorg/X11 and Wayland, check out pass-tessen.

Why use tessen?

Installation

Dependencies

tessen is available in the following operating systems

Operating System
Arch Linux (AUR)
Alpine Linux
NixOS
GuixSD

Git Release

git clone https://git.sr.ht/~ayushnix/tessen
cd 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/tessen/refs/download/v2.2.3/tessen-2.2.3.tar.gz
tar xvzf tessen-2.2.3.tar.gz
cd tessen-2.2.3/
sudo make install

or, you know, doas make install.

Optional Steps and Minimal Installation

There's an optional patch provided in the repository called explicit_path.patch which can be used to change the shebang from #!/usr/bin/env bash to #!/bin/bash. It also exports $PATH to

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

to prevent execution of arbitrary binaries not owned by the root user. If you want to apply this patch, execute

make expatch

before executing sudo make install. This patch should make tessen work fine on almost all Linux distributions except perhaps NixOS and GuixSD.

If you don't want to install the man pages or the shell completion files, you can use

sudo make minimal

to install the tessen and its default configuration file and nothing else. The man pages can be installed if needed using sudo make man, the bash completion file can be installed using sudo make bashcomp, and the fish completion file can be installed using sudo make fishcomp. For more information, use make help.

Features

Please read the man page for more information.

Caveats

The reason why tessen offers flexibility between autotyping and copying data is because autotyping may not always work accurately. There can be several reasons for this.

One of the reasons when autotype doesn't work is when a web page doesn't follow the standard expectation of having a username and password text field one after the other and links are inserted between them. A good example is the login popup offered by Discourse. In such cases, autotyping can make a real mess. This is why tessen also provides an option to define custom autotype operations.

tessen uses wtype for autotyping and it seems to work fine on Firefox. You'll need at least version v0.4, or later, of wtype for autotyping to work on Chromium although I've experienced issues on some websites when autotyping on Chromium using wtype. I haven't tested any other web browsers.

It also seems like autotyping on Wayland is in somewhat of a mess right now. An issue tracker on the the wayland-protocols repository by Roman Gilg titled Input Method Hub presents an overview on the state of things. As of version 1.7 of sway, the input-method-unstable-v2.xml protocol and the virtual-keyboard-unstable-v1.xml protocol (which is what wtype implements) are supported. There's ydotool but it requires root access to access /dev/uinput, which makes it unattractive.

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 mew and fuzzel'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.

Features that WILL NOT be implemented