Skip to content

Manifest

Every plugin has a JSON-formatted manifest file, named manifest.json, that provides important information:

  • name
  • description
  • version
  • author
  • list of actions with the action's name, default icons
  • ...

manifest.json example

Here is an example of manifest.json file from the Counter sample plugin:

{
  "Actions": [
    {
      "Icon": "actionIcon", 
      "Name": "Counter", 
      "States": [
        {
          "Image": "actionDefaultImage",
          "TitleAlignment": "middle", 
          "FontSize": "16"
        }
      ], 
      "SupportedInMultiActions": false,
      "Tooltip": "How many times did you get pwned today? Keep track with this counter.", 
      "UUID": "com.elgato.counter.action"
    }
  ], 
  "Author": "Elgato Systems", 
  "CodePath": "code.html", 
  "Description": "This lets you display the number of times you pressed on the key", 
  "Name": "Counter", 
  "Icon": "pluginIcon", 
  "URL": "https://www.elgato.com/en/gaming/stream-deck", 
  "Version": "1.0",
  "OS": [
    {
        "Platform": "mac", 
        "MinimumVersion" : "10.11"
    },
    {
        "Platform": "windows", 
        "MinimumVersion" : "10"
    }
  ]
}

Members

Members Type Description
Actions Required Specifies an array of actions. A plugin can indeed have one or multiple actions. For example the Game Capture plugin has 6 actions: Scene, Record, Screenshot, Flashback Recording, Stream, Live Commentary.
Author Required The author of the plugin. This string is displayed to the user.
Category Optional The name of the custom category in which the actions should be listed. This string is displayed to the user.
CategoryIcon Optional The relative path to a PNG image without the .png extension. This image is used in the actions list. The PNG image should be a 28pt x 28pt image. Ideally you should provide a @1x and @2x version of the image. The Stream Deck application takes care of loading the appropriate version of the image.
CodePath Required The relative path to the HTML/binary file containing the code of the plugin.
CodePathMac Optional Override CodePath for macOS.
CodePathWin Optional Override CodePath for Windows.
Description Required Provides a general description of what the plugin does. This string is displayed to the user.
Icon Required The relative path to a PNG image without the .png extension. This image is displayed in the Plugin Store window. The PNG image should be a 72pt x 72pt image. Ideally you should provide a @1x and @2x version of the image. The Stream Deck application takes care of loading the appropriate version of the image.
Name Required The name of the plugin.
Profiles Optional Specifies an array of profiles. A plugin can indeed have one or multiple profiles that are proposed to the user on installation.
PropertyInspectorPath Optional The relative path to the Property Inspector html file if your plugin want to display some custom settings in the Property Inspector.
URL Optional A URL displayed to the user if he wants to get more info about the plugin.
Version Required The version of the plugin which can only contain digits and periods. This is used for the software update mechanism.
OS Required The list of operating systems supported by the plugin as well as the minimum supported version of the operating system.
Software Optional Indicates which version of the Stream Deck application is required.
ApplicationsToMonitor Optional List of application identifiers to monitor (applications launched or terminated). See the applicationDidLaunch and applicationDidTerminate events.

Actions

Each action contains the following members:

Action Type Description
Icon Required The relative path to a PNG image without the .png extension. This image is displayed in the actions list. The PNG image should be a 20pt x 20pt image. Ideally you should provide a @1x and @2x version of the image. The Stream Deck application take care of loaded the appropriate version of the image. This icon is not required for actions not visible in the actions list (VisibleInActionsList set to false).
Name Required The name of the action.
PropertyInspectorPath Optional This can override PropertyInspectorPath member from the plugin if you wish to have different PropertyInspectorPath based on the action. The relative path to the Property Inspector html file if your plugin want to display some custom settings in the Property Inspector.
States Required Specifies an array of states. Each action can have one state or 2 states (on/off). For example the Hotkey action has a single state. However the Game Capture Record action has 2 states, active and inactive.
SupportedInMultiActions Optional Boolean to prevent the action from being used in a Multi Action. True by default.
Tooltip Optional The string displayed as tooltip when the user leaves the mouse over your action in the actions list.
UUID Required The unique identifier of the action. It must be a uniform type identifier (UTI) that contains only alphanumeric characters (A-Z, a-z, 0-9), hyphen (-), and period (.). The string must be in reverse-DNS format. For example, if your domain is elgato.com and you create a plugin named Hello with the action My Action, you could assign the string com.elgato.hello.myaction as your action's Unique Identifier.
VisibleInActionsList Optional Boolean to hide the action in the actions list. This can be used for plugin that only works with a specific profile. True by default.

