A Jellyfin client for the modern desktop
Find a file
Brendan Szymanski bb28ae790a
All checks were successful
PR Checks / lint (pull_request) Successful in 59s
PR Checks / flatpak-build (pull_request) Successful in 13m21s
Remove tests
2026-06-22 13:23:31 -04:00
.forgejo Remove tests 2026-06-22 13:23:31 -04:00
data Update to match new upstream git repo 2026-06-15 02:16:02 -04:00
Sources Fix warnings 2026-06-21 12:26:23 -04:00
Tests/LuminateTests Rename CAspectContainer target to CGtkWidgets 2026-06-19 20:19:43 -04:00
.gitignore Clean up tracked files and update gitignore 2026-06-14 23:21:14 -04:00
.swift-format Set up swift-format 2026-06-14 23:21:14 -04:00
CONTRIBUTING.md Add contributor templates and update README 2026-06-21 20:01:52 +00:00
dev.bscubed.Luminate.json Add Forgejo Actions CI pipeline with flatpak builds and tests 2026-06-21 21:12:31 -04:00
generated-sources.json Add Forgejo Actions CI pipeline with flatpak builds and tests 2026-06-21 21:12:31 -04:00
LICENSE.md Initial commit 2026-06-14 23:11:23 -04:00
Package.swift Rename CAspectContainer target to CGtkWidgets 2026-06-19 20:19:43 -04:00
README.md Add contributor templates and update README 2026-06-21 20:01:52 +00:00
setup-offline.sh Add Forgejo Actions CI pipeline with flatpak builds and tests 2026-06-21 21:12:31 -04:00

Luminate

Luminate is a modern Jellyfin client for the Linux desktop, built with Swift and Adwaita.

It aims to provide a delightful browsing experience for any Jellyfin server with features rivaling the default Jellyfin Media Player, all while feeling right at home in your GNOME desktop.

🛠️ Building

Linux (Native)

swift build
swift run

Requires libadwaita-devel (Fedora) or libadwaita (Ubuntu/Debian) and the Swift 6 toolchain.

Flatpak

flatpak-builder --force-clean build-dir dev.bscubed.Luminate.json
flatpak-builder --run build-dir dev.bscubed.Luminate.json Luminate

macOS (Development)

brew install libadwaita
swift build
swift run

macOS builds work for development, but the target platform is Linux/Flatpak.

Release Build

swift build -c release

🤝 Contributing

Contributions are welcome! Check out CONTRIBUTING.md for the full guide on branching, coding style, pull requests, and everything you need to get started. You can also browse the issue tracker for open issues to tackle.

🗺️ Project Roadmap

Login

Feature Completion Version Details
Server Authentication v0.1.0 Login via server URL, username, and password
Persistent Session Storage v0.1.0 Auto-login across restarts via SQLite
Multi-User Support Switch between accounts without re-entering credentials
Quick Login One-click reconnect to recently used servers

Libraries

Feature Completion Version Details
Home Screen v0.1.0 Continue Watching, Next Up, and Recently Added rows
Library Grid Browsing v0.1.0 Folder navigation with responsive grid layout
Movie Detail View v0.1.0 Backdrop, poster, metadata, cast, similar items, actions
TV Show Detail View v0.1.0 Season picker, episode list with thumbnails and runtime
Search v0.1.0 Debounced text input with results across libraries
Detail View Navigation 🚧 v0.1.0 Connecting poster cells to their detail views
Unified Search Integration Search results navigating directly to content

Playback

Feature Completion Version Details
Playback Progress Reporting v0.1.0 Start, progress, and stop reported to server
Video Player Widget 🚧 v0.1.0 mpv + GtkGLArea integration (placeholder currently)
Full Video Playback Play, pause, seek, progress bar, and fullscreen
Resume Playback Continue Watching from home screen plays at saved position

Functionality

Feature Completion Version Details
Favorites v0.1.0 Toggle favorite status on items
Mark Played / Unplayed v0.1.0 Track watched state
Image Caching v0.1.0 Two-tier cache (memory + disk) with deferred loading
WebSocket Client v0.1.0 Real-time server event notifications
Dependency Injection v0.1.0 @Injected property wrapper and DIContainer
Stack Navigation v0.1.0 NavigationView with typed NavigationStack<Page>
Localization (en/de) v0.1.0 YAML-based strings with the localized package
@Injected Migration 🚧 v0.1.0 Migrating library views from parameter injection
Keyboard Shortcuts Global shortcuts for search, navigation, playback
Error Handling UI User-facing error states for network failures
Testing Unit and UI test coverage
CI/CD Pipeline Automated builds and test runs
Flatpak Publishing Release on Flathub
Offline / Download Support Cache media for offline playback

📄 License

Luminate is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.