gohud

Three layers

← Theming

A preset bundles all three. Fields you leave empty fall back to the defaults.

LayerDecidesHow 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
Why a Theme alone is not enough. Rounded is the only corner 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

PresetPanelsSkin · icons
default_dark · default_lightRounded StyleBoxFlat panels on a graded shadow scale; primary buttons lift and sink when pressedGoSkin · 84 default icons
scifi_dark · scifi_lightChamfered GoStyleBoxCut panels with a neon edge and glow; GoStyleBoxBracket focus marksGoSkinSciFi — hexagonal joystick · default icons
medieval_dark · medieval_lightForged GoStyleBoxMedieval frames — iron and leather, or parchment — with rivets and corner ornaments on menusGoSkinMedieval · 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.

Medieval Iron character, inventory and quest interfaces
Iron and leather
Medieval Parchment character, inventory and quest interfaces
Parchment and ink

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.

What the suite checks for both variants. The medieval skin is selected; menu and HUD panels are forged frames, with the ornament on menus only; titles use Cinzel while body text keeps the inherited font; engraved icons import as 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.

SettingEffect
shape.material0: iron · 1: leather · 2: parchment. Controls the surface marks.
shape.grain_alphaTexture opacity. Use 0 for a clean surface.
shape.ornament_scale · shape.bevel_strengthMenu corner ornament size and bevel highlight intensity.
shape.fontsMap title, subtitle, caption, body and button roles to addon-local res:// font files. Omitted roles keep their inherited font.
skin.dialsQuick-slot radius, rivet visibility, grain and highlight. The full table below lists each dial.