This receiver plugin lets users enable plugins themselves from a Plugins window, opened with the puzzle-piece button in the plugin button stack. The admin decides which plugins users may enable.
Each plugin has an on/off switch and a short description. Badges show the plugin state: admin (loaded by the admin, cannot be turned off), active (already running, e.g. as a dependency), reload, error and deprecated.
MapPlugin, SunPlugin, KeyPlugin, RigPlugin, …) are listed only when the running OpenWebRX+ version has them.init.js are marked admin and cannot be turned off.utils, notify, …) are loaded automatically.setup() when a user enables it.magic_key and KeyPlugin) are refused.Requires an OpenWebRX+ version with native plugin buttons and windows.
Load the plugin at the end of your init.js, after all plugins the admin wants to load for everyone, then call setup():
(async () => {
await Plugins.load('https://0xaf.github.io/openwebrxplus-plugins/receiver/utils/utils.js');
// ... other admin plugins ...
await Plugins.load('https://0xaf.github.io/openwebrxplus-plugins/receiver/plugin_loader/plugin_loader.js');
await Plugins.plugin_loader.setup({
allowed: ['doppler', 'listeners', 'screenshot', 'tune_precise', 'MapPlugin', 'SunPlugin'],
allow_all: false,
plugin_options: {
listeners: {
supabaseUrl: 'https://YOUR-PROJECT.supabase.co',
supabaseKey: 'YOUR-PUBLISHABLE-KEY'
}
}
});
})();
Everything loaded before setup() counts as loaded by the admin. setup() waits until the receiver page is fully initialized before it looks at the loaded plugins or starts any plugin.
| Option | Default | Description |
|---|---|---|
allowed |
[] |
Plugin ids the user may enable: repository folder names (doppler) or built-in plugin names (MapPlugin) |
allow_all |
false |
Let the user enable any repository or built-in plugin, ignoring allowed. Unknown built-in plugins of newer OpenWebRX+ versions are shown too |
allow_experimental |
false |
Let the user enable any experimental plugin (for example the ui_* plugins) |
allow_thirdparty |
false |
Let the user enable any third-party plugin that has a script URL in plugins.json |
plugin_options |
{} |
Options keyed by plugin id. A plugin marked as requiring setup is hidden unless its id has an entry here; its options are passed to setup() when enabled |
allow_all does not include experimental and third-party plugins. Enable them with their own option, or list single plugins in allowed. Third-party plugins run code from other authors and are not reviewed by this project.
Required setup is declared by the plugin’s manifest entry, for example "setup": "required". plugin_options is sent to browser-side code, so it must contain only public configuration. Never put passwords, Supabase Secret/service_role keys or other server secrets there. A plugin loaded manually before plugin_loader.setup() remains an admin-loaded plugin; in that case the admin is responsible for calling its setup() directly.
The list comes from receiver/plugins.json. The loader looks for it in the parent folder of plugin_loader/ first (for a local install that is htdocs/plugins/receiver/plugins.json, next to init.js), then on https://0xaf.github.io/openwebrxplus-plugins/receiver/plugins.json. Plugins are loaded from the same place as the manifest, so if you mirror the plugins locally, copy plugins.json together with the plugin folders.
plugins.json is read with fetch(), so when the plugins are hosted on a different server than OpenWebRX+, that server must send the Access-Control-Allow-Origin header. GitHub Pages and plugins in the OpenWebRX+ htdocs/plugins folder need nothing. For a quick local test server:
darkhttpd /path/to/openwebrxplus-plugins --header 'Access-Control-Allow-Origin: *'
Learn how to load plugins.