Skip to content

Find a capability

The ecosystem is wide enough that the real risk is not finding a library but not knowing it exists and rebuilding it. This page is the lookup: what you need, and the module that already does it.

If what you need is not here, check the family pages before starting — and if it genuinely is not in the ecosystem, it belongs in the organisation that owns the domain, not in the repository that happens to need it first.

User interface

I need to… Use
Build a GUI go-widgets/toolkit
Open a real window on Linux, macOS or Windows go-widgets/window
Draw into a terminal instead go-widgets/tui
Bind state to widgets go-widgets/mvvm + go-widgets/mvvmtk
Theme a UI declaratively go-widgets/skin
Put an icon on a button go-icons/iconoir for the glyph, drawn through go-gfx/gfx's svg — never hand-draw one
Use a brand logo, a language mark or a file-type icon go-icons — simple-icons, devicon, material, seti, vscode-icons
Highlight source code in an editor widget go-rouge/rouge via go-widgets/toolkit/rougelex
Add a system-tray or menu-bar item go-widgets/tray
Animate a widget go-widgets/toolkit/anim
Ship an Android APK with a Go-painted UI go-widgets/android

Desktop integration

I need to… Use
Read .desktop entries or find installed apps go-freedesktop/desktopentry
Look up an icon by name in the icon theme go-freedesktop/icontheme
Detect a file's MIME type go-freedesktop/mime
Find which app opens a type go-freedesktop/mimeapps
Send a desktop notification go-freedesktop/notifications
Cache a thumbnail go-thumbnail/thumbnail
Store a secret in the OS keychain go-keyring/keyring
Talk to D-Bus github.com/godbus/dbus/v5 — the reference library, itself CGO-free
Call an Objective-C API on macOS go-macos/objc
Call a Win32 or WinRT API go-mswin/win32, go-mswin/winrt

Graphics and text

I need to… Use
Fill or stroke a vector path with anti-aliasing go-gfx/gfx (vector)
Rasterise an SVG to a bitmap go-gfx/gfx/svg
Process or transform an image go-images/images
Parse a font and rasterise glyphs go-opentype/opentype
Shape complex text (Arabic, ligatures, marks) go-opentype/shape
Break a paragraph into lines optimally go-typeset/linebreak
Hyphenate a word go-typeset/hyphenation
Order bidirectional text go-typeset/bidi
Write a PDF go-pdfkit/pdfkit
Typeset TeX, or just TeX math go-tex/engine, go-tex/math
Get the .cls/.sty files a document asks for go-tex/texmf
Demux MP4 or Matroska go-avkit/avkit

Documents and markup

I need to… Use
Render CommonMark to HTML go-commonmark/commonmark
Parse or query HTML and XML go-nokogiri/nokogiri
Compile SCSS go-scss/scss
Render a Liquid or Mustache template go-liquid/liquid, go-mustache/mustache
Match a regex with lookaround or backreferences go-regexp/engine — not regexp2
Convert between rich document formats go-richdoc/richdoc and its converters
Parse a date a human wrote go-datetime/dates

Storage and filesystems

I need to… Use
Read a partition table go-volumes/gpt
Address a block device, pool, replica or S3 object as one thing go-volumes/interface
Mount and read ext4, xfs, btrfs, zfs, apfs, ntfs, … go-filesystems — one repository per format
Work out what filesystem an image holds go-filesystems/detect
Read or write UEFI variables go-filesystems/uefi
Convert a qcow2, raw, dmg or tart-oci image go-diskimages
Call a Linux filesystem ioctl go-fsctl
Open a LUKS or APFS volume go-fde
Compress with LZ4, LZFSE or deflate go-compressions
Transfer only what changed go-deltasync
Split a stream into content-defined chunks go-deltasync/chunk — the one chunker
Erasure-code data go-erasure/reedsolomon

Firmware, boot and trust

I need to… Use
Talk to a TPM, extend a PCR, seal a secret go-tpm2/tpm2
Replay an event log or verify an attestation go-tpm2/attest
Measure into a PCR from UEFI go-tpm2/efitcg2
Link or sign a PE32+/EFI binary go-coff/peln, go-coff/pectl
Read or patch GRUB or systemd-boot config go-bootloaders

Compute

I need to… Use
Generate Plan 9 assembly for every 64-bit target go-asmgen/asmgen
Speed up a codec, hash or string scan with SIMD go-simd — one repository per kernel
Work with n-dimensional arrays, or multiply matrices go-ndarray/ndarray
Take an FFT go-fft/fft

Distributed systems

I need to… Use
Let many people edit one document go-crdt/crdt + go-crdt/collab
Relay Yjs updates go-yjs-relay/yrelay
Run gRPC over SSH, WireGuard, vsock, WebSocket or WebRTC grpc-transports
Elect a leader or watch host liveness go-coord/coord
Supervise processes as PID 1 go-proc/supervisor
Serve DHCPv4 go-net-dhcp/dhcp
Health-check a backend go-net-health/health
Drive a guest virtio device go-virtio
Run a microVM cloud openweft/weft

Packaging and Ruby

I need to… Use
Install or build a package from a pkgx recipe go-pkgx/pkgm, go-pkgx/bk
Produce an SBOM or sign an artifact go-attest/sbom, go-attest/sign
Compare loose or CalVer versions go-versions/semver
Run Ruby code go-embedded-ruby/ruby (rbgo)
Use a specific gem's behaviour from Go the matching go-ruby-* organisation
Compile a Puppet catalogue go-puppet/puppet