Bash script for copying and autotyping data from password-store, gopass or prs.

tags

v2.3.0
68e8d7cf Jan Christian Grünhage

v2.3.0 - 2025-10-28

Tessen has been first archived by the original developer and maintainer, and
then forked. This marks the first new release under new maintenance.

Added
- support for `prs` as a third password backend besides `pass` and `gopass`
-----BEGIN PGP SIGNATURE-----

wnUEABYIACcFAmkAAT4JEO7BFwzlb6LtFiEE5tzHUs+DAdxgTMv67sEXDOVvou0A
APl8AQCfYbMt1VB6z27QwLGSFHbt00yqUuR5yGMPJn2geyzlNwD+OTDEXEYC8jGZ
vMSt14UqY7VzqE2WK58juRbcA/cagQs=
=BrM7
-----END PGP SIGNATURE-----

artifacts

v2.2.3
36e96be5 Ayush Agarwal

release: bump version to 2.2.3

see CHANGELOG.md for more details
-----BEGIN SSH SIGNATURE-----
U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgDp1PDeYU+pRx3CNGmdiPxjG8NS
NLuwzMOtduilLsy3oAAAADZ2l0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5
AAAAQFW11kb6OaucbHn1J/sxjoyuE1xzbCPg1v+9YA53CNK5LCH/bKU5OYmpdc47KmlUmv
cf4lNql2e2gx7/SRtUOQo=
-----END SSH SIGNATURE-----

artifacts

v2.2.2
fba7f80c Ayush Agarwal

release: bump version to 2.2.2

see CHANGELOG.md for release notes
-----BEGIN SSH SIGNATURE-----
U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgDp1PDeYU+pRx3CNGmdiPxjG8NS
NLuwzMOtduilLsy3oAAAADZ2l0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5
AAAAQIqyveqnsHg2pHBx6p+jauUjLpKba1BdMYW4LIY3zHg8bj1mp53uv5UDn0MIQIexRf
udtIqJAxzgMxkSFaneWg0=
-----END SSH SIGNATURE-----

artifacts

v2.2.1
55d44575 Ayush Agarwal

release: bump version to 2.2.1

see CHANGELOG.md for release notes
-----BEGIN PGP SIGNATURE-----

iHUEABYIAB0WIQTgVhDyNH/Z8QffkfaIX7fuGN4o2QUCZCVQqwAKCRCIX7fuGN4o
2YB9AQCRqxLsFWjflAL0ETtmyb0dQJOvgI4sJzmJcTliKtkLewEAhh2jwvm8nvNg
Uz4YjwqbH3Fmd3Tp5m2lPcvFDLNMigM=
=VNNm
-----END PGP SIGNATURE-----

artifacts

v2.2.0
32b8804a Ayush Agarwal

release: bump version to 2.2.0

see CHANGELOG.md for release notes
-----BEGIN PGP SIGNATURE-----

iHUEABYIAB0WIQTgVhDyNH/Z8QffkfaIX7fuGN4o2QUCZBuJfAAKCRCIX7fuGN4o
2bVaAQDxE/2KMAwNHwMJCnQdyeaaz6nRhT1p87rdp1NE7hHkTwEAySWD7w3Dozaw
tqNaNA9RzyLrY9xAaXqQmPD0hHgjoAU=
=fB9L
-----END PGP SIGNATURE-----

artifacts

v2.1.3
f81c6d63 Ayush Agarwal

release: bump version to 2.1.3, updated CHANGELOG

see CHANGELOG.md for release notes
-----BEGIN PGP SIGNATURE-----

iHUEABYIAB0WIQTgVhDyNH/Z8QffkfaIX7fuGN4o2QUCY6Ni2wAKCRCIX7fuGN4o
2RWUAP9dG3dKuwOt5JuLpdqgxcaC7X/vPcupdJzYn2205WiIzQEAlugBMF6NP5Jf
1r6rWA7jDeIb0gbXUNl+0GlahYlAWQI=
=NW3f
-----END PGP SIGNATURE-----

