Gruvppuccin

Warm earthy tones meet modern pastels. One IntelliJ theme, 33 variants.

33 Variants 6 Accents 3 UI Styles 28 File Icons
Star on GitHub

JetBrains Marketplace listing coming soon

IntelliJ IDEA — Gruvppuccin Macchiato
Theme.kt
Settings.kt
data class Theme(
    val name: String,
    val dark: Boolean = true,
    val accents: List<Color> = emptyList(),
) {
    fun blend(other: Theme, ratio: Double): Theme {
        val mixed = accents.zip(other.accents) { a, b ->
            a.lerp(b, ratio)
        }
        return copy(name = "$name x ${other.name}", accents = mixed)
    }

    companion object {
        const val VERSION = 33
    }
}
• main 4 spaces
Kotlin UTF-8 LF

The Journey

It started with Notepad 2 and Dreamweaver. The default colors were never quite right, so I changed them.

Through Sublime Text's elegance, Vim's austerity, and the glow of VS Code at 2am — I never once accepted what I was given.

Decades of tweaking hex codes. Decades of "almost right."

Gruvbox gave me warmth. Catppuccin gave me clarity. I needed both.

Warmth meets clarity

Gruvbox's earthy tones. Catppuccin's modern precision. One blend.

Theme.kt — Gruvbox
data class Theme(
    val name: String,
    val accents: List<Color>,
) {
    fun blend(other: Theme): Theme {
        val mixed = accents.zip(other.accents)
            { a, b -> a.lerp(b, 0.6) }
        return copy(accents = mixed)
    }
}

Warm. Familiar.

Theme.kt — Gruvppuccin
data class Theme(
    val name: String,
    val accents: List<Color>,
) {
    fun blend(other: Theme): Theme {
        val mixed = accents.zip(other.accents)
            { a, b -> a.lerp(b, 0.6) }
        return copy(accents = mixed)
    }
}

The best of both.

Theme.kt — Catppuccin
data class Theme(
    val name: String,
    val accents: List<Color>,
) {
    fun blend(other: Theme): Theme {
        val mixed = accents.zip(other.accents)
            { a, b -> a.lerp(b, 0.6) }
        return copy(accents = mixed)
    }
}

Modern. Crisp.

See It In Action

Real code. Real warmth. The colors you'll live in.

data class Theme(
    val name: String,
    val dark: Boolean = true,
    val accents: List<Color> = emptyList(),
) {
    fun blend(other: Theme, ratio: Double): Theme {
        val mixed = accents.zip(other.accents) { a, b ->
            a.lerp(b, ratio)
        }
        return copy(name = "$name x ${other.name}", accents = mixed)
    }

    companion object {
        const val VERSION = 33
    }
}

33 Variants

Three families. 11 color palettes. Each available in Classic, Island, and Soft Island.

Gruvppuccin

Gruvbox × Catppuccin

The original blend. Warm earthy tones meet modern pastels.

Gruvbark

Gruvbox × Embark

Earthy warmth meets cosmic synth-wave at 30-70% blend ratios.

Gruvppuccin Embark

Gruvppuccin × Embark

The best of three worlds. Gruvppuccin accents on Embark's deep bases.

Three UI Styles, One Theme

Theme.kt
Settings.kt
build.gradle
data class Theme(
  val name: String
Flat panels, sharp edges — the traditional look

Instant. No restart.

Change accent colors, toggle bold keywords, adjust corner radii — all in real time.

Choose your accent

Sapphire — Functions, links, active tabs

Per-element accent overrides — tabs, checkboxes, caret, breadcrumbs

4 built-in presets + save your own custom configurations

Bold keywords across 12 keyword types in all languages

Corner radius — component (0-20) and Island arc (0-30)

Compact mode for maximized viewport density

Theme.kt
Settings.kt
Palette.kt
fun createTheme(config: ThemeConfig): Theme {
    val palette = blendColors(
        config.primary,
        config.secondary,
        0.6
    )
    val icons = loadIconPack(config.dark)
    val accents = resolveAccents(config.accent)

    return Theme(palette, icons, accents)
}

Every detail, considered

Features that respect how you work.

28 file icons, dark & light

Auto-detects theme darkness. Accent-customizable.

Kt
Js
Ts
Py
Rs
Go
Rb
Jv
C
C++
Ht
Css
Yml
Sh

Bold keywords

off

fun create() {}

on

fun create() {}

12 keyword types across all languages.

Compact mode

src/main/kotlin
src/main/kotlin

Tighter padding for more visible code.

Corner radius

Island arc (0-30) and component arc (0-20).

Presets

Warm Focus
High Contrast
Soft Island

One click. Save your own, too.

Three color families

Gruvppuccin blends Gruvbox and Catppuccin. Gruvbark adds Embark. Gruvppuccin Embark takes it even further — earthy warmth meets cosmic synth-wave.

Gruvbark Nebula Gruvbark Void Gruvppuccin Nebula Gruvppuccin Void Nova Haze +2 more light variants

Get Early Access

Star the repo. You'll be first to know.

Star on GitHub

JetBrains Marketplace listing coming soon