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: `${number}.${number}.${number}`

Version of the plugin in semver format.

Example

ts
'1.0.0'