A terminal-based music and podcast player written in Rust, supporting local playback and downloads from various sources.
Termusic is a terminal-based music and podcast player written in Rust. It allows users to play local audio files, stream podcasts from RSS feeds, and download tracks from platforms like YouTube and NetEase—all within a keyboard-driven TUI. It solves the problem of data race conditions found in similar players by leveraging Rust's memory safety.
Developers, sysadmins, and terminal enthusiasts who prefer a lightweight, keyboard-centric media player without relying on graphical interfaces or subscription services.
It offers a stable, performant alternative to graphical players with zero cost, extensive format support, and the ability to download music freely. Its Rust foundation ensures reliability and avoids concurrency bugs.
Music Player TUI written in Rust
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Supports MP3, FLAC, OGG, M4A, and more via multiple backends (Rusty, MPV, GStreamer), with a detailed table showing codec compatibility across containers.
Includes a dedicated TUI for subscribing to RSS feeds and managing podcasts, with a separate SQLite database file for persistent storage as noted in the configuration section.
Leverages yt-dlp and ffmpeg to fetch tracks from YouTube, NetEase, Migu, and KuGou, aligning with its philosophy of avoiding paid subscriptions and locked-in services.
Built in Rust to eliminate data race conditions common in similar players, ensuring reliable concurrency and performance as highlighted in the project's origin story.
Requires managing numerous system dependencies, especially on Windows where manual compilation of libopus is needed, and non-default features like cover art or soundtouch increase setup complexity and MSRV.
The TODO list admits gaps like better lyric timestamp adjustment and rating sync support, indicating some user-requested enhancements are still in development and not yet implemented.
Album cover display depends on specific terminal protocols (Kitty, iTerm2, Sixel) or external tools like ueberzug, which may not work in all environments and add extra configuration overhead.