Nucleus
Window & toolkits

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 DecoratedWindow API, 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.jewel widgets inside the window.

Install

build.gradle.kts
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(): DecoratedWindowStyle
  • rememberJewelTitleBarStyle(): 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.