StreamDeck Oxide
A high-level framework for creating Stream Deck applications in Rust.
Features
- Button rendering with text, icons, and custom images
- View system for organizing buttons into screens
- Navigation between views
- Event handling for button presses
- Async support for fetching state and handling actions
- Plugin system for creating modular, extensible applications
Installation
Add this to your Cargo.toml:
[]
= "0.1.4"
Or if you want to use plugins:
[]
= { = "0.1.4", = ["plugins"] }
Other dependencies
libudev is required for HID support. You can install it using your package
manager. flake.nix with a dev shell is provided for development.
Usage
The library provides two main approaches for building Stream Deck applications:
Basic Usage
For simple applications, you can use the standard approach with a custom navigation structure:
// See the full example in examples/simple/src/main.rs
use ;
// Define your application context
// Define your navigation structure
// Implement NavigationEntry to define your views
// Run your application
.await?;
For the complete example, see examples/simple/src/main.rs.
Plugin System
For more complex applications, you can use the plugin system to create modular, extensible applications:
// See the full example in examples/plugins/src/main.rs
use ;
// Define your plugin
;
// Create and run your plugin-based application
let context = new;
.await?;
For the complete plugin example, see examples/plugins/src/main.rs.
Plugin System Benefits
The plugin system offers several advantages:
- Modular Development: Create self-contained plugins that can be developed independently
- Shared Context: Share data between plugins using a type-safe context system
- Flexible Navigation: Navigate between plugin views seamlessly
- Extensibility: Add new functionality without modifying existing code
- Sharing Plugins: You can share your plugins with the community or use plugins created by others as part of your application
Documentation
For more detailed documentation, see the API documentation.
License
This project is licensed under the MIT License. See the LICENSE file for details.
This project is using Roboto font for rendering text. The font files are
included in the fonts directory. Roboto is licensed under the Apache License.
See the
LICENSE-ROBOTO file
for details.