DatumHuePlatform v0.0.24datumhue.com
Contents

theme

Theme format

A theme is a small text document with up to four blocks: colors, metrics, shaders, and widget_shaders. Every block is optional and any block may set only some of its keys — unset keys keep the active theme's value, so a theme can be a tiny override or a full repaint. Unknown keys are ignored.

Colors are hex literals: 0xRRGGBB for an opaque color, 0xRRGGBBAA where a shader wants alpha.

Load a theme file and apply it:

lua
local theme = my_dir:read("sunset.theme"):theme()
datumhue.theme.pin(theme)

colors 68

Each line is a token name followed by an 0xRRGGBB hex color:

kdl
colors {
    panel_background 0x343f44
    accent_primary 0xa7c080
}

The Dark / Light columns are the built-in Everforest values each token resolves to when a theme leaves it unset.

TokenGroupDarkLightDescription
panel_backgroundSurfaces0x343f440xf4f0d9Panel / card fill.
panel_borderSurfaces0x4752580xe6e2ccPanel / card border.
surface_sunkenSurfaces0x2d353b0xfdf6e3Recessed surface: wells, insets, trays.
surface_raisedSurfaces0x4f585e0xe0dcc7Raised surface: headers; carries text_primary only.
surface_overlaySurfaces0x56635f0xbdc3afA non-text overlay.
selection_backgroundSurfaces0x543a480xeaedc8Selection / row-highlight background.
focus_ringSurfaces0xb1cb8a0x5d6b00Keyboard-focus ring outline.
button_normalButtons0x3d484d0xefebd4Button rest fill.
button_hoverButtons0x4752580xe6e2ccButton hover fill.
button_pressedButtons0x343f440xf4f0d9Button pressed fill.
button_borderButtons0x9ea8af0x817d6aButton edge, while the button takes the theme's fills.
button_textButtons0xd8cbae0x55636bButton label text.
button_disabledButtons0x2d353b0xfdf6e3Disabled button fill.
button_text_disabledButtons0x7a84780xa6b0a0Disabled button label text.
checkbox_backgroundCheckbox0x2d353b0xfdf6e3Checkbox box fill when unchecked.
checkbox_background_checkedCheckbox0xb1cb8a0x5d6b00Checkbox box fill when checked.
checkbox_borderCheckbox0x89939a0x8b8774Checkbox box border.
checkbox_markCheckbox0x2d353b0xfdf6e3Checkbox mark drawn inside when checked.
slider_trackSlider0x2d353b0xfdf6e3Slider track groove.
slider_fillSlider0xb1cb8a0x5d6b00Slider filled portion left of the thumb.
slider_thumbSlider0x7f898f0x8e8a77Slider draggable thumb.
radio_borderRadio0xb8c6bc0x5c675aRadio option circle border (unselected).
radio_markRadio0xb1cb8a0x5d6b00Radio inner dot + selected circle border.
scrollbar_trackScrollbar0x2d353b0xfdf6e3Scrollbar track gutter.
scrollbar_thumbScrollbar0x4f585e0xe0dcc7Scrollbar draggable thumb.
list_row_selectedList0x4250470xf0f1d2Selected list row background.
list_row_activeList0xb1cb8a0x5d6b00Active (focused) list row outline.
input_backgroundText Input0x2d353b0xfdf6e3Text input field background.
input_borderText Input0x4f585e0xe0dcc7Text input field border.
input_textText Input0xd8cbae0x55636bEntered text.
input_placeholderText Input0x919f950x697467Placeholder text shown when empty.
input_cursorText Input0xb1cb8a0x5d6b00Text input caret.
popover_backgroundOverlay0x2d353b0xfdf6e3Popover panel background.
popover_borderOverlay0x56635f0xbdc3afPopover panel border.
menu_backgroundOverlay0x3d484d0xefebd4Dropdown menu popup background.
menu_borderOverlay0x56635f0xbdc3afDropdown menu popup border.
text_primaryText0xd8cbae0x55636bPrimary text.
text_secondaryText0xb8c6bc0x5c675aSecondary / muted text.
text_disabledText0x7a84780xa6b0a0Disabled / faint text.
accent_primaryAccents0xb1cb8a0x5d6b00Primary accent (brand green).
accent_secondaryAccents0x93d0a10x007351Secondary accent.
accent_dataAccents0xffb08c0xa24b00Data-point accent (brand orange).
accent_tertiaryAccents0xefb0ce0xa93688Tertiary accent.
successStatus0xb1cb8a0x5d6b00Success foreground.
warningStatus0xdebf810x845d00Warning foreground.
errorStatus0xffadac0xc51d28Error foreground.
infoStatus0x91cec50x006b99Info foreground.
success_backgroundStatus surfaces0x4250470xf0f1d2Muted success banner surface.
warning_backgroundStatus surfaces0x4d4c430xfaedcdMuted warning banner surface.
error_backgroundStatus surfaces0x5140450xfde3daMuted error banner surface.
info_backgroundStatus surfaces0x3a515d0xe9f0e9Muted info banner surface.
accent_tertiary_backgroundStatus surfaces0x4a444e0xfae8e2Muted tertiary-accent surface.
statusline_primaryStatus bar0xa7c0800x93b259Status bar, primary state.
statusline_secondaryStatus bar0xd3c6aa0x708089Status bar, secondary state.
statusline_tertiaryStatus bar0xe67e800xe66868Status bar, tertiary state.
chart_axisChart0xb8c6bc0x5c675aAxis / tick lines.
chart_gridChart0x4752580xe6e2ccGridlines.
chart_axis_labelChart0x9da9a00x5f6e5fTick labels, chart text, and marks given no color.
chart_backgroundChart0x232a2e0xefebd4Plot-area background.
chart_legend_backgroundChart0x2d353b0xfdf6e3Legend backing (translucent).
chart_legend_borderChart0x4752580xe6e2ccLegend border.
chart_legend_textChart0xd8cbae0x55636bLegend text.
syntax_keywordSyntax0xffadac0xc51d28Keywords.
syntax_stringSyntax0xb1cb8a0x5d6b00String literals.
syntax_numberSyntax0xefb0ce0xa93688Number literals.
syntax_commentSyntax0xb8c6bc0x5c675aComments.
syntax_functionSyntax0x91cec50x006b99A name being called.
syntax_builtinSyntax0x93d0a10x007351The engine's own names.

