Skip to content

Plugin configuration

Your plugin's main configuration file is named pluginConfig.ts and must adhere to ExternalPluginConfig interface.

Properly configured editor, will help you to edit this file, and will provide you with autocompletion and type checking.

Just remember, that any external plugin, must have a name, that starts with windy-plugin- prefix.

Example

typescript
const config: ExternalPluginConfig = {
  name: 'windy-plugin-airspace-example',
  version: '1.0.0',
  title: 'Airspaces example',
  icon: '🚁',
  description: 'This plugin demonstrates capabilities...',
  author: 'IL (Windy.com)',
  repository: 'https://github.com/windycom/windy-plugins',
  desktopUI: 'embedded',
  mobileUI: 'small',
};

Table of contents

Properties

Properties

addToContextmenu

Optional addToContextmenu: boolean

If user can open plugin from context menu on map (RH button mouse click) so plugin can be opened with lat, lon parameters.


author

author: string

Plugin's author name

Example

ts
'John Doe (optional company name)'

description

Optional description: string

Optional plugin description that will be displayed in plugins gallery

Example

ts
'This plugin demonstrates capabilities of Windy Plugin System'

desktopUI

desktopUI: "rhpane" | "embedded"

Plugin behavior on desktop and tablet devices

rhpane plugins occupy RH pane on desktop, which provides enormous amount of space, and enables to scroll down, but results in automatic closing or the plugin, when any other UI element opens from right side (menu, settings etc...).

Simply put only one rhpane plugin can be opened at the same time.

You can use embedded position, whose space is limited, but plugin is embedded into main page and stays open.


desktopWidth

Optional desktopWidth: number

Width of rhpane plugin in pixels (default is 400).


homepage

Optional homepage: string

Optional homepage, where plugin is described in more details

Example

ts
'https://www.company.com/about-our-plugin

icon

icon: string

Unicode emoji icon, that will be displayed in plugins gallery and in menu associated with this plugin

Example

ts
'👋'

internal

Optional internal: boolean

The plugin has NO LINK in the main menu, can be open only programmatically and its installation is not persistent.


listenToSingleclick

Optional listenToSingleclick: boolean

Whether plugin (if opened) want to receive singleclick events from map.


mobileUI

mobileUI: "fullscreen" | "small"

Plugin behavior on mobile devices

fullscreen plugin occupies whole screen, while small takes only minimum space on the bottom of the screen.


name

name: `windy-plugin-${string}`

Name of the plugin, that (in order to separate external and our internal plugins) MUST contain windy-plugin- prefix

Example

ts
'windy-plugin-hello-world'

private

Optional private: boolean

If set, indicates, that plugin is private and should not be offered to other users in plugins gallery. Companies and institutions, can display their sensitive data on Windy.com without any fear, that their API endpoints will be exposed.


repository

Optional repository: string

Location of repository, with source code of the plugin

Example

ts
'https://github.com/windycom/hello-world-plugin'

routerPath

Optional routerPath: `/${string}`

Optional path to be used for routing and displaying of plugin's path as URL in browser. Must have form of SEO friendly string, with express.js inspired parameters.

If defined installed plugins can user access via URL https://www.windy.com/plugin/hello-world

Example

ts
'/hello-world'

Example

ts
'/hello-world/:lat/:lon'

Example

ts
'/hello-world/:optional?'

title

title: string

Official title of the plugin, that will be displayed as a browser title, when plugin will be opened

Example

ts
'Hello World plugin'

version

version: string

Version of the plugin in semver format.

Example

ts
'1.0.0'