projeto

Glaze

Binding desktop para WebView em Go, sem CGO, com foco em integração explícita, utilitários práticos e exemplos interativos.

0 artigos relacionados GitHub

Glaze é um binding desktop para WebView em Go, construído em cima de webview/webview e purego para evitar CGo.

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. Com purego, a biblioteca nativa é carregada em tempo de execução via dlopen / LoadLibrary. As libs nativas vão embutidas no binário e são extraídas em runtime, com verificação BLAKE2b-256 para garantir que o arquivo no disco bate com o que está embutido.

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.