All Projects → ayushnix → tessen

ayushnix / tessen

Licence: GPL-2.0 License
an interactive menu to autotype and copy pass and gopass data

Programming Languages

shell
77523 projects
Makefile
30231 projects

Projects that are alternatives of or similar to tessen

dotfiles
My dotfiles and colorschemes for sway and a variety of other programs.
Stars: ✭ 55 (+48.65%)
Mutual labels:  sway, wayland, wofi
wdisplays
Mirror of cyclopsian/wdisplays
Stars: ✭ 95 (+156.76%)
Mutual labels:  sway, wayland
dotfiles
My personal set of dotfiles (Managed with Stow)
Stars: ✭ 34 (-8.11%)
Mutual labels:  rofi, sway
nwg-wrapper
Wrapper to display a script output or a text file content on the desktop in sway or other wlroots-based compositors
Stars: ✭ 60 (+62.16%)
Mutual labels:  sway, wayland
Waybar
Highly customizable Wayland bar for Sway and Wlroots based compositors. ✌️ 🎉
Stars: ✭ 2,037 (+5405.41%)
Mutual labels:  sway, wayland
Rofimoji
An emoji and character picker for rofi 😁
Stars: ✭ 319 (+762.16%)
Mutual labels:  rofi, wayland
dotfiles
My dotfiles, with an out-of-date install-script. Arch, Tiling WM (i3, sway), ZSH, Neovim
Stars: ✭ 20 (-45.95%)
Mutual labels:  sway, wayland
PassHUD
A HUD-style interface for pass on macOS
Stars: ✭ 31 (-16.22%)
Mutual labels:  pass, password-store
swayfire
Sway/I3 inspired tiling window manager for Wayfire
Stars: ✭ 146 (+294.59%)
Mutual labels:  sway, wayland
cliphist
wayland clipboard manager
Stars: ✭ 47 (+27.03%)
Mutual labels:  sway, wayland
dotfiles
My arch setup script and dotfiles
Stars: ✭ 37 (+0%)
Mutual labels:  sway, wayland
rde
Tools for managing reproducible development environments. Mirror of https://sr.ht/abcdw/rde/
Stars: ✭ 137 (+270.27%)
Mutual labels:  sway, wayland
cute-sway-recorder
SwayWM screen recorder; a GUI for wf-recorder
Stars: ✭ 16 (-56.76%)
Mutual labels:  sway, wayland
mywayland
🍨 Wlroots and friends for KISS
Stars: ✭ 25 (-32.43%)
Mutual labels:  sway, wayland
dotfiles
🏡 Personal dotfiles configuration
Stars: ✭ 73 (+97.3%)
Mutual labels:  sway, wofi
nextshot
A simple tool for taking screenshots on Linux and sharing via Nextcloud
Stars: ✭ 37 (+0%)
Mutual labels:  sway, wayland
gnome-pass-search-provider
Pass password manager search provider for gnome-shell
Stars: ✭ 52 (+40.54%)
Mutual labels:  pass, password-store
dotfiles
My personal quirks quantified in text form
Stars: ✭ 68 (+83.78%)
Mutual labels:  rofi
rofi
Rofi: A window switcher, application launcher and dmenu replacement
Stars: ✭ 9,231 (+24848.65%)
Mutual labels:  rofi
dotfiles
⚫📁 Dotfiles
Stars: ✭ 23 (-37.84%)
Mutual labels:  rofi

tessen

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

If you want to use another wayland native dmenu backend not mentioned here, please open an issue or raise a PR.

tessen is written to work only on wayland wlroots compositors such as sway. If you'd rather use fzf to copy your password-store data on both xorg/x11 and wayland, check out pass-tessen.

Why use tessen?

  • tessen can autotype or copy (or do both at the same time!) your password store and gopass data including all of your key-value pair data

    From what I've observed, most scripts out there do not autotype and copy all of your key-value pair data. They also do not offer choices about autotyping or copying data with the same flexibility as tessen does.

    Although rofi-pass is a good alternative, it only works on xorg/x11. tessen is made to work on wayland.

  • if you're using a web browser extension to access your passwords, you may wanna read this article

  • tessen does not use any external programs unless they are absolutely necessary. This means that tessen doesn't need programs like sed, awk, tr, cut, find, sort, head, tail. This ensures that tessen isn't dependent on the subtle differences between GNU, BSD, and busybox coreutils.

  • the code is linted using shellcheck and formatted using shfmt. I've also tried to ensure that tessen doesn't leak any sensitive data. Please raise an issue or a pull request if you can make tessen more minimalistic or secure.

Installation

Dependencies

  • bash
  • at least one pass backend is needed - either pass or gopass
  • a wayland native dmenu backend such as rofi, bemenu, fuzzel, or wofi
  • wtype (optional, if you want to auto-type data)
  • wl-clipboard (optional, if you want to copy data)
  • libnotify (optional, to send notifications about copied data and the timeout period after which the clipboard will be cleared)
  • pass-otp (optional, to generate TOTP/HOTP when using pass)
  • xdg-utils (optional, to open URLs in the default web browser)
  • scdoc (optional, to build the man page)

Arch Linux

tessen is available in the Arch User Repository.

GNU Guix

tessen is available in the official GNU Guix repositories.

Git Release

git clone https://github.com/ayushnix/tessen.git
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://github.com/ayushnix/tessen/releases/download/v2.1.2/tessen-2.1.2.tar.gz
tar xvzf tessen-2.1.2.tar.gz
cd tessen-2.1.2/
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

patch -i explicit_path.patch tessen

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 build the man pages or install the shell completion files, you can use

sudo make minimal

to install the tessen script 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.

Features

  • autotype or copy (or both at the same time!) data, including all valid key-value pairs, in pass and gopass
  • generate TOTP/HOTP
  • open URLs
  • use custom values for user, password, url, autotype keys
  • use custom autotype operations
  • use custom delay time for autotype

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. I haven't tested any other web browsers.

It seems like wtype uses the virtual-keyboard-unstable-v1 protocol to emulate a virtual keyboard and KDE supports the input-method-unstable-v2 protocol. GNOME seems to be doing its own thing with libei. There's also ydotool which requires that users access /dev/uinput, which is restricted to the root user.

I don't like this sort of fragmentation myself but if tessen ends up working on wlroots based compositors and on KDE, I'd be satisfied with that. It looks like wtype doesn't use the input-method protocol yet which restricts autotyping to wlroots based compositors for now. While using /dev/uinput sounds like an attractive option, I won't add support for it due to security concerns.

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 bemenu 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 this file.

Features that WON'T be implemented

  • xorg/x11 support, use rofi-pass or fork this repo and implement it yourself
  • using ydotool, because it needs root access
  • adding, editing, or removing existing password store data
  • cache for storing frequently used password store selection data
  • importing passwords or exporting them

Donate

If you feel that this project helped you transition to wayland, please consider supporting me by buying me a coffee

Buy Me a Coffee at buymeacoffee.com Buy Me a Coffee at ko-fi.com

If you're in India, you can also use UPI for donations. My UPI address is ayushnix@ybl.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].