openrgb: 0.9 → 1.0rc2 (#477198)

This commit is contained in:
Masum Reza
2026-01-11 03:12:47 +00:00
committed by GitHub
8 changed files with 121 additions and 212 deletions
+3
View File
@@ -140,6 +140,9 @@
- Added `dell-bios-fan-control` package and service.
- `openrgb` was updated to 1.0rc2, which now uses Plugin API version 4.
Some existing OpenRGB plugins may be incompatible or require updates.
- We now use the upstream wrapper script for Gradle, supporting both the `JAVA_HOME` and `GRADLE_OPTS` environment variables.
## Nixpkgs Library {#sec-nixpkgs-release-26.05-lib}
+17 -5
View File
@@ -59,16 +59,28 @@ in
++ lib.optionals (cfg.motherboard == "intel") [ "i2c-i801" ];
systemd.services.openrgb = {
description = "OpenRGB server daemon";
after = [ "network.target" ];
description = "OpenRGB SDK Server";
after = [
"network.target"
"lm_sensors.service"
];
wants = [ "dev-usb.device" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
StateDirectory = "OpenRGB";
WorkingDirectory = "/var/lib/OpenRGB";
ExecStart =
"${cfg.package}/bin/openrgb --server --server-port ${toString cfg.server.port}"
+ lib.optionalString (builtins.isString cfg.startupProfile) " --profile ${lib.escapeShellArg cfg.startupProfile}";
ExecStart = lib.escapeShellArgs (
[
(lib.getExe cfg.package)
"--server"
"--server-port"
cfg.server.port
]
++ lib.optionals (lib.isString cfg.startupProfile) [
"--profile"
cfg.startupProfile
]
);
Restart = "always";
};
};
@@ -2,52 +2,45 @@
lib,
stdenv,
fetchFromGitLab,
openrgb,
glib,
openal,
hidapi,
pipewire,
pkg-config,
kdePackages,
fetchpatch,
qt6Packages,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "openrgb-plugin-effects";
version = "0.9";
version = "1.0rc2";
src = fetchFromGitLab {
owner = "OpenRGBDevelopers";
repo = "OpenRGBEffectsPlugin";
rev = "release_${finalAttrs.version}";
hash = "sha256-8BnHifcFf7ESJgJi/q3ca38zuIVa++BoGlkWxj7gpog=";
tag = "release_candidate_${finalAttrs.version}";
hash = "sha256-0W0hO3PSMpPLc0a7g/Nn7GWMcwBXhOxh1Y2flpdcnfE=";
fetchSubmodules = true;
};
patches = [
# Fix Qt6 issues in OpenRGBPluginsFont.cpp
(fetchpatch {
url = "https://gitlab.com/OpenRGBDevelopers/OpenRGBEffectsPlugin/-/commit/e952b0ed390045d4f4adec8e74b3126c2f8abcab.patch";
hash = "sha256-xMsnVyrn/Cv2x2xQtAnPb5HJc+WolNx4v7h0TkTj9DU=";
})
./qt5compat.patch
qmakeFlags = [
"CONFIG+=link_pkgconfig"
"PKGCONFIG+=libpipewire-0.3"
"QT_TOOL.lrelease.binary=${lib.getDev qt6Packages.qttools}/bin/lrelease"
];
postPatch = ''
# Use the source of openrgb from nixpkgs instead of the submodule
rm -r OpenRGB
ln -s ${openrgb.src} OpenRGB
'';
nativeBuildInputs = [
pkg-config
kdePackages.wrapQtAppsHook
kdePackages.qmake
qt6Packages.wrapQtAppsHook
qt6Packages.qmake
];
buildInputs = [
kdePackages.qtbase
kdePackages.qt5compat
qt6Packages.qtbase
qt6Packages.qt5compat
glib
openal
hidapi
pipewire
];
meta = {
@@ -1,114 +0,0 @@
Commit ID: 20f227f4ef942e2ead5a3a684248c2da48c979bc
Change ID: rwlwzspvylkypuqoornwzvuvpuzorvso
Author : Alexey Sokolov <alexey+github@asokolov.org> (2025-07-21 22:34:37)
Committer: Marie Ramlow <me@nycode.dev> (2025-10-12 12:05:01)
Fix build with Qt6 using core5compat
Updated to add Qt5 backwards compatibility by Adam Honse <calcprogrammer1@gmail.com>
diff --git a/Effects/Ambient/RectangleSelector.cpp b/Effects/Ambient/RectangleSelector.cpp
index 8f28ddcbcc..d8b4f56a1d 100644
--- a/Effects/Ambient/RectangleSelector.cpp
+++ b/Effects/Ambient/RectangleSelector.cpp
@@ -1,6 +1,5 @@
#include "RectangleSelector.h"
#include <math.h>
-#include <QDesktopWidget>
#include <QBrush>
RectangleSelector::RectangleSelector(QWidget* parent)
@@ -57,7 +56,7 @@
QPainter painter(this);
- texture.setDevicePixelRatio(devicePixelRatioF() / qApp->desktop()->devicePixelRatioF());
+ texture.setDevicePixelRatio(devicePixelRatioF() / qApp->primaryScreen()->devicePixelRatio());
painter.setPen(QColor(0, 0, 0, 128));
painter.setBrush(Qt::NoBrush);
@@ -69,7 +68,7 @@
for(QScreen *screen : QApplication::screens())
{
QRect geometry = screen->geometry();
- qreal ratio = screen->devicePixelRatio() / qApp->desktop()->devicePixelRatioF();
+ qreal ratio = screen->devicePixelRatio() / qApp->primaryScreen()->devicePixelRatio();
QRect physical_geometry(geometry.x(), geometry.y(), std::lrint((qreal) geometry.width() * ratio), lrint((qreal) geometry.height() * ratio));
if(physical_geometry.contains(rect.center()))
@@ -92,7 +91,7 @@
for(QScreen *screen : QApplication::screens())
{
QRect geometry = screen->geometry();
- qreal ratio = screen->devicePixelRatio() / qApp->desktop()->devicePixelRatioF();
+ qreal ratio = screen->devicePixelRatio() / qApp->primaryScreen()->devicePixelRatio();
screen_geometries.emplace_back(geometry.x(), geometry.y(),
std::lrint((qreal) geometry.width() * ratio),
diff --git a/Effects/Shaders/GLSLHighlighter.h b/Effects/Shaders/GLSLHighlighter.h
index 7e9f21423b..ca9bf42c3c 100644
--- a/Effects/Shaders/GLSLHighlighter.h
+++ b/Effects/Shaders/GLSLHighlighter.h
@@ -2,6 +2,7 @@
#define GLSLHIGHLIGHTER_H
#include <QSyntaxHighlighter>
+#include <QRegExp>
class GLSLHighlighter : public QSyntaxHighlighter
{
diff --git a/OpenRGBEffectPage.cpp b/OpenRGBEffectPage.cpp
index 0d6e4ab0fb..4b756cf63c 100644
--- a/OpenRGBEffectPage.cpp
+++ b/OpenRGBEffectPage.cpp
@@ -38,7 +38,7 @@
| Extra options and custom widgets |
\*-----------------------------------------------*/
ui->ExtraOptions->addWidget(effect);
- ui->ExtraOptions->setMargin(0);
+ ui->ExtraOptions->setContentsMargins(0, 0, 0, 0);
effect->setParent(ui->extra_settings);
InitUi();
diff --git a/OpenRGBEffectsPlugin.pro b/OpenRGBEffectsPlugin.pro
index 3e53316519..fec852f88c 100644
--- a/OpenRGBEffectsPlugin.pro
+++ b/OpenRGBEffectsPlugin.pro
@@ -1,4 +1,10 @@
-QT += gui widgets core
+QT += gui widgets core opengl
+
+if(greaterThan(QT_MAJOR_VERSION, 5)) {
+QT += \
+ core5compat \
+}
+
DEFINES += OPEN_RGB_EFFECTS_PLUGIN_LIBRARY
TEMPLATE = lib
diff --git a/SaveProfilePopup.cpp b/SaveProfilePopup.cpp
index 7297dad8b7..4fa837235f 100644
--- a/SaveProfilePopup.cpp
+++ b/SaveProfilePopup.cpp
@@ -2,8 +2,8 @@
#include "ui_SaveProfilePopup.h"
#include "OpenRGBEffectSettings.h"
-#include <QRegExp>
-#include <QRegExpValidator>
+#include <QRegularExpression>
+#include <QRegularExpressionValidator>
SaveProfilePopup::SaveProfilePopup(QWidget *parent) :
QWidget(parent),
@@ -12,8 +12,8 @@
ui->setupUi(this);
// only letters or numbers, - _ and .
- QRegExp re("^[\\w\\-_.]+$");
- QRegExpValidator *validator = new QRegExpValidator(re, this);
+ QRegularExpression re("^[\\w\\-_.]+$");
+ QRegularExpressionValidator *validator = new QRegularExpressionValidator(re, this);
ui->filename->setValidator(validator);
std::vector<std::string> filenames = OpenRGBEffectSettings::ListProfiles();
@@ -2,44 +2,32 @@
lib,
stdenv,
fetchFromGitLab,
openrgb,
glib,
libgtop,
lm_sensors,
pkg-config,
kdePackages,
fetchpatch,
qt6Packages,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "openrgb-plugin-hardwaresync";
version = "0.9";
version = "1.0rc2";
src = fetchFromGitLab {
owner = "OpenRGBDevelopers";
repo = "OpenRGBHardwareSyncPlugin";
rev = "release_${finalAttrs.version}";
hash = "sha256-3sQFiqmXhuavce/6v3XBpp6PAduY7t440nXfbfCX9a0=";
tag = "release_candidate_${finalAttrs.version}";
hash = "sha256-t5NPlmCg0btHpD/hpHSwDRl8LjVoOiT89WoOm3PmhXA=";
fetchSubmodules = true;
};
patches = [
# Fix Qt 6 build
(fetchpatch {
url = "https://gitlab.com/OpenRGBDevelopers/OpenRGBHardwareSyncPlugin/-/commit/62707c260953fb5ac2bb782595c18791bf54ff97.patch";
hash = "sha256-xMsnVyrn/Cv2x2xQtAnPb5HJc+WolNx4v7h0TkTj9DU=";
})
];
postPatch = ''
# Use the source of openrgb from nixpkgs instead of the submodule
rmdir OpenRGB
ln -s ${openrgb.src} OpenRGB
# Remove prebuilt stuff
rm -r dependencies/lhwm-cpp-wrapper
'';
buildInputs = [
kdePackages.qtbase
qt6Packages.qtbase
glib
libgtop
lm_sensors
@@ -47,8 +35,8 @@ stdenv.mkDerivation (finalAttrs: {
nativeBuildInputs = [
pkg-config
kdePackages.qmake
kdePackages.wrapQtAppsHook
qt6Packages.qmake
qt6Packages.wrapQtAppsHook
];
meta = {
+54 -34
View File
@@ -2,34 +2,41 @@
lib,
stdenv,
fetchFromGitLab,
fetchpatch,
libusb1,
hidapi,
pkg-config,
coreutils,
makeBinaryWrapper,
mbedtls,
symlinkJoin,
kdePackages,
qt6Packages,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "openrgb";
version = "0.9";
version = "1.0rc2";
src = fetchFromGitLab {
owner = "CalcProgrammer1";
repo = "OpenRGB";
rev = "release_${finalAttrs.version}";
hash = "sha256-XBLj4EfupyeVHRc0pVI7hrXFoCNJ7ak2yO0QSfhBsGU=";
tag = "release_candidate_${finalAttrs.version}";
hash = "sha256-vdIA9i1ewcrfX5U7FkcRR+ISdH5uRi9fz9YU5IkPKJQ=";
};
patches = [
./qlist-include.patch
./system-plugins-env.patch
(fetchpatch {
name = "Install-systemd-service-under-PREFIX.patch";
url = "https://gitlab.com/CalcProgrammer1/OpenRGB/-/commit/b58b3c0402131918b3b988631f42617020df9346.patch";
hash = "sha256-q5i5BNjaLbsXSYEXKQOR/cMm5ExckmW1n2r9H0j09T0=";
})
];
nativeBuildInputs = [
pkg-config
]
++ (with kdePackages; [
++ (with qt6Packages; [
qmake
wrapQtAppsHook
]);
@@ -39,7 +46,7 @@ stdenv.mkDerivation (finalAttrs: {
hidapi
mbedtls
]
++ (with kdePackages; [
++ (with qt6Packages; [
qtbase
qttools
qtwayland
@@ -48,7 +55,12 @@ stdenv.mkDerivation (finalAttrs: {
postPatch = ''
patchShebangs scripts/build-udev-rules.sh
substituteInPlace scripts/build-udev-rules.sh \
--replace-fail /bin/chmod "${coreutils}/bin/chmod"
--replace-fail '/usr/bin/env chmod' ${lib.getExe' coreutils "chmod"}
'';
postInstall = ''
substituteInPlace "$out/lib/systemd/system/openrgb.service" \
--replace-fail /usr/bin/openrgb "$out/bin/openrgb"
'';
doInstallCheck = true;
@@ -57,40 +69,48 @@ stdenv.mkDerivation (finalAttrs: {
HOME=$TMPDIR $out/bin/openrgb --help > /dev/null
if grep -R /usr/bin/env "$out/lib/udev/rules.d"; then
echo "Error: udev rules must not reference /usr/bin/env"
exit 1
fi
runHook postInstallCheck
'';
qmakeFlags = [
"QT_TOOL.lrelease.binary=${lib.getDev kdePackages.qttools}/bin/lrelease"
"QT_TOOL.lrelease.binary=${lib.getDev qt6Packages.qttools}/bin/lrelease"
];
passthru.withPlugins =
plugins:
let
pluginsDir = symlinkJoin {
name = "openrgb-plugins";
paths = plugins;
# Remove all library version symlinks except one,
# or they will result in duplicates in the UI.
# We leave the one pointing to the actual library, usually the most
# qualified one (eg. libOpenRGBHardwareSyncPlugin.so.1.0.0).
postBuild = ''
for f in $out/lib/*; do
if [ "$(dirname $(readlink "$f"))" == "." ]; then
rm "$f"
fi
done
'';
};
in
finalAttrs.finalPackage.overrideAttrs (old: {
qmakeFlags = old.qmakeFlags or [ ] ++ [
# Welcome to Escape Hell, we have backslashes
''DEFINES+=OPENRGB_EXTRA_PLUGIN_DIRECTORY=\\\""${
lib.escape [ "\\" "\"" " " ] (toString pluginsDir)
}/lib\\\""''
];
});
symlinkJoin {
inherit (finalAttrs) version meta;
pname = finalAttrs.pname + "-with-plugins";
nativeBuildInputs = [ makeBinaryWrapper ];
paths = [ finalAttrs.finalPackage ] ++ plugins;
postBuild = ''
wrapProgram "$out/bin/openrgb" \
--set OPENRGB_SYSTEM_PLUGIN_DIRECTORY "$out/lib/openrgb/plugins"
# Update systemd service to use wrapped package
service_file="$out/lib/systemd/system/openrgb.service"
substitute "$service_file" openrgb.service \
--replace-fail ${finalAttrs.finalPackage} "$out"
mv --force openrgb.service "$service_file"
# Check for unhandled references to the base package
if grep \
--dereference-recursive \
--binary-files=without-match \
--fixed-strings \
${finalAttrs.finalPackage} \
"$out"
then
echo "ERROR: unexpected reference to base package"
exit 1
fi
'';
};
meta = {
description = "Open source RGB lighting control";
@@ -1,16 +0,0 @@
Commit ID: 2fa7aa0ec87d9878293033db0e86bb62cddc47df
Change ID: mvrytuwvnokxyvmuworxptmtqpqpppxq
Author : Marie Ramlow <me@nycode.dev> (2025-10-11 12:10:21)
Committer: Marie Ramlow <me@nycode.dev> (2025-10-11 12:17:20)
OpenRGBFont: add QList include
diff --git a/qt/OpenRGBFont.cpp b/qt/OpenRGBFont.cpp
index 628bd35281..db1ab5fb76 100644
--- a/qt/OpenRGBFont.cpp
+++ b/qt/OpenRGBFont.cpp
@@ -1,3 +1,4 @@
+#include <QStringList>
#include "OpenRGBFont.h"
#include <QFontDatabase>
@@ -0,0 +1,23 @@
diff --git a/PluginManager.cpp b/PluginManager.cpp
index 157b6cd5..42d9b59d 100644
--- a/PluginManager.cpp
+++ b/PluginManager.cpp
@@ -59,6 +59,18 @@ void PluginManager::ScanAndLoadPlugins()
filesystem::path plugins_dir = ResourceManager::get()->GetConfigurationDirectory() / plugins_path;
ScanAndLoadPluginsFrom(plugins_dir, false);
+ /*---------------------------------------------------------*\
+ | Get the system plugins directory from the environment |
+ | |
+ | Allow setting a system plugin directory during runtime, |
+ | e.g. by Nixpkgs' `withPlugins` wrapper. |
+ \*---------------------------------------------------------*/
+ const char* system_plugins_dir = std::getenv("OPENRGB_SYSTEM_PLUGIN_DIRECTORY");
+ if(system_plugins_dir && *system_plugins_dir)
+ {
+ ScanAndLoadPluginsFrom(system_plugins_dir, true);
+ }
+
#ifdef OPENRGB_SYSTEM_PLUGIN_DIRECTORY
/*---------------------------------------------------------*\
| Get the system plugins directory |