| .forgejo | ||
| data | ||
| Sources | ||
| Tests/LuminateTests | ||
| .gitignore | ||
| .swift-format | ||
| CONTRIBUTING.md | ||
| dev.bscubed.Luminate.json | ||
| generated-sources.json | ||
| LICENSE.md | ||
| Package.swift | ||
| README.md | ||
| setup-offline.sh | ||
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.