Update to match new upstream git repo
This commit is contained in:
parent
dc4fb77a66
commit
d4fe83be14
3 changed files with 83 additions and 61 deletions
129
README.md
129
README.md
|
|
@ -1,62 +1,87 @@
|
||||||
<p align="center">
|
# Luminate
|
||||||
<img width="256" alt="Adwaita Template Icon" src="data/icons/io.github.AparokshaUI.AdwaitaTemplate.svg">
|
|
||||||
<h1 align="center">Adwaita Template</h1>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
_Adwaita Template_ is a template application for the [Adwaita for Swift package](https://adwaita-swift.aparoksha.dev/documentation/adwaita/).
|
Luminate is a modern and robust Jellyfin client for the Linux desktop.
|
||||||
|
|
||||||
## Table of Contents
|
It aims to provide an elegant and immersive browsing experience for any Jellyfin server with features rivaling that of the default Jellyfin Media Player, all while feeling right at home in your Linux desktop environment.
|
||||||
|
|
||||||
- [Installation](#Installation)
|
## Building
|
||||||
- [Usage](#Usage)
|
|
||||||
- [Thanks](#Thanks)
|
|
||||||
|
|
||||||
## Installation
|
### Linux (Native)
|
||||||
|
|
||||||
Install the [GNOME Builder](https://flathub.org/apps/org.gnome.Builder) IDE.
|
```bash
|
||||||
|
swift build
|
||||||
For designing an app icon, [App Icon Preview](https://flathub.org/apps/org.gnome.design.AppIconPreview) and [Inkscape](https://flathub.org/apps/org.inkscape.Inkscape) are recommended.
|
swift run
|
||||||
|
|
||||||
> [!NOTE]
|
|
||||||
> You do not have to install any dependencies of Adwaita for Swift, including Swift, on your system.
|
|
||||||
> The Adwaita template runs in a [Flatpak](https://flatpak.org/).
|
|
||||||
> The GNOME Builder will automatically download dependencies from [Flathub](https://flathub.org).
|
|
||||||
> You can also use [Visual Studio Code](https://code.visualstudio.com/) with a Docker [dev container](https://code.visualstudio.com/docs/devcontainers/containers) hosting the Swift toolchain and Adwaita libraries.
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
1. Open this project in the GNOME Builder. It will start downloading the dependencies.
|
|
||||||
- GNOME Builder will start downloading dependencies when opened.
|
|
||||||
- For Visual Studio Code, enable the [Dev Containers extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers), the [Swift extension](https://marketplace.visualstudio.com/items?itemName=sswg.swift-lang) and the [CodeLLDB extension](https://marketplace.visualstudio.com/items?itemName=vadimcn.vscode-lldb) and reopen the project window with the dev container. It may take a couple minutes to build.
|
|
||||||
2. Build and run the application.
|
|
||||||
- For GNOME Builder, use the "run" icon in the toolbar.
|
|
||||||
- For Visual Studio Code, select the "run and debug" tab in the leftmost sidebar, and then tap the run icon next to "Debug AdwaitaTemplate".
|
|
||||||
3. Change the app's name and other information about the application in the following files (and file names):
|
|
||||||
- `README.md`
|
|
||||||
- `Package.swift`
|
|
||||||
- `io.github.AparokshaUI.AdwaitaTemplate.json`
|
|
||||||
- `Sources/AdwaitaTemplate.swift`
|
|
||||||
- `data/io.github.AparokshaUI.AdwaitaTemplate.metainfo.xml`
|
|
||||||
- `data/io.github.AparokshaUI.AdwaitaTemplate.desktop`
|
|
||||||
- `data/icons/io.github.AparokshaUI.AdwaitaTemplate.Source.svg`
|
|
||||||
- `data/icons/io.github.AparokshaUI.AdwaitaTemplate.svg`
|
|
||||||
- `data/icons/io.github.AparokshaUI.AdwaitaTemplate-symbolic.svg`
|
|
||||||
4. Edit the code. Help is available [here](https://adwaita-swift.aparoksha.dev/), ask questions in the [forums](https://forums.aparoksha.dev/).
|
|
||||||
5. You can edit the app's icons using the previously installed tools according to [this](https://blogs.gnome.org/tbernard/2019/12/30/designing-an-icon-for-your-app/) tutorial.
|
|
||||||
6. In GNOME Builder, click on the dropdown next to the hammer and then on `Export`. Wait until the file manager appears, open the `.flatpak` file and install the app on your device!
|
|
||||||
7. If you want to publish your app, replace `debug` in the following build commands by `release`:
|
|
||||||
```
|
|
||||||
"swift build -c debug --static-swift-stdlib",
|
|
||||||
"install -Dm755 .build/debug/AdwaitaTemplate /app/bin/AdwaitaTemplate",
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Flatpak SPM Generator
|
Requires `libadwaita-devel` (Fedora) or `libadwaita` (Ubuntu/Debian) and the Swift 6 toolchain.
|
||||||
|
|
||||||
If you want to e.g. publish your app on Flathub where no internet connection is allowed while running the build commands,
|
### Flatpak
|
||||||
you can use [this tool](https://github.com/flatpak/flatpak-builder-tools/tree/master/spm) that lets you generate a Flatpak manifest JSON from a Swift package.
|
|
||||||
|
|
||||||
## Thanks
|
```bash
|
||||||
|
flatpak-builder --force-clean build-dir dev.bscubed.Luminate.json
|
||||||
|
flatpak-builder --run build-dir dev.bscubed.Luminate.json Luminate
|
||||||
|
```
|
||||||
|
|
||||||
### Dependencies
|
### macOS (Development)
|
||||||
- [Adwaita for Swift](https://git.aparoksha.dev/aparoksha/adwaita-swift) licensed under the [MIT License](https://git.aparoksha.dev/aparoksha/adwaita-swift/src/branch/main/LICENSE.md)
|
|
||||||
- [Localized](https://git.aparoksha.dev/aparoksha/localized) licensed under the [MIT License](https://git.aparoksha.dev/aparoksha/localized/src/branch/main/LICENSE.md)
|
```bash
|
||||||
|
brew install libadwaita
|
||||||
|
swift build
|
||||||
|
swift run
|
||||||
|
```
|
||||||
|
|
||||||
|
macOS builds are supported for development but the target platform is Linux/Flatpak.
|
||||||
|
|
||||||
|
### Release Build
|
||||||
|
|
||||||
|
```bash
|
||||||
|
swift build -c release
|
||||||
|
```
|
||||||
|
|
||||||
|
## Contributing
|
||||||
|
|
||||||
|
Contributions to Luminate are welcome! Refer to the project roadmap below to get an idea of what's currently being worked on before jumping in if you'd like, or you can check out the [current issues](https://git.bscubed.dev/echo/Luminate/issues) for something to tackle.
|
||||||
|
|
||||||
|
## Project Roadmap
|
||||||
|
|
||||||
|
### Implemented Features
|
||||||
|
|
||||||
|
- Server login with Jellyfin authentication
|
||||||
|
- Persistent session storage (auto-login across restarts)
|
||||||
|
- Home screen with Continue Watching, Next Up, and Recently Added rows
|
||||||
|
- Library grid browsing with folder navigation
|
||||||
|
- Movie detail view (backdrop, poster, metadata, cast, similar items)
|
||||||
|
- TV show detail view with season picker and episode list
|
||||||
|
- Search with debounced text input and result display
|
||||||
|
- Playback recording (start/progress/stop reporting to server)
|
||||||
|
- Favorites (toggle favorite on movie detail)
|
||||||
|
- Mark played/unplayed
|
||||||
|
- Image caching (memory + disk)
|
||||||
|
- WebSocket client for server events
|
||||||
|
- Dependency injection system
|
||||||
|
- Stack-based navigation
|
||||||
|
- Initial localization support (en/de)
|
||||||
|
|
||||||
|
### In Progress
|
||||||
|
|
||||||
|
- Video player widget (planned mpv + GtkGLArea integration)
|
||||||
|
- Connecting detail views to navigation stack
|
||||||
|
- Migrating library views to `@Injected` dependency injection
|
||||||
|
|
||||||
|
### Planned
|
||||||
|
|
||||||
|
- Real video playback with seeking and progress tracking
|
||||||
|
- Unified search integration
|
||||||
|
- Continue Watching resume from home screen
|
||||||
|
- Keyboard shortcut improvements
|
||||||
|
- Error handling UI for failed network requests
|
||||||
|
- Unit and UI testing
|
||||||
|
- CI/CD pipeline
|
||||||
|
- Flatpak publishing on Flathub
|
||||||
|
- Multi-user support
|
||||||
|
- Offline/download support
|
||||||
|
- Quick login
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
GPL-3.0
|
||||||
|
|
|
||||||
|
|
@ -11,11 +11,11 @@ struct ToolbarView: View {
|
||||||
.aboutDialog(
|
.aboutDialog(
|
||||||
visible: $about,
|
visible: $about,
|
||||||
app: "Luminate",
|
app: "Luminate",
|
||||||
developer: "david-swift",
|
developer: "Brendan Szymanski",
|
||||||
version: "dev",
|
version: "0.1.0",
|
||||||
icon: .custom(name: "dev.bscubed.Luminate"),
|
icon: .custom(name: "dev.bscubed.Luminate"),
|
||||||
website: .init(string: "https://git.bscubed.dev/luminate")!,
|
website: .init(string: "https://git.bscubed.dev/echo/Luminate")!,
|
||||||
issues: .init(string: "https://git.bscubed.dev/luminate/issues")!
|
issues: .init(string: "https://git.bscubed.dev/echo/Luminate/issues")!
|
||||||
)
|
)
|
||||||
.shortcutsDialog(visible: $shortcuts)
|
.shortcutsDialog(visible: $shortcuts)
|
||||||
.shortcutsSection { section in
|
.shortcutsSection { section in
|
||||||
|
|
@ -26,9 +26,6 @@ struct ToolbarView: View {
|
||||||
.shortcutsItem(Loc.keyboardShortcuts, accelerator: "question".ctrl())
|
.shortcutsItem(Loc.keyboardShortcuts, accelerator: "question".ctrl())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// .titleWidget {
|
|
||||||
// WindowTitle(subtitle: "", title: "Luminate")
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var content: AnyView {
|
var content: AnyView {
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
<id>dev.bscubed.Luminate</id>
|
<id>dev.bscubed.Luminate</id>
|
||||||
|
|
||||||
<name>Luminate</name>
|
<name>Luminate</name>
|
||||||
<summary>GNOME Jellyfin client built with Swift</summary>
|
<summary>A Jellyfin client for the modern desktop</summary>
|
||||||
|
|
||||||
<metadata_license>MIT</metadata_license>
|
<metadata_license>MIT</metadata_license>
|
||||||
<project_license>LGPL-3.0-or-later</project_license>
|
<project_license>LGPL-3.0-or-later</project_license>
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
|
|
||||||
<description>
|
<description>
|
||||||
<p>
|
<p>
|
||||||
A native GNOME Jellyfin client built with Swift and Adwaita.
|
A Jellyfin client for the modern desktop.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Browse your media library, watch movies and TV shows, and keep track of your progress across devices.
|
Browse your media library, watch movies and TV shows, and keep track of your progress across devices.
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue