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,width
andheight
are specified in pixelsrelative
: In this mode,width
andheight
are specified as a value between0
and1
representing 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 23 days ago