This repository contains core functionality to allow users to create plugins for the Elgato Stream Deck, in Rust.
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
}
}
}
}
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.
- Run the
build.ps1
script - Copy the directory
target/com.example.rp-example.sdPlugin
to%AppData%/Elgato/StreamDeck/Plugins
- Restart your Stream Deck software, and add the "Basic Counter" under "Custom" to a button, and press the button!
- Run the
build.sh
script - Copy the directory
target/com.example.rp-example.sdPlugin
to~/Library/Application Support/com.elgato.StreamDeck/Plugins
- 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!