#streamdeck #bevy-plugin #plugin #events #bevy

bevy_streamdeck

Elgato Stream Deck plugin for Bevy

13 unstable releases (5 breaking)

new 0.6.0-rc.1 Apr 5, 2025
0.5.0 Nov 30, 2024
0.4.0 Jul 4, 2024
0.4.0-rc.4 Jun 29, 2024
0.1.2 Jul 31, 2022

#2409 in Game dev

Download history 55/week @ 2024-12-15 39/week @ 2024-12-22 26/week @ 2024-12-29 32/week @ 2025-01-05 30/week @ 2025-01-12 34/week @ 2025-01-19 38/week @ 2025-01-26 62/week @ 2025-02-02 44/week @ 2025-02-09 62/week @ 2025-02-16 58/week @ 2025-02-23 62/week @ 2025-03-02 45/week @ 2025-03-09 34/week @ 2025-03-16 32/week @ 2025-03-23 35/week @ 2025-03-30

153 downloads per month

MIT/Apache

340KB
259 lines

Bevy Stream Deck

MIT/Apache 2.0 Doc Crate Bevy Tracking CI

This is a plugin for integrating the Elgato Stream Deck with the Bevy game engine. It allows you to handle input events from the Stream Deck and control its display.

capture of a Stream Deck

Getting Started

Adding the Plugin

app.add_plugin(StreamDeckPlugin);

Handling Input Events

Receive events from button presses (see inputs example):

fn print_streamdeck_events(mut streamdeck_input_events: EventReader<StreamDeckInput>) {
    for event in streamdeck_input_events.iter() {
        info!("{:?}", event);
    }
}

Setting Button Colors

Set a button color (see colors example):

fn set_color(streamdeck: Res<StreamDeck>) {
    streamdeck.set_key_color(1, Color::BLUE);
}

Displaying Images

Display an image on a button (see image example):

fn set_image(streamdeck: Res<StreamDeck>, logo: Res<Logo>, images: Res<Assets<Image>>) {
    let handle: Handle<Image> = ...;
    if let Some(image) = images.get(&handle) {
        streamdeck.set_key_image(1, &image);
    }
}

Platform-Specific Setup

Linux

For Linux setup, please refer to the rust-streamdeck getting started guide.

Compatibility

Bevy Compatibility

Bevy bevy_streamdeck
0.15 0.5
0.14 0.4
0.13 0.3
0.9 0.2
0.8 0.1

Dependencies

~25–59MB
~1M SLoC