tessen(1)
β¨ tessen β the girlies' guide to autotyping your secrets β¨
okay so real talk: this is tessen(1), from the General Commands Manual section, and it's about to become your new bestie if you live in a wayland world. let's get into it π
πΈ NAME πΈ
tessen β autotype and copy pass(1) and gopass(1) data on wayland. that's the whole vibe. no cap.
π SYNOPSIS π
tessen [-hv] [-p pass backend] [-d dmenu backend] [-a action] [-c config
file]
lowkey just read it, it's giving "simple command, big power" π
π¦ DESCRIPTION π¦
tessen is a bash(1) script that helps you autotype and copy data encrypted with pass(1) and gopass(1). and bestie, it does more β it can also open URLs, generate HOTP and TOTP, and run custom autotype operations. main character energy fr fr.
here's the important part: tessen was written for wlroots based wayland compositors like sway(1) that support the virtual-keyboard-unstable-v1 protocol. it will NOT work on window managers and desktop environments based on X.Org/X11. like, it's just not gonna happen. π
so here are the options tessen understands, bestie:
-p,--pass,--pass=[pass backend]β pick eitherpassorgopass. that's it, that's the choice π«Ά-d,--dmenu,--dmenu=[dmenu backend]β pick your dmenu backend. the recognized backends arefuzzel,tofi,bemenu,yofi,wofi,rofi, anddmenuβ¨-a,--action,--action=[action]β specify eitherautotype,copy, orbothπ-c,--config,--config=[location of config file]β specify the location of the config file fortessen(5)π-h,--helpβ show a brief help message. cute and quick πΈ-v,--versionβ show the installed version number oftessenπ
π DEFAULT BEHAVIOR π
if a pass backend isn't specified, tessen tries to find either one of pass(1) or gopass(1) β in the order mentioned here. iykyk.
tessen assumes the data organization format is the same as the one mentioned on the home page of password store, when using pass(1) and gopass(1):
https://www.passwordstore.org/#organization
the first line should always have the password, and nothing else. periodt. all the other lines may have key-value pairs like key1: value1 or an otpauth:// format URI. if non-unique keys are found, the first non-unique key will be considered and the others will be ignored (sorry to the duplicates, you're not the main character). if a key called password is present, it will also be ignored. the autotype, url, username, and password keys are considered case-insensitive β slay. and heads up: tessen does NOT support parsing YAML files when using gopass(1) π
if a dmenu backend isn't specified, tessen tries to find either one of fuzzel(1), tofi(1), bemenu(1), yofi, wofi(1), rofi(1) or dmenu in the order mentioned here. if rofi is used, it is expected that the wayland native fork of rofi (https://github.com/lbonn/rofi) is being used. the original rofi (https://github.com/davatorium/rofi) implementation made for X.Org is NOT supported. like, at all. π
if an action isn't specified, tessen shows an additional menu with the option to either autotype or copy data. yes, it's asking you to make a decision. you got this π«Ά
if data is copied, it will be removed from the clipboard after PASSWORD_STORE_CLIP_TIME when using pass(1), and after cliptimeout when using gopass(1). if PASSWORD_STORE_CLIP_TIME isn't set, a default value of 15 seconds is assumed. so like... grab it fast β³
a delay of 100 milliseconds will be used between successive autotype operations. this can be changed using the delay option in the tessen(5) configuration file. tiny pause, big difference β¨
tessen will look for a configuration file in the following locations:
$XDG_CONFIG_HOME/tessen/config$HOME/.config/tessen/config$XDG_CONFIG_DIRS/tessen/config/etc/xdg/tessen/config
a custom location can be specified using the -c flag. π
and the hierarchy is real: command line flags have the highest preference and supersede equivalent options set in the config file. the flags ate, ngl π
π§ DEPENDENCIES π§
tessen depends on:
bash(1)- at least one wayland native dmenu backend β
fuzzel(1),tofi(1),bemenu(1),wofi(1),rofi(1),dmenu - at least one pass backend β either
pass(1)orgopass(1) wtype(1)(if you want to autotype data)wl-clipboard(1)(if you want to copy and paste data)scdoc(1)(optional, to build this man page)libnotify(optional, to usenotify-send(1)for showing notifications about copied data and the timeout for clearing the clipboard)pass-otp(1)(optional, to generate HOTP/TOTP when usingpass(1))xdg-utils(optional, if you want to usexdg-open(1)to open URLs)
collect them like stickers bestie, some are optional but honestly the optional ones are iconic π
π ADDITIONAL FEATURES π
if a key called user is present inside a password file, its value will be the default username instead of the basename of the selected file. this key can be modified using the userkey variable in the tessen(5) configuration file. π
if a key called url is present, an option to open the value of the url key in the default web browser will be shown instead of auto type. this becomes the default behavior if -a autotype option is provided during the execution of tessen. the url key can be modified using the urlkey variable in the tessen(5) config file. π
the otpauth:// format is supported and used if pass-otp(1) is installed when using pass(1). gopass(1) supports this feature natively. no extra steps, we love that π«Ά
a value for the autotype key can be specified in password files for custom autotype behavior, which overrides the default behavior of autotyping the username and the password. for example:
$ pass example/john
mypassword
key1: value1
key2: value2
key3: value3
key4: value4
otpauth://totp/ACME%20Co:john@example.com?secret=HXDMVJECJJWSRB3HWIZR4IF...
autotype: key1 :tab key2 :space key3 :enter key4 :delay :tab :otp pass
when specified as a value of the autotype key:
:tabcan be used to type the Tab key:spacecan be used to type the Space key:entercan be used to type the Enter key:delaycan be used to delay the type operation by 1 second:otpcan be used to generate and type the OTP, ifotpauth://is presentuser, or the value ofuserin the config file, can be used to type the usernamepassorpasswordcan be used to type the passwordpath,basename, orfilenamecan be used to type the name of the selected file- any other key, such as
key1, can be specified to print its value
the autotype key can be changed using the autotype_key variable in the tessen(5) configuration file. π
if the dmenu program of your choice supports custom keybindings with exit codes greater than or equal to 10, tessen can execute custom operations on a selected file in the first menu. at the very least, fuzzel(1), bemenu(1), and rofi(1) support this feature. the following exit codes have been mapped to the actions mentioned besides them:
10β auto type username and password11β auto type username12β auto type password13β open URL14β copy username15β copy password16β copy URL17β auto type OTP18β copy OTP
these exit codes can be mapped to custom keybindings by configuring the dmenu program of your choice. go off, customize your little heart out π
β FILES β
$XDG_CONFIG_HOME/tessen/config,$HOME/.config/tessen/config,$XDG_CONFIG_DIRS/tessen/config,/etc/xdg/tessen/configβ the default configuration file fortessen. it can be used to specify all the options provided by the command line flags and additional customization options for keys interpreted bytessen. π
π SEE ALSO π
tessen(5), pass(1), gopass(1) pass-otp(1), fuzzel(1), tofi(1), bemenu(1), wofi(1), rofi(1), wl-clipboard(1), wtype(1), notify-send(1)
π AUTHORS π
developed and maintained by Ayush Agarwal <ayush at ayushnix dot com>. π«Ά
the latest source can be found at https://git.sr.ht/~ayushnix/tessen and bugs or suggestions can be reported on https://todo.sr.ht/~ayushnix/tessen. for contributing to tessen, please read the CONTRIBUTING.md file in the tessen source code and send patches by email to ~ayushnix/tessen@lists.sr.ht. alternatively, pull requests can be raised on https://codeberg.org/ayushnix/tessen/pulls or https://github.com/ayushnix/tessen/pulls. π
and that's the whole page bestie!! this little icon was dated 2023-07-29 and it's page tessen(1) of the manual β go forth and autotype responsibly π
β¨π
π¦ where this page comes from
- alpine 3.24: tessen-doc 2.2.1-r2 Β· GPL-2.0-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms