Proton Docs

July 15, 2026 · View on GitHub

Read the documentation in your language: English | Español | Français | Ελληνικά

Copyright © CzaxStudio (Nexus-Proton)

Everything you need to build desktop apps with Proton. Pick a topic or read them in order — both work fine.


FileWhat's in it
00-getting-started.mdinstall, first window, the state struct pattern
01-text.mdLabel, H1–H6, Body2, Caption, custom Text
02-buttons.mdButton, OutlineButton, IconButton, Tappable
03-inputs.mdInput, TextArea, Checkbox, Toggle, RadioButton, Slider, ProgressBar
04-layout.mdRow, Column, Split, Pad, Gap, Grid, GrowRow, Center
05-lists.mdList, HList, Scroll
06-visuals.mdDivider, Rect, RoundRect, Card, Badge, Image, MinSize, MaxWidth
07-theming.mdpalettes, custom colors, font scale
08-advanced.mdToast, OnKey, goroutines, Tooltip, multiple windows
09-examples.mdcomplete copy-paste examples

The One Thing to Know

Proton is immediate mode. Your draw function runs every frame. You call widget functions, they appear on screen in that order. State lives in your own struct. That's it.

type UI struct {
    btn proton.Clickable
}

u := &UI{}

a.Window("App", 400, 300, func(win proton.Context) {
    proton.Label(win, "Click the button.")
    proton.Gap(win, 8)
    proton.Pad(win, 8, func(win proton.Context) {
        if proton.Button(win, &u.btn, "Hello") {
            println("hello!")
        }
    })
})

Widgets stack vertically. State lives in your struct. That's the whole model.

Proton-Repo