Skip to main content

StatusBar

widget.StatusBar renders a single-row footer showing [key] Description hints for the currently focused component's advertised KeyBindings. It is updated automatically by the canvas on every focus change.

Setup​

statusBar := widget.NewStatusBar()

app := oat.NewCanvas(
oat.WithTheme(latte.ThemeDark),
oat.WithBody(body),
oat.WithAutoStatusBar(statusBar), // mounts as footer; auto-updates
)

That is all you need to do. The canvas calls statusBar.SetBindings(bindings) whenever focus changes, so the hints always reflect the active widget.

Builder options​

MethodDescription
WithStyle(s latte.Style)Override the footer display style
WithID(id string)Set a stable identifier

The theme supplies the default footer style via the Footer token. Use WithStyle only if you want to deviate from the theme.

What appears​

The status bar shows all KeyBindings returned by the currently focused component's KeyBindings() method, plus global canvas hints (Tab · Next, Esc · Quit).

Each binding is rendered as [^S] Save — the bracketed key in bold accent colour, the description in muted colour. Bindings with an empty Description show only the bracketed key.

Advertising shortcuts​

Any focusable component can expose shortcuts by implementing KeyBindings():

func (w *MyWidget) KeyBindings() []oat.KeyBinding {
return []oat.KeyBinding{
{Key: tcell.KeyCtrlS, Label: "^S", Description: "Save"},
{Key: tcell.KeyCtrlG, Label: "^G", Description: "Cancel"},
// Handler: nil means display-only; the actual logic is in HandleKey.
}
}

Bindings with a non-nil Handler are also dispatched by the canvas key router without needing custom HandleKey code.