Proton – A Pure Go GUI Library (No CGO Required!)

Hey everyone,

I wanted to share a project called Proton, a lightweight GUI framework for Go that focuses on simplicity and ease of use—without any of the typical CGO headaches.

If you’ve ever tried building desktop apps in Go, you know that managing C dependencies can quickly turn into a nightmare, especially when cross-compiling. Proton is built to solve that.

Key Features

  • Zero CGO: Built entirely in pure Go.

  • Zero-Config for Windows/macOS: Runs out of the box without extra system dependencies.

  • Immediate Mode UI: Your draw function runs every frame, making state management highly predictable and straightforward.

  • Batteries Included: Comes with a huge set of built-in widgets (Inputs, Toggles, Sliders, TextViews, Split panes, Tabs, Accordions) and built-in themes (like Nord, Rose Pine, and Catppuccin).

  • Keyboard Shortcuts & Async Updates: Built-in helper functions (win.Invalidate()) make handling async API calls and global hotkeys simple.

Quick Example

Here is how simple it is to get a window up and running with an input and a button:

package main

import "github.com/CzaxStudio/proton"

func main() {
	a := proton.New("hello")
	a.Window("Hello", 400, 200, func(win proton.Context) {
		proton.H3(win, "Hello from Proton!")
	})
	a.Run()
}

Getting Started

You can grab it using standard go tooling:

go get github.com/CzaxStudio/proton

(Note: Linux users will just need standard libwayland-dev, libxkbcommon-dev, and libvulkan-dev system packages).

Check out the repository, documentation, and a bunch of kitchen-sink style example apps (like a calculator and a classic Todo list) over on GitHub:

Repository: CzaxStudio/proton

Documentation: Proton Docs

We are working hard to make the API stable and we’re currently working on expanding features for the v0.2.5 release cycle. I’d love to hear your thoughts, feedback, or any feature requests you might have!