Skip to content

Manifest

Every plugin has a manifest.json file providing important information:

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

Example JSON

Here is an example of manifest.json file.

{
  "Actions": [
    {
      "Icon": "actionIcon",
      "Name": "Counter",
      "States": [
        {
          "Image": "actionDefaultImage",
          "TitleAlignment": "middle",
          "FontSize": "16"
        }
      ],
      "Controllers": ["Keypad", "Encoder"],
      "Encoder": {
        "background": "backgroundImage",
        "Icon": "StackAndLayoutImage",
        "layout": "layoutName",
        "StackColor": "#AABBCC",
        "TriggerDescription": {
          "Rotate": "Describe the rotation",
          "Push": "Describe the encoder push",
          "Touch": "Describe the touch",
          "LongTouch": "Describe the long touch"
        }
      },
      "SupportedInMultiActions": false,
      "Tooltip": "How many times did you get pwned today? Keep track with this counter.",
      "UUID": "com.elgato.counter.action"
    }
  ],
  "SDKVersion": 2,
  "Author": "Elgato",
  "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/gaming/stream-deck",
  "Version": "1.2.0",
  "OS": [
    {
      "Platform": "mac",
      "MinimumVersion": "10.11"
    },
    {
      "Platform": "windows",
      "MinimumVersion": "10"
    }
  ],
  "Software": {
    "MinimumVersion": "5.0"
  }
}

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 six actions: Scene, Record, Screenshot, Flashback Recording, Stream, Live Commentary.
Author Required The author of the plugin. This string is displayed to the user in the Stream Deck store.
CodePath Required The relative path to the HTML/binary file containing the plugin code.
Description Required Provides a general description of what the plugin does. This string is displayed to the user in the Stream Deck store.
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. You should provide @1x and @2x (144pt x 144pt) versions of the image. The Stream Deck application takes care of loading the appropriate version of the image.
Name Required The name of the plugin. This string is displayed to the user in the Stream Deck store.
Version Required Plugin's semantic version (1.0.0)
SDKVersion Required The current SDK version is 2
OS Required The list of operating systems & versions supported by the plugin.
Software Required Indicates which version of the Stream Deck application is required to install the plugin.
Category Optional The name of the custom category in which the actions should be listed. This string is visible to the user in the actions list. If you don't provide a category, the actions will appear inside a "Custom" category.
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. You should provide @1x and @2x versions of the image. The Stream Deck application takes care of loading the appropriate version of the image.
CodePathMac Optional Override CodePath for macOS.
CodePathWin Optional Override CodePath for Windows.
Profiles Optional Specifies an array of profiles. A plugin can have one or more profiles proposed to the user on installation. This lets you create full screen plugins.
PropertyInspectorPath Optional The relative path to the Property Inspector HTML file if your plugin wants to display some custom settings in the Property Inspector. If missing, the plugin will have an empty Property Inspector.
DefaultWindowSize Optional Specify the default window size when a Javascript plugin or Property Inspector opens a window using window.open(). The default value is [500, 650].
URL Optional A site to provide more information about the plugin
ApplicationsToMonitor Optional List of application identifiers to monitor (applications launched or terminated). See the applicationDidLaunch and applicationDidTerminate events.

Actions

