Skip to main content

Command Palette

Search for a command to run...

Go GUI without the Cgo headaches: Meet Proton

Updated
2 min read

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!

Check out Proton on GitHub