Build from source
refryt is Rust and egui, with mpv for playback. This is the short version; docs/BUILDING.md has every detail.
Prerequisites
- Rust 1.90+ (see
rust-versioninCargo.toml) - libmpv, the mpv development libraries. refryt plays audio through it.
- yt-dlp, optional: the fallback for songs YouTube's
playerendpoint won't hand over, plus the video view and downloads. Songs play without it. - just, optional: the
Justfilehas a command for everything below.
git clone https://github.com/gridoe/refryt
cd refrytEveryday development
just # cargo run, dev profile
just search "some song"
just release # optimised run, for judging real performance
just check # fmt --check + clippy + tests, what CI runsWithout just: cargo run -p refryt --bin refryt.
Packaging
Linux: AppImage
just appimage # or: ./scripts/build-appimage.sh
just appimage-install # to ~/.local/bin with a desktop entryBundles the release binary, every shared library short of glibc (libmpv included), a fresh yt-dlp and the icon into dist/refryt-<version>-x86_64.AppImage. Needs python3 with Pillow and curl; no root required.
Linux: Flatpak
just flatpak # or: ./scripts/build-flatpak.sh
flatpak install --user dist/refryt-<version>-x86_64.flatpakBuilt from packaging/flatpak/. Needs flatpak-builder, the GNOME 49 Platform and Sdk, and the rust-stable Sdk extension. The first build compiles libmpv and friends, so it takes a while.
macOS: app bundle
brew install rustup just mpv dylibbundler
just macos # or: ./scripts/build-macos.shWrites dist/Refryt.app, plus a zip and a DMG, with libmpv and yt-dlp bundled and an ad-hoc signature. On another Mac, clear the quarantine flag with xattr -cr Refryt.app.
Windows: cross-compiled from Linux
sudo pacman -S mingw-w64-gcc mingw-w64-crt mingw-w64-headers mingw-w64-winpthreads mingw-w64-binutils
rustup target add x86_64-pc-windows-gnu
./scripts/build-windows.shProduces a portable zip, and with Wine and Inno Setup installed, a real installer. ARCH=aarch64 builds Windows on ARM using llvm-mingw. See BUILDING.md for the setup.
Contributing
Bugs and ideas go to the issue tracker. CONTRIBUTING.md says what to include. Releases are cut by pushing a v* tag; the process is in BUILDING.md.
Credits
- Sonora and its
ytmusic-rs: asking YouTube'splayerendpoint as the visionOS client for direct stream URLs. - yt-dlp: the fallback resolver, and the reference for how YouTube gates anonymous clients.
- youtui:
ytmapi-rsfor the InnerTube API, and itsrusty_ytdlfork. - ytmdesktop: what happens when the queue runs out.
- Spotify's desktop app: the shortcuts, select-then-play clicks, and the shape of the album, playlist and artist pages.
- LRCLIB: the synced lyrics.
- Theme palettes: Catppuccin, Nord, Gruvbox, Tokyo Night, Dracula, Rosé Pine, Everforest, Solarized and Spotify's own colours.