Design systems natifs
macOS 26, Fluent, Yaru, Jewel et Material restylent la même fenêtre Nucleus pour le langage de design de chaque bureau.
Nucleus ouvre la fenêtre OS ; les design systems stylent le chrome et les widgets. macOS 26, Fluent et Yaru sont des bibliothèques Compose Multiplatform open-source séparées sur Maven Central, chacune avec une fenêtre décorée basée sur Nucleus pour le desktop. Jewel et Material restent dans le dépôt Nucleus.
Les toolkits
| Toolkit | Natif sur | Artefacts / module | Statut |
|---|---|---|---|
| macOS 26 | macOS Tahoe | dev.nucleusframework:compose-macos-ui | Disponible (v1.0.0) |
| Fluent | Windows 11 | dev.nucleusframework.composefluent:fluent + decorated-window-fluent | Disponible (v1.0.0) |
| Yaru | Ubuntu / GNOME | dev.nucleusframework.yarucompose:yaru + yaru-decorated-window | Disponible (v1.0.1) |
| Jewel | Multiplateforme | nucleus.decorated-window-jewel | Disponible (avec Nucleus) |
| Material 2 | Repli | nucleus.decorated-window-material2 | Disponible (avec Nucleus) |
| Material 3 | Repli | nucleus.decorated-window-material3 | Disponible (avec Nucleus) |
Les trois dépôts de design system sont versionnés indépendamment de Nucleus. Épinglez-les séparément ; ils dépendent de Nucleus 2.2+ pour la fenêtre Tao sur desktop.
Galeries live :
Choisir un toolkit
plugins {
id("dev.nucleusframework")
}
dependencies {
implementation("dev.nucleusframework:compose-macos-ui:1.0.0")
}import dev.nucleusframework.application.nucleusApplication
import dev.nucleusframework.macoscompose.window.MacosDecoratedWindow
fun main() = nucleusApplication {
MacosDecoratedWindow(onCloseRequest = ::exitApplication, title = "Mail") {
// MacosTheme + composants à l'intérieur du contenu de la fenêtre
App()
}
}Voir toolkit macOS 26 et le README du dépôt.
dependencies {
implementation("dev.nucleusframework.composefluent:fluent:1.0.0")
implementation("dev.nucleusframework.composefluent:decorated-window-fluent:1.0.0")
}import dev.nucleusframework.application.nucleusApplication
import dev.nucleusframework.window.fluent.FluentDecoratedWindow
import dev.nucleusframework.window.fluent.FluentTitleBar
fun main() = nucleusApplication {
FluentDecoratedWindow(onCloseRequest = ::exitApplication, title = "Paramètres") {
FluentTitleBar { /* … */ }
App()
}
}Voir toolkit Fluent et compose-fluent-ui.
dependencies {
implementation("dev.nucleusframework.yarucompose:yaru-decorated-window:1.0.1")
}import dev.nucleusframework.application.nucleusApplication
import dev.nucleusframework.yarucompose.window.YaruDecoratedWindow
fun main() = nucleusApplication {
YaruDecoratedWindow(onCloseRequest = ::exitApplication, title = "Paramètres") {
// YaruTheme doit être dans le contenu de la fenêtre
App()
}
}Voir toolkit Yaru et yaru-compose-ui.
dependencies {
implementation("dev.nucleusframework:nucleus.nucleus-application:2.3.0")
implementation("dev.nucleusframework:nucleus.decorated-window-tao:2.3.0")
implementation("dev.nucleusframework:nucleus.decorated-window-jewel:2.3.0")
}import dev.nucleusframework.application.nucleusApplication
import dev.nucleusframework.window.jewel.JewelDecoratedWindow
import dev.nucleusframework.window.jewel.JewelTitleBar
fun main() = nucleusApplication {
JewelDecoratedWindow(onCloseRequest = ::exitApplication, title = "Outils") {
JewelTitleBar { state -> /* … */ }
MyContent()
}
}dependencies {
implementation("dev.nucleusframework:nucleus.nucleus-application:2.3.0")
implementation("dev.nucleusframework:nucleus.decorated-window-tao:2.3.0")
implementation("dev.nucleusframework:nucleus.decorated-window-material3:2.3.0")
}import dev.nucleusframework.application.nucleusApplication
import dev.nucleusframework.window.material.MaterialDecoratedWindow
import dev.nucleusframework.window.material.MaterialTitleBar
fun main() = nucleusApplication {
MaterialDecoratedWindow(onCloseRequest = ::exitApplication, title = "App") {
MaterialTitleBar { state -> /* … */ }
MyContent()
}
}Comment ça marche
macOS, Fluent et Yaru sont des design systems complets (widgets, thème, icônes) plus un
module de fenêtre desktop optionnel qui enveloppe le DecoratedWindow / Tao de Nucleus. Jewel
et Material dans ce dépôt sont uniquement des adaptateurs de chrome — vous choisissez
toujours la bibliothèque de widgets.
Sur desktop, placez le Theme du design system à l'intérieur du contenu de la fenêtre
décorée pour que les surfaces natives (verre, caption, Mica) suivent le thème de l'app.
Pour une mise en page plein fenêtre sans pack de design system, utilisez
WindowScaffold sur Tao.