projeto

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.

1 artigos relacionados GitHub

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 de Bind por método.
  • RenderHTML – renderiza um html/template Go para usar em SetHtml. Para quando você quer renderização estilo servidor sem subir um servidor.
  • AppWindow – embrulha um http.Handler em 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.