Nucleus
Window & toolkits

Native design systems

macOS 26, Fluent, Yaru, Jewel and Material restyle the same Nucleus window for each desktop design language.

Nucleus opens the OS window; design systems style the chrome and the widgets. macOS 26, Fluent and Yaru ship as separate open-source Compose Multiplatform libraries on Maven Central, each with a Nucleus-backed decorated window for desktop. Jewel and Material adapters stay inside the Nucleus repository.

The toolkits

ToolkitNative toArtifacts / moduleStatus
macOS 26macOS Tahoedev.nucleusframework:compose-macos-uiAvailable (v1.0.0)
FluentWindows 11dev.nucleusframework.composefluent:fluent + decorated-window-fluentAvailable (v1.0.0)
YaruUbuntu / GNOMEdev.nucleusframework.yarucompose:yaru + yaru-decorated-windowAvailable (v1.0.1)
JewelCross-platformnucleus.decorated-window-jewelAvailable (with Nucleus)
Material 2Fallbacknucleus.decorated-window-material2Available (with Nucleus)
Material 3Fallbacknucleus.decorated-window-material3Available (with Nucleus)

The three design-system repos version independently of Nucleus. Pin them separately; they depend on Nucleus 2.2+ for the Tao window on desktop.

Live galleries:

Choose a toolkit

build.gradle.kts
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 + components live inside the window content
        App()
    }
}

See the macOS 26 toolkit page and the repo README.

build.gradle.kts
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 = "Settings") {
        FluentTitleBar { /* … */ }
        // FluentTheme + Mica / components
        App()
    }
}

See the Fluent toolkit page and compose-fluent-ui.

build.gradle.kts
dependencies {
    // Pulls yaru + Nucleus Tao transitively.
    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 = "Settings") {
        // YaruTheme must be inside the window content
        App()
    }
}

See the Yaru toolkit page and yaru-compose-ui.

build.gradle.kts
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 = "Tools") {
        JewelTitleBar { state -> /* … */ }
        MyContent()
    }
}
build.gradle.kts
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()
    }
}

How it works

macOS, Fluent and Yaru are full design systems (widgets, theme, icons) plus an optional desktop window module that wraps Nucleus DecoratedWindow / Tao. Jewel and Material in this repo are window chrome adapters only — you still pick the widget library yourself.

On desktop, apply the design-system Theme inside the decorated window content so native surfaces (glass, caption, Mica) can follow the app theme rather than the OS setting alone.

For full-window layouts and custom chrome without a design-system pack, use WindowScaffold on Tao.

What's next