Gruvppuccin

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

33 Variants 6 Accents 3 UI Styles 28 File Icons
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

Beyond the IDE

Gruvppuccin is a full ecosystem. Free, open-source themes for your favorite terminal tools.

Neovim

Editor

Oh My Posh

Prompt

fzf

Fuzzy finder

btop

System monitor

lazygit

Git TUI

lazydocker

Docker TUI

k9s

Kubernetes TUI

usql

SQL client

newsboat

RSS reader

Install Gruvppuccin

Available now on JetBrains Marketplace.

Install from Marketplace