States

Each state contains the following members:

State Type Description
Image Required The default image for the state.
MultiActionImage Optional This can be used if you want to provide a different image for the state when the action is displayed in a Multi Action.
Name Optional The name of the state displayed in the dropdown menu in the Multi action. For example Start or Stop for the states of the Game Capture Record action. If the name is not provided, the state will not appear in the Multi Action.
Title Optional Default title.
ShowTitle Optional Boolean to hide/show the title. True by default.
TitleColor Optional Default title color.
TitleAlignment Optional Default title vertical alignment. Possible values are "top", "bottom" and "middle".
FontFamily Optional Default font family for the title. Possible values are "Arial", "Arial Black", "Comic Sans MS", "Courier", "Courier New", "Georgia", "Impact", "Microsoft Sans Serif", "Symbol", "Tahoma", "Times New Roman", "Trebuchet MS", "Verdana", "Webdings", "Wingdings".
FontStyle Optional Default font style for the title. Possible values are "Regular", "Bold", "Italic" and "Bold Italic". Note that some fonts might not support all values.
FontSize Optional Default font size for the title.
FontUnderline Optional Boolean to have an underline under the title. False by default

Profiles

Each profile contains the following members:

Profile Type Description
Name Required The filename of the profile.
DeviceType Required Type of device. Possible values are kESDSDKDeviceType_StreamDeck (0) and kESDSDKDeviceType_StreamDeckMini (1).
ReadOnly Optional Boolean to mark the profile as read-only. False by default.

OS

The OS object contains the following members:

OS Type Description
Platform Required The name of the platform, mac or windows.
MinimumVersion Required The minimum version of the operating system that the plugin requires. For Windows 10, you can use 10. For macOS 10.11, you can use 10.11.

On Windows, the OS Build information is used for the MinimumVersion. Examples of valid MinimumVersion:

  • 10
  • 10.0
  • 10.0.17134

On macOS, the version is used for the MinimumVersion. Examples of valid MinimumVersion:

  • 10.11
  • 10.14
  • 10.13.2

Example for a plugin that support macOS 10.11 and later and Windows 10 and later:

  "OS": [
    {
        "Platform": "mac", 
        "MinimumVersion" : "10.11"
    },
    {
        "Platform": "windows", 
        "MinimumVersion" : "10"
    }
  ]

Software

The Software object contains the following members:

Software Type Description
MinimumVersion Optional The minimum version of the Stream deck application that the plugin requires. Default is 4.0.

Example for a plugin that requires Stream Deck 4.1 or later:

    "Software": 
    {
        "MinimumVersion" : "4.1",
    }

ApplicationsToMonitor

A plugin can request to be notified when some applications are launched or terminated. In order to do so, the ApplicationsToMonitor object should contain for each platform an array specifying the list of application identifiers to monitor. On macOS the application bundle identifier is used while the exe filename is used on Windows.

Example:

"ApplicationsToMonitor": {
    "mac": [
        "com.apple.mail",
        "com.apple.safari"
    ],
    "windows": [
        "someapp.exe",
        "anotherapp.exe"
    ]
}

Localization

The manifest contains several strings that can be localized. You can provide the localizations in json files located next to the manifest.json. For example you can provide a fr.json file to localize the plugin in French:

{
  "Description": "Affiche le nombre de fois que la touche a été appuyée", 
  "Name": "Compteur", 
  "com.elgato.counter.action": {
    "Name": "Compteur", 
    "Tooltip": "Cette action affiche le nombre de fois que la touche a été appuyée"
  }
}

Note that if you don't provide a localization string, the string from the manifest.json file will be used. Stream Deck supports the following languages:

  • Chinese: zh_CN.json
  • German: de.json
  • English: en.json
  • French: fr.json
  • Japanese: ja.json
  • Korean: ko.json
  • Spanish: es.json