Three final LCARS UI primitives complete the Lumen toolkit: lcars_tooltip (hover popup, black+tan border, 8-char AA label, 6 oracles), lcars_dialog_frame (modal shell: tan border + orange title bar + black body + tan button row + purple sep, 5 oracles), lcars_panic_screen (inverted gold palette fatal display, 4 oracles). sigil-apps wires LCARS chrome into all three main apps (colbrowser, files, termwin) via lcars_scene.sg — the DEMO_LCARS=1 compositor that replaces scene.sg with no Video module dependency. The Lumen LCARS UI kit now ships 25+ functions covering every desktop surface. (sigil-video c294606, f65095e, 1d48281; sigil-apps 2e42f31)
lcars_tooltip (c294606)
Hover tooltip popup — the last interactive UI surface needed for a complete Lumen WM. The OS positions the tooltip near the mouse cursor whenever a UI element is hovered.
Signature: lcars_tooltip(fb, pitch, fbw, fbh, tx, ty, nchars, c0..c7) — position + 8-char label.
- Body: black fill + 1px tan border (via
lcars_border_rect). - AA text label: up to 8 chars via
lcars_gch_cov. Fixed height 20px; width =nchars * 8 + 8. - OS positions
(tx, ty)near the mouse cursor for hover labels in the Lumen WM.
Test: tooltip at (10, 10), nchars=4. 6 oracles: 4 border edges, body black, glyph tan. LCARS-TOOLTIP-PASS.
lcars_dialog_frame (f65095e)
Modal dialog chrome — the standard container for file pickers, confirm dialogs, and settings panels in the Lumen WM. The caller renders title text and button labels inside the body and button-row areas; the frame function draws only the chrome.
Signature: lcars_dialog_frame(fb, pitch, fbw, fbh, dx, dy, dw, dh, bh, btn_h) — position + dialog dims + title-bar height + button-row height.
- 1px tan outer border → focused chrome orange title bar (via
lcars_focus_chromeorange pill) → black body area → 1px purple separator above button row → tan button row. - Caller renders title text and button labels inside the body and button-row areas.
- Used for file picker, confirm dialogs, settings in Lumen WM.
Test: 140×90 dialog, bh=14, btn_h=14. 5 oracles: border, title pill, body, btn row, separator. LCARS-DIALOG-PASS.
lcars_panic_screen (1d48281)
Fatal-error GOP display — the full-framebuffer fault indicator shown by the kernel before Lumen starts, or when a fatal fault occurs after Lumen is running. Designed specifically for sigil-os#18 x86 real-hardware debugging.
Signature: lcars_panic_screen(fb, pitch, fbw, fbh, bh) — full framebuffer + band height.
- Inverted LCARS palette: full gold background (visually unmistakable from the black-dominant normal palette), top black band, center gold, bottom orange accent, "FAULT" in black text centered via
lcars_gch_cov. - Kernel calls this on any fatal fault before Lumen starts — GOP framebuffer only, no WM.
Test: 4 oracles — top black band, center gold, bottom orange, black glyph on gold. LCARS-PANIC-PASS.
Boot display trilogy: lcars_boot_banner (initial splash, orange+gold+tan) → lcars_boot_progress (gold fill bar per init step) → lcars_panic_screen (gold fault display, only if a fatal error occurs before Lumen starts).
lcars_scene.sg — LCARS chrome in all apps (2e42f31 — sigil-apps)
lcars_scene.sg is the DEMO_LCARS=1 compositor that replaces scene.sg for LCARS-chrome builds. The scene draws window chrome using aa_round_rect (orange pill title, black title area, tan accent bar) — identical rendering chain to scene.sg but without the SIGIL_VIDEO module dependency. Pure gfxraster calls.
Three apps now built with DEMO_LCARS=1:
Verified on QEMU raspi3b: colbrowser pixel at (40,40) = [255, 119, 34] (orange title bar). PASS. build.sh: secs=6.0 run budget (5s boot + render), lean lcars_scene.sg dependency chain.
The complete Lumen LCARS UI Kit — 25+ functions
Every visible desktop surface — from GOP boot splash to hover tooltip to modal dialog — now has a matching LCARS primitive.
| Category | Functions |
|---|---|
| Primitives | fill_rect, fill_circle, fill_qcircle_br, hbar, elbow, border_rect, resize_handle |
| Boot UI | boot_banner, boot_progress, panic_screen |
| Window chrome | wchrome, wchrome_title, focus_chrome |
| WM surfaces | resize_feedback, snap_zones, statusbar |
| App UI | taskbar_item, scrollbar, menu_item, tooltip, dialog_frame |
| Label rendering | lcars_label, lcars_gch_cov (AA glyph via cov_blend) |