artifacts

v2.1.2
0251fe3f Ayush Agarwal

release: bump version to 2.1.2, updated CHANGELOG

fixed parsing issue in config file for `action`
-----BEGIN PGP SIGNATURE-----

iHUEABYIAB0WIQTgVhDyNH/Z8QffkfaIX7fuGN4o2QUCYkddHgAKCRCIX7fuGN4o
2Wu1AP9y3DG9Otmi100kvFIHs+W0bu4mWll+ceNImh8I/lAEegD/TbwSIHeIJtqj
I2VisXiyEpC6u3Uh8cDZDYbDk8XR3gY=
=+KbX
-----END PGP SIGNATURE-----

artifacts

v2.1.1
0aa1d173 Ayush Agarwal

release: bump version to 2.1.1, update CHANGELOG

fixed bug in gopass mount file parsing
-----BEGIN PGP SIGNATURE-----

iHUEABYIAB0WIQTgVhDyNH/Z8QffkfaIX7fuGN4o2QUCYjiNggAKCRCIX7fuGN4o
2QbjAP9Bbn7ZI97wg1bx/M35qNCdo+ab6T3KQbw4K547pyo2KAD+K6i+bopM8pwo
D8fNteD8jG+zz+A6LHNdytcP/uyflQk=
=+t6m
-----END PGP SIGNATURE-----

artifacts

v2.1.0
40f41b67 Ayush Agarwal

release: bump version to 2.1.0 -----BEGIN PGP SIGNATURE-----

iHUEABYIAB0WIQTgVhDyNH/Z8QffkfaIX7fuGN4o2QUCYieGhgAKCRCIX7fuGN4o
2b1zAP9DbfJCWPceKUs0Y4+Voih13+Wdtb28+8TU5R1VOvFOBgD/TysL6XYGoa02
+JaQ0cUhouBCyfHsjyybQ0HKFV+NtQY=
=if5W
-----END PGP SIGNATURE-----

artifacts

v2.0.2
59a2c300 Ayush Agarwal

release: bump version to v2.0.2

see CHANGELOG.md for release notes
-----BEGIN PGP SIGNATURE-----

iHUEABYIAB0WIQTgVhDyNH/Z8QffkfaIX7fuGN4o2QUCYh7PEwAKCRCIX7fuGN4o
2TIlAQDFnoF1GpKhDzsYhHYdyCTE5eH0h3FhhYYFUK97v+GtHwEA9zuJ8Zex405+
YjyVnDKh97c0v8UDmP+xSV3yFxhhUQc=
=fql9
-----END PGP SIGNATURE-----

artifacts

v2.0.1
fe847375 Ayush Agarwal

release: bump version to 2.0.1

- cb0541f don't check the file size when it is selected
- da2887c don't clear clipboard when autotyping
-----BEGIN PGP SIGNATURE-----

iHUEABYIAB0WIQTgVhDyNH/Z8QffkfaIX7fuGN4o2QUCYh4dsAAKCRCIX7fuGN4o
2WhZAQDqvQdxz+rr+IxJeDIt8z8q7gUI/TvdmVys5m5AFEDIdwEA9V/irRDsMtEG
zlE3DSa2uyPsCM0FBDcf9kIgcRyy5g8=
=ynqI
-----END PGP SIGNATURE-----

artifacts

v2.0.0
bb292214 Ayush Agarwal

release: bump tessen to v2.0.0

read the CHANGELOG.md file for more details
-----BEGIN PGP SIGNATURE-----

iHUEABYIAB0WIQTgVhDyNH/Z8QffkfaIX7fuGN4o2QUCYhEwDwAKCRCIX7fuGN4o
2dZXAP9hKHfAuLZeCMwkS4D9RVrgSYbO6Ja+U1K/mmA297C4yAD+OT2illlhBbYo
2WstJwK48MlVJa3zh8pGxNv9VWZy5As=
=V5ys
-----END PGP SIGNATURE-----

