Fluxta

Iconsets

Publish a set of icons that anyone can install from the Marketplace.

An iconset is a folder of icons with a manifest — no code, no build, no dependencies. It goes through the same review and publishing as a plugin, and users install it from the Marketplace or straight from the Icon Picker.

Create one

fluxta create --type iconset --name my-icons
cd my-icons

That gives you:

my-icons/
├── manifest.json
├── LICENSE.md
├── README.md
└── icons/
    ├── circle.svg
    └── square.svg

Replace the sample icons with your own, then check the result:

fluxta validate

The manifest

{
  "type": "iconset",
  "name": "my-icons",
  "title": "My Icons",
  "description": "Icons for my deck",
  "version": "0.1.0",
  "author": "Jane Doe",
  "license": "MIT",
  "maintainers": [],
  "minAppVersion": "0.7.0",
  "color": "stroke",
  "preview": ["icons/circle.svg", "icons/square.svg"]
}
FieldDescription
typeAlways "iconset".
colorHow a button's icon color applies to your SVG icons: stroke (line icons), fill (solid icons), or original (keep their own colors). Defaults to original.
previewOne to six icons, shown in this order on your iconset's Marketplace card.
licenseAny licence — but it has to match LICENSE*, which must carry the licence and attribution of every icon.

The other fields are the same Package Metadata a plugin carries, except platforms and categories. An iconset has no apiVersion, icon, main, actions, or anything else a plugin declares.

Rules

fluxta validate and the repository's CI both enforce these:

  • Icons live directly in icons/, with no subfolders.
  • SVG, PNG, WebP, JPEG, or GIF — checked by content, not just by extension.
  • Names are kebab-case with a lowercase extension: volume-up.svg. The name without its extension is what the Icon Picker shows and searches.
  • Each name is used once: mic.svg and mic.png cannot both exist.
  • At most 512 KB per icon, 5000 icons, and 20 MB in total.
  • SVG must be plain drawing. Scripts, event-handler attributes, foreignObject, DOCTYPE or entity declarations, and references to anything outside the file (href, url(...)) are rejected. References inside the file (#gradient) are fine.

Only manifest.json, icons/, LICENSE*, README.md, and CHANGELOG.md are published; anything else in the folder stays on your machine.

Try it in Fluxta

With Fluxta running, link the folder:

fluxta link

The iconset appears in the Icon Picker straight from your folder — there is no build, and anything you change in icons/ shows up the next time the picker opens. A linked iconset replaces an installed one of the same name until you run fluxta unlink. If the folder stops passing the rules above, Fluxta hides it again and fluxta link --status says why.

Publish

fluxta publish

It opens a pull request adding your iconset under iconsets/ in the plugins repository. Plugins and iconsets share one set of names, so pick one no plugin uses. Everything else — review, versioning, immutable versions — works as in Publishing.

Updating an iconset never changes buttons that already use its icons: Fluxta copies an icon when it is picked, so users pick again to get your new version.

On this page