// the find
mattn/go-gtk
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.