artifacts

v1.3.1
06e705fc Ayush Agarwal

fix: return empty value if backend is unrecognized -----BEGIN PGP SIGNATURE-----

iHUEABYIAB0WIQTgVhDyNH/Z8QffkfaIX7fuGN4o2QUCYeU/PAAKCRCIX7fuGN4o
2SUEAP48ardmHrFSoQoRVRwDRGkA7dJAVEsJcesupdS2/YmNPwEA8sASfnxEG5hU
CGGwCme2M7EgT+LqgvfepgpA91vAKAM=
=nqsb
-----END PGP SIGNATURE-----

artifacts

v1.3.0
802a640f Ayush Agarwal

allow using any dmenu-like backend

`tessen` now allows using any wayland native dmenu like backend. To
retain backward compatibility, the default options for bemenu, rofi, and
wofi are still provided. In addition, default options for fuzzel were
added. The complete list of changes are:

802a640 release: revamp the README, bump version of tessen
06d877f refactor: change the order of dmenu backend
5c6b52d docs: update the man page
bcc0a07 style: use consistent case, fix grammar
ed9412a refactor: use only one printf
ca9d486 refactor: change the find_backend function
edea7a8 refactor: change the setup_backend function
fc86aa3 refactor: simplify the default opts
f3b3176 refactor: remove redundant colons
2e4d8ee allow using any dmenu-like backend
-----BEGIN PGP SIGNATURE-----

iHUEABYIAB0WIQTgVhDyNH/Z8QffkfaIX7fuGN4o2QUCYeRAJgAKCRCIX7fuGN4o
2Tl8AP947BF8K2zGTUSwhnk68Cdz0lBNgmDMG7Ca65ft9Dop2AD/eQTxye5rfePT
jUd16NwG9GiWSJqqSRe1oP/tR9157Ao=
=AjP3
-----END PGP SIGNATURE-----

artifacts

v1.2.3
c8cf96bd Ayush Agarwal

don't check for the presence of oathtool

6c87931 docs: mention pass-otp as an optional dependency
5aa4059 fix: don't check for the presence of oathtool
-----BEGIN PGP SIGNATURE-----

iHUEABYIAB0WIQTgVhDyNH/Z8QffkfaIX7fuGN4o2QUCYaTsqQAKCRCIX7fuGN4o
2fCNAQDvsYMtUvsLE5tBvyfJo9f4U9VKdXYdAsIr9MjZ8Bk8KQEA/fCSYZ7tSBih
ebsBfnR+vD7nqVTinnKuWuy8/lTvOw0=
=kMre
-----END PGP SIGNATURE-----

artifacts

v1.2.2
a1b59dd6 Ayush Agarwal

fix: exit if file is empty or decryption fails -----BEGIN PGP SIGNATURE-----

iHUEABYIAB0WIQTgVhDyNH/Z8QffkfaIX7fuGN4o2QUCYZHbjgAKCRCIX7fuGN4o
2RRwAQD/6aNbmBhyfC8WYY6tUdioK49llKG1gTSN2arRO6pHngEArgjHJvOOE3F+
VDXs1YWV3C9Ip/CTfdGVxV1d8gj3IQ4=
=eWLZ
-----END PGP SIGNATURE-----

artifacts

v1.2.1
8704837c Ayush Agarwal

fix: use tabs instead of spaces in Makefile -----BEGIN PGP SIGNATURE-----

iHUEABYIAB0WIQTgVhDyNH/Z8QffkfaIX7fuGN4o2QUCYZETaAAKCRCIX7fuGN4o
2dtUAP9hU3Pc2EctKXYgdBREDi8Pf4ioDkpJr1bBMlMuY+XquAD/VDdeJg/a4iyv
h066zm0dYdTFPIVf+Rvpa7Lh/Stz8w0=
=8YDX
-----END PGP SIGNATURE-----

artifacts

v1.2.0
55eed7d5 Ayush Agarwal

add custom autotype, open URLs, generate OTPs

