Software for managing Stream Deck devices with folders and actions

Overview

discord

Streamduck

streamducklogo_cut
Software for managing Stream Deck devices with folders and actions

Project that will perhaps be better than streamdeck-ui

Currently still in heavy development, and is not usable

Features

Currently supported:

  • Linux compatible: Works on Linux without having to code
  • Managing multiple streamdeck devices: Able to control multiple streamdeck devices with each having their own separate configurations.
  • Flexible button display: Buttons can be configured to have one of the following backgrounds: (solid color, horizontal and vertical gradients, images), and any amount of text objects with extensive text rendering settings
  • Folders: Buttons can be structured in any desirable folder structure
  • Plugin support: The software can be extended with any amount of plugins, with plugins having access to all core features of the project. In fact, folder support was made with same API as plugins use.
  • Auto-(re)connect: Will automatically attempt to establish connection with previously added devices

Planned features:

  • Lua support for plugins - for simple plugins to be made that utilize streamduck API
  • Support for animated images
  • Support for plugins to render custom images - will allow much greater flexibility for plugins, you could potentially run games on streamdeck screen
  • Windows support for those who would prefer using open source software on Windows
  • Button animation system with flexibility of having plugins define custom animations
  • Built-in OBS Websocket integration
  • NodeJS native module
  • Electron-based GUI (will have equal functionality with cli version) (alternative GUI applications can be made)

Structure of the Project

streamduck-core

Simplification of rendering and streamdeck management for use with other modules

streamduck-daemon

Service that handles the core, plugins and provides a many types of sockets for clients to interact with the core
Communication sockets that are currently planned are as following: Unix Domain Socket, Windows Named Pipes, Websocket

streamdeck-client

Library that simplifies communication with the streamduck-daemon, and also allows one to make custom UI clients for the software

streamdeck-cli

Command-line tool to interact with the daemon

You might also like...
A Rust proc-macro crate which derives functions to compile and parse back enums and structs to and from a bytecode representation

Bytecode A simple way to derive bytecode for you Enums and Structs. What is this This is a crate that provides a proc macro which will derive bytecode

A library and tool for automata and formal languages, inspired by JFLAP
A library and tool for automata and formal languages, inspired by JFLAP

Sugarcubes is a library and application for automata and formal languages. It is inspired by JFLAP, and is intended to eventually to be an alternative to JFLAP.

A stupid macro that compiles and executes Rust and spits the output directly into your Rust code

inline-rust This is a stupid macro inspired by inline-python that compiles and executes Rust and spits the output directly into your Rust code. There

This is a Discord bot written in Rust to translate to and from the Bottom Encoding Standard using bottom-rs and Serenity.
This is a Discord bot written in Rust to translate to and from the Bottom Encoding Standard using bottom-rs and Serenity.

bottom-bot This is a Discord bot written in Rust to translate to and from the Bottom Encoding Standard using bottom-rs and Serenity. Ever had this pro

An implementation of Code Generation and Factoring for Fast Evaluation of Low-order Spherical Harmonic Products and Squares