metrics 20

Each line is a token name followed by one number, in pixels:

kdl
metrics {
    padding_medium 10
    border_radius 6
}

A token the theme leaves out takes the default for the app's control density (datumhue.theme.density); a value the theme sets applies at every density.

TokenGroupStandardTouchDescription
padding_smallSpacing4 px8 pxSmall inner padding.
padding_mediumSpacing8 px12 pxMedium inner padding.
padding_largeSpacing16 px20 pxLarge inner padding.
input_padding_verticalSpacing6 px12 pxVertical padding inside a text input field.
gap_smallSpacing4 px8 pxSmall gap between items.
gap_mediumSpacing8 px12 pxMedium gap between items.
gap_largeSpacing16 px20 pxLarge gap between items.
border_widthBorders1 px1 pxDefault border width.
border_radiusBorders4 px8 pxDefault corner radius.
font_size_smallTypography12 px14 pxSmall font size.
font_size_normalTypography14 px16 pxNormal font size.
font_size_largeTypography16 px18 pxLarge font size.
font_size_headingTypography20 px22 pxHeading / section-title font size.
font_size_titleTypography24 px26 pxDialog and modal title font size.
font_size_displayTypography28 px32 pxLargest display font size (top-level document headings, hero text).
font_weight_normalTypography500 wght500 wghtBody text weight on the variable axis.
font_weight_headingTypography600 wght600 wghtHeading and title weight on the variable axis.
button_min_widthButtons80 px96 pxMinimum button width.
button_min_heightButtons32 px48 pxMinimum button height.
scrollbar_widthScrollbar16 px24 pxRoom a scroll bar takes at a scrolling element's edge, over its padding and content. Pad that edge at least this much to keep content clear of the bar.