This is a relatively big release. The following features have been
added:

- generate, copy, and autotype releases with the help of pass-otp
- URLs can be either opened in the default web browser or copied
- the ability to customize auto-type operation
- the ability to choose custom keys for username, url, and autotype
- a man page

The code has been through lots of refactoring in this release to make it
more modular and a few bugs were fixed as well.
-----BEGIN PGP SIGNATURE-----

iHUEABYIAB0WIQTgVhDyNH/Z8QffkfaIX7fuGN4o2QUCYZD7LwAKCRCIX7fuGN4o
2cf6AQDDoeeIR5FWv0mHTOcaB+vN0jliBZFseLzuo4dw7WFzPAEAv1xdZLAu9F0A
BF8O4rqnDidJUQouR2yG6+ZFHaLI7QQ=
=Sf1D
-----END PGP SIGNATURE-----

artifacts

v1.1.2
46449a3e Ayush Agarwal

fix: don't parse the 'username' and 'password' key

tessen wasn't excluding 'username' and 'password' as a key from the menu
which isn't expected behaviour because the value of username is
determined from the basename of the selected file and password is
selected from the first line of the file
-----BEGIN PGP SIGNATURE-----

iHUEABYIAB0WIQTgVhDyNH/Z8QffkfaIX7fuGN4o2QUCYYan1AAKCRCIX7fuGN4o
2V/kAQDeP9wthNw4KYTdqwHP+0b1CGb2reBdAZSf93goG8iGpwD+I6dcc27P3/Md
bq2lwL3H3eP4f71+o08dqLjwANvYGw4=
=HZ20
-----END PGP SIGNATURE-----

artifacts

v1.1.1
139e6ec9 Ayush Agarwal

fix the semver, should've paid more attention -----BEGIN PGP SIGNATURE-----

iHUEABYIAB0WIQTgVhDyNH/Z8QffkfaIX7fuGN4o2QUCYUpE8QAKCRCIX7fuGN4o
2WkBAP0Wqq6YlO7YSKk6hXEk/eNEUT+HY5OIRr/sBX/oTNTQSAEAoDOOM7sJHJ4i
5CYaia8lWoXqy/xSi7p/PRQH3z4PmQk=
=Phaf
-----END PGP SIGNATURE-----

artifacts

v1.1.0
ab240b0f Ayush Agarwal

added support for wofi as a backend

updated fish completion, documentation for wofi as well

minor change made by replacing unset inside a function with local
-----BEGIN PGP SIGNATURE-----

iHUEABYIAB0WIQTgVhDyNH/Z8QffkfaIX7fuGN4o2QUCYUnx1wAKCRCIX7fuGN4o
2Qs9AQDwtJ91BNwN9W4pMUryWShfBtWrxGavIBIwqOL8W8wO3QEAsbG+Gfgz6q93
WGq3nSJkahBh76YV9F7IyKj4vJOtzQY=
=SWp5
-----END PGP SIGNATURE-----

artifacts

v1.0.0
479748ba Ayush Agarwal

fix the semver stupidity and release v1.0.0

A lot of cosmetic and minor changes have been since v0.6.2 including the
addition of a Makefile, bash completion, fish completion, and a
contribution guide.
-----BEGIN PGP SIGNATURE-----

iHUEABYIAB0WIQTgVhDyNH/Z8QffkfaIX7fuGN4o2QUCYUj4xQAKCRCIX7fuGN4o
2Qb7AP9NwxELLhn5dhoPrZ7N4Bi4dXV8m9P0TvBY8heRdoT9FgD+MHcY7fCDkyik
7i9FxLCUJEvP3Anuxx6tMIjwnl8PeAI=
=UUv9
-----END PGP SIGNATURE-----

artifacts

v0.6.2
11fd05a0 Ayush Agarwal

fix security issue by disabling debug mode

don't let the user environment enable debug mode and (in)advertently
leak password store data
-----BEGIN PGP SIGNATURE-----

