referenzprojekt

DECK//SWITCH: Elgato Stream Deck unter Linux

DECK//SWITCH steuert das Elgato Stream Deck unter Linux, wo der Hersteller keine Software anbietet. Tasten, Dials und Touchstrip werden in einem eigenen Editor belegt, erweitert wird über ein offenes Plugin-System. Entwickelt und am Gerät geprüft mit dem Stream Deck + unter Arch Linux mit KDE Plasma auf Wayland.

Editor von DECK//SWITCH: Aktionsliste, Tastenraster des Stream Deck und Eigenschaften einer Taste

Über das Projekt

Eigenständige Steuerungssoftware für das Elgato Stream Deck unter Linux, komplett ohne Elgatos Anwendung. Tasten, Dials und Touchstrip werden im Browser-Editor belegt, Tastenbilder rendert das Backend. Dazu ein beliebig tiefer Seitenbaum, Multi-Aktionen, mehrere Geräte gleichzeitig, ein virtuelles Deck als Bildschirm-Overlay, ein per Browser bedienbares Netz-Deck und ein offenes Plugin-System.

Funktionen im Überblick

  • Drei Aktionen je Taste, Dials mit Dial-Stack und Touchstrip
  • Beliebig tiefer Seitenbaum und Multi-Aktionen mit Pausen und Schleife
  • Tastenbilder mit Symbol, Beschriftung, Hintergrund und animierten GIFs
  • Mehrere Geräte gleichzeitig, zugeordnet über die Seriennummer
  • Virtuelles Deck als Overlay und Netz-Deck im Browser
  • Offenes Plugin-System: eigene Plugins kann jeder beisteuern

Warum ich es gebaut habe

Elgato liefert seine Steuerungssoftware für Windows und macOS. Unter Linux bleibt das Gerät ein Stück Hardware ohne Bedienung. Für das Stream Deck + kommt erschwerend dazu, dass Dials und Touchstrip mehr können als „Taste drückt Tastenkombination", und genau dieser Teil fehlt in den vorhandenen Bastellösungen meist ganz. Statt mich mit Skripten je Taste zu behelfen, habe ich die Steuerung selbst gebaut, mit einer Oberfläche, in der sich Belegungen genauso einrichten lassen wie unter Windows.

Tasten, Dials und Seiten

Jede Taste kennt drei Aktionen: Drücken, Doppeldruck und Halten. Dials regeln entweder stufenlos oder lösen je Drehrichtung eine eigene Aktion aus, und mehrere Belegungen können sich einen Dial teilen. Seiten bilden einen beliebig tiefen Baum, per Drag & Drop sortierbar. Ordner sind schlicht Unterseiten, statt ein zweites Konzept daneben zu stellen. Multi-Aktionen führen mehrere Schritte nacheinander aus, mit Pausen als eigenständigen Schritten und wahlweise in Schleife. Aussehen und Beschriftung jeder Taste werden in einer eingebauten Werkstatt gestaltet; gerendert wird immer im Backend, damit die Vorschau exakt das zeigt, was auf dem Gerät steht.

Virtuelles Deck und Netz-Deck

Nicht jede Belegung braucht Hardware. Das virtuelle Deck legt ein frei gerastertes Overlay auf den Bildschirm, ohne Fensterrahmen, ohne Eintrag in Alt-Tab und ohne den Tastaturfokus zu stehlen, was beim Einsatz während eines Spiels oder Streams der entscheidende Punkt ist. Das Netz-Deck geht in die andere Richtung. Jemand anderes im selben Netz bedient ein Deck im Browser, etwa der Moderator während einer Übertragung. Passwortgeschützt, ohne Installation, und der Gast kann Belegungen nicht verändern.

Plugins

Aktionen kommen aus Plugins, nicht aus dem Kern. Eingebaut sind sieben davon: Audio, OBS, Discord, System, Soundboard, Multi-Aktion und Navigation. Zwei weitere lassen sich nachinstallieren, und die API steht für eigene offen. Auch Iconsets sind Plugins. Installiert wird aus einem ZIP, von einer Adresse oder über einen Protokoll-Link im Browser; ein Marktplatz zum Finden und Installieren direkt aus der Anwendung ist geplant. Diese Trennung ist der Grund, warum das Projekt wachsen kann, ohne dass jede neue Funktion den Kern anfasst.

Technische Umsetzung

Das Backend ist Python mit FastAPI und spricht das Gerät über python-elgato-streamdeck an; die Oberfläche ist eine Tauri-Anwendung mit Vite und React, die die WebView des Systems nutzt statt ein eigenes Chromium mitzuschleppen. Der Rest ist Linux-Integration: Lautstärke und Ausgabegeräte über PipeWire, eine virtuelle Tastatur über /dev/uinput mit Belegung aus libxkbcommon, Medien- und Kurzbefehlssteuerung über D-Bus und MPRIS, das Overlay über das Layer-Shell-Protokoll von Wayland. Genau solche Anbindungen an Systeme ohne fertige Integration sind der Teil meiner Arbeit, der sich schlecht aus einem Baukasten holen lässt.

Weitere Projekte

Alle Leistungen und Projekte ansehen

Ein ähnliches Projekt im Kopf?

Was in meinen eigenen Produkten steckt, entwickle ich genauso für Ihr Vorhaben, von der Idee bis zum laufenden Betrieb.

Projekt anfragen