shaders 14

Each child of shaders is a named GPU material. type picks one of the shader kinds below; color1 / color2 are 0xRRGGBBAA hex (some kinds read the alpha), param1 / param2 are numbers whose meaning depends on the type, and animated (a #true / #false flag) freezes or runs the time-driven kinds. An optional fallback (0xRRGGBB) is the solid color shown if the material can't render; it defaults to color1.

kdl
shaders {
    frosted {
        type "glassmorphism"
        color1 0xffffff40
        color2 0xa7c080ff
        param1 0.5
        param2 0.2
    }
}

The parameter columns name what each slot means for that type; a blank cell means the type ignores that slot. The Anim column marks the time-driven kinds.

TypeAnimcolor1color2param1param2Description
solidFill colorFlat fill.
gradientStart colorEnd colorAngle in radians (0 = left-to-right)Linear gradient between two colors.
radial_gradientInner / center colorOuter / edge colorCenter offset X (UV; 0 = centered)Center offset Y (UV; 0 = centered)Radial gradient from a center point.
animated_glowyesBase colorGlow colorGlow intensityPulse speedBase color under a pulsing glow.
glassmorphismGlass tint (alpha = transparency)Border highlightBorder width (0-1)Noise intensityFrosted-glass panel with a highlighted border.
scanlineyesBase color (alpha = scanline darkness)Beam tintScanline densityBeam sweep speedCRT scanlines with a moving phosphor beam.
noiseBase colorNoise tintNoise intensityNoise scale (higher = finer grain)Static value noise over a base color.
borderBorder colorFill colorBorder width (UV)Corner radius (UV)Rounded border over a fill.
checkerboardFirst colorSecond colorTile count acrossTwo-color checkerboard.
stripeStripe colorGap colorStripe countAngle in radians (0 = horizontal)Parallel stripes.
dissolveVisible colorEdge glow colorThreshold (0 = visible, 1 = dissolved)Edge widthThreshold burn / dissolve with a glowing edge.
outlineFill colorOutline colorOutline width (0-1)Glow falloffFilled shape with a glowing outline.
waveyesBase colorBlend colorWave amplitudeWave frequencyTime-distorted wave blend between two colors.
color_rampStart colorEnd color0 = linear, 1 = steppedStep count (when stepped)Color ramp, linear or stepped.

widget_shaders 2

Each line binds a widget slot to a material defined in the shaders block, so widgets of that kind paint with the material unless they set their own. Slots left unset use a solid fill:

kdl
widget_shaders {
    button "frosted"
    panel "frosted"
}
SlotDescription
buttonDefault shader material for buttons.
panelDefault shader material for panels.

datumhue.com

(c) 2026 Shuusei AB. Quote excerpts of this manual, with attribution to DatumHue, in your own documentation, tutorials, course materials, reviews, and other writing or video. Republishing it in whole or in substantial part needs written permission: support@datumhue.com.

Victor Mono is licensed under the SIL Open Font License 1.1
Copyright (c) 2024, Rune Bjørnerås (https://github.com/rubjo)

This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL


-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------

PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.

The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.

DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.

"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).

"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).

"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.

"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.

PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:

1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.

2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.

3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.

4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.

5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.

TERMINATION
This license becomes null and void if any of the above conditions are
not met.

DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

Try

    ↑↓ selectEnter openTab filter

    Settings

    Theme
    Text
    Print

    Keyboard shortcuts

    / or Ctrl KSearch
    ↑ ↓ EnterPick a result
    TabNext result filter
    j kNext or previous entry
    [ ]Previous or next page
    yCopy a link to the current entry
    ?These shortcuts
    EscClose

    On this page