Pure-Go widget toolkits, byte-buffer first. No cgo, no JS, no DOM — the same widget code paints a framebuffer, a terminal, a browser canvas or a real native window.
A widget set that owns its pixels: the same widget code reaches a framebuffer, a terminal cell grid, a browser canvas or an SVG.
| Repo | What it is |
|---|---|
toolkit |
Pure-Go widget toolkit for wasmdesk native apps (RGBA-buffer renderer, themed, no JS/DOM) |
painter |
Prototype: pluggable Painter interface — same widget code renders into a pixel buffer (WUI/GUI) or a terminal cell grid (TUI) or SVG. |
skin |
Declarative theme + layout + interaction-state engine for go-widgets/toolkit (the Edje analogue): parts, per-state visuals and signal-driven transitions in a… |
svg |
Pure-Go widget helper: turn any toolkit RGBA render into a portable SVG (base64 PNG inside a scaling wrapper). |
tui |
Pure-Go terminal-cell widget toolkit: ~34 cell-native widgets + interactive tui.App (raw mode, alt-screen, focus), syntax-highlighted TextEditor. Same… |
webcanvas |
Pure-Go (CGO=0) browser harness for go-widgets: blit an RGBA framebuffer into a and route DOM pointer and keyboard events into a widget scene |
One program, several hosts. Each back-end answers the same contract, so an app does not learn which one it got.
| Repo | What it is |
|---|---|
window |
Pure-Go, CGO-free windowing: six interchangeable back-ends behind one Open/Run — X11, Wayland, macOS Cocoa, Windows Win32, Android and wasmbox |
application |
Cross-platform application lifecycle for go-widgets: window run loop + system tray + ready hook, CGO-free |
desktop |
Native pure-Go desktop-shell demo composing the go-freedesktop + go-widgets stack (dock, launcher, app menu, MIME open-with, file grid, notifications). |
android |
Pure-Go, CGO-free Android back-end for go-widgets: a real APK whose whole UI is painted by a CGO_ENABLED=0 Go process. |
tray |
Cross-platform system-tray (menu-bar) widget for go-widgets: menus, submenus, checkboxes — CGO=0 (purego/syscall/DBus backends) |
State lives in observables and reaches widgets through bindings — and two analysers make that mandatory rather than advisory.
| Repo | What it is |
|---|---|
mvvm |
Dependency-free MVVM layer for the go-widgets ecosystem: Observable, Command, ObservableList + backend-agnostic bindings |
mvvmtk |
MVVM↔toolkit binding glue: wire go-widgets/mvvm observables & commands to go-widgets/toolkit widgets in one call |
mvvmlint |
go/analysis analyzer that makes MVVM usage mandatory for go-widgets apps |
bricolint |
go/analysis analyzer that guards the no-hand-drawn-UI rule: no painter primitives in app code, no per-frame throwaway widgets |
| Repo | What it is |
|---|---|
data |
Headless data spine for go-widgets: typed records + validation, sort/filter/group/page/aggregate, and a pluggable Memory/gRPC proxy with byte-identical views. |
gallery |
Wasm live demo of go-widgets/toolkit — every widget family rendered into a browser canvas. |
isoicons |
Reusable isometric icon packs (cloudnative PNG + AWS SVG) for the go-widgets/toolkit isometric-diagram widget. Pure Go, CGO=0, wasm-clean. |
app-template |
A minimal, MVVM-compliant go-widgets browser-wasm app template: state in go-widgets/mvvm, bound via go-widgets/mvvmtk, gated by go-widgets/mvvmlint. |
