An open API service indexing awesome lists of open source software.

https://github.com/fingel/gelly

A native music client for Jellyfin and Navidrome/Subsonic
https://github.com/fingel/gelly

jellyfin linux music navidrome subsonic

Last synced: 20 days ago
JSON representation

A native music client for Jellyfin and Navidrome/Subsonic

Awesome Lists containing this project

README

          






Gelly

A native, lightweight music client for Jellyfin and Subsonic. Built with Rust and GTK.
🦀🐧

Screenshot from 2026-04-25 10-11-15

## Features

- [x] Supports both Jellyfin and Subsonic/Navidrome backends
- [x] MPRIS
- [x] Lyrics
- [x] Replaygain
- [x] Gapless playback
- [x] Transcoding
- [x] Search
- [x] [CLI](#command-line-interface)
- [x] Playlist management
- [x] Favorites
- [x] Smart Playlists
- [x] [NFC tag support](#nfc-tag-support)

## Installation

### Flatpak


Get it on Flathub

Gelly is available on Flatpak as [io.m51.Gelly](https://flathub.org/apps/io.m51.Gelly)

flatpak install io.m51.Gelly

### Arch Linux

Gelly is available on the [aur](https://aur.archlinux.org/packages/gelly):

paru -S gelly

### NixOS

nix-shell -p gelly

## Command line interface

Gelly has a few basic command line options that can be sent to the running
instance. This is useful for light scripting or if you don't want to deal with
the MPRIS interface. Note that most context menus have a "Copy ID" option which
can be used as an argument to the `--play-x` options.

```
-n, --next Skip to the next track
-p, --prev Go to the previous track
-t, --play-pause Toggle play/pause
-s, --stop Stop playback
-r, --refresh-library Refresh the library
--play-album=ALBUM_ID Play an album by ID
--play-artist=ARTIST_ID Play all songs by an artist ID
--play-song=SONG_ID Play a specific song by ID
--big-player Open the big player
```

## NFC Tag Support

Gelly doesn't directly support reading or writing NFC card but the project
[Gelly-NFC](https://github.com/Fingel/gelly-nfc) does. It's a simple Python
script that can be used to control Gelly via NFC cards using the
[command line interface](#command-line-interface). Perfect for making a home
Jukebox!

See [this blog post](https://www.pedaldrivenprogramming.com/2026/05/self-hosted-jukebox-with-nfc-cards/)
for more details.

## Connecting with TLS using self signed certificates

There is currently [an issue with Flatpak](https://gitlab.com/freedesktop-sdk/freedesktop-sdk/-/issues/1905)
that prevents sandboxed applications from reading the host's certificate store. This means if you are using
a self-signed certificate on your Jellyfin/Navidrome install, Gelly will be unlikely to be able to connect
even if you have the cert installed locally.

There is a workaround: You need to make the cert file available to the flatpak sandbox and then
set the `SSL_CERT_FILE` env var to point to it. This can be done using a tool like Flatseal. Thank you
@RodrigoPrestes for [finding this workaround](https://github.com/Fingel/gelly/issues/15#issuecomment-4195533397).

The other alternative is to use a non flatpak installation method.

## Translations

Gelly needs help with translations! See the
[Weblate project page](https://hosted.weblate.org/engage/gelly/) to submit translations via Weblate.

[![Translation status](https://hosted.weblate.org/widgets/gelly/-/gelly/svg-badge.svg)](https://hosted.weblate.org/engage/gelly/)

## Development

Make sure you have the development libraries for the following installed:

* GTK
* Libadwaita
* Gstreamer

The name of these packages depends on your distribution,
but will usually be something like `gstreamer-dev`. Note that Arch Linux includes development libs with the main
package, btw, so you don't need to install anything extra.

Gelly leverages [gtk-rs](https://gtk-rs.org/) for GTK bindings.

You will also need a rust compiler installed. Gelly does *not* require any nightly
features from Rust.

To make things easy, also install the [just](https://github.com/casey/just) command runner. Building and
launching a development build of Gelly should then simply be a matter of:

just

And installing a release build:

just release
sudo just install

See the recipes in the [justfile](justfile) for other useful commands.

## Contributing
See [CONTRIBUTING.md](CONTRIBUTING.md)

## Special Thanks
@gabMus for all the great UI work and polish

@dstapp for the Subsonic backend

## Contact
I hang out on [libera.chat](https://libera.chat/) in [#gelly](irc://irc.libera.chat:6667/%23gelly)