Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2,203 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Nucleus

Gradle Plugin Portal Maven Central Pre Merge Checks License: MIT Kotlin Platform

The Nucleus framework lets you write cross-platform desktop applications using Kotlin. It is based on Compose Multiplatform and adds native window decorations, deep operating-system integration, code signing, and native installers — all configured through a single Gradle DSL. Your app runs either as a GraalVM Native Image or on the JVM.

It targets the gap between "a Compose Desktop window" and "an application the operating system treats as its own" — the work that is normally spread across a dozen half-maintained libraries and a hand-written packaging pipeline. Every OS integration is a real platform API behind a Kotlin one: no AWT dependency on the Tao backend, and the accessibility layer is verified against AT-SPI, UI Automation, and macOS AX in CI on all three platforms.

Read Why Nucleus for how it compares to Electron and Tauri.

Project status

Nucleus is under active development and moves fast. The decorated-window-tao backend runs in explicit-API mode with its public surface locked by a binary-compatibility dump; the other runtime modules are not API-frozen yet and can change between minor releases, so pin exact versions. The Tao backend is the recommended one for new projects — decorated-window-jni and decorated-window-jbr are kept for existing users and receive fixes only.

Installation

Nucleus ships as a Gradle plugin. Apply it alongside the Kotlin and Compose plugins in your module's build.gradle.kts:

plugins {
    kotlin("jvm") version "2.4.0"
    id("org.jetbrains.compose") version "1.11.1"
    id("dev.nucleusframework") version "2.0.0"
}

repositories {
    mavenCentral()
    google()
}

dependencies {
    implementation(compose.desktop.currentOs)
    // Entry point — provides nucleusApplication and DecoratedWindow
    implementation("dev.nucleusframework:nucleus.nucleus-application:2.0.0")
    // Tao backend — Rust-native windowing
    implementation("dev.nucleusframework:nucleus.decorated-window-tao:2.0.0")
}

For more installation options, see the install guide and project setup.

Requirements

Nucleus builds on Compose Multiplatform and requires:

Requirement Version Note
JDK 17+ (25+ for AOT cache) JBR 25 recommended
Kotlin 2.0+ Compose Multiplatform requires Kotlin 2.x
Gradle 8.0+ Bundled wrapper is sufficient

Platform support

Each build can compile, run, and package for macOS, Windows, and Linux from a single codebase.

  • macOS — Intel (x64) and Apple Silicon (arm64), shipped as a universal binary. Liquid Glass on macOS 26.
  • Windowsx64 and arm64.
  • Linuxx64 and arm64, with Wayland and X11 support.

Getting started

Create src/main/kotlin/com/example/Main.kt:

package com.example

import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material.Text
import androidx.compose.ui.Modifier
import dev.nucleusframework.application.DecoratedWindow
import dev.nucleusframework.application.NucleusBackend
import dev.nucleusframework.application.nucleusApplication

fun main() = nucleusApplication(backend = NucleusBackend.Tao) {
    DecoratedWindow(
        onCloseRequest = ::exitApplication,
        title = "MyApp",
    ) {
        Box(Modifier.fillMaxSize()) {
            Text("Hello from Nucleus")
        }
    }
}

Then configure packaging in build.gradle.kts:

nucleus.application {
    mainClass = "com.example.MainKt"

    nativeDistributions {
        packageName = "MyApp"
        packageVersion = "1.0.0"
        targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb)
    }
}
./gradlew run                              # Run locally in a native Tao window
./gradlew packageDistributionForCurrentOS  # Build an installer for your OS

The full quickstart walks through each step.

Resources for learning Nucleus

What Nucleus provides

Ship everywhere — 18 packaging formats (DMG, PKG, EXE, MSI, NSIS, NSIS-Web, Portable, AppX, DEB, RPM, Pacman, AppImage, raw AppImage, Snap, Flatpak, ZIP, TAR, 7Z), store publishing (Mac App Store, Microsoft Store, Snapcraft, Flathub), code signing and notarization, built-in auto-update, deep links, and file associations.

Feel native — Decorated windows with native controls, notifications, taskbar/dock badges and menus, media controls (MPRIS, Now Playing, SMTC), dark mode, accent colors, global hotkeys, and system tray — all behind clean Kotlin APIs.

Perform — GraalVM Native Image compiles your app to a standalone binary with automatic reachability metadata; a typical Compose UI cold-starts in about half a second and settles around 100–150 MB of RAM. Or stay on the JVM with an AOT cache (JDK 25+) and ProGuard-optimized release builds.

Runtime modules

Each module is published independently to Maven Central — use them together or standalone.

Module Description
nucleus.core-runtime Platform detection, single instance, deep links, executable type
nucleus.aot-runtime AOT cache mode detection
nucleus.updater-runtime Auto-update engine with GitHub/S3, progress tracking, SHA-512
nucleus.darkmode-detector Reactive OS dark mode detection
nucleus.system-color Reactive accent color & high contrast detection
nucleus.system-info CPU, memory, GPU (NVIDIA/AMD/Intel), temperature, network, processes
nucleus.decorated-window-tao Rust-native windowing backend (Tao)
nucleus.decorated-window-jewel Jewel (IntelliJ theme) integration
nucleus.decorated-window-material2 Material 2 integration
nucleus.decorated-window-material3 Material 3 integration
nucleus.notification-common Cross-platform notification DSL with per-platform (linux/macos/windows) option blocks
nucleus.notification-macos macOS User Notifications
nucleus.notification-windows Windows Toast Notifications
nucleus.notification-linux Freedesktop Desktop Notifications
nucleus.launcher-macos macOS Dock API — badge, menus
nucleus.launcher-windows Windows taskbar — badges, jump lists, overlay icons, thumbnail toolbar
nucleus.launcher-linux Unity Launcher — badge, progress, urgency, quicklist
nucleus.media-control OS media controls — MPRIS (Linux), Now Playing (macOS), SMTC (Windows)
nucleus.menu-macos Native macOS menu bar
nucleus.freedesktop-icons Type-safe freedesktop icon naming constants
nucleus.taskbar-progress Cross-platform taskbar progress bar & attention requests
nucleus.global-hotkey System-wide keyboard shortcuts
nucleus.energy-manager Energy efficiency & screen-awake APIs
nucleus.autolaunch Start the app at user login across all platforms
nucleus.native-ssl OS trust store integration
nucleus.native-http HTTP client with native SSL
nucleus.linux-hidpi Native HiDPI scale detection on Linux
nucleus.graalvm-runtime Native-image bootstrap, font fixes, automatic resource inclusion

Documentation

Full documentation is available at nucleusframework.dev (English and French).

Community

Ask questions, report bugs, and share what you're building on GitHub Discussions and the issue tracker.

License

MIT

About

Native desktop platform for the JVM. Compose Multiplatform apps with real OS integration — native window decorations, notifications, taskbar and dock, code signing, installers, auto-update — packaged for macOS, Windows and Linux from a single Gradle DSL. Runs on the JVM or as a GraalVM native image.

Topics

Resources

Stars

321 stars

Watchers

1 watching

Forks

Releases

Sponsor this project

Contributors

Languages