Desktop and kiosk interfaces
in pure Go
Declarative views, typed state and a GPU renderer built on Ebitengine.
No browser, no WebView, no C compiler.

Views are Go values
You compose the interface from plain Go functions and configure each view with chained modifiers. The compiler checks every one of them.
Typed state
ctx.State holds a typed value. Writing it rebuilds only the components that read it, and gift lays out only what changed.
Components included
Buttons, text fields, lists, a navigation stack, a tab bar, sheets, alerts, a file picker and more, each with a screenshot and its API.
Made for kiosks
Touch input, an on-screen keyboard and a draw-on-demand mode for touchscreen appliances. The target hardware is a Raspberry Pi 4 or 5.
Pictures at scale
Virtualized image galleries and a background image pipeline with thumbnails, a disk cache and fixed memory budgets.
Tested from Go
gifttest runs your views headless inside go test: find a node by its text, click it, assert the result.
Light and dark
Semantic colors take their value from the theme in force. Switching the theme at run time redraws the whole window.
Its own text
gift shapes and draws every glyph itself, so a label looks the same on macOS, Linux and a Raspberry Pi.
Early stage
gift is under development and its API may still change. Read the getting started guide before you build on it.