Go GUI without the Cgo headaches: Meet Proton
Hey everyone!
If you’ve ever tried to build a desktop GUI application in Go, you’ve probably hit the "Cgo wall." Toolchains get complicated, cross-compilation becomes a nightmare, and sometimes you just want to write pure Go without the baggage.
That’s why I built Proton.
Proton is an immediate-mode GUI framework for Go that requires zero Cgo. It’s lightweight, fast, and designed to keep you focused on writing logic rather than wrestling with layout configurations or web tech wrappers.
Key Features
Zero Cgo: Pure Go compilation. Cross-compiling is painless again.
Immediate-Mode UI: Your draw function runs every frame, making state management completely intuitive. Your UI state lives right inside your own Go structs.
Single Import: All essential UI types are re-exported. No dependency hell.
Linux, macOS, & Windows Support: Zero extra dependencies needed for Windows and Mac (Linux just needs standard library dev packages like Wayland/Xkbcommon).
Built-in Theming: Ships out-of-the-box with gorgeous palettes like Catppuccin, Nord, and Rose Pine.
Quick Look
Building a window with a text layout and a functioning button is incredibly straightforward:
package main
import "github.com/CzaxStudio/proton"
type UI struct { name proton.Editor btn proton.Clickable }
func main() { u := &UI{} a := proton.New("my app")
a.Window("Hello", 480, 300, func(win *proton.Win) {
proton.H3(win, "Hello from Proton!")
proton.Input(win, &u.name, "Your name")
if proton.Button(win, &u.btn, "Go") {
println("Hello,", u.name.Text())
}
})
a.Run()
}
Give it a spin
You can grab it right now via:
go get github.com/CzaxStudio/proton
Check out the repository, run the kitchen-sink example application to see every widget in action, and let me know what you think!
If this makes your Go development life a little easier, drop a star on the repo—it helps other Gophers find the project!