iHUEABYIAB0WIQTgVhDyNH/Z8QffkfaIX7fuGN4o2QUCYUj1MwAKCRCIX7fuGN4o
2SQ4AP0UMusWPJvI8LE7/fn13nGTwr8NHfR5qqhs0y2bEUk/5wEAi+hiZlonzE6/
SgAu9GZKi/R8z+1s1U0qiZCSHIebmAs=
=sjGr
-----END PGP SIGNATURE-----

artifacts

v0.6.1
46cedab4 Ayush Agarwal

add an option to autotype AND copy data

Yes, you can now autotype and copy password store data at the same time.
This option was added to account for inaccuracies while autotyping data.
-----BEGIN PGP SIGNATURE-----

iHUEABYIAB0WIQTgVhDyNH/Z8QffkfaIX7fuGN4o2QUCYUj0/AAKCRCIX7fuGN4o
2bJmAQDPeAoTmpMu4sCB3m8ffPAQuIbu8UJ0ovYLmpwpIBzr1wD9FcGLS/XwQPDV
jkdKyRDPvG/cWCnsDgR1XUIHBbYNkgk=
=Cct2
-----END PGP SIGNATURE-----

artifacts

v0.6.0
a11debec Ayush Agarwal

use a single `--action` flag

Instead of making things complex by using separate flags for autotyping
and copying, we've switched to using a single option value flag called
`--action`. This makes things modular and simpler.
-----BEGIN PGP SIGNATURE-----

iHUEABYIAB0WIQTgVhDyNH/Z8QffkfaIX7fuGN4o2QUCYUj0sgAKCRCIX7fuGN4o
2SIfAP9cLNyTO3N4G1/hW1fmvaqUwl3hp/NJUz2mhzzEP8g6xgEAzruG9L+xnhaf
vSB5GcDCMaiT5hXi+tO9YnoxC4XrugY=
=0oIo
-----END PGP SIGNATURE-----

artifacts

v0.5.1
e4f3c5a6 Ayush Agarwal

fix the backend validation logic

we have to respect the user's wish by considering both the environment
variable we're providing and the runtime option arguments
-----BEGIN PGP SIGNATURE-----

iHUEABYIAB0WIQTgVhDyNH/Z8QffkfaIX7fuGN4o2QUCYUj0AgAKCRCIX7fuGN4o
2WHqAQCJImBZXeSiViD4tvueb8YbVhQr7eEbwHGz1otb7aUm2wEAznvcXiGl4yek
M4CIBRAWJzlbeFiZ+amJKdXKyqGQagg=
=QmJh
-----END PGP SIGNATURE-----

artifacts

v0.5.0
cbb35e43 Ayush Agarwal

revamp the key selection menu

`tessen` is now more flexible and modular. We can autotype AND copy data
at the same time.
-----BEGIN PGP SIGNATURE-----

iHUEABYIAB0WIQTgVhDyNH/Z8QffkfaIX7fuGN4o2QUCYUjzkQAKCRCIX7fuGN4o
2b+fAP9m5S4/i4hfuliUxfnMKNZ0ZFTszPF986aqL520I481FAEA56Qppt44C006
KuNeGc7UkSY/HvIhT9zF1kMAtwwF4A4=
=Pxx7
-----END PGP SIGNATURE-----

artifacts

v0.4.2
f4294f14 Ayush Agarwal

license changed to GPLv2+

Let's just use GPLv2+ because password store uses GPLv2+ as well.
-----BEGIN PGP SIGNATURE-----

iHUEABYIAB0WIQTgVhDyNH/Z8QffkfaIX7fuGN4o2QUCYUjyTgAKCRCIX7fuGN4o
2TtAAQD/8Zap4igDaBbSZbqBWe8YJCpSEotZjBqqLFSO+7mWNQEAt4CvAWT6D/3G
qsUGBApD36zl4PN4LD5w+8qbR86yGg8=
=n8lA
-----END PGP SIGNATURE-----

artifacts

