StreamDeck-Tools 2.0.1

There is a newer version of this package available.
See the version list below for details.
dotnet add package StreamDeck-Tools --version 2.0.1
NuGet\Install-Package StreamDeck-Tools -Version 2.0.1
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="StreamDeck-Tools" Version="2.0.1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add StreamDeck-Tools --version 2.0.1
#r "nuget: StreamDeck-Tools, 2.0.1"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install StreamDeck-Tools as a Cake Addin
#addin nuget:?package=StreamDeck-Tools&version=2.0.1

// Install StreamDeck-Tools as a Cake Tool
#tool nuget:?package=StreamDeck-Tools&version=2.0.1

BarRaider's Stream Deck Tools

This library wraps all the communication with the Stream Deck App, allowing you to focus on actually writing the Plugin's logic.

NuGet

Author's website and contact information: https://barraider.github.io
** Samples of plugins using this framework: Samples

Version 2.0 is out!

WARNING: This version breaks interfaces used in versions 1.x
This is done to simplify the work on creating plugins even more. In addition, it adds access to additional functionality and data.
Please follow the "Upgrading from versions 1.x" section below to quickly move to version 2.x

Features

  • Optimized for the Stream Deck 4.1 SDK
  • Added support for GlobalSettings (introduced in the 4.1 SDK)
  • Simplified receiving Global Settings updates through the new ReceivedGlobalSettings method
  • Simplified receiving updates from the Property Inspector through the new ReceivedSettings method along with the new Tools.AutoPopulateSettings() method. See the "Auto-populating plugin settings" section below.
  • Introduced a new attribute called PluginActionId to indicate the Action's UUID (See below)
  • Simplified working with filenames from the Stram Deck SDK. See "Working with files" section below
  • Built-in integration with NLog. Use Logger.LogMessage() for logging.
  • Just call the SDWrapper.Run() and the library will take care of all the overhead
  • Just have your plugin inherit PluginBase and implement the basic functionality. Use the PluginActionId to specify the UUID from the manifest file.

How do I use this?

A list of plugins already using this library can be found here

This library wraps all the communication with the Stream Deck App, allowing you to focus on actually writing the Plugin's logic. After creating a C# Console application, using this library requires two steps:

  1. Create a class that inherits the PluginBase abstract class.
    Implement your logic, focusing on the methods provided in the base class.
    Follow the samples here for more details
    New: In version 2.x - use the PluginActionId attribute to indicate the action UUID associated with this class (must match the UUID set in the manifest file)
[PluginActionId("plugin.uuid.from.manifest.file")]
public class MyPlugin : PluginBase
{
	// Create this constructor in your plugin and pass the objects to the PluginBase class
	public MyPlugin(SDConnection connection, InitialPayload payload) : base(connection, payload)
	{
		....
		// TODO: Use the payload.Settings to see the various settings set in the Property Inspector (in my samples, I create a private class that holds the settings)
		// Other relevant settings in the payload include the actual position of the plugin on the Stream Deck
		
		// Note: By passing the `connection` object back to the PluginBase (using the `base` in the constructor), you now have access to a property called `Connection` 
		// throughout your plugin.
	}
			....
			
	// TODO: Implement all the remaining abstract functions from PluginBase (or just leave them empty if you don't need them)
	
	// An example of how easy it is to populate settings in StreamDeck-Tools v2
	public override void ReceivedSettings(ReceivedSettingsPayload payload)
	{
		Tools.AutoPopulateSettings(settings, payload.Settings); // "settings" is a private class that holds the settings for your plugin's instance.
	}
}
  1. In your program.cs, just pass the args you received to the SDWrapper.Run() function, and you're done!
    Note: This process is much easier than the one used in 1.x and is based on using the PluginActionId attribute, as shown in Step 1 above.
    Example:
class Program
{
	static void Main(string[] args)
	{
		SDWrapper.Run(args);
	}
}
  1. There is no step 3 - that's it! The abstract functions from PluginBase that are implemented in MyPlugin hold all the basics needed for a plugin to work. You can always listen to additional events using the Connection property.

Additional step-by-step instructions, including how to upgrade from v1.0 are here


Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 is compatible.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories (3)

Showing the top 3 popular GitHub repositories that depend on StreamDeck-Tools:

Repository Stars
mhwlng/streamdeck-elite
Elgato Stream Deck plugin for Elite Dangerous
mhwlng/streamdeck-starcitizen
Elgato Stream Deck button plugin for Star Citizen
BarRaider/streamdeck-voicemeeter
VoiceMeeter integration for Stream Deck
Version Downloads Last updated
6.2.0 573 1/23/2024
6.1.1 1,536 4/26/2023
6.1.0 659 4/25/2023
6.0.0 1,090 2/12/2023
5.9.1-Beta1 601 12/22/2022
5.9.0-Beta1 596 12/8/2022
3.2.0 3,458 1/20/2021
3.1.0 2,027 11/29/2020
3.0.0 1,087 10/1/2020
2.9.0 1,155 6/25/2020
2.8.0 1,085 4/27/2020
2.7.0 1,529 1/2/2020
2.6.0 1,315 9/29/2019
2.5.0 1,127 8/12/2019
2.4.2 1,046 7/15/2019
2.3.0 993 7/9/2019
2.2.0 1,184 5/24/2019
2.0.1 1,201 3/8/2019
2.0.0 1,363 3/4/2019
1.1.6 1,188 2/18/2019
1.1.5 1,122 2/15/2019
1.1.1 1,123 2/9/2019

2.0.1 - Fixed bug which caused issues when adding plugins to MultiActions  

Note: Library has been optimized for the new 4.1 SDK!  

Some of the changes are breaking existing interfaces. Upgrade instruction are available on the Github page:
https://github.com/BarRaider/streamdeck-tools
Added new functionality + more data to existing methods. Plugin creation is now much easier