Rustyplayer is a basic, functioning music listener written in Rust. It is my first serious Rust project and my most usefull coding project in general.
if you have any more issue please report them
- Song metadata not updating
sudo apt-get update
sudo apt-get install chafa metaflac
sudo dnf install chafa metaflac
sudo pacman -S chafa metaflac
cargo install --git https://github.com/jernejmarcic/RustyPlayer
git clone https://github.com/jernejmarcic/RustyPlayer.git
cd RustyPlayer
cargo build --release
rustyplayer /path/to/your/music/directory
Use the path argument only when you want to change the music directory. Rustyplayer remembers your last-used directory and automatically plays from it on subsequent launches.
Run RustyPlayer with the path to your music directory:
./target/release/rustyplayer /path/to/your/music/directory
You can move the binary wherever you want but if you got this far it seems you understand computers well enough
Use the path argument only when you want to change the music directory. Rustyplayer remembers your last-used directory and automatically plays from it on subsequent launches.
Entering the path to the music folder:
Rustyplayer showing the album cover, and information abot the playing song:
- Music playback with controls:
play
,pause
,next
,toggle
,previous
(Rodio, the audio backnd I use does not have seek functionality yet) - Terminal-based album art display using
chafa
. - Basic MPRIS support for desktop environment integration.
- Supports inlcudes:
- Song title
- Album
- Song artists
- Track lenght
- Art url (kinda)
- Supports inlcudes:
- Repeat and loop functionality.
- Configuration stored in base folder (whatever folder the binary is in), with future plans to adhere to XDG Base Directory specifications for Linux, and whatever Windows and Mac use.
- Previous Track Logic: Even though the foundation exists, implementing logic to play the previous track has been VERY F****** HARD. This involves managing song indexes and ensuring seamless playback transition.
- Cross-Platform Support: Extend compatibility to Windows and Mac. Some features might already work, but comprehensive testing and development are needed to ensure full functionality across different operating systems.
- Art URL Improvement: Currently, the album art URL is static. The goal is to dynamically generate this URL, ensuring it accurately reflects the currently playing track's album art across all platforms.
- Config Enhancements: Plans are in place to refine the configuration process, particularly by adhering to the XDG Base Directory specifications on Linux. Similar standards will be considered for Windows and Mac to streamline user settings and data management but IDK if Windows even has any standards for configration files.
- Additional Features and Fixes: Continuous effort to enhance the user interface, integrate more robust MPRIS support, and overall improve the codebase for better performance and user experience.
- Initial project with room for codebase improvements.
- Limited UI features.
- Dependency on Linux-specific tools for some features.
- In development MPRIS support
- Used WAYYYY too much ChatGPT
Rustyplayer uses rodio
for audio playback, audiotags
for metadata handling, and walkdir
for directory traversal.
In addition, is uses metflac
for cover image and chafa
to display that image in terminal.
- Multi playlist support (supporting entering more than one path at the same time)
- Streaming spotify (but just use spotify webapp)
- Streaming TIDAL (or you can use tidal-dl download your music and play it (like me lol))
- Streaming Youtube Music,(or you can just download music with yt-dlp)
Contributions are welcome, however brace yourself for the shitstorm that is my code. If you have ideas for improvements or bug fixes, please feel free to raise an issue or something.