grrs (Gensokyo Radio Rust)
This project is currently in early, rapid development. If you are planning to contribute or submit patches, please open an issue first to discuss your ideas so we don't step on each other's toes!
A minimal terminal user interface for Gensokyo Radio, written in Rust.
What it does
- Streams Gensokyo Radio with album art in your terminal
- Lets you save liked tracks and keeps local copies of their metadata and covers
- Supports media keys (MPRIS) and volume controls
- Uses a centered, portrait-friendly layout by default and switches to a side-by-side view in short, wide windows
- Rudimentary theming support via config file
Dependencies
mpv: Required for the underlying audio streaming and playback.
Installation
From Crates.io
cargo install myn-grrs
From Source
git clone https://git.myn.sh/grrs.git (cd grrs && cargo install --path .)
With Nix
You can run it directly without installing:
nix run "git+https://git.myn.sh/grrs.git#grrs"
Arch Linux
grrs will be officially available on the AUR once the current registration freeze is lifted. In the meantime, you can build and install it directly using the provided PKGBUILD files.
For the stable release:
git clone https://git.myn.sh/grrs.git grrs cd grrs/pkg/grrs makepkg -si
For the bleeding-edge git version:
git clone https://git.myn.sh/grrs.git grrs cd grrs/pkg/grrs-git makepkg -si
Controls
l- Like/Unlike current songm- Mute/Unmute stream-/=- Volume down/upc- Copy track name/artist to clipboardC- Copy full track metadata to clipboardo/Enter- Open album info in browser/- Search through libraryTab- Cycle tabs in interface?- Show the help menuq/^c- Quit
Configuration
If grrs is launched and there is no existing ~/.config/grrs/config.toml, it will be generated with the default values. To configure the software, create or edit ~/.config/grrs/config.toml, and consult config.toml.example in the root of this repository for available options that can be set.
Disclaimer
This is one of my first real projects using Rust. A significant portion of this codebase was co-written with the help of Gemini 3.1 Pro. While it works great for my use-case, the internals might not be the best Rust you've ever seen.