The example catalog
A map of the whole suite. Each example is one namespace under src/net/b12n/raygui_jlt/, runnable with a friendly bb <name> task or the underlying jolt -M:<name> without babashka. scripts/examples_registry.clj is the single source of truth this page is generated from; bb info prints the same grouping live.
bb <name> # e.g. bb basic-controls (opens a window)
bb examples # flat list with descriptions, plus the count
bb info # the grouped cheat-sheet this page mirrors
24 examples across 7 groups. The suite is complete. Run bb info for the count that is actually true right now, not this page's memory of it.
basics
inputs
collections
containers
dialogs
color
styling
What the previews are
Every preview is a real capture of the example actually running, not a mockup. Each was produced by running the example with RAYGUI_APP_AUTO_QUIT_MS set, so the window closes itself, and RAYGUI_APP_SHOT pointed at a path, so it screenshots frame 30 before it does: the same mechanism what-the-gates-do-not-catch.md describes as this project's actual gate.
They are static frames, not recordings, and that is a deliberate choice, not a shortcut. raygui is mouse-driven by definition, and synthetic input does not actuate a raylib/GLFW window at all: measured upstream, 0 of 8 synthetic clicks and 0 of 2 synthetic drags were delivered at any hold duration tried, against 3 of 3 for plain pointer motion, because a window like this ignores pid-routed button events. An animated recording could show a cursor drifting toward a button; it could never show that button actually being pressed, a dropdown opening, or a slider being dragged. A still frame does not claim more than it shows, which is the honest version of a preview here.
Ports of raygui's own examples
Four examples are direct ports of programs in raygui's own examples/ tree: scroll-panel, floating-window, custom-input-box and style-selector, all built and in the tables above. NOTICE carries the attribution for all four.
Adding an example
Five touchpoints, from AGENTS.md:
- Source:
src/net/b12n/raygui_jlt/<name_underscored>.clj deps.ednalias::<name> {:main-opts ["-m" "net.b12n.raygui-jlt.<name>"]}check.cljrequire: alphabetically, so the compile gate covers it- Registry row:
["<name>" "<alias>" "<group>" "<desc>"]inscripts/examples_registry.clj, the single source of truth this page is generated from bb.edntask:<name> {:doc "▶ <desc>" :task (run-example "<name>")}
bb examples enforces the 49-character description cap and cross-checks the registry's description against bb.edn's :doc string, exiting non-zero on either mismatch, so a drifted description here is a build failure, not a stale doc page.
See also
the-ffi-shape.md: the binding pattern every control in this catalog shares.what-the-gates-do-not-catch.md: why a new example needs a screenshot that was actually looked at, and in some cases a read of the vendored C source, before it is done.






















