|
11 | 11 |  |
12 | 12 |  |
13 | 13 |
|
14 | | -**The all-in-one toolkit for shipping JVM desktop applications.** Gradle plugin + runtime libraries + GitHub Actions — everything you need to go from `./gradlew run` to a signed, notarized, auto-updating app on every store. |
| 14 | +**Nucleus is the native desktop platform for the JVM.** Combined with Compose Multiplatform, it forms the most complete, most performant, and most deeply integrated desktop application stack ever built. |
15 | 15 |
|
16 | | -Compatible with any JVM application. Optimized for **Compose Desktop**. |
| 16 | +Java evolved into Kotlin. JavaScript evolved into TypeScript. Desktop development is going through the same shift: Electron was the pioneer. **Nucleus + Compose** is what comes next. |
17 | 17 |
|
18 | 18 | --- |
19 | 19 |
|
20 | | -## Why Nucleus? |
| 20 | +## Why Nucleus |
21 | 21 |
|
22 | | -### Fast Cold Start |
| 22 | +**Native on every OS** — Your app doesn't emulate native — it *is* native. Window decorations, notifications, taskbar badges, dock menus, dark mode, accent colors, global hotkeys — everything behaves exactly as users expect on their OS. |
23 | 23 |
|
24 | | -- **JDK 25+ AOT Cache (Project Leyden)** — Eliminates the JVM cold start penalty with a single Gradle flag. No GraalVM, no native-image, no compromise — your app launches almost instantly |
25 | | -- **ProGuard** — Built-in integration for release builds: obfuscation, optimization, and JAR joining |
26 | | -- **Native library cleanup** — Automatically strips non-target-platform `.dll`/`.so`/`.dylib` from dependency JARs, reducing app size |
| 24 | +**Performance that rivals C++** — The HotSpot JVM is the most advanced JIT compiler ever built, delivering performance approaching C++ and Rust levels — with the simplicity of Kotlin. True parallelism with coroutines and virtual threads, not a single-threaded event loop. |
27 | 25 |
|
28 | | -### Distributable |
| 26 | +**Maximum lightness** — GraalVM native image compiles your entire app into a standalone binary. ~0.5s cold start, 100–150 MB RAM, tiny bundle. Compare that to 500 MB–1.5 GB for a typical Electron app. |
29 | 27 |
|
30 | | -- **17 packaging formats** — DMG, PKG, NSIS, MSI, AppX, Portable, DEB, RPM, AppImage, Snap, Flatpak, ZIP, TAR, 7z, and more |
31 | | -- **Store-ready outputs** — Sandboxed PKG for the Mac App Store, AppX for the Microsoft Store, Snap for Snapcraft, Flatpak for Flathub — with automatic sandboxing pipelines |
32 | | -- **Code signing & notarization** — macOS (Developer ID, notarization, App Store), Windows (PFX, Azure Trusted Signing) |
33 | | -- **Auto-update** — Runtime library with SHA-512 verification, download progress, and platform-specific silent installation. Supports GitHub Releases and S3 |
34 | | -### Native |
| 28 | +**The most advanced desktop UI** — Compose Multiplatform with Skia GPU rendering, reactive state, and shared code across platforms. No frontend/backend split — your UI calls your logic directly. On top sits [Jewel](https://github.com/JetBrains/jewel), the desktop UI framework behind JetBrains IDEs. |
35 | 29 |
|
36 | | -- **Decorated windows** — Draw anything in the title bar (icons, text, gradients) while keeping native window controls. Fork of [Jewel](https://github.com/JetBrains/intellij-community/tree/master/platform/jewel)'s decorated window, without any Jewel dependency, with full Linux rework (GNOME Adwaita, KDE Breeze) and added `DecoratedDialog` support |
37 | | -- **Reactive dark mode** — OS-level theme listener via JNI that triggers Compose recomposition instantly. Unlike Compose's built-in `isSystemInDarkTheme()` which reads once and never updates |
38 | | -- **Platform detection** — Runtime APIs for OS, desktop environment (GNOME/KDE/XFCE/...), executable type (18 formats), and AOT mode |
39 | | -- **Single instance & deep links** — File-lock-based single instance enforcement with deep link forwarding between instances |
40 | | -- **Deep links & file associations** — Cross-platform protocol handlers and file type registration in one DSL block |
41 | | -- **System info** — CPU, memory, disks, GPU (NVIDIA/AMD/Intel), temperature sensors, network, processes, and hardware identifiers — all via JNI native bridges on each platform |
| 30 | +--- |
42 | 31 |
|
43 | | -### CI/CD Ready |
| 32 | +## What Nucleus provides |
44 | 33 |
|
45 | | -| Action | Description | |
46 | | -|--------|-------------| |
47 | | -| `setup-nucleus` | Sets up JBR + all packaging tools on any runner (Linux, macOS, Windows) | |
48 | | -| `build-macos-universal` | Merges arm64 + x64 into a universal binary with re-signing and notarization | |
49 | | -| `build-windows-appxbundle` | Merges amd64 + arm64 AppX into a signed MSIX bundle | |
50 | | -| `generate-update-yml` | Generates electron-builder-compatible update metadata with SHA-512 checksums | |
51 | | -| `publish-release` | Creates/updates GitHub Releases and uploads all artifacts | |
| 34 | +### Ship everywhere |
| 35 | + |
| 36 | +- **16 packaging formats** — DMG, PKG, NSIS, MSI, AppX, Portable, DEB, RPM, AppImage, Snap, Flatpak, ZIP, TAR, 7Z |
| 37 | +- **Store-ready** — Mac App Store, Microsoft Store, Snapcraft, Flathub |
| 38 | +- **Code signing & notarization** — Windows and macOS, built into the pipeline |
| 39 | +- **Auto-update** — Check, download, verify, install — all built-in |
| 40 | +- **Deep links & file associations** — Protocol handlers and file type registration |
| 41 | + |
| 42 | +### Feel native |
| 43 | + |
| 44 | +- **Decorated windows** — Custom title bar with native window controls on every OS |
| 45 | +- **Notifications** — Native APIs on macOS, Windows, and Linux |
| 46 | +- **Launchers** — Badges, progress bars, jump lists, dock menus, quicklists |
| 47 | +- **System integration** — Dark mode, accent colors, high contrast, energy management, global hotkeys, taskbar progress, system info |
| 48 | + |
| 49 | +### Perform |
| 50 | + |
| 51 | +- **AOT Cache** — Near-instant cold startup with a single Gradle flag |
| 52 | +- **GraalVM Native Image** — Standalone binary with automatic metadata resolution — zero manual config for most apps |
| 53 | +- **ProGuard** — Built-in release builds with optimization and obfuscation |
| 54 | + |
| 55 | +### Go deeper |
52 | 56 |
|
53 | | -Full 6-runner matrix build (Ubuntu amd64/arm64, Windows amd64/arm64, macOS arm64/Intel) out of the box. |
| 57 | +- **[Native Access](https://nucleus.kdroidfilter.com/native-access/)** — Write Kotlin/Native, call it from the JVM. No C, no boilerplate. |
| 58 | +- **30+ runtime modules** — Intuitive Kotlin APIs for every OS integration |
| 59 | +- **CI/CD ready** — Reusable GitHub Actions, 6-runner matrix builds, universal macOS binaries, MSIX bundles |
54 | 60 |
|
55 | 61 | --- |
56 | 62 |
|
@@ -79,63 +85,51 @@ nucleus.application { |
79 | 85 |
|
80 | 86 | --- |
81 | 87 |
|
82 | | -## Runtime Libraries |
83 | | - |
84 | | -Use them independently or together — each module is published to Maven Central. |
85 | | - |
86 | | -| Module | Artifact | Description | |
87 | | -|--------|----------|-------------| |
88 | | -| **Core Runtime** | `nucleus.core-runtime` | Platform detection, single instance, deep links, executable type detection | |
89 | | -| **AOT Runtime** | `nucleus.aot-runtime` | AOT cache mode detection (training / runtime / off) | |
90 | | -| **Updater** | `nucleus.updater-runtime` | Auto-update engine with GitHub/S3 providers, progress tracking, SHA-512 verification | |
91 | | -| **Dark Mode Detector** | `nucleus.darkmode-detector` | Reactive OS dark mode via JNI — macOS, Windows, Linux (D-Bus) | |
92 | | -| **System Color** | `nucleus.system-color` | Reactive system accent color & high contrast detection via JNI | |
93 | | -| **System Info** | `nucleus.system-info` | Cross-platform system information (CPU, memory, disks, GPU, temperature, network, processes) via JNI | |
94 | | -| **Decorated Window** | `nucleus.decorated-window` | Custom title bar with native controls — design-system agnostic | |
95 | | -| **Decorated Window Jewel** | `nucleus.decorated-window-jewel` | Jewel (IntelliJ theme) integration for decorated windows and dialogs | |
96 | | -| **Decorated Window Material 2** | `nucleus.decorated-window-material2` | Material 2 integration for decorated windows and dialogs | |
97 | | -| **Decorated Window Material 3** | `nucleus.decorated-window-material3` | Material 3 integration for decorated windows and dialogs | |
98 | | -| **Freedesktop Icons** | `nucleus.freedesktop-icons` | Type-safe [freedesktop icon naming](https://specifications.freedesktop.org/icon-naming/latest/) constants | |
99 | | -| **Notification Linux** | `nucleus.notification-linux` | Freedesktop Desktop Notifications API via JNI | |
100 | | -| **Notification Windows** | `nucleus.notification-windows` | Windows Toast Notifications API via JNI (WinRT) | |
101 | | -| **Notification macOS** | `nucleus.notification-macos` | macOS User Notifications API via JNI (Objective-C) | |
102 | | -| **Launcher Windows** | `nucleus.launcher-windows` | Windows Launcher API — badge notifications & jump lists (ICustomDestinationList) via JNI | |
103 | | -| **Launcher Linux** | `nucleus.launcher-linux` | Unity Launcher API — badge, progress, urgency, quicklist via JNI | |
104 | | -| **Launcher macOS** | `nucleus.launcher-macos` | macOS Dock API — badge count & attention requests via JNI | |
105 | | -| **Menu macOS** | `nucleus.menu-macos` | macOS native menu bar integration via JNI | |
106 | | -| **Taskbar Progress** | `nucleus.taskbar-progress` | Cross-platform taskbar progress bar & attention requests | |
107 | | -| **Global Hotkey** | `nucleus.global-hotkey` | System-wide keyboard shortcut registration via JNI | |
108 | | -| **Energy Manager** | `nucleus.energy-manager` | Energy efficiency & screen-awake APIs | |
109 | | -| **Native SSL** | `nucleus.native-ssl` | OS trust store integration for SSL/TLS | |
110 | | -| **Native HTTP** | `nucleus.native-http` | HTTP client using OS-native SSL trust store | |
111 | | -| **Linux HiDPI** | `nucleus.linux-hidpi` | Native HiDPI scale factor detection on Linux (JNI) | |
112 | | -| **GraalVM Runtime** | `nucleus.graalvm-runtime` | Native-image bootstrap + font substitutions (includes linux-hidpi) | |
| 88 | +## Runtime Modules |
113 | 89 |
|
114 | | ---- |
115 | | - |
116 | | -## Sponsor: Automatic GraalVM Reflection Plugin |
117 | | - |
118 | | -Nucleus already supports [GraalVM Native Image](https://nucleus.kdroidfilter.com/graalvm-native-image/) for instant startup and low memory usage — but configuring reflection metadata remains a major pain point. |
119 | | - |
120 | | -**I'm looking for sponsors** to fund the development of an **automatic reflection resolution plugin** that would eliminate most of the manual configuration work. This would make native-image practical for large Compose Desktop applications while keeping full compatibility with the Java ecosystem. |
| 90 | +Each module is published independently to Maven Central — use them together or standalone. |
121 | 91 |
|
122 | | -If you or your company are interested, please reach out via [GitHub Issues](https://github.com/kdroidFilter/Nucleus/issues) or [GitHub Discussions](https://github.com/kdroidFilter/Nucleus/discussions). Read more about this in the [GraalVM Native Image docs](https://nucleus.kdroidfilter.com/graalvm-native-image/#future-automatic-reflection-resolution-plugin). |
| 92 | +| Module | Description | |
| 93 | +|--------|-------------| |
| 94 | +| `nucleus.core-runtime` | Platform detection, single instance, deep links, executable type | |
| 95 | +| `nucleus.aot-runtime` | AOT cache mode detection | |
| 96 | +| `nucleus.updater-runtime` | Auto-update engine with GitHub/S3, progress tracking, SHA-512 | |
| 97 | +| `nucleus.darkmode-detector` | Reactive OS dark mode detection | |
| 98 | +| `nucleus.system-color` | Reactive accent color & high contrast detection | |
| 99 | +| `nucleus.system-info` | CPU, memory, GPU (NVIDIA/AMD/Intel), temperature, network, processes | |
| 100 | +| `nucleus.decorated-window` | Custom title bar with native controls | |
| 101 | +| `nucleus.decorated-window-jewel` | Jewel (IntelliJ theme) integration | |
| 102 | +| `nucleus.decorated-window-material2` | Material 2 integration | |
| 103 | +| `nucleus.decorated-window-material3` | Material 3 integration | |
| 104 | +| `nucleus.notification-macos` | macOS User Notifications | |
| 105 | +| `nucleus.notification-windows` | Windows Toast Notifications | |
| 106 | +| `nucleus.notification-linux` | Freedesktop Desktop Notifications | |
| 107 | +| `nucleus.launcher-macos` | macOS Dock API — badge, menus | |
| 108 | +| `nucleus.launcher-windows` | Windows taskbar — badges, jump lists, overlay icons, thumbnail toolbar | |
| 109 | +| `nucleus.launcher-linux` | Unity Launcher — badge, progress, urgency, quicklist | |
| 110 | +| `nucleus.menu-macos` | Native macOS menu bar | |
| 111 | +| `nucleus.freedesktop-icons` | Type-safe freedesktop icon naming constants | |
| 112 | +| `nucleus.taskbar-progress` | Cross-platform taskbar progress bar & attention requests | |
| 113 | +| `nucleus.global-hotkey` | System-wide keyboard shortcuts | |
| 114 | +| `nucleus.energy-manager` | Energy efficiency & screen-awake APIs | |
| 115 | +| `nucleus.native-ssl` | OS trust store integration | |
| 116 | +| `nucleus.native-http` | HTTP client with native SSL | |
| 117 | +| `nucleus.linux-hidpi` | Native HiDPI scale detection on Linux | |
| 118 | +| `nucleus.graalvm-runtime` | Native-image bootstrap, font fixes, automatic resource inclusion | |
123 | 119 |
|
124 | 120 | --- |
125 | 121 |
|
126 | 122 | ## Requirements |
127 | 123 |
|
128 | 124 | | Requirement | Version | Note | |
129 | 125 | |-------------|---------|------| |
130 | | -| JDK | 17+ (25+ for AOT cache) | JBR recommended | |
| 126 | +| JDK | 17+ (25+ for AOT cache) | JBR 25 recommended | |
131 | 127 | | Gradle | 8.0+ | | |
132 | 128 | | Kotlin | 2.0+ | | |
133 | 129 |
|
134 | | ---- |
135 | | - |
136 | 130 | ## Documentation |
137 | 131 |
|
138 | | -Full documentation is available at **[nucleus.kdroidfilter.com](https://nucleus.kdroidfilter.com/)**. |
| 132 | +Full documentation at **[nucleus.kdroidfilter.com](https://nucleus.kdroidfilter.com/)**. |
139 | 133 |
|
140 | 134 | ## License |
141 | 135 |
|
|
0 commit comments