Jewel — IntelliJ Platform
The IntelliJ Platform look for cross-platform developer tooling. Light, dark, and the same Composables JetBrains ships.
When you're building a developer tool — a database client, a build dashboard, a code review app — Material is the wrong vocabulary. Jewel is JetBrains' design system for the IntelliJ Platform. The Nucleus Jewel toolkit wires it into DecoratedWindow so you get the IDE look on every OS.
TL;DR
- Same
DecoratedWindowAPI, Jewel-styled title bar and content. - Light and dark themes follow the system.
- Works on Tao and AWT backends — pick the runtime, not the API.
- Pairs naturally with
org.jetbrains.jewelwidgets inside the window.
Install
dependencies {
implementation("dev.nucleusframework:nucleus.nucleus-application:<version>")
implementation("dev.nucleusframework:nucleus.decorated-window-tao:<version>")
implementation("dev.nucleusframework:nucleus.decorated-window-jewel:<version>")
// and the Jewel theme module of your choice
implementation("org.jetbrains.jewel:jewel-int-ui-standalone-243:<version>")
}Quickstart
import androidx.compose.foundation.layout.*
import androidx.compose.runtime.*
import androidx.compose.ui.Modifier
import dev.nucleusframework.application.*
import dev.nucleusframework.window.jewel.*
import org.jetbrains.jewel.foundation.theme.JewelTheme
import org.jetbrains.jewel.intui.standalone.theme.IntUiTheme
fun main() = nucleusApplication {
IntUiTheme(isDark = isSystemInDarkMode()) {
JewelDecoratedWindow(onCloseRequest = ::exitApplication, title = "Tools") {
JewelTitleBar { _ -> /* header widgets */ }
Box(Modifier.fillMaxSize()) { /* Jewel widgets inside */ }
}
}
}How it works
JewelDecoratedWindow is a thin Composable wrapper around DecoratedWindow. It reads JewelTheme.globalColors and derives a TitleBarStyle / DecoratedWindowStyle that match — caption-button glyphs, border colour, content padding. Inside, you compose with regular Jewel widgets (Text, DefaultButton, OutlinedButton, lazy lists, etc.).
The rememberJewelWindowStyle() and rememberJewelTitleBarStyle() helpers expose the derived styles if you want to build your own wrappers — say, a single Composable that swaps Jewel for Material based on a feature flag.
The module sits on top of decorated-window-core and a backend (-tao, -jbr, or -jni). Pair it with -tao for the smallest GraalVM image and full Wayland support.
Reference
JewelDecoratedWindow(...)— Jewel-styled window.JewelDecoratedDialog(...)— modal variant.JewelTitleBar/JewelDialogTitleBar— title bar slots.rememberJewelWindowStyle(): DecoratedWindowStylerememberJewelTitleBarStyle(): TitleBarStyle
Need a tabbed tool window with editor-like splits? Pair this toolkit with Jewel's HorizontalSplitLayout / VerticalSplitLayout inside the window content. Same IDE feel, your domain.