OpenRGB Theme Sync
September 4, 2026 · View on GitHub
Sync your Dank Material Shell theme colors with your RGB hardware via OpenRGB.
Demo
Combined demo with Wallpaper by Workspace: switching niri workspaces applies
the per-workspace wallpaper and regenerates the theme, while this plugin pushes
the theme color to the RGB hardware live — watch the PC lighting turn green
with the green wallpaper. Chapters: 0:00 neutral · 0:04 green → green RGB ·
0:06 warm · 0:08 snow → white RGB.
What it does
This daemon watches for theme color changes and applies the configured color to all your OpenRGB devices. Devices that ignore a color-only command receive a fixed color mode so their LEDs still match your theme.
Requirements
- DankMaterialShell with plugin support (
requires_dms >= 1.0.0). - OpenRGB installed (
openrgbonPATH) with its SDK server enabled (Settings → SDK Server → Start server). Keep the server running (e.g. autostartopenrgb --startminimized --server); the plugin talks to your hardware through it, so commands are fast (~1 s) and never trigger a full hardware rescan.
Setup
- Copy this folder to
~/.config/DankMaterialShell/plugins/openrgbThemeSync/. - In DMS go to Settings → Plugins → Scan, enable OpenRGB Theme Sync. A
startup check verifies that
openrgbis installed and reachable. - Open the plugin settings and click Detect devices so the daemon learns your hardware.
Settings
- General
- Active sync: apply the theme color to OpenRGB automatically.
- Apply on startup: apply the current color when the plugin loads.
- Color
- Theme color: which DMS color is sent to the LEDs (primary / secondary / tertiary / surface / … / custom).
- Custom color: used when Theme color is set to Custom.
- Brightness
- Adjust brightness: force the device brightness.
- Brightness level: percentage when enabled.
- Devices
- Detect devices: re-scan connected OpenRGB devices.
- Per device you can enable a fixed color mode and pick the mode. This is useful for devices that don't change color from a global color command alone (for example mice running a spectrum/flow mode).
Notes
- The global color is applied to all devices, then each device configured with a fixed mode is set individually by name (stable across rescans). Commands run serially to avoid OpenRGB connection races, and rapid theme changes are coalesced so only the latest color is applied.
- If the SDK server stops responding, the daemon restarts it automatically and retries failed applies with exponential backoff.
- The daemon runs invisibly in the background.
- Command failures show up as toast notifications and are logged to the console.
License
MIT — see LICENSE.
