Skip to content

0xAF/openwebrxplus-plugins

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

231 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

layout title permalink
page
OpenWebRX+ Plugins Home
/

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:

  • 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.

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 top two Plugins.load lines (utils, notify). They are shared dependencies. Add or remove names in PluginsToLoad to pick which plugins you want.

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

Plugin List

Receiver Plugins

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)

Utility & Example Plugins

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

Deprecated Receiver Plugins

Name Description
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)

Thirdparty 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+.

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 doesn't exist

    mkdir -p /path/to/htdocs/plugins/{receiver,map}
  4. Create or edit the init.js file inside the coresponding 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:

    (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 & Docker Notes

  • Raspberry Pi:
    If using Raspberry Pi images, a caching service (varnish) may prevent plugins from loading immediately after editing init.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.

Developing Plugins

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:

  1. Create $OWRX_FOLDER/plugins/receiver/my_plugin/my_plugin.js.
  2. Load it locally by folder name: await Plugins.load('my_plugin');
  3. Export Plugins.my_plugin.init() — return true on success, false on a failed dependency check.

Plugin Structure

  • Each plugin lives in plugins/{receiver|map}/plugin_name/ with a matching plugin_name.js entry file.
  • Set Plugins.<name>._version so other plugins can check for it with Plugins.isLoaded('name', version).
  • Set Plugins.<name>.no_css = true if there is no sibling CSS file; otherwise the loader fetches plugin_name.css automatically.
  • Declare dependencies with await Plugins.load('dep') before loading plugins that need them.
  • Use Plugins.utils.wrap_func() to intercept existing OWRX+ functions and Plugins.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.

Hosting on GitHub

To host plugins on GitHub, use GitHub Pages for correct JS Content-Type.

Contributing

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.

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.


Contributors


License

This project is licensed under the MIT License.

About

Plugins collection for OpenWebRX+

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages