# 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](https://gensokyoradio.net/), 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 ```sh cargo install myn-grrs ``` ### From Source ```sh git clone https://git.myn.sh/grrs.git (cd grrs && cargo install --path .) ``` ### With Nix You can run it directly without installing: ```sh 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:** ```sh git clone https://git.myn.sh/grrs.git grrs cd grrs/pkg/grrs makepkg -si ``` **For the bleeding-edge git version:** ```sh git clone https://git.myn.sh/grrs.git grrs cd grrs/pkg/grrs-git makepkg -si ``` ## Controls - `l` - Like/Unlike current song - `m` - Mute/Unmute stream - `-`/`=` - Volume down/up - `c` - Copy track name/artist to clipboard - `C` - Copy full track metadata to clipboard - `o`/`Enter` - Open album info in browser - `/` - Search through library - `Tab` - Cycle tabs in interface - `?` - Show the help menu - `q/^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.