Skip to content

Find a capability

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 GUIgo-widgets/toolkit
Open a real window on Linux, macOS or Windowsgo-widgets/window
Draw into a terminal insteadgo-widgets/tui
Bind state to widgetsgo-widgets/mvvm + go-widgets/mvvmtk
Theme a UI declarativelygo-widgets/skin
Put an icon on a buttongo-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 icongo-icons — simple-icons, devicon, material, seti, vscode-icons
Highlight source code in an editor widgetgo-rouge/rouge via go-widgets/toolkit/rougelex
Add a system-tray or menu-bar itemgo-widgets/tray
Animate a widgetgo-widgets/toolkit/anim
Ship an Android APK with a Go-painted UIgo-widgets/android

Desktop integration

I need to…Use
Read .desktop entries or find installed appsgo-freedesktop/desktopentry
Look up an icon by name in the icon themego-freedesktop/icontheme
Detect a file’s MIME typego-freedesktop/mime
Find which app opens a typego-freedesktop/mimeapps
Send a desktop notificationgo-freedesktop/notifications
Cache a thumbnailgo-thumbnail/thumbnail
Store a secret in the OS keychaingo-keyring/keyring
Talk to D-Busgithub.com/godbus/dbus/v5 — the reference library, itself CGO-free
Call an Objective-C API on macOSgo-macos/objc
Call a Win32 or WinRT APIgo-mswin/win32, go-mswin/winrt

Graphics and text

I need to…Use
Fill or stroke a vector path with anti-aliasinggo-gfx/gfx (vector)
Rasterise an SVG to a bitmapgo-gfx/gfx/svg
Process or transform an imagego-images/images
Parse a font and rasterise glyphsgo-opentype/opentype
Shape complex text (Arabic, ligatures, marks)go-opentype/shape
Break a paragraph into lines optimallygo-typeset/linebreak
Hyphenate a wordgo-typeset/hyphenation
Order bidirectional textgo-typeset/bidi
Write a PDFgo-pdfkit/pdfkit
Typeset TeX, or just TeX mathgo-tex/engine, go-tex/math
Get the .cls/.sty files a document asks forgo-tex/texmf
Demux MP4 or Matroskago-avkit/avkit

Documents and markup

I need to…Use
Render CommonMark to HTMLgo-commonmark/commonmark
Parse or query HTML and XMLgo-nokogiri/nokogiri
Compile SCSSgo-scss/scss
Render a Liquid or Mustache templatego-liquid/liquid, go-mustache/mustache
Match a regex with lookaround or backreferencesgo-regexp/engine — not regexp2
Convert between rich document formatsgo-richdoc/richdoc and its converters
Parse a date a human wrotego-datetime/dates

Storage and filesystems

I need to…Use
Read a partition tablego-volumes/gpt
Address a block device, pool, replica or S3 object as one thinggo-volumes/interface
Mount and read ext4, xfs, btrfs, zfs, apfs, ntfs, …go-filesystems — one repository per format
Work out what filesystem an image holdsgo-filesystems/detect
Read or write UEFI variablesgo-filesystems/uefi
Convert a qcow2, raw, dmg or tart-oci imagego-diskimages
Call a Linux filesystem ioctlgo-fsctl
Open a LUKS or APFS volumego-fde
Compress with LZ4, LZFSE or deflatego-compressions
Transfer only what changedgo-deltasync
Split a stream into content-defined chunksgo-deltasync/chunk — the one chunker
Erasure-code datago-erasure/reedsolomon

Firmware, boot and trust

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

Compute

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

Distributed systems

I need to…Use
Let many people edit one documentgo-crdt/crdt + go-crdt/collab
Relay Yjs updatesgo-yjs-relay/yrelay
Run gRPC over SSH, WireGuard, vsock, WebSocket or WebRTCgrpc-transports
Elect a leader or watch host livenessgo-coord/coord
Supervise processes as PID 1go-proc/supervisor
Serve DHCPv4go-net-dhcp/dhcp
Health-check a backendgo-net-health/health
Drive a guest virtio devicego-virtio
Run a microVM cloudopenweft/weft

Packaging and Ruby

I need to…Use
Install or build a package from a pkgx recipego-pkgx/pkgm, go-pkgx/bk
Produce an SBOM or sign an artifactgo-attest/sbom, go-attest/sign
Compare loose or CalVer versionsgo-versions/semver
Run Ruby codego-embedded-ruby/ruby (rbgo)
Use a specific gem’s behaviour from Gothe matching go-ruby-* organisation
Compile a Puppet cataloguego-puppet/puppet