Quickstart
Construisez et lancez votre première app desktop Nucleus, puis empaquetez-la en installateur natif.
Dans ce tutoriel, vous allez créer une app desktop Nucleus à partir de zéro, la lancer dans une
fenêtre native Tao, puis l'empaqueter en installateur pour votre système d'exploitation actuel.
L'app entière tient en deux fichiers : un script de build Gradle et une fonction main Kotlin.
Avant de commencer
Nucleus s'appuie sur Compose Multiplatform et nécessite :
- JDK 17 ou une version ultérieure dans votre
PATH. - Kotlin 2.0 ou une version ultérieure et Gradle 8.x.
Créer le script de build
Dans un dossier de projet vide, créez build.gradle.kts et appliquez le plugin Nucleus :
plugins {
kotlin("jvm") version "2.4.0"
id("org.jetbrains.compose") version "1.11.1"
id("dev.nucleusframework") version "2.0.7"
}
repositories {
mavenCentral()
google()
}
dependencies {
implementation(compose.desktop.currentOs)
// Le module d'entrée — fournit nucleusApplication et DecoratedWindow
implementation("dev.nucleusframework:nucleus.nucleus-application:2.0.7")
// Active le backend Tao (fenêtrage natif en Rust)
implementation("dev.nucleusframework:nucleus.decorated-window-tao:2.0.7")
}
nucleus.application {
mainClass = "com.example.MainKt"
nativeDistributions {
packageName = "MyApp"
packageVersion = "1.0.0"
targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb)
}
}Vous avez déjà une app Compose Desktop ? Nucleus étend org.jetbrains.compose, donc le passage est un
simple renommage — retirez le bloc compose.desktop.application { } vanilla et pointez-le vers Nucleus :
-compose.desktop.application {
+nucleus.application {
mainClass = "com.example.MainKt"
// nativeDistributions { ... } reste identique
}Le point d'entrée dans main suit le même échange : application { Window(...) } devient
nucleusApplication { DecoratedWindow(...) }. Voir Migration depuis Compose Desktop.
Écrire l'application
Créez 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")
}
}
}Le point d'entrée nucleusApplication démarre le runtime Nucleus et ouvre une DecoratedWindow —
une fenêtre Compose avec une barre de titre native.
NucleusBackend.Auto (la valeur par défaut) choisit Tao quand decorated-window-tao est sur
le classpath, et se rabat sur le backend AWT déprécié sinon. Forcez un backend avec
NucleusBackend.Tao. Voir Backends.
Lancer l'application
./gradlew runUne fenêtre native s'ouvre avec une barre de titre personnalisée — dessinée par Tao sous Linux et Windows, et par le système sur macOS.
Empaqueter l'application
./gradlew packageDistributionForCurrentOSL'installateur est écrit dans build/compose/binaries/main/<format>/ : un .dmg sur macOS, un
.msi sur Windows et un .deb sur Linux. Ajoutez des formats en étendant targetFormats(...).
Voir Configuration.
Et ensuite
- Project setup — organisation multi-module, propriétés Gradle et config JDK.
- Configuration — le DSL
nucleus { }complet. - Architecture — ce qui tourne sous votre fonction
main.