presto 0.1.1

A simple TUI music player with Vim bindings
presto-0.1.1 is not a library.

presto

A simple music player TUI written in Rust, with Vim-like controls.

Features

  • Directory scan of common audio files (mp3, flac, wav, ogg)
  • Keyboard-driven TUI with Vim-like controls
  • / filter with word-by-word fuzzy matching
  • Ctrl+e exits filter input without starting playback
  • Right-sid panes for metadata and embedded lyrics (opened up with K / gl)
  • Opt-in lyrics loading via config, with timed-line emphasis for synced lyrics
  • MPRIS integration for playerctl / media keys
  • Per-directory state persistence (selection, filter, shuffle, loop, volume, last track)
  • Number-driven movement for hjkl skipping / navigation

Getting started

crates.io

  • The version uploaded to crates.io is the one on the develop branch:
cargo install presto

From source

  • Build: cargo build
  • Run: cargo run -- [music_dir]
    • If music_dir is omitted, it defaults to the current directory

Docs

Visit the web version or start with docs/README.md

TODO:

Finished TODOs will migrate onto the changelog.

Short-term

  • Enabling re-ordering / disabling some status sections

Long-term

  • Listening stats (amount, usage, recent songs, etc.)
  • Theming
  • Cross-platform compatibility (config/state paths, media controls, audio backend support)
  • Server-client restructuring

↓ Current status ↓

[!CAUTION] VERY LOUD, will try to record it next time with less volume

https://github.com/user-attachments/assets/34407dda-7599-4ec2-a0af-66889ef6251a