5 releases

0.1.5 Dec 2, 2024
0.1.4 Nov 20, 2024

#26 in Authentication

Download history 206/week @ 2024-11-11 121/week @ 2024-11-18 7/week @ 2024-11-25 164/week @ 2024-12-02 28/week @ 2024-12-09

368 downloads per month

GPL-3.0-only

175KB
2.5K SLoC

passepartui

A TUI for pass

Introduction

I started this project as a way to practice programming in Rust while reading the Rust Book. Therefore, this project is still in an alpha state, however, user interaction is mostly finished.

passepartui relies for all decryption operations on pass, one-time passwords (OTP) are handled by pass-otp. Currently, no functionality for manipulating the password store (e.g. adding or deleting a password) is implemented. For those operations use pass directly from your terminal (refer to man pass). More on the current state of development can be found below.

The name passepartui is a combination of "passepartout", French for "master key", and "TUI".

Features

  • Easy navigation with arrow keys and Vim keybindings
  • Searching and filtering of passwords
  • Support for viewing and copying of passwords and one-time passwords
  • Mouse support (limited)

Installation

Prerequisites

  • Unix (tested on Linux so far)
  • pass, optionally pass-otp for one-time passwords
  • Rust and cargo (when compiling from source)

Installation from crates.io

passepartui can be found on crates.io.

cargo install passepartui --locked

Type passepartui to run the app (provided that ~/.cargo/bin has been added to $PATH).

Installation from the AUR

passepartui is available in the AUR. You can install it with your favorite AUR helper, e.g.:

paru -S passepartui

Installation from nixpkgs

passepartui is available in nixpkgs. You can install it in your system via the usual ways, or try it with:

nix run nixpkgs#passepartui

Manual installation

Clone the repository and change to the directory:

git clone git@github.com:kardwen/passepartui.git
cd passepartui

Build and copy the executable to an appropriate location:

cargo build --release
cp target/release/passepartui ~/.cargo/bin

Run passepartui in a terminal.

Contrib

The contrib directory contains additional files, for now an example for a desktop file.

A desktop entry lets you start passepartui with your application menu. Edit the desktop file passepartui.desktop to use your terminal emulator for running passepartui and copy it to $XDG_DATA_HOME/applications which is usually ~/.local/share/applications.

Development

Contributions are welcome! For architectural changes please start with opening an issue.

Build with Ratatui.

Library: passepartout

TODO:

  • General refactoring
  • Tests
  • Mouse support overhaul
  • Localisation for last modified column
  • Button animations for keyboard shortcuts

Planned for future versions:

  • Background updates
  • Support for symbolic links in store
  • Tree view for folders (for example Ratatui Tree Widget)
  • Configuration file for setting options
  • Theming, e.g. for using the terminal color theme
  • Decryption of password files with Rust (possibly with sequoia-openpgp). This would allow for
    • showing which fields are set in the password preview
    • showing all passwords at once when scrolling in the corresponding view mode (optional)
    • displaying flags for set fields in the password table
  • Sorting of the password table by columns
  • Improvements for running passepartui in TTY

Clippy:

rustup component add clippy
cargo clippy
cargo fmt

Dependencies

~19–36MB
~472K SLoC