v0.4.1
9d285402 Ayush Agarwal

fixed the parameter expansion to parse values

The parameter expansion to parse values in key-value pairs was faulty.
It greedily deleted everything until `:` but the colon character can
also occur in the values themselves which made the resulting value
invalid.
-----BEGIN PGP SIGNATURE-----

iHUEABYIAB0WIQTgVhDyNH/Z8QffkfaIX7fuGN4o2QUCYUjxqAAKCRCIX7fuGN4o
2RkyAQCeQ9vZcSYqiO93OO3WFxswPllm1jTs/+kreVhceFhQkAEAylhMbbY0Y2P9
5MnC1itCV5u7SNEQjUpjHidwnmMlbA0=
=AMmo
-----END PGP SIGNATURE-----

artifacts

v0.4.0
18a0a909 Ayush Agarwal

removed `fzf` support, refactoring done

We can't use `fzf` to present a standalone GUI menu to autotype and copy
password store without resorting to window manager specific hacks.
Therefore, `fzf` support has been removed.
-----BEGIN PGP SIGNATURE-----

iHUEABYIAB0WIQTgVhDyNH/Z8QffkfaIX7fuGN4o2QUCYUjxCAAKCRCIX7fuGN4o
2XuBAP9aKirUF6rYMEmIezbJJ7arytgEc69ZAfvas8YYSQs/XgD7BbjzlbwgeZHB
6+n9jgcu9/mNVKcfK3Y72IJe4UbnPQ0=
=O8Ks
-----END PGP SIGNATURE-----

artifacts

v0.3.0
aa0f5ed7 Ayush Agarwal

added support for autotyping password store data

I've used `wtype` instead of `ydotool` simply because `wtype` doesn't
need root access.

It should, however, be kept in mind that autotyping can be error prone
and make a mess.

Also, using `fzf` in tessen is probably not going to work.
-----BEGIN PGP SIGNATURE-----

iHUEABYIAB0WIQTgVhDyNH/Z8QffkfaIX7fuGN4o2QUCYUjwDAAKCRCIX7fuGN4o
2atUAP9uw7Yi3fMDUaa332eELTu3OcBWYckMSIF+CiaS3+Oy3gD+MTj+AWKinR3f
ox6Y9Dt27FwlUiBo0xcxjESXiUB/ZQU=
=3xFg
-----END PGP SIGNATURE-----

artifacts

v0.2.0
297c70bd Ayush Agarwal

`tessen` can now use `fzf`, `rofi`, and `bemenu`

Although `rofi` and `bemenu` work fine when copying data outside a
terminal, the `fzf` backend doesn't work if not invoked from a terminal.
I suspect this might be because `fzf` doesn't have a native GUI, unlike
`rofi` and `bemenu`.
-----BEGIN PGP SIGNATURE-----

iHUEABYIAB0WIQTgVhDyNH/Z8QffkfaIX7fuGN4o2QUCYUjvFQAKCRCIX7fuGN4o
2TjEAQDTnCGztJzDyOLsptkIm8Qg4SrbI1Uus5cNU0+Avws0BwD+I6ga2N0qSzWf
oHQmwtmgPU95u/qYJCDwlpvNZffd/QM=
=Op+r
-----END PGP SIGNATURE-----

artifacts

v0.1.0
bd057420 Ayush Agarwal

initial release of tessen

This is just a barebones version of `tessen` which can copy data using
`fzf`. I intend to make `tessen` both autotype and copy data using the
same menu.
-----BEGIN PGP SIGNATURE-----

iHUEABYIAB0WIQTgVhDyNH/Z8QffkfaIX7fuGN4o2QUCYUjuTgAKCRCIX7fuGN4o
2cgwAQDf+Yi+lvx2D9hpOlnXjIw3952CXcR7gcQUC6tdDIpMyAEAnit89jdO7fgn
n5UxRwmLdFsHNhJfMIqR8atBS9lg8wA=
=BDSj
-----END PGP SIGNATURE-----

artifacts