#sdk #streamdeck #api-bindings #rust

rusty-patio

Unofficial Stream Deck SDK for Rust

6 releases (3 stable)

1.0.2 Mar 28, 2023
1.0.1 Mar 26, 2023
0.1.2 Mar 8, 2023

#1123 in Hardware support

Download history 9/week @ 2024-02-26 28/week @ 2024-03-04 11/week @ 2024-03-11 58/week @ 2024-04-01

71 downloads per month

GPL-3.0 license

44KB
1K SLoC

Rusty Patio (Unofficial Rust Stream Deck SDK)

crates.io

This repository contains core functionality to allow users to create plugins for the Elgato Stream Deck, in Rust.

How to Use

Install via cargo:

cargo add rusty-patio

Next, you need to get the arguments sent via the Stream Deck when it runs your plugin binary, connect to it, and then handle the events received.

// Create a new instance of the arguments that are received by the Stream Deck
let args = StreamDeckArgs::new();

// Connect to the Stream Deck
let client = connect_streamdeck(&args).await;

// Handle the Events
match client {
	Ok(mut client) => {
		while let Some(event) = client.received_events.recv().await {
			match event {
				EventReceived::WillAppear(event) => {
					let _ = client.transmitter.log_message(format!("WillAppear Fired: {:?}", event)).await;
				}
				// the rest of the events you want to handle
			}
		}
	}
}

Example

The exmaple directory in this repo contains a ready-to-run example counter plugin. All you have to do is run the build script for your platform, then drop that generated .sdPlugin directory into your Stream Deck Plugins directory.

Windows

  1. Run the build.ps1 script
  2. Copy the directory target/com.example.rp-example.sdPlugin to %AppData%/Elgato/StreamDeck/Plugins
  3. Restart your Stream Deck software, and add the "Basic Counter" under "Custom" to a button, and press the button!

macOS

  1. Run the build.sh script
  2. Copy the directory target/com.example.rp-example.sdPlugin to ~/Library/Application Support/com.elgato.StreamDeck/Plugins
  3. Restart your Stream Deck software, and add the "Basic Counter" under "Custom" to a button, and press the button!

Note: This repository is in its early stages, and as such there may be bugs. If you find any, please open an issue or PR!

Dependencies

~4.5–6.5MB
~120K SLoC