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-iconsThat gives you:
my-icons/
├── manifest.json
├── LICENSE.md
├── README.md
└── icons/
├── circle.svg
└── square.svgReplace the sample icons with your own, then check the result:
fluxta validateThe 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"]
}| Field | Description |
|---|---|
type | Always "iconset". |
color | How 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. |
preview | One to six icons, shown in this order on your iconset's Marketplace card. |
license | Any 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.svgandmic.pngcannot 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 linkThe 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 publishIt 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.