Skip to content

screwys/Rufin

Repository files navigation

Rufin

Rust 1.95+ License: GPL-3.0-or-later GTK 4 libadwaita Flathub installs AUR version Nix flake

Rufin Rufin is a native, fast and easy to use GTK4/libadwaita music client written in Rust. It supports playback from your music server(s) or your local folder(s), with built-in playback reporting to Last.fm and alike.

Rufin

Features

  • Fast, native and modern GTK/libadwaita client
  • Optimized for quick startup and navigation, smooth browsing and type-to-search across large libraries
  • Supports playing from Jellyfin, Subsonic, Navidrome servers and local folders
  • Local library support with multiple folders and CUE support with separate playable tracks
  • Built-in scrobbling for Last.fm, Libre.fm, and ListenBrainz
  • Discord Rich Presence support
  • Automatic metadata caching for missing lyrics/cover arts
  • Gapless playback, crossfade, ReplayGain, equalizer presets and fullscreen player with visualizer
  • Best-effort path matching with your music server and local folders, you can play from your local files while keeping server reporting
  • Rich customization while preserving GTK menus
  • Smart playlists that support nested rules
  • System tray integration
  • Secure storage for all server credentials and API secrets

Library behavior

  • Rufin keeps a local cache for each source, so opening the app, switching pages and browsing a large library doesn't mean asking the server or scanning folders again for every click.

  • Large libraries are normal to browse; tracks, albums, artists, genres and playlists are full pages, they are not paginated

  • Rufin stores source IDs, MusicBrainz IDs, sort tags and display names separately. It checks those before falling back to tag text from the same server or folder which helps to put albums on correct artist pages despite tag mismatches

  • When a library changes, app tries to update the changed parts instead of making every page reload. Cover arts and artist pictures come from source first and missing ones are tried to fetch online, and artists use album arts as fallback

  • If your server library also exists on disk, Rufin can play the local files directly while still reporting to the server

Screenshots

Tracks page Albums page Artists page Fullscreen player Smart playlists Play random

Installation

Flatpak

Get it on Flathub

AUR

  • AUR package is built from this repository at the same time with all releases. rufin for release binaries, rufin-git to build it from source
yay -S rufin
yay -S rufin-git

Nix

To run the latest stable release:

nix run github:screwys/Rufin/v0.7.6

To run the current main branch:

nix run github:screwys/Rufin/main

Release tags and main builds are cached. You can also add either ref to your profile:

nix profile install github:screwys/Rufin/v0.7.6

Building locally

Refer to CONTRIBUTING.md

Contributing

To contribute code, please see CONTRIBUTING.md.

Translations

You can also contribute by translating the app on Weblate

Translation status

Credits

Built with GTK 4, libadwaita, gtk-rs, GStreamer

This app is greatly influenced by Feishin, as in the overall design and in how certain parts should work. It aims to bring a similar experience, altough not as feature-rich, to a native desktop app without a web stack.

Translation credits

  • Estonian translation by Priit Jõerüüt
  • Russian and Latvian translation by aguhadug

License

LICENSE

About

Native GTK4/libadwaita music client for Jellyfin, Subsonic, Navidrome and local libraries written in Rust

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Contributors

Languages