- PLUGIN_CONFIG_QUICK_START / PLUGIN_CONFIGURATION_TABS / PLUGIN_CONFIGURATION_GUIDE: there is no "Reset to Defaults" button (the tab has Refresh, Update, Uninstall, Save Configuration); plugin config hot-reloads (ConfigService + on_config_change), so no restart; the schema is found by the fixed name config_schema.json, not a manifest config_schema field; the tab row is "Plugin Manager", not "Plugins"; forms are server-rendered from /v3/partials/plugin-config/<id>; the duration hook is get_display_duration()/display_duration; a class_name mismatch raises PluginError; the store requires id, name, class_name and display_modes (not version); plugin_system.debug/log_level do not exist (use run.py -d / LEDMATRIX_DEBUG). Drop "future" features that shipped. - PLUGIN_CONFIG_CORE_PROPERTIES: list all of CORE_PLUGIN_PROPERTIES, including skin, skin_options and the vegas_* tuning keys. - PLUGIN_CUSTOM_ICONS: icon is only a Font Awesome class (fallback fa-puzzle-piece); emoji/URL icons and getPluginIcon() never existed in v3. Note that /api/v3/plugins/installed currently omits icon. - PLUGIN_WEB_UI_ACTIONS (+ example JSON): success_message, error_message and step1_message are never read. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2.1 KiB
Plugin Custom Icons Guide
Overview
A plugin can name an icon for its tab in the web interface's second nav row
(next to Plugin Manager) with the icon field in manifest.json.
Status: the tab code honors
icon, butGET /api/v3/plugins/installed(web_interface/blueprints/api_v3/plugins.py) does not currently include the manifest'siconin its response, so every tab shows the default puzzle piece. Settingiconis harmless and will take effect once the API passes it through again.
Font Awesome classes only
icon is used verbatim as the CSS class of an <i> element
(iconEl.className = plugin.icon || 'fas fa-puzzle-piece' in
web_interface/static/v3/js/app-shell.js and the same fallback in
app-early.js). So it must be a Font Awesome class string. Emoji, image
paths and URLs are not supported: they would end up as a meaningless class
name and render nothing.
The web interface bundles Font Awesome Free 6
(web_interface/static/v3/vendor/fontawesome/), so any free fas, far or
fab icon works.
{
"id": "my-plugin",
"name": "Weather Display",
"icon": "fas fa-cloud-sun"
}
Some common choices:
- Clock / calendar:
fas fa-clock,fas fa-calendar-alt - Weather:
fas fa-cloud-sun,fas fa-cloud-rain - Sports:
fas fa-football-ball,fas fa-basketball-ball,fas fa-trophy - Music:
fas fa-music,fas fa-headphones - Finance:
fas fa-chart-line,fas fa-dollar-sign - News:
fas fa-newspaper,fas fa-rss - Games:
fas fa-gamepad,fas fa-dice
Browse the rest in the Font Awesome gallery (filter to Free, version 6).
Default
With no icon (or an empty one) the tab shows fas fa-puzzle-piece.
Troubleshooting
- Check the class name against the Font Awesome 6 Free gallery; a Pro-only or misspelled class renders as a blank space.
- Include the style prefix (
fas,farorfab) as well as the icon class. - See the status note above: the icon is currently not passed through by the API.