Open source · Linux · MIT

Philips Hue for Linux,
with real screen sync.

SpectraControl fills the gap left by Hue Sync — which has no Linux build. Per-light control, animated scenes, and screen-to-light sync over the official Hue Entertainment API v2. Native Wayland capture. No browser hacks.

Latest release License: MIT Build
SpectraControl home screen showing three Hue entertainment zones: TV + PS5, Sala de Cine, and Oficina.

What it does

Screen Sync, the real way

DTLS streaming directly to your bridge on UDP 2100 (HueStream v2). Shows up as "synchronized" in the Hue mobile app — exactly like Hue Sync would.

Native Wayland capture

xdg-desktop-portal Screencast + GStreamer pipewiresrc, wrapped in Tauri. Bypasses WebKitGTK's broken getDisplayMedia entirely.

Dynamic scenes

Animated color loops with adjustable tempo. Ship with Northern Lights, Savanna Sunset, Tropical Twilight — or design your own in the in-app keyframe editor.

Light Configurator

Drag each bulb to its real-world position in front of your monitor. The sync engine maps screen regions to lights using the layout.

Signed auto-updates

In-place AppImage updates via tauri-plugin-updater. Every release is signed with minisign — the public key is embedded in the binary.

Desktop-native

System tray with show / quit, minimize-on-close, start-with-system, native notifications, light/dark theme, borderless titlebar. Spanish & English, file-based i18n.

A look around

The app ships bilingual (EN / ES) with a one-time picker on first launch — screenshots below are in English.

First-run wizard prompting for language and Hue bridge IP / API key, with a discover button.
01 First-run pairing — language pick, bridge discovery, push-link button.
Room picker asking which room should play dynamic scenes.
02 First-run scene room — pick where dynamic scenes play.
Home tab listing entertainment zones as cards, with a 'Sound reactive' toggle below.
03 Home — entertainment zones with a sound-reactive toggle for screen sync.
Zone configuration showing the monitor area with draggable light chips, a global sync brightness slider, and per-light max-brightness sliders.
04 Zone setup — drag lights to their real positions, set per-light brightness caps.
Lights tab listing rooms with brightness sliders and color tinted backgrounds, plus individual lights.
05 Lights & rooms — per-light color, brightness, on/off.
Dynamic scenes tab with a 'Sound reactive' toggle and preset cards.
06 Dynamic scenes — animated loops, optionally sound-reactive.
Settings drawer with theme, language, notifications, quit-on-close, autostart, and profile export/import.
07 Settings — theme, autostart, language, profile import/export.

Install

Pre-built bundles for every tagged release live on GitHub Releases. AppImage is recommended — it's the only bundle that supports in-place auto-updates.

AppImagerecommended

Distro-agnostic. Supports the in-app updater.

chmod +x SpectraControl_*_amd64.AppImage
./SpectraControl_*_amd64.AppImage
Needs libfuse2 (Fedora: fuse-libs). Fallback: --appimage-extract-and-run.

Debian / Ubuntu

.deb bundle. Updates via re-install.

sudo dpkg -i SpectraControl_*_amd64.deb

Fedora / RHEL

.rpm bundle. Updates via re-install.

sudo rpm -i SpectraControl-*.x86_64.rpm
Requirements & bridge setup
  • Linux with Wayland + xdg-desktop-portal (GNOME or KDE).
  • GStreamer with pipewiresrc — package gstreamer1-plugin-pipewire on most distros.
  • A Philips Hue Bridge v2. Pair it with generateclientkey: true — required for the Entertainment v2 DTLS PSK.
  • Config persists to ~/.config/spectracontrol/hue_config.json; user scenes are loaded from ~/.config/spectracontrol/scenes/*.json (overrides built-ins by id).

Tested on Bazzite (Fedora 44 immutable) + GNOME Wayland with NVIDIA. Should also work on KDE Plasma Wayland and any compositor that exposes the Screencast portal.

Under the hood

BackendGo · chi · gorilla/websocket · pion/dtls
Desktop shellTauri 2 (Rust)
FrontendVanilla HTML / CSS / JS — no bundler
Capture (Tauri)ashpd + GStreamer pipewiresrc
Capture (browser)getDisplayMedia() — Firefox only on Wayland
StreamingUDP / DTLS · HueStream v2 · bridge :2100
Updatestauri-plugin-updater + minisign-signed latest.json
i18nFile-based JSON, runtime-swappable

Help shape it.

The roadmap is public — audio sync, per-light screen regions, real-time bridge state, and more. Contributions, bug reports, and "this doesn't work on my distro" are all welcome.