git/grrs/main
chore: point packaging at git.myn.sh, add issues
myn committed · 8891fe6

grrs (Gensokyo Radio Rust) stable

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 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.