Skip to content
led-ticker

message widget

The message widget displays static text. It’s the most-used widget — most LED signs are 80% messages with a sprinkling of data widgets.

message with font_color = 'rainbow'
message with font_color = 'rainbow'

Minimal example

[[playlist.section.widget]]
type = "message"
text = "Hello, world!"
Option Type Default Description
text string required The text to display. Inline :slug: emoji are rendered as pixel art.
font string "6x12" BDF font name (e.g., "5x8", "6x12") or hires font (e.g., "Inter-Bold").
font_size int (BDF cell height) Real-pixel font size for hires fonts. Required if font is hires.
font_threshold int 0–255 128 Rasterization threshold for hires fonts. Lower = thicker glyphs.
font_color RGB list / string / table [255, 255, 0] Constant [r,g,b], "rainbow", "color_cycle", "random", or {style="gradient", from=[...], to=[...]}.
bg_color RGB list none Background fill color. Painted across the full panel before text.
border "rainbow" | "color_cycle" | "lightbulbs" | [r,g,b] | {style="...", ...} none Perimeter border ring — five styles (rainbow chase, color cycle, constant, bands, lightbulbs); see /concepts/borders/.
animation string / table none "typewriter" for character-by-character reveal. Use the inline-table form to tune speed: animation = {style = "typewriter", frames_per_char = 6} (default frames_per_char = 3 ≈ 150 ms/char at the 50 ms engine tick).
padding int 6 Horizontal padding (in logical pixels) when scrolling.
text_y_offset int 0 Vertical text nudge in logical rows. Negative = up.

Set the content string with text =.

constant `font_color` paints every character at the same RGB
constant `font_color` paints every character at the same RGB
[[playlist.section.widget]]
type = "message"
text = "Breathe. Move. Rise."
font_color = [255, 92, 38] # brand flame
`:taco:` resolves to the inline pixel-art sprite, with the message text following it
`:taco:` resolves to the inline pixel-art sprite, with the message text following it
[[playlist.section.widget]]
type = "message"
text = ":taco: Taco Tuesday!"

Hi-res font on the bigsign — Inter-Bold at 28px reads well at medium viewing distance

Section titled “Hi-res font on the bigsign — Inter-Bold at 28px reads well at medium viewing distance”
Inter-Bold at 28 px on the 256×64 bigsign canvas
Inter-Bold at 28 px on the 256×64 bigsign canvas
[[playlist.section.widget]]
type = "message"
text = "GRAND OPENING"
font = "Inter-Bold"
font_size = 28
font_color = [225, 48, 108]
typewriter reveal composed with rainbow `font_color` — each character types in at its own rainbow hue
typewriter reveal composed with rainbow `font_color` — each character types in at its own rainbow hue
[[playlist.section.widget]]
type = "message"
text = "Now Enrolling"
font_color = "rainbow"
animation = "typewriter"

Gradient between two brand colors — each character lands at its own interpolated hue

Section titled “Gradient between two brand colors — each character lands at its own interpolated hue”
gradient `font_color` from flame to amber across the characters
gradient `font_color` from flame to amber across the characters
[[playlist.section.widget]]
type = "message"
text = "firebird"
font_color = {style = "gradient", from = [255, 92, 38], to = [255, 183, 3]}

High-contrast caution color — black text on a yellow background

Section titled “High-contrast caution color — black text on a yellow background”
black `font_color` over a yellow `bg_color` — readable from across the room
black `font_color` over a yellow `bg_color` — readable from across the room
[[playlist.section.widget]]
type = "message"
text = "CAUTION"
font_color = [0, 0, 0]
bg_color = [255, 220, 0]

Typewriter is single-row only on gif and image

Section titled “Typewriter is single-row only on gif and image”

animation = "typewriter" works on message without restriction. On gif and image, three combinations are rejected: bottom_text set, text_align = "scroll" / "scroll_over", or empty text. Typewriter still composes with font_color = "rainbow" and border = "rainbow".