Git Product home page Git Product logo

streamdecktoolkit's Introduction

StreamDeckToolkit

Build status NuGet github pages

Intellicode Model

What Is This?

This is a template to help create plugins for the Elgato Stream Deck, using the Stream Deck SDK with Dotnet Core.

Docs

You can read more in the Docs.

Pre-Requisites

In order to make use of this template, you will need to have the Dotnet Core SDK (version 2.2.100 or above) installed on your development machine.

While not absolutely necessary, it is strongly recommended to have the Stream Deck Software installed, to be able to perform some integration testing of your plugin.

Install Project Template

From File System

Installing the template from your filesystem is useful for local testing of the template itself. If you are actively working on the template making changes, this is the route you need to use.

To install, run the following command from the root of the repository.

dotnet new -i Templates/StreamDeck.PluginTemplate.Csharp

To pick up any changes you have made to the template source, you must uninstall the template and reinstall it.

To uninstall, run the following command from the root of the respository.

Windows: dotnet new -u Templates/StreamDeck.PluginTemplate.Csharp

OSX/Linux: dotnet new -u $PWD/Templates/StreamDeck.PluginTemplate.Csharp

From NuGet

dotnet new -i StreamDeckPluginTemplate
- OR -
Install-Package StreamDeckPluginTemplate [-Version x.y.zzz]

Using the Template

Once the template is installed, open a terminal in the folder of your choice and create a new project.

dotnet new streamdeck-plugin --plugin-name FirstPlugin --uuid com.yourcompany.pluginname.actionname --skipRestore false

Or create a directory in a location of your choice, change to that directory and run the command, which will inherit the directory name as the project name with default values.

dotnet new streamdeck-plugin

Creating a Plugin Action

The Stream Deck Toolkit provides the functionality that communicates directly with the Stream Deck software. When creating a plugin, you are responsible for creating actions for the Stream Deck buttons to perform. There are two base classes that you can inherit from when creating your action:

1. BaseStreamDeckAction - this class contains all the integrations necessary to communicate with the Stream Deck at the 'barebones' level. Inheriting from this class will give you the greatest control over how your action sends and receives data from the software.

2. BaseStreamDeckActionWithSettingsModel<T> - this class inherits from BaseStreamDeckAction, this class will automate the population of model properties, where type T is defined as the data that is stored when issuing a 'setSettings' event to the Stream Deck software. The property **SettingsModel** will automatically instantiate an instance of class T, so it is best to assign default values when defining your class T. Also, when using the Property Inspector and passing data back and forth, ensure that the properties defined in the settingsModel in JavaScript matches those that you have defined in T for the automatic mapping to occur between both environments.

Your project may contain any number of actions, inheriting from one of the classes above. In order for the Action to be automatically registered on start up, it must bear the [ActionUuid(Uuid="com.fritzanfriends.pluginname.anotheraction")] attribute.

Actions must also be manually registered in the manifest.json file, with the Uuid that matches ActionUuid attribute.

streamdecktoolkit's People

Contributors

csharpfritz avatar codingbandit avatar hugodahl avatar bradygaster avatar notmyself avatar derekforeman avatar i-love-code avatar alexhedley avatar admiralsnyder avatar simongeering avatar luckynos7evin avatar codetherapist avatar jamesmontemagno avatar wintellectjeff avatar ltd65 avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.