openwebrxplus-plugins

OpenWebRX+ Plugins

MIT License

OpenWebRX+ Plugins is a community-driven collection of plugins that extend OpenWebRX+ with new features, UI enhancements, and integrations for SDR receivers.

Table of Contents

Project Overview

This repository provides a set of plugins for OpenWebRX+, allowing users to customize and enhance their SDR experience. Plugins are grouped into:

Each plugin provided by this repository is documented in its own folder.

Beginner Quickstart

  1. Find your htdocs folder and set a helper variable:

    export OWRX_FOLDER=$(dirname "$(find / -name openwebrx.js 2>/dev/null | head -n1)")
    
  2. Create the folders and download the init.js sample 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
    
  3. Edit the init.js file and load the desired plugins:

    ${EDITOR-nano} init.js
    
  4. Keep the utils and notify Plugins.load lines and the on_ready wait between them. utils and notify are shared dependencies, and the wait makes the rest load after the receiver page is fully initialized. Add or remove names in PluginsToLoad to pick which plugins you want.

  5. Uncomment the built-in plugins (MapPlugin.init();, …) you want, and optionally the plugin_loader block at the end to let users enable plugins themselves.

  6. Refresh the OpenWebRX+ page to see the changes. If nothing changes, restart varnish/nginx as noted below.

Plugin List

Built-in Plugins

OpenWebRX+ includes optional built-in plugins that are already part of the receiver. Enable them by calling their initialization command once from your receiver init.js. Do not load them with Plugins.load(). Call them after the receiver page is initialized (Plugins.utils.on_ready()) and before loading other plugins, so deprecated plugins like minimap reuse them instead of starting them again.

Name Description Available since init.js command
MapPlugin Open the native map in a floating window OpenWebRX+ 1.2.124 MapPlugin.init();
SunPlugin Display Solar Weather from HamQSL and refresh it every 15 minutes OpenWebRX+ 1.2.125 SunPlugin.init();
KeyPlugin Add a Magic Key input to the receiver Settings section OpenWebRX+ 1.2.125 KeyPlugin.init();
RigPlugin Add a TRANSMIT (PTT) button for a RigControl-connected transceiver; hold Backspace to transmit. Requires both RigControl options (transceiver control and PTT) enabled in Settings → Reporting OpenWebRX+ 1.2.125 RigPlugin.init();

The sample init.js includes commented-out lines for all built-in plugins. To let users enable built-in and repository plugins themselves, use plugin_loader.

Receiver Plugins

Name Description
accessible_bookmark_search Replaces the built-in bookmark search dialog with a native dropdown and improves keyboard navigation (René Jaun)
antenna_switcher Antenna switching for Raspberry Pi devices; uses a receiver section when available (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 in a native plugin window when available
freq_scanner Adds a frequency scanner; uses a receiver section and setup windows when available (Joerg)
frequency_far_jump Jump to a frequency outside the current profile (LZ2DMV)
listeners Show active listeners, profiles, frequencies and modes through Supabase Realtime Presence
plugin_loader Let users enable admin-approved plugins from a native plugin window
screenshot Take screenshot of the waterfall
screen_reader Provide spoken notifications for accessibility
search_bookmarks Search all OWRX bookmarks and click to tune (Yannis)
smeter Show S-Meter (needs calibration!); settings use a plugin window when available (Joerg)
sort_profiles Sort profiles by name
thumbtune Minimalistic floating control panel optimized for one-finger mobile tuning (UB1AON)
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 in a receiver section when available (LZ2DMV)

Utility & Example Plugins

Name Description
example Example plugin for developers
example_theme Example theme plugin for developers
notify Notification utility plugin
utils Utility plugin, required by many plugins

Deprecated Receiver Plugins

Name Description
search_bookmarks_old This is the old version of the plugin, working on OWRX+ before v1.2.118 (Yannis)
minimap Use the built-in MapPlugin on newer OpenWebRX+; the plugin remains for older versions (13MAD86)
magic_key Use the built-in KeyPlugin on newer OpenWebRX+ versions; the plugin remains for older versions
mouse_freq Built into newer OpenWebRX+ versions as Settings → Show pointer frequency; plugin remains for older versions
show_band_plan Show the band plan ribbon by default (fustinoni-net)
keyboard_shortcuts Add keyboard shortcuts
set_waterfall_theme Set the default waterfall theme (fustinoni-net)

Map Plugins

Name Description
layer_qth_maidenhead (deprecated) Add Maidenhead (QTH) grid to the map
reduce_map_legend_sections Allow the reduction of the map legend sections (fustinoni-net)

Third-party Plugins

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+.
audio_filter Client-side audio filters: noise blanker, spectral noise reduction, AGC/compressor, auto notch and 3-band EQ with a visualizer (Joerg)
dxcluster Show DX Cluster spots on the waterfall; click a spot to tune (Joerg)
mode_selector Replace the analog mode buttons with one compact mode selector (Joerg)
rig_skin Rig-style theme for the receiver panel: VFO dial, segmented S-meter, band scope, propagation, satellite and DX cluster windows
spider DX cluster spots (telnet or MQTT) on the waterfall; a companion service keeps one cluster connection on the server and has its own configuration page

Detailed Installation & Loading Instructions

  1. Find your OpenWebRX+ htdocs folder
    Use the following command to locate it:

    find / -name openwebrx.js
    
  2. Typical locations for htdocs:
    • /opt/openwebrx/htdocs
    • /usr/lib/python3/dist-packages/htdocs
  3. Create the plugins folders if they don’t exist

    mkdir -p /path/to/htdocs/plugins/{receiver,map}
    
  4. Create or edit the init.js file inside the corresponding plugin type folder (receiver or map)
    Use the provided templates:
  5. Add plugin loading lines to your init.js file if you’re not using the provided init.js - see Beginner Quickstart
    Use the async pattern so dependencies load first, and load the other plugins after the receiver page is initialized:

    (async () => {
      await Plugins.load('https://0xaf.github.io/openwebrxplus-plugins/receiver/utils/utils.js');
      await new Promise(resolve => Plugins.utils.on_ready(resolve));
      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 & Docker Notes

Developing Plugins

See the Development Guide for the plugin structure, the OpenWebRX+ plugin API, the utils helpers, plugin options, and how to add a plugin to this repository.

Contributing

Contributions are welcome!

Support

Use these plugins at your own risk. No warranty is provided.
For support, contact LZ2SLL or join the OWRX+ Telegram Chat.

FAQ

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.

Q: A plugin does not load. How do I find out why?
A: Add Plugins._enable_debug = true; at the top of init.js, reload the page and check the browser console (F12). Errors from the plugins are shown there too.

Q: The plugin_loader window shows no plugins.
A: The loader could not read plugins.json. Check the browser console. When the plugins are hosted on your own server, plugins.json must be in the receiver folder next to the plugin folders, and a server other than OpenWebRX+ must send the Access-Control-Allow-Origin header. See plugin_loader.

Q: The section of a plugin in the receiver panel is empty.
A: Receiver sections need a current OpenWebRX+ version. Update OpenWebRX+.


Contributors


License

This project is licensed under the MIT License.