| layout | title | permalink |
|---|---|---|
page |
OpenWebRX+ Plugins Home |
/ |
OpenWebRX+ Plugins is a community-driven collection of plugins that extend OpenWebRX+ with new features, UI enhancements, and integrations for SDR receivers.
- OpenWebRX+ Plugins
This repository provides a set of plugins for OpenWebRX+, allowing users to customize and enhance their SDR experience. Plugins are grouped into:
- Receiver Plugins: Enhance the receiver UI and add new features.
- Map Plugins: Add new layers or features to the map interface.
Each plugin is documented in its own folder.
-
Find your
htdocsfolder and set a helper variable:export OWRX_FOLDER=$(dirname "$(find / -name openwebrx.js 2>/dev/null | head -n1)")
-
Create the folders and download the
init.jssample file:mkdir -p "$OWRX_FOLDER/plugins/receiver" cd "$OWRX_FOLDER/plugins/receiver" wget https://0xaf.github.io/openwebrxplus-plugins/receiver/init.js.sample -O init.js
-
Edit the
init.jsfile and load the desired plugins:${EDITOR-nano} init.js -
Keep the top two
Plugins.loadlines (utils, notify). They are shared dependencies. Add or remove names inPluginsToLoadto pick which plugins you want. -
Refresh the OpenWebRX+ page to see the changes. If nothing changes, restart varnish/nginx as noted below.
| Name | Description |
|---|---|
| antenna_switcher | Antenna switching for Raspberry Pi devices (LZ2DMV) |
| colorful_spectrum | Colorize the spectrum analyzer |
| compact_analog_modes | Compact the receiver analog modes section (fustinoni-net) |
| connect_notify | Send/receive notifications on user connect/disconnect |
| doppler | Track Doppler shift/effect of satellites |
| freq_scanner | Adds a frequency scanner (Joerg) |
| frequency_far_jump | Jump to a frequency outside the current profile (LZ2DMV) |
| magic_key | Set MagicKey without typing it in the browser's address bar |
| minimap | Adds a minimap to receiver page (13MAD86) |
| mouse_freq | Show frequency under cursor on the waterfall |
| screenshot | Take screenshot of the waterfall |
| screen_reader | Provide spoken notifications for accessibility |
| search_bookmarks | Search all OWRX bookmarks and click to tune (Yannis) |
| show_band_plan | Show the band plan ribbon by default (fustinoni-net) |
| smeter | Show S-Meter (needs calibration!) (Joerg) |
| sort_profiles | Sort profiles by name |
| toggle_scannable | Toggle the scannable state of bookmarks with right mouse button |
| tune_checkbox | Enable mouse-scroll to zoom by default (LZ2DMV) |
| tune_precise | Add buttons for precise frequency tuning (LZ2DMV) |
| Name | Description |
|---|---|
| example | Example plugin for developers |
| example_theme | Example theme plugin for developers |
| example_uikit | Demo plugin showcasing all UIKit features |
| notify | Notification utility plugin (delegates to uikit.toast() when available) |
| uikit | UI toolkit: dockable panel, modals, toasts, buttons, loading overlays |
| utils | Utility plugin, required by many plugins |
| Name | Description |
|---|---|
| Add keyboard shortcuts | |
| Set the default waterfall theme (fustinoni-net) |
| Name | Description |
|---|---|
| (deprecated) Add Maidenhead (QTH) grid to the map | |
| reduce_map_legend_sections | Allow the reduction of the map legend sections (fustinoni-net) |
| Name | Description |
|---|---|
| owrxantswitcher | Switch antenna ports using a WebAPI on the server. |
| owrx_devices_status | Extend the status panel by displaying the profile name each receiver is currently tuned to. |
| OWRX_Antenna_manager | A foundation for developing an antenna manager for OpenWebRX+. |
-
Find your OpenWebRX+
htdocsfolder
Use the following command to locate it:find / -name openwebrx.js
-
Typical locations for
htdocs:/opt/openwebrx/htdocs/usr/lib/python3/dist-packages/htdocs
-
Create the plugins folders if they doesn't exist
mkdir -p /path/to/htdocs/plugins/{receiver,map} -
Create or edit the
init.jsfile inside the coresponding plugin type folder (receiver or map)
Use the provided templates: -
Add plugin loading lines to your
init.jsfile if you're not using the provided init.js - see Beginner Quickstart
Use the async pattern so dependencies load first:(async () => { await Plugins.load('https://0xaf.github.io/openwebrxplus-plugins/receiver/utils/utils.js'); await Plugins.load('https://0xaf.github.io/openwebrxplus-plugins/receiver/notify/notify.js'); await Plugins.load('https://0xaf.github.io/openwebrxplus-plugins/receiver/tune_precise/tune_precise.js'); })();
-
Raspberry Pi:
If using Raspberry Pi images, a caching service (varnish) may prevent plugins from loading immediately after editinginit.js.
Restart services to clear cache:sudo systemctl restart varnish nginx
-
Docker:
For Docker images (openwebrxplus), bind-mount the plugins folder and follow the above instructions. See Docker image documentation for details.
The example plugin README has a step-by-step quickstart, a minimal plugin skeleton, a table of available events, and annotated patterns for the most common tasks (event listening, function wrapping, DOM access). Start there.
Short summary:
- Create
$OWRX_FOLDER/plugins/receiver/my_plugin/my_plugin.js. - Load it locally by folder name:
await Plugins.load('my_plugin'); - Export
Plugins.my_plugin.init()— returntrueon success,falseon a failed dependency check.
- Each plugin lives in
plugins/{receiver|map}/plugin_name/with a matchingplugin_name.jsentry file. - Set
Plugins.<name>._versionso other plugins can check for it withPlugins.isLoaded('name', version). - Set
Plugins.<name>.no_css = trueif there is no sibling CSS file; otherwise the loader fetchesplugin_name.cssautomatically. - Declare dependencies with
await Plugins.load('dep')before loading plugins that need them. - Use
Plugins.utils.wrap_func()to intercept existing OWRX+ functions andPlugins.utils.on_ready()to defer work until the page is fully initialised. - See uikit for a dockable panel and settings modal you can build on.
To host plugins on GitHub, use GitHub Pages for correct JS Content-Type.
Contributions are welcome!
- Submit pull requests, providing the same structure for the folders as the rest of the plugins.
- For major changes, open an issue first to discuss.
- Please follow the style of existing plugins and documentation.
Use these plugins at your own risk. No warranty is provided.
For support, contact LZ2SLL or join the OWRX+ Telegram Chat.
Q: My plugin changes are not visible after editing init.js.
A: If using Raspberry Pi images, restart varnish and nginx as described above.
Q: Where do I put my local plugins?
A: In the htdocs/plugins/receiver or htdocs/plugins/map folder of your OpenWebRX+ installation.
Q: How do I load a plugin from a URL?
A: Use Plugins.load('https://.../plugin_name/plugin_name.js'); in your init.js.
This project is licensed under the MIT License.