The Application Manifest
Manifest
The manifest.json file is the entrypoint for all applications built for Streamlabs Desktop. Using the manifest you will describe your application name, version, how many pages it will render in Streamlabs Desktop, what permissions you need to operate, etc.
You need a manifest.json both while developing your app and for your eventual release bundle.
An example manifest.json is shown below:
{
"name": "Streamlabs Example App",
"version": "0.0.1",
"buildPath": "build/",
"permissions": ["slobs.scenes-sources", "slobs.obs-settings"],
"supportedPlatforms": ["twitch", "mixer", "youtube", "facebook"],
"icon": "streamlabs-logo.jpg",
"sources": [
{
"type": "browser_source",
"name": "Example Widget",
"id": "streamlabs_example_widget",
"about": {
"description": "This widget will play a cool animation when a button is clicked",
"bullets": [
"Plays cool animations"
],
"bannerImage": "colbert.gif"
},
"file": "widget.html",
"initialSize": {
"type": "relative",
"width": 1,
"height": 1
}
}
],
"pages": [
{
"slot": "top_nav",
"file": "settings.html",
"popOutSize": {
"width": 300,
"height": 500
}
}
]
}The complete structure and schema of the manifest.json is described below.
manifest.json contains these properties:
Property | Type | Description |
|---|---|---|
name | string (required) | Name of your application the will be shown in Streamlabs Desktop |
version | string (required) | Version of your application |
buildPath | string | If you are using |
permissions | array | Array of perrmissions if you are using Streamlabs Desktop API. Details: Streamlabs Desktop API |
sources | array | Array of Streamlabs Desktop Each source your application exposes should have a unique |
pages | array | Array of pages that will be rendered in Streamlabs Desktop.
|
authorizationUrls | array | An array of URLs that are whitelisted to be loaded in an authorization window. For the purposes of matching against this list, query parameters are ignored. |
supportedPlatforms | array (required) | An array of streaming platforms that your application supports (can process events, profiles, etc). |
mediaDomains | array | An array of domains that are supported CDNs for serving media that gets downloaded to the user's hard drive. Currently this is only required for stinger transition videos. The domains in this list must be the full hostname including sub-domains. |
icon | string | A relative path to an app icon inside your app bundle. Your icon should be square, and we recommend an icon of at least |
sources is an array that should contain objects with these properties:
Property | Type | Description |
|---|---|---|
id | string (required) Min length: 6 | Unique identifier of this |
type | string (required) | Type of the source.
|
name | string (required) | Name of the source. This name will be visible for clients during the |
about | object (required) | Description of the source. Will be visible for clients |
file | string (required) | Relative path to the file. This file will be opened as a source.
|
initialSize | object | Scaling and default positioning of the |
redirectPropertiesToTopNavSlot | boolean (default: false) | If true, any time the user opens the Source Properties window on this source, they will be redirected to your |
pages is an array that should contain these objects:
Property | Type | Description |
|---|---|---|
slot | string (required) | Position on the nav bar where user can found a link to this page slot can have one of the following values:
|
file | string (required) | Relative path to the file. This file will be opened.
|
persistent | boolean (default: false) | When enabled, this page will be loaded in the background when Streamlabs Desktop starts, and will always be running. This can be useful for listening to events in the background, but comes at the cost of decreased performance. If your page does not need to be continually available in the background, consider leaving this option off. |
allowPopout | boolean (default: true) | Whether you allow this page to be popped out into an external window. Not all slots support popping out into an external window. |
popOutSize | object (optional, | Size of the pop-out window with dimensions in pixels. You can also supply |
about is an object with these properties:
Property | Type | Description |
|---|---|---|
description | string (required) | Short description of this |
bullets | array of strings | Short list of features that this |
bannerImage | string | Relative path to file |
initialSize is an object with these properties:
This object describes the initial viewport size of the browser source. It supports 2 modes:
absolute: In this mode,widthandheightare specified in pixelsrelative: In this mode,widthandheightare specified as a value between0and1representing a percentage of the end user's canvas resolution. For example, an initial size of{ type: 'relative', width: 1, height: 1 }would take up the entire canvas.
Property | Type | Description |
|---|---|---|
type | string (required) | Options: |
width | number | Width |
height | number | Height |
popOutSize is an object with these properties
This object describes the pop-out window size of the page. it contains width and height, both specified in pixels.
Property | Type | Description |
|---|---|---|
width | number (default: | Width |
Height | number (default: | Height |
Updated about 2 months ago
