Styling
CSS and themes for plugins
Once your surface can draw, you probably want it to feel like the rest of the shell. The host hands you CSS and the theme.
Style
Classes you attach to nodes get resolved against the live config (including user CSS),
and ctx.style(...) turns those classes into typed values:
let style = ctx.style("example cpu");
let radius = style.length("border-radius"); // Option<f32>
let bg = style.color("background-color"); // Option<Color>
let muted = style.color_or("color-faded", ctx.theme().subtext);
let flag = style.bool("fill-width");
let pad = style.padding([0.0, 4.0]); // [y, x]The palette
ctx.theme() gives you the 13-color palette:
let accent = ctx.theme().primary;
let muted = ctx.theme().subtext;Register your own CSS
fn register(host: HostRef<'_>) {
host.style(r#"
.example-cpu { font-size: 12px; icon-size: 14px; gap: 4px; }
.example-cpu.warn { color: #f2b96a; }
"#);
}
Backlinks
(2)