go-icons

Free icon sets as embedded SVG for pure-Go UIs โ€” file-type icons from seti, material and vscode-icons, language logos from devicon, general-purpose UI icons from iconoir โ€” each a data package that maps a name to an SVG glyph and draws nothing.

CGO_ENABLED=0 name → SVG glyph embedded SVG via go:embed one repo per icon pack 100% coverage BSD-3 code ยท MIT artwork
Documentation GitHub

Toolkits that render their own UI need icons, and the good free sets ship as loose SVG files with no Go packaging. go-icons closes that gap: each repo embeds a curated subset of one free, MIT-licensed icon set and serves it by name. The file-type packs (seti, material) key on a file name — Icon(filename) matches by base name, then extension, then a generic-document fallback, and Folder() returns the folder glyph. The general-purpose pack (iconoir) keys on the icon's own name — Icon(name), with Has and Names to enumerate the set.

These are data packages: they return SVG strings and draw nothing. A renderer — such as go-widgets/toolkit's SVGIcon — turns the returned SVG into a drawn glyph. The Go code is BSD-3-Clause; the embedded artwork keeps its upstream MIT licence and is redistributed unmodified, with the original licence alongside it in each repo.

Repositories

seti data

Seti UI file-type icons (Jesse Weed, MIT)

A curated subset of the Seti UI icon set embedded as SVG documents keyed by file name. Icon(filename) matches by exact base name first (go.mod, LICENSE, .gitignore), then by extension, then falls back to a generic document; Folder() returns the folder glyph. Pure data โ€” it returns SVG strings and draws nothing.

Go Reference CI coverage 100%

material data

Material Icon Theme file-type icons (Material Extensions, MIT)

A curated subset of the Material Icon Theme embedded as SVG documents keyed by file name. Same small contract as seti โ€” Icon(filename) resolves by base name then extension with a generic-document fallback, Folder() returns the folder glyph. Pure data โ€” it returns SVG strings and draws nothing.

Go Reference CI coverage 100%

iconoir data

Iconoir general-purpose UI icons (Luca Burgio, MIT)

The Iconoir line icon set embedded as SVG documents keyed by the icon's own name (zoom-in, folder, undo, settings, โ€ฆ). Icon(name) returns the glyph or an empty string when unknown; Has and Names enumerate the set. Icons stroke in currentColor, so the renderer's ink recolours them. Pure data โ€” it returns SVG strings and draws nothing.

Go Reference CI coverage 100%

vscode-icons data

vscode-icons file-type icons (Roberto Huertas, MIT)

A curated subset of the vscode-icons set embedded as SVG documents keyed by file name. Same small contract as seti โ€” Icon(filename) resolves by base name then extension with a generic-document fallback, Folder() returns the folder glyph. Every embedded icon is verified to rasterise under go-gfx/gfx; icons using unsupported SVG features are omitted. Pure data โ€” it returns SVG strings and draws nothing.

Go Reference CI coverage 100%

devicon data

Devicon language & tool logos (konpa, MIT)

Colourful programming-language and tool logos from Devicon, embedded as SVG. Unlike a file-type theme, Icon(filename) maps a source file's extension to the logo of the language it is written in (.go โ†’ Go, .py โ†’ Python, .tex โ†’ LaTeX โ€ฆ); unknown files and Folder() fall back to two minimal neutral glyphs. Every logo is verified to rasterise under go-gfx/gfx. Pure data โ€” it returns SVG strings and draws nothing.

Go Reference CI coverage 100%

Every module is pure Go with CGO_ENABLED=0 and held at 100% statement coverage as a CI gate. Icons are embedded with go:embed and served as SVG strings behind one small shared contract. BSD-3-Clause for the Go code; the embedded icon artwork keeps its upstream MIT licence, redistributed unmodified.