finds.dev← search

// the find

mattn/go-gtk

★ 2,180 · Go · BSD-3-Clause · updated Jun 2024

Go binding for GTK

Go bindings for GTK2, wrapping the C library via cgo. It's for Go developers who need to ship a native desktop GUI on Linux (or occasionally Windows/Mac) and want to write it in Go rather than C. The GTK2 target is the tell — this is not a modern GTK4 binding.

The coverage table in the README is honest and genuinely useful — you can see at a glance which widgets are fully wrapped (GtkButton, GtkSpinButton, GtkProgressBar) versus stub territory (printing is almost entirely missing, GtkTreeView is at 19%). The example set is broad: treeview, textview, drag-and-drop, threading, sourceview — enough to answer most 'how do I do X' questions by reading code rather than docs. It handles the pixbuf embedding use case with a concrete tool rather than punting to the user. Being from mattn, the cgo interop is competent.

It targets GTK2, which has been end-of-life for over a decade. GTK3 and GTK4 exist; if you ship this today you're adopting a widget toolkit that modern Linux distros are actively removing. Overall API coverage sits at 48%, and the gaps cluster in the things you're most likely to need for a real app: printing is effectively 0%, GtkTreeView is 19%, GtkWidget is 54%, most of the file chooser and recent-files APIs are untouched. Last meaningful activity was 2024 but the commit history is mostly maintenance; the core hasn't moved significantly in years. Cross-platform story is technically claimed but Windows GTK installation is a mess and the Windows screenshots in the repo look like a 2010 app.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →