For the complete documentation index, see llms.txt. This page is also available as Markdown.

Themes

A single line of code restyles every Gum Forms control. Drop in a built-in theme — or author your own — and the same UI takes on a completely different look without changing any of your control code.

DarkPro
Bubblegum
Neon

DarkPro theme

Bubblegum theme

Neon theme

Retro 95
Forest Glade
Editor

Retro95 theme

Forest Glade theme

Editor theme

Here are six of Gum's built-in themes, each rendering the same sample settings panel. See Available themes below for the full catalog, with usage for each.

Introduction

A theme is a per-backend NuGet package that restyles every default Gum Forms control with a single call. After calling GumService.Default.Initialize(...), calling <Name>Theme.Apply swaps the default visuals for the theme's visuals — every Button, TextBox, CheckBox, ComboBox, etc. created afterward renders in that theme's style.

Themes ship one NuGet per rendering backend (for example Gum.Themes.DarkPro.MonoGame, Gum.Themes.DarkPro.Kni, and Gum.Themes.DarkPro.Raylib) so each package only carries the assets and references it needs.

Usage

Install the package matching your runtime, then call the theme's Apply after Initialize:

using Gum.Themes.DarkPro;

protected override void Initialize()
{
    GumService.Default.Initialize(this, DefaultVisualsVersion.Newest);

    DarkProTheme.Apply();

    var button = new Button();
    button.Text = "Click Me";
}

The pattern is the same for every theme — only the using namespace, NuGet package, and Apply call change. Pick a theme from the sections below, then copy the tab matching your rendering backend for a ready-to-paste install command and initialization snippet.

A few things to keep in mind:

  • Apply one theme per app. Apply mutates the default visuals — calling more than one theme's Apply in the same process produces a mix of leftover state.

  • Call Apply after Initialize and before constructing Forms controls. Controls capture their visuals at construction time, so any control built before Apply will keep the default styling.

  • Themes compose with per-control styling. For tweaking a single control on top of a theme, see Code-Only Styling and Control Customization in Gum Tool.

Customizing a theme's colors and fonts

Every theme exposes a mutable XyzStyling.ActiveStyle object — its own analog of V3's Styling.ActiveStyle, and mutated the same way: set properties on Colors/Text before calling the theme's Apply(), not after. Controls created after Apply() pick up the change; this is the same "mutate before construct" creation-order rule that page documents for V3's own styling.

Every theme's Colors exposes the same four guardrail properties — TextPrimary, TextMuted, Primary, and Accent — which also flow into V3's own Styling.ActiveStyle.Colors for any stock, un-restyled control the theme leaves in place. On some themes these are the theme's real, settable color names directly. On others — where the theme already had its own color vocabulary before the guardrail existed — they're get-only aliases onto a differently named real property; for example Forest Glade's Colors.Accent is a read-only alias for Colors.LeafBright. Assign the theme's real property in that case; the guardrail alias reflects the change automatically, the same "reactivity is free" behavior as any other derived color. The "How to customize" example under each theme below names the real, settable property to use.

Text.FontFamily selects among already-registered font families — it doesn't register a new one. Each theme registers its bundled TTFs once, inside Apply() / RegisterBundledFonts(), under a fixed family name exposed as a BundledFontFamily constant (e.g. DarkProTheme.BundledFontFamily). Reassigning Text.FontFamily only works if the family you name is already registered this way — either one of the theme's own bundled constants, or a font already installed on the host system, such as "Consolas" on Windows. KernSmith can resolve an installed system font by name without any explicit registration step, the same as the Consolas example on the Styling Using ActiveStyles page.

Available themes

Bubblegum

Bubblegum theme preview
The Bubblegum theme applied to a sample settings panel.

Pastel pink casual-game look with rounded pill buttons and soft drop shadows. Bundled font: Nunito.

How to customize

DarkPro

DarkPro theme preview
The DarkPro theme applied to a sample settings panel.

Modern code-editor dark theme with a VS Code / JetBrains feel. Bundled fonts: DM Mono (body) and DejaVu Sans Mono (icons).

How to customize

Editor

Editor theme preview
The Editor theme applied to a sample settings panel.

Flat dark editor/tool chrome — intended for tool and editor interfaces rather than in-game UI. Ships with two extra controls beyond the standard Forms set: PropertyGridVisual and Expander. See the Editor Theme page for details on those controls.

How to customize

Forest Glade

Forest Glade theme preview
The Forest Glade theme applied to a sample settings panel.

Lush green nature-themed look with gradient leaf-shaped buttons (sharp top-left / bottom-right corners, rounded top-right / bottom-left), a deep canopy background, and soft text drop shadows. Bundled font: Nunito.

For the intended look, clear the back buffer to ForestGladeStyling.ActiveStyle.Colors.CanopyDeep.

How to customize

Hazard

The Hazard theme applied to a sample settings panel.

Industrial space-salvage HUD inspired by Hardspace: Shipbreaker — signature hazard-yellow on warm near-black, muted-gold borders, and square-cornered chrome. Pressing a button flashes the full hazard-yellow accent with black text. Bundled fonts: Saira Condensed (body and labels) and DejaVu Sans Mono (icons).

For the intended look, clear the back buffer to HazardStyling.ActiveStyle.Colors.Background (#0A0A08).

How to customize

Meadow

The Meadow theme applied to a sample settings panel.

Cozy cottagecore look with chunky sky-blue pill buttons (flat "stacked card" drop shadow), dashed-outline cream panels, sage selection accents, and coral sliders. Bundled fonts: Baloo 2 (display), Quicksand (body), and DejaVu Sans Mono (icons).

For the intended look, clear the back buffer to MeadowStyling.ActiveStyle.Colors.Cream (#F7EDD6).

How to customize

Neon

Neon theme preview
The Neon theme applied to a sample settings panel.

Cyberpunk / neon-glow dark theme with a saturated cyan accent and a Gaussian glow on focus. Bundled fonts: Share Tech Mono (body), Orbitron (titles), and DejaVu Sans Mono (icons).

For the intended look, clear the back buffer to NeonStyling.ActiveStyle.Colors.Background (#060612).

How to customize

Retro95

Retro95 theme preview
The Retro95 theme applied to a sample settings panel.

Windows 95 "Classic" battleship-gray chrome with raised/sunken bevels and navy selection. Bundled fonts: Nunito (MS Sans Serif stand-in) and DejaVu Sans Mono (icons).

How to customize

Fonts and licensing

All bundled fonts are SIL Open Font License or the Bitstream Vera / DejaVu license — both permit redistribution. License files ship inside each NuGet.

Supported backends

Themes are published for MonoGame, KNI, and Raylib (Raylib in preview — see the note under Usage). If you'd like to see a theme published for FNA or Skia, please open an issue or start a discussion on the Gum GitHub repo.

Requirements

  • .NET 8.0+

  • MonoGame 3.8+ (for the MonoGame packages), KNI (for the KNI packages), or Raylib (for the Raylib packages)

  • Gum.MonoGame, Gum.Kni, or Gum.raylib

  • KernSmith.MonoGameGum — optional, only needed when using runtime in-memory font generation

Last updated

Was this helpful?