sh_product An implementation of Code Generation and Factoring for Fast Evaluation of Low-order Spherical Harmonic Products and Squares (paper by John

lightweight and customizable rust s-expression (s-expr) parser and printer

s-expr Rust library for S-expression like parsing and printing parser keeps track of spans, and representation (e.g. number base) number and decimal d

Crates Registry is a tool for serving and publishing crates and serving rustup installation in offline networks.
Crates Registry is a tool for serving and publishing crates and serving rustup installation in offline networks.

Crates Registry Description Crates Registry is a tool for serving and publishing crates and serving rustup installation in offline networks. (like Ver

Simplify temporary email management and interaction, including message retrieval and attachment downloads, using Rust.

Tempmail The Tempmail simplifies temporary email management and interaction, including message retrieval and attachment downloads, using the Rust prog

The simplest way to de-Google your life and business: Inbox, Calendar, Files, Contacts & much more
The simplest way to de-Google your life and business: Inbox, Calendar, Files, Contacts & much more

Bloom The all-in-one private workspace Try it for free! You no longer trust tech monopolies with your data? You are done with your privacy invaded by

Comments
  • Conversion utility functions don't convert bit depth

    Conversion utility functions don't convert bit depth

    Description

    I was trying to render an image with a custom renderer and my image kept not being rendered even though the write_image method returns success. It turns out (at least my "Original V2") the image does not work if it's 16-bit but does if it's 8-bit.

    Steps to Reproduce

    Take a 16-bit PNG image, e.g. the lightbulb from https://www.home-assistant.io/integrations/light/ to put into a component and modify the example in this repo to load that image instead of the gradient.

                let image = load_image(core.core().image_size, "XXX/Downloads/lightbulb.png").unwrap();
                let tex = convert_image(&Kind::OriginalV2, image);
                streamdeck.write_image(&tex).ok();
    

    This succeeds but the device does not show anything. It does work if I change the bit depth to 8 and then load the same module. If I do

                let image = load_image(core.core().image_size, "XXX/Downloads/lightbulb.png").unwrap();
                let rgba8 = DynamicImage::ImageRgba8(image.to_rgba8());
                let tex = convert_image(&Kind::OriginalV2, rgba8);
                let written = streamdeck.write_image(&tex);
    

    instead, then that works.

    Expected behavior

    The conversion utility methods should take care of the conversion to 8-bit (or whatever else that we do need). It seems to be that the bit depth is the one difference here.

    Screenshots

    It'd just be a blank button vs one with anything in it.

    opened by carlosmn 4
  • Combine the render-loop wait with the button press wait

    Combine the render-loop wait with the button press wait

    Instead of doing non-blocking read followed by some sleep, we can combine the time we want to wait until the next render cycle with waiting for the button presses.

    This means that even with slow rates, aka long sleep times, we can still react quickly to button presses.


    Testing locally it does work though I don't know if there was some reason for the loop to be the way it is right now. Beyond the first iteration it shouldn't matter whether the button change detection is the first or last thing as the sequence is still going to be the same.

    opened by carlosmn 3
  • Error at installation on Ubuntu 22.04 LTS

    Error at installation on Ubuntu 22.04 LTS

    Description Cannot install on Ubuntu 22.04.1 LTS

    Steps to Reproduce Followed the steps from the docs.

    Expected behavior Installation of Streamduck :wink:

    Error:

    thread 'main' panicked at 'Unable to find libusb-1.0: "Could not run `\"pkg-config\" \"--libs\" \"--cflags\" \"libusb-1.0\"`\nThe pkg-config command could not be found.\n\nMost likely, you need to install a pkg-config package for your OS.\nTry `apt install pkg-config`, or `yum install pkg-config`,\nor `pkg install pkg-config` depending on your distribution.\n\nIf you've already installed it, ensure the pkg-config command is one of the\ndirectories in the PATH environment variable.\n\nIf you did not expect this build to link to a pre-installed system library,\nthen check documentation of the hidapi crate for an option to\nbuild the library from source, or disable features or dependencies\nthat require pkg-config."', /home/xxxxxx/.cargo/registry/src/github.com-1ecc6299db9ec823/hidapi-1.4.2/build.rs:69:60
      note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
    warning: build failed, waiting for other jobs to finish...
    error: failed to compile `streamduck-daemon v0.2.0`, intermediate artifacts can be found at `/tmp/cargo-installbAWs9j`
    
    opened by mbootsman 2
Releases(0.2.0)
Owner
TheJebForge
TheJebForge
A project for managing all Pop!_OS sources

Pop!_OS Pop!_OS is designed for people who use their computer to create; whether it’s complicated, professional grade software and products, sophistic

Pop!_OS 2k Jan 6, 2023
Rewrite of the Discord Bot used for Managing the Infinity Bot List Servers.

Arcadia Rewrite of the Discord Bot used for Managing the Infinity Bot List Servers. Contributing Always run fmt.sh before making a Pull Request! MacOS

InfinityBotList 3 Dec 15, 2022
πŸ“œ A pci.ids-compliant library for getting information about available PCI devices.

aparato A pci.ids-compliant library for getting information about available PCI devices. Usage Add the following to your project's Cargo.toml file: ap

Aziz Ben Ali 22 Nov 14, 2022
Cross-platform GUI written in Rust using ADB to debloat non-rooted android devices

Cross-platform GUI written in Rust using ADB to debloat non-rooted android devices. Improve your privacy, the security and battery life of your device.

w1nst0n 6.8k Jan 2, 2023
Opensource diagnostic software for Daimler vehicles, inspired by Xentry and DAS, written in Rust

OPENSTAR An opensource diagnostic application for Daimler vehicles inspired by DAS and Xentry. Some of the work here is based on OpenVehicleDiag If yo

Ashcon Mohseninia 21 Nov 20, 2022
Meet Rustacean GPT, an experimental project transforming OpenAi's GPT into a helpful, autonomous software engineer to support senior developers and simplify coding life! πŸš€πŸ€–πŸ§ 

Rustacean GPT Welcome, fellow coding enthusiasts! ?? ?? I am excited to introduce you to Rustacean GPT, my humble yet ambitious project that aims to t

Gary McDougall 3 May 10, 2023
Buildomat manages the provisioning of ephemeral UNIX systems on which to run software builds

B U I L D O M A T a software build labour-saving device Buildomat manages the provisioning of ephemeral UNIX systems (e.g., instances in AWS EC2) on w

Oxide Computer Company 33 Dec 4, 2022
A powerful minecraft bedrock software written in Rust with a powerful Typescript plugin API.

Netrex A powerful minecraft bedrock software written in RustLang. Why Netrex? It's written in Rust. Unique and straight to the point. Typescript Plugi

Netrex 51 Dec 26, 2022
A realtime flight tracking program for our Software Engineering 300 class at ERAU

Flight Tracking ERAU SE300 Description Software that allows for weather and plane tracking to facilitate the user in looking at plane paths. Many peop

null 18 Sep 29, 2022
Software adapter for various Chunithm slider controllers with a built-in Brokenithm web controller

slidershim Software adapter for various Chunithm slider controllers with a built-in Brokenithm web controller. Has support for keyboard/gamepad output

Si Yuan 45 Dec 17, 2022