A GTK music player for Jellyfin with CD burning support
Project description
jellyburn
A GTK3 desktop app for Linux to browse your Jellyfin music library, build playlists, and burn them directly to audio CD.
Features
- Connects to any Jellyfin server via API key or username/password
- iTunes-style column browser — filter by artist, then album, then tracks
- Track number column, search by title, artist or album
- Album art display fetched directly from Jellyfin
- Playback via
mpvwith now-playing info, progress bar and scrubbing - Collapse to a compact mini player that stays on top while you use other apps
- Playlist builder with drag-and-drop reordering, save/load as JSON
- Delete tracks from playlist with the Delete key or right-click
- Real-time CD capacity bar (green → yellow → red, max. 74 min)
- Burn directly to audio CD in Disc At Once mode — no extra steps
- Auto-detects optical drives, shown as a dropdown in settings
- Library cached locally for instant startup, refreshed in the background
- Checks for missing system dependencies on startup with clear instructions
- UI language switchable between English and German (Settings → Language)
Requirements
System packages (Debian/Ubuntu/Mint):
sudo apt install python3-gi gir1.2-gtk-3.0 gir1.2-gdkpixbuf-2.0 mpv ffmpeg cdrskin
cdrskinis the recommended burn backend.wodimis supported as a fallback but may require extra permissions on modern kernels:sudo setcap cap_ipc_lock+ep $(which wodim)
Python: 3.10 or newer. The only Python dependency (requests) is installed automatically via pip.
Your user must be in the cdrom group to access the optical drive without root:
sudo usermod -aG cdrom $USER
# log out and back in for the change to take effect
Installation
pip install jellyburn
Or run from source:
git clone https://github.com/oemerhamzaoglu/jellyburn
cd jellyburn
pip install -e .
jellyburn
Desktop integration (optional)
After installing via pip, add Jellyburn to your application menu:
# Icon
mkdir -p ~/.local/share/icons/hicolor/scalable/apps
curl -o ~/.local/share/icons/hicolor/scalable/apps/jellyburn.svg \
https://raw.githubusercontent.com/oemerhamzaoglu/jellyburn/main/jellyburn/icons/jellyburn.svg
# Desktop entry
mkdir -p ~/.local/share/applications
cat > ~/.local/share/applications/jellyburn.desktop << 'EOF'
[Desktop Entry]
Name=Jellyburn
Comment=Browse your Jellyfin music library and burn audio CDs
Exec=jellyburn
Icon=jellyburn
Terminal=false
Type=Application
Categories=AudioVideo;Audio;Music;
EOF
update-desktop-database ~/.local/share/applications/
Setup
- Click the settings icon (⚙) in the top right
- Enter your Jellyfin server URL, e.g.
https://jellyfin.example.com - Enter an API key — Jellyfin Dashboard → Administration → API Keys → New Key
- Select your CD drive from the dropdown (auto-detected)
- Set burn speed (default: 4×)
- Choose your preferred language (English or Deutsch)
- Save — the app connects and loads your library
Config is stored in ~/.config/jellyburn.json. Passwords are never saved — only the API token obtained after login.
Library cache is stored in ~/.cache/jellyburn/.
Usage
| Action | How |
|---|---|
| Browse | Click an artist → albums update; click an album → tracks filter |
| Search | Type in the search bar — filters title, artist and album live |
| Play | Double-click a track, or select it and press Play |
| Scrub | Click or drag the progress bar to seek within a track |
| Mini player | Click the collapse button in the header; click restore to return |
| Add to playlist | Select tracks (Ctrl+click for multiple), then „+ Add selection" |
| Reorder playlist | Drag and drop rows |
| Remove from playlist | Select rows and press Delete, or right-click → remove |
| Save/load playlist | Use the save/open icons in the playlist header |
| Burn | Click „● BURN CD" — tracks are downloaded, converted and burned |
The CD capacity bar turns yellow above 85 % and red when the playlist exceeds 74 minutes.
Burn process
- Tracks are downloaded from Jellyfin one by one
- Each track is converted to WAV (44100 Hz, 16-bit stereo) via
ffmpeg - All WAV files are written to CD as an audio disc in DAO mode via
cdrskin(orwodim)
Temporary files in /tmp/jellyfin_burn_*/ are cleaned up automatically after burning.
Contributing
Open an issue before starting larger changes. PRs welcome.
License
MIT — see LICENSE
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file jellyburn-0.3.2.tar.gz.
File metadata
- Download URL: jellyburn-0.3.2.tar.gz
- Upload date:
- Size: 28.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8db5956773a65c9a01a526360c57a9c39d9c56f6c52712df624acb31f66bbf0a
|
|
| MD5 |
8a8d410a9814a56e1edced5dd27d9d39
|
|
| BLAKE2b-256 |
11cc332c8cdb738ddfd635acde25799401820358c67240aa89ea654bd8116c60
|
File details
Details for the file jellyburn-0.3.2-py3-none-any.whl.
File metadata
- Download URL: jellyburn-0.3.2-py3-none-any.whl
- Upload date:
- Size: 30.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9d4a8fc427230d25de9f03ff141aa2f1d867b4fd9ad3b9d423e26d564d2ec20e
|
|
| MD5 |
e31432ed405847175e682210ac3e48a7
|
|
| BLAKE2b-256 |
df2142f5841a15fb1fa7d406d7a49b8c310be8a52820c2635df80cedf4514e03
|