cross-posted from: https://lemmy.world/post/42787520

Most of us have some blinking, light-emitting, colorful devices attached to our potatoes - or whatever the minimum specs for Linux are these days, haven’t checked in a while.

And most of us use OpenRGB to control them. But I fear this single project has some major, fundamental issues. As with many projects, it grew very fast and very big.

It has over 200 supported devices today, and the list keeps growing.

But it wasn’t designed to grow this fast or support such a variety of devices.

This has led to several issues:

Not all features can be implemented for all devices:

For example, devices with different available effects per zone aren’t supported by design. You may have noticed that sidebar LEDs on some keyboards aren’t controllable via OpenRGB.

No support for macros, DPI settings, and more:

It was always about RGB. This isn’t an issue per se - it’s the scope of the software. But:

Cannot coexist with macro/mouse controlling software:

OpenRGB needs to open the HIDRAW device to control it, and this is an exclusive operation. So no other software can hook those devices at the same time.

Growing backlog:

Device-support requests keep piling up, new devices wait a long time to be accepted - the usual open-source maintenance challenges.

My Idea

Let’s create a unified device abstraction library. The core part should just offer a C++ library with all the device abstraction logic in it. This library can then be consumed by a variety of software:

  • OpenRGB could use the RGB part of it, focusing on orchestration and advanced features
  • Python bindings for scripting your setup
  • Hyprland integrations
  • Custom CLI tools
  • Whatever the community builds

Therefore, if you’re a developer who knows your way around modern C++ features (or wants to learn), here’s my project pitch:

What this could be:

  • Modernized device code (C++23, memory safety, proper abstractions)
  • Support for ALL peripheral features (RGB, macros, DPI, profiles, etc.)
  • Clean API for other developers to build on
  • Reduced fragmentation - community maintains ONE device library instead of competing implementations

Making this real would need:

  • C++ developers , as one developer is no developer (and i have other hobbies!)
  • People who’ve worked with USB/HID protocols on Windows and other Non-Linux platforms!
  • Anyone frustrated with current Linux peripheral tools and willing to help fix it
  • Design feedback and testing

To kickstart this:

We can fork OpenRGB’s existing device implementations (GPL-licensed) as a foundation. I have at least two devices here that offer on-device macro functionality, key remapping, and more, so I can create the basic abstractions for those features.

Thoughts?