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