ui-theming
SKILL.md
UI Theming
Theme resources, StyleBox styling, font management, and override system define consistent UI visual identity.
Available Scripts
global_theme_manager.gd
Expert theme manager with dynamic switching, theme variants, and fallback handling.
ui_scale_manager.gd
Runtime theme switching and DPI/Resolution scale management.
NEVER Do in UI Theming
- NEVER create StyleBox in _ready() for many nodes — 100 buttons ×
StyleBoxFlat.new()in_ready()? 100 duplicate objects. Create ONCE in theme resource, reuse via inheritance. - NEVER forget theme inheritance — Child Control with custom theme? Parent theme ignored. Set
themeon root Control, children auto-inherit unless overriding. - NEVER hardcode colors in StyleBox —
style.bg_color = Color(0.2, 0.3, 0.5)? Unmaintainable. Define colors in theme, reference viatheme.get_color("primary", "Button"). - NEVER use add_theme_override for global styles — Call
add_theme_*_override()on 50 nodes? Brittle. Define in Theme resource for automatic propagation. - NEVER skip corner_radius_all shortcut — Set 4 corner radii individually? Verbose. Use
corner_radius_all = 5for uniform corners (StyleBoxFlat only). - NEVER modify theme during rendering — Change theme in
_draw()OR_process()? Constant re-layout = performance tank. Load themes at initialization OR on user action only.
- Project Settings → GUI → Theme
- Create new Theme resource
- Assign to root Control node
- All children inherit theme
StyleBox Pattern
# Create StyleBoxFlat for buttons
var style := StyleBoxFlat.new()
style.bg_color = Color.DARK_BLUE
style.corner_radius_top_left = 5
style.corner_radius_top_right = 5
style.corner_radius_bottom_left = 5
style.corner_radius_bottom_right = 5
# Apply to button
$Button.add_theme_stylebox_override("normal", style)
Font Loading
# Load custom font
var font := load("res://fonts/my_font.ttf")
$Label.add_theme_font_override("font", font)
$Label.add_theme_font_size_override("font_size", 24)
Reference
Weekly Installs
1
Repository
thedivergentai/…c-skillsGitHub Stars
35
First Seen
Feb 9, 2026
Installed on
amp1
opencode1
kimi-cli1
codex1
github-copilot1
gemini-cli1