Action Type Description
UUID Required The unique identifier of the action. It must be a uniform type identifier (UTI) that contains only lowercase alphanumeric characters (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.
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. You should provide @1x and @2x versions of the image. The Stream Deck application takes care of loading 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. This string is visible to the user in the actions list.
States Required Specifies an array of states. Each action can have one or more states. For example, the Hotkey action has a single state. However, the Game Capture Record action has two states, active and inactive. The state of an action, supporting multiple states, is always automatically toggled whenever the action's key is released (after being pressed). In addition, it is possible to force the action to switch its state by sending a setState event.
PropertyInspectorPath Optional This can override PropertyInspectorPath member from the plugin if you wish to have a different PropertyInspectorPath based on the action. The relative path to the Property Inspector HTML file if your plugin wants to display some custom settings in the Property Inspector.
SupportedInMultiActions Optional Boolean to prevent the action from being used in a Multi Action. True by default.
Tooltip Optional The string is displayed as a tooltip when the user leaves the mouse over your action in the actions list.
DisableCaching Optional Boolean to disable image caching. False by default.
VisibleInActionsList Optional Boolean to hide the action in the actions list. This can be used for a plugin that only works with a specific profile. True by default.
UserTitleEnabled Optional Boolean to disable the title field for users in the property inspector. True by default.
Controllers Optional Specifies an array of controllers. Valid values include "Keypad" and "Encoder". ["Keypad"] by default.
Encoder Optional An object containing encoder information.

States

State Type Description
Image Required The default image for the state. When a user sets a custom image on the primary state, Stream Deck will automatically set the secondary state to a darker version of the same icon.
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 Displayed in the dropdown menu in the Multi-action. For example, the Game Capture Record action has Start and Stop. 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

Encoder (SD+)

The Encoder property is used to describe and configure the dial and display segment on Stream Deck +.

Members Type Description
background Optional The default background image for the encoders touch display slot.
Icon Optional The default icon found in the property inspector, dial stack image, and the layout. If no icon is set Stream Deck will use the action list icon.
layout Optional A string containing the name of a built-in layout or the partial path to a JSON file with a custom layout definition. You can dynamically change the layout with with setFeedbackLayout event. The default layout is the Icon Layout ($X1)
StackColor Optional The color that will be used in the dial stack as background color.
TriggerDescription Optional An object containing strings to describe actions in the property inspector. "Rotate", "Push", "Touch" and "Long Touch".

TriggerDescription (SD+)

Used to describe encoder actions in the property inspector.

"TriggerDescription": {
  "Rotate": "Describe the rotation",
  "Push": "Describe the encoder push",
  "Touch": "Describe the touch",
  "LongTouch": "Describe the long touch"
}

Profiles

Profile Type Description
Name Required The filename of the profile.
DeviceType Required Type of device. Possible values are kESDSDKDeviceType_StreamDeck (0), kESDSDKDeviceType_StreamDeckMini (1), kESDSDKDeviceType_StreamDeckXL (2), kESDSDKDeviceType_StreamDeckMobile (3), kESDSDKDeviceType_CorsairGKeys (4), kESDSDKDeviceType_StreamDeckPedal (5), kESDSDKDeviceType_CorsairVoyager (6), and kESDSDKDeviceType_StreamDeckPlus (7).
Readonly Optional Boolean to mark the profile as read-only. False by default.
DontAutoSwitchWhenInstalled Optional Boolean to prevent Stream Deck from automatically switching to this profile when installed. False by default.

You can create a .streamDeckProfile by using the export button in the Stream Deck application. You can now include this .streamDeckProfile in your plugin and manifest. If you want to create a profile for a device you do not own, you can download and unzip these device-profiles. You can place the profile of the device you are trying to build for in the ProfilesV2 folder located here:

macOS: path ~/Library/Application Support/com.elgato.StreamDeck/ProfilesV2/

Windows: path %appdata%\Elgato\StreamDeck\ProfilesV2\

The device will now appear in the devices list in the Stream Deck application. You can use this mock device to export a profile.

OS

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 supports macOS 10.11 and later and Windows 10 and later:

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

Software

Software Type Description
MinimumVersion Required The minimum version of the Stream deck application that the plugin requires. This value should be set to support Stream Deck 5.0 or later.

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

"Software": {
  "MinimumVersion" : "5.0"
}

ApplicationsToMonitor

A plugin can request to be notified when some applications are launched or terminated. The ApplicationsToMonitor object should contain for each platform an array specifying the list of application identifiers to monitor (bundle identifier on macOS & exe on Windows)

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