Proton is a desktop GUI library that doesn't make you write XML, install CGo toolchains, or question your career choices. Pure Go. Built on Gio.
Detecting your OS...
No CGo. No XML. No component lifecycles. Just Go functions that draw things on screen.
No C dependencies. No CGo toolchain. Works with a vanilla go build on every platform.
Linux, macOS, and Windows. One codebase, three platforms. The dream is real.
Your draw function runs every frame. No state syncing, no virtual DOM, no diffing algorithm to debug at 2am.
Four colors. One function call. Built-in palettes for Nord, Catppuccin, Rose Pine, and more.
State types re-exported. Layout helpers included. You only ever need to import proton.
Row, Column, Split, Grid, GrowRow. Everything you need to build a real UI without fighting the framework.
No boilerplate ceremony. No project scaffolding. Just code.
Put all widget state in a plain Go struct. One proton.Clickable per button, one proton.Editor per text field. No special types, no reactive wrappers.
Call widget functions in order — they appear on screen in that order, stacked vertically by default. Use Row, Split, and Pad to arrange them differently.
That's it. The event loop runs, your draw function fires every frame, and Gio handles rendering, input, and OS integration. You handle the logic.
28 widgets covering every common UI pattern. Stateful ones return values — no callbacks, no event handlers.
Built-in palettes or roll your own. The entire app updates at once — no hunting through component stylesheets.
Free. Open source. MIT license.
Linux also needs: apt install libwayland-dev libxkbcommon-dev libvulkan-dev