8 releases

Uses new Rust 2024

0.12.3 Dec 16, 2025
0.12.2 Dec 4, 2025
0.12.1 Nov 29, 2025
0.11.1 Nov 16, 2025
0.10.1 Oct 29, 2025

#2201 in Command line utilities

MIT license

180KB
4.5K SLoC

Firefly, Terminal Audio Player

Written in Rust with audio playback handled by Rodio and UI built with Ratatui. example_img (Showcase as of v0.10.0, using Kitty with Atelier Dune Dark theme.)

Features (v0.11.0)

  • Play, Pause, Rewind, and Seek.
  • Persistent Playlists
  • Volume Control from 0-200%
  • Track Looping
  • Pick Files from File Dialog or Command-Line Argument.
  • Track and Directory queuing
  • Queue Arrangement, Shuffling, Clearing
  • Skip Forward or Backward
  • Metadata Display
  • [Linux] MPRIS Support: Media control with metadata, including cover art. KDE Connect compatible.

Formats Supported

It can still play other formats by converting formats not supported by Rodio to FLAC using rust_ffmpeg.

Temporary FLAC files stay on disk for reuse, which can be cleared by running firefly clean

Roadmap - open to suggestions

  • Playlists (v0.6.0)
  • Album art display for supported terminals (v0.7.0)
  • UI overhaul (v0.7.0)
  • Proper MPRIS control (v0.11.0)
  • A special session where you can control an existing session (queue tracks, etc.). [OUT OF SCOPE]

Installation

Windows and Linux

Download a Prebuilt Binary or use cargo binstall to automatically install it for you (requires cargo):

# Install cargo-binstall if not already
cargo install cargo-binstall

# Install firefly
cargo binstall firefly_music

# Launch the app
firefly

Optional Dependencies

  • FFmpeg - if you want to play unsupported file types.

Build from source

Fedora Linux

Dependencies

# Install dependencies
sudo dnf install wayland-devel alsa-lib-devel rust opus-devel cargo git

# Clone the repository
git clone https://github.com/ilialyl/firefly && cd firefly

# Build and run (optimized)
cargo run --release

CLI Examples

# Launch with a single file or directory
firefly with example.mp3
firefly with music/

# Launch with multiple files or directories
firefly with example.mp3 music/

# Launch with multiple files using [wildcards](https://www.malikbrowne.com/blog/a-beginners-guide-glob-patterns/.) (Only on Bash and Z shell)
shopt -s globstar # enable globstar
firefly with ./**/*.opus

Known Issue

  • Seeking an OPUS track is slow.
  • Wezterm (Windows) does not display cover art.
  • Does not work with WSL as no audio output is connected.

Bug Report

If you find any bugs, you can open an issue. I will get to it as soon as possible.

Dependencies

~57–98MB
~1.5M SLoC