k.KAWAKIDOCSBack to site
Documentation menu

KAWAKI DOCS / LUA · CLIENT

Markdown

theme

Colors follow the active theme, including the fade while it switches, so read them every frame instead of caching them.

Function Returns
theme.color(role) Current ARGB color of a role; errors on an unknown role
theme.colors() Table of every role to its color
theme.name() Id of the active theme, e.g. "default"
theme.list() Ids of all installed themes, built-ins first
theme.set(name) Activates a theme and saves the choice; false if there is no such id
theme.set_color(role, color, name?) Recolors one role of a custom theme, the active one by default
theme.set_colors(colors, name?) Recolors several roles at once from a { role = color } table

set_color and set_colors save the theme to disk and sync it like an edit in the theme editor, so call them on a change, not every frame. Built-in themes can't be edited — they error, as do an unknown role or theme id. Clone a built-in in the theme manager first and edit the copy.

Roles

Group Roles
Backgrounds surface_base, surface_subtle, surface_default, surface_elevated, surface_highest
Borders border_default, border_subtle, border_active, border_emphasis
Controls control_active, control_inactive, control_knob_active, control_knob_inactive
Text text_primary, text_secondary, text_subtle, text_faint
Accent icon_brand, logo_brand, status_success, status_danger
Chat chat_prefix, chat_body
Effects window_shadow, scrim, selection_highlight, overlay_hairline

Example

module:event("render_2d", function(render)
    render.rect(8, 8, 120, 24, render.paint(theme.color("surface_elevated")), 7)
    render.text("kawaki", 16, 14, 9, render.paint(theme.color("text_primary")))
end)

Recolor the accent of the active custom theme:

theme.set_colors({
    icon_brand = 0xFF967AD8,
    chat_prefix = 0xFF967AD8,
    control_active = 0xFF967AD8,
})