Manifest

Describes the plugin.

Every plugin has a manifest to provide information to the Stream Deck application as well as the Stream Deck store.

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"],
      "DisableAutomaticStates": false,
      "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": "6.4"
  }
}

Members

MembersTypeDescription

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 Stream Deck marketplace. The PNG image should be a 288 x 288 px. You should provide @1x and @2x (288 x 288 px & 576 x 576 px respectively). 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

Required

The list of operating systems & versions supported by the plugin.

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.

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

Optional

List of application identifiers to monitor (applications launched or terminated). See the applicationDidLaunch and applicationDidTerminate events.

Actions

ActionTypeDescription

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.

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.

DisableAutomaticStates

Optional

Determines whether the state of the action should automatically toggle when the user presses the action; only applies to actions that have two states defined. Default is false.

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.

Optional

An object containing encoder information.

OS

Optional

Array of operating system platforms that the action supports, for example: ["mac", "windows"].

States

StateTypeDescription

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

MembersTypeDescription

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.

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

ProfileTypeDescription

Name

Required

The filename of the profile.

DeviceType

Required

Type of device. Possible values are: - StreamDeck (0) - StreamDeckMini (1) - StreamDeckXL (2) - StreamDeckMobile (3) - CorsairGKeys (4) - StreamDeckPedal (5), - CorsairVoyager (6) - StreamDeckPlus (7) - SCUFController (8) - StreamDeckNeo (9)

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.

AutoInstall

Optional

Boolean that determines whether the profile should be auto-installed when the plugin is installed. When false, the user will be prompted to install the plugin the first time the plugin calls switchToProfile.

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.

OS

OSTypeDescription

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

SoftwareTypeDescription

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 6.1 or later:

"Software": {
  "MinimumVersion" : "6.1"
}

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"
  ]
}

Last updated