3 releases

new 0.1.3 Nov 16, 2024
0.1.2 Nov 16, 2024
0.1.1 Nov 16, 2024
0.1.0-alpha Nov 15, 2024

#51 in Authentication

Download history 51/week @ 2024-11-10

51 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 version, 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 keybinding
  • Searching and filtering of passwords
  • Support for viewing and copying operations for passwords and one-time passwords
  • Mouse support (limited)

Installation

Requirements

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

Installation from crates.io

passepartui can be found on crates.io here.

cargo install passepartui

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

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

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

Clippy:

rustup component add clippy
cargo clippy
cargo fmt

Dependencies

~20–33MB
~493K SLoC