Glaze
Binding desktop para WebView em Go, em Go puro e sem CGO, chamando a WebView do sistema direto pelo purego, sem nenhuma biblioteca nativa embutida.
Glaze é um binding desktop para WebView em Go. É um port em Go puro do webview/webview sobre purego, sem cgo e sem nenhuma biblioteca nativa empacotada junto.
O projeto começou como fork do go-webview, mas divergiu o suficiente para virar codebase separada, com objetivos próprios.
A razão para evitar cgo: arrastar uma toolchain C dentro de um projeto Go só para abrir uma janela com HTML quebra muita coisa que eu valorizo no ecossistema – cross-compile simples, build reprodutível, go install que funciona pra quem clona o repo. A versão antiga embutia a lib C++ do webview compilada e extraía em disco em runtime. Agora cada backend chama, via purego, a WebView que o próprio sistema operacional já fornece: WKWebView no macOS, WebKitGTK no Linux, WebView2 (COM) no Windows. Zero lib nativa no binário.
O que você precisa em runtime é essa WebView estar presente: nada extra no macOS, um WebKitGTK no Linux (GTK4 libwebkitgtk-6.0 ou GTK3 libwebkit2gtk-4.1/4.0, detectado em runtime) e o Edge WebView2 Runtime no Windows (que já vem no 10/11).
O que fica fora do core:
BindMethods– registra todos os métodos exportados de um struct Go como funções JavaScript, com nomes em snake_case. Útil quando você tem um service object e quer expor uma API consistente sem escrever uma chamada deBindpor método.RenderHTML– renderiza umhtml/templateGo para usar emSetHtml. Para quando você quer renderização estilo servidor sem subir um servidor.AppWindow– embrulha umhttp.Handlerem uma janela nativa, com servidor HTTP local. Em macOS e Linux usa Unix socket por padrão; em Windows, TCP loopback. É o caminho mais curto de uma app HTTP existente para uma app de desktop sem reescrever rotas, templates e assets.
Funciona em Windows, macOS e Linux. Os exemplos no repositório incluem Game of Life, Mandelbrot, Doom Fire, Raycasting e um REPL do Filo.