A preset bundles all three. Fields you leave empty fall back to the defaults.
| Layer | Decides | How you change it |
|---|---|---|
Theme |
Colours, sizes, text scale, and the shape of everything the engine draws — button panels, inputs, tabs, toggle artwork | Author a .tres, or generate one with tools/make_theme.py |
GoSkin |
The shape of everything code draws — the joystick, quick-slot faces, the coach-mark ring, chips, skeletons, dividers, section headings | Subclass it and override only the methods you care about |
GoIconSet |
Icons by name — 84 default drawings, or the medieval set's 16 engraved drawings over them. A texture pack or an icon font; the calling code is identical either way | Supply a set, or override just a few names |
StyleBoxFlat has —
set the radius to zero and you get a right angle; there is nothing in between. Diagonally cut corners,
a single thickened edge, an outer glow: the engine draws none of them. And the joystick and coach mark
are drawn in _draw(), where a theme cannot reach at all.
Picking one
GoUi.use_preset(GoThemePresets.SCIFI_DARK)
That one line swaps theme, skin and icons. From the editor, use
Project Settings → Gohud → Theme → Preset; from a settings resource, GoConfig.preset.
Keeping one field your own
GoUi.use_preset(GoThemePresets.SCIFI_DARK)
GoUi.config.icons = my_icons # your icons, the preset's everything else
Setting theme, skin or icons explicitly wins over the preset.
The six built-in presets
| Preset | Panels | Skin · icons |
|---|---|---|
default_dark · default_light | Rounded StyleBoxFlat panels on a graded shadow scale; primary buttons lift and sink when pressed | GoSkin · 84 default icons |
scifi_dark · scifi_light | Chamfered GoStyleBoxCut panels with a neon edge and glow; GoStyleBoxBracket focus marks | GoSkinSciFi — hexagonal joystick · default icons |
medieval_dark · medieval_light | Forged GoStyleBoxMedieval frames — iron and leather, or parchment — with rivets and corner ornaments on menus | GoSkinMedieval · 16 engraved icons over the defaults |
Medieval: iron, leather and parchment
medieval_dark pairs dark iron and leather with antique gold. medieval_light
uses parchment and ink. Both use GoSkinMedieval, the existing widgets, and 16 original
icons with engraving details; navigation icons fall back to the original set.
GoUi.use_preset(GoThemePresets.MEDIEVAL_DARK)
# Or: GoUi.use_preset(GoThemePresets.MEDIEVAL_LIGHT)
Choose the preset before creating your UI. Explicit GoConfig.theme,
skin or icons overrides still take precedence. Open
res://addons/gohud/examples/medieval/medieval.tscn and press F6 for a working
character sheet, satchel and quest journal. Its buttons switch variants and open item details.


Menu frames have a rivet and small corner ornament; the always-visible HUD keeps a quiet edge.
HP, mana and stamina use red, blue and olive fills. Cinzel is scoped to titles and subtitles;
body text keeps the host/default font. The bundled font includes its license at
assets/fonts/cinzel/OFL.txt.
The engraved set redraws bag, book, box, coin, crown,
flag, heart, key, map, potion, shield,
star, sword and user, and adds scroll and seal.
Every other name falls back to the default set, so close and settings keep their default
drawings in every preset. Cinzel covers Latin script; give localized headings a font of their own through
shape.fonts.
DPITexture; a real quick slot uses the skin; changing a copied skin's dials reaches
the slot without touching the preset; and switching back restores the default and sci-fi geometry.
Make a kingdom of your own
python3 addons/gohud/tools/new_theme.py kingdom --from medieval_dark
# Edit themes/palettes/kingdom.json, then:
python3 addons/gohud/tools/make_theme.py kingdom
godot --headless --path . --import
# In GDScript, before creating the widgets:
GoUi.use_preset(&"kingdom")
JSON themes can inherit other JSON themes. Omitted values keep their parent's settings; circular inheritance is rejected. The generated preset keeps its parent's icon set.
| Setting | Effect |
|---|---|
shape.material | 0: iron · 1: leather · 2: parchment. Controls the surface marks. |
shape.grain_alpha | Texture opacity. Use 0 for a clean surface. |
shape.ornament_scale · shape.bevel_strength | Menu corner ornament size and bevel highlight intensity. |
shape.fonts | Map title, subtitle, caption, body and button roles to addon-local res:// font files. Omitted roles keep their inherited font. |
skin.dials | Quick-slot radius, rivet visibility, grain and highlight. The full table below lists each dial. |