#2fa #password-manager #tui #encrypted

app passrs-tui

A TUI (terminal "GUI") password manager & authenticator

5 stable releases

1.4.1 Sep 27, 2023
1.3.0 Sep 6, 2023
1.2.6 Jul 27, 2023

#111 in Authentication

25 downloads per month

Custom license

928 lines

passrs ~ Terminal Password Manager & Authenticator

A TUI (terminal "GUI") password and 2FA code manager, essentially a direct upgrade from my C terminal authenticator.

Important note: You need to install Xorg libraries (xorg-devel, libxcb-devel) for passrs to compile the clipboard module.
More important note: I got rid of the clipboard library, no need for extra dependencies now

An image, obviously


  • Scriptability with command-line arguments and environment variables
  • Option<Encryption> using a 32-byte master password (shorter passwords are padded with \0s, longer ones are clipped)
  • Vim-ish keybindings
  • Copy password or 2FA token to clipboard, you can also get the next 2FA token if you're a slow alt-tabber
  • Unicode auto-password generation (what hacker would even try to guess 񗗷􀛿𒔽𴕙򑑌󚖵񪣼򧩮󟛢򎈢􄪠񇻲󶽽񄒀񿕗񩝗?)
    yeah ok but what website would even try support it? like it doesn't even have a single uppercase letter or special symbol
  • Passwords show you how to type each non-standard character using ctrl-shift-U (in edit mode, move the cursor along each character)
  • 40x more bloated than the C version lesgoooo


I won't go over every detail, since passrs --help should tell you all you need. But for a quick rundown:

  • Specify a different data file with --file FILE to securely store different sets of passwords, 2FA codes, and your colour theme (arguably the most important bit)
    Defaults to ~/.local/share/passrs, in protest of cluttered home folders
  • Switch between 2FA codes and passwords with Tab, navigate with arrow/Vim keys
  • Press o to create a new password or 2FA code, or e on an existing one to edit it
    (You can only navigate with arrow keys in edit mode, Vim keys would type into text fields Idea: use the main keyboard for typing, have a separate keyboard solely for Vim navigation)
  • Press Enter to save the edited item or Esc to cancel editing it, then Esc or q to quit the main GUI and save


Each question was asked exactly zero (0) times, but with my social life I consider that frequent

  • What does this thing run on?
    Anything that compiles Rust and that all the libraries support, which should also be anything that compiles Rust.
  • How secure are the encrypted passwords/2FA codes?
    I wouldn't bet much on the security if glowies got their hands on it, but it should be enough to stop the average Kali "hacker". Refer to some "onion" library I use for actual details.
  • Do Unicode passwords even work in websites? How are weird characters handled by server software?
    After using passrs personally, I can say that the vast majority don't support much besides ASCII - Steam seems to be the worst offender.
    Some websites partially support Unicode, but give vague errors - usually, there's too many bytes in the password, so trimming it down by half seems to do the trick.
    Revolt, being a fellow Rust-based app, supports long Unicode passwords just fine :gigachad:
  • How about clipboard for Wayland?
    In ncAuth, I simply called the user's shell script to copy stuff to any WM's clipboard, and in the previous version of passrs I used a native library to set the clipboard instead. It was a bit dodgy though, singe it needed a couple external dependencies and the text was cleared when you closed passrs (?!)... Now though, it just runs a command from the env variable PASSRS_COPY, so you don't need to write long shell scripts but don't need external libraries either! Also, I've made sure to include a commandline interface to passrs, so if you like you can write a shell script to select and copy passwords/2FA codes using something like dmenu. This might be useful for SXMO, if you only want to use native dialogs - see sxmo_passrs.sh for an example script.
  • How about Windows?
  • No license?
    No licence, go ham. If anyone insists that "intellectual property" isn't a completely delusional concept, then I claim 1 and 0 as my own.
    Also don't open the NO-LICENCE file, that's just to keep Cargo happy.

Release log


  • Data file not overwritten with new encryption when nothing changed
  • Tweaked password/2FA display functions to prioritize name
  • Added release log in README.md (does this count as a feature???)


  • Replaced dodgy X clipboard library with just running xclip


  • lol i dont remember that far back


~204K SLoC