Chromatic Matrix

A native Linux control utility for mapping key actions, layout profiles, and shortcuts on Elgato Stream Decks.

Hardware Control GPL-3.0 Rust / GTK4 Active Status

Overview

Chromatic Matrix is a custom desktop manager designed specifically for Linux users who rely on Elgato Stream Deck keypads. It communicates directly with key hardware via raw USB interfaces to load customized image displays, trigger shortcuts, run complex shell scripts, and manage profile matrices.

Built in Rust with a clean GTK4 user interface, the tool features smart profile mappings that adapt dynamically to what application you are currently focusing on.

Key Features

Action Engine

  • Command Executions: Bind individual hardware keys to script paths, native software launchers, or system terminal macros.
  • Keypress Simulation: Map specific button presses to keyboard shortcut binds (e.g., standard streaming controls, OBS actions, window layouts).
  • Auto Icon Extraction: Automatically extracts high-resolution icons from desktop applications for one-click key mapping.

Active Focus Profiles

  • Automatic Context Switching: Listens to window manager changes to swap Stream Deck profiles based on the focused app.
  • Multi-Window Support: Uses xprop queries on X11 environments, with native parser tools for Hyprland and Sway protocols on modern Wayland stacks.

Broad Hardware Coverage

Compatible with a wide array of Stream Deck generations:

  • Stream Deck Original & Mk.2
  • Stream Deck XL
  • Stream Deck Mini
  • Stream Deck Pedal

Installation & Setup

1. USB Permissions (udev Rules)

To access connected USB devices without running the daemon as root, configure target rules:

bash - udev setup
# Copy configuration rule to udev folder sudo cp udev/99-streamdeck.rules /etc/udev/rules.d/ sudo udevadm control --reload-rules sudo udevadm trigger # Add user to the plugdev group sudo usermod -aG plugdev "$USER"

Note: Please log out and log back in to apply group privileges.

2. Compilation from Source

Install dependency build headers for your distribution:

Ubuntu / Debian:

bash - Dependencies
sudo apt-get install \ libhidapi-dev \ libusb-1.0-0-dev \ libgtk-4-dev \ libglib2.0-dev \ pkg-config

Compile and Run:

bash - Rust Cargo Build
cargo build --release ./target/release/streamdeck