From 7a5d6325c07d980b2190321d8cd45ff67e7b4548 Mon Sep 17 00:00:00 2001 From: Ali Abdelaal Date: Thu, 11 Dec 2025 20:46:03 +0000 Subject: [PATCH 1/9] Restore distro-packaging spec file for Fedora COPR builds --- distro-packaging/asusctl.spec | 141 ++++++++++++++++++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100644 distro-packaging/asusctl.spec diff --git a/distro-packaging/asusctl.spec b/distro-packaging/asusctl.spec new file mode 100644 index 00000000..bec3eaf3 --- /dev/null +++ b/distro-packaging/asusctl.spec @@ -0,0 +1,141 @@ +# +# spec file for package asus-nb-ctrl +# +# Copyright (c) 2020-2025 Luke Jones +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at https://mozilla.org/MPL/2.0/. + +%if %{defined fedora} +%global debug_package %{nil} +%endif + +%define version 6.1.22 +%define specrelease %{?dist} +%define pkg_release 1%{specrelease} + +# Use hardening ldflags. +%global rustflags -Clink-arg=-Wl,-z,relro,-z,now +Name: asusctl +Version: %{version} +Release: %{pkg_release} +Summary: Control fan speeds, LEDs, graphics modes, and charge levels for ASUS notebooks +License: MPLv2 + +Group: System Environment/Kernel + +URL: https://gitlab.com/asus-linux/asusctl +Source: https://gitlab.com/asus-linux/asusctl/-/archive/%{version}/%{name}-%{version}.tar.gz + +%if %{defined fedora} +BuildRequires: rust-packaging +BuildRequires: systemd-rpm-macros +%else +BuildRequires: cargo-packaging +%endif +BuildRequires: git +BuildRequires: clang-devel +BuildRequires: cargo +BuildRequires: cmake +BuildRequires: rust +BuildRequires: rust-std-static +BuildRequires: pkgconfig(gbm) +BuildRequires: pkgconfig(libinput) +BuildRequires: pkgconfig(libseat) +BuildRequires: pkgconfig(libudev) +BuildRequires: pkgconfig(xkbcommon) +BuildRequires: pkgconfig(libzstd) +BuildRequires: desktop-file-utils + +%description +asus-nb-ctrl is a utility for Linux to control many aspects of various +ASUS laptops but can also be used with non-Asus laptops with reduced features. + +It provides an interface for rootless control of some system functions such as +fan speeds, keyboard LEDs, battery charge level, and graphics modes. +asus-nb-ctrl enables third-party apps to use the above with dbus methods. + +%package rog-gui +Summary: An experimental GUI for %{name} + +%description rog-gui +A one-stop-shop GUI tool for asusd/asusctl. It aims to provide most controls, +a notification service, and ability to run in the background. + +%prep +%autosetup +%if %{defined fedora} +%cargo_prep +sed -i 's|offline = true|offline = false|' .cargo/config.toml +sed -i 's|source.crates-io|source.ignore_this|' .cargo/config.toml +%else +mkdir -p .cargo +cat > .cargo/config.toml << 'EOF' +[term] +verbose = true +[net] +offline = false +EOF +%endif + +%build +export RUSTFLAGS="%{rustflags}" +%if %{defined fedora} +%cargo_build +%else +/usr/bin/cargo auditable build --release +%endif + +%install +export RUSTFLAGS="%{rustflags}" +mkdir -p "%{buildroot}/%{_bindir}" "%{buildroot}%{_docdir}" +%make_install + +install -D -m 0644 README.md %{buildroot}/%{_docdir}/%{name}/README.md +install -D -m 0644 rog-anime/README.md %{buildroot}/%{_docdir}/%{name}/README-anime.md +install -D -m 0644 rog-anime/data/diagonal-template.png %{buildroot}/%{_docdir}/%{name}/diagonal-template.png + +desktop-file-validate %{buildroot}/%{_datadir}/applications/rog-control-center.desktop + +%files +%license LICENSE +%{_bindir}/asusd +%{_bindir}/asusd-user +%{_bindir}/asusctl +%{_unitdir}/asusd.service +%{_userunitdir}/asusd-user.service +%{_udevrulesdir}/99-asusd.rules +%{_datadir}/asusd/aura_support.ron +%{_datadir}/dbus-1/system.d/asusd.conf +%{_datadir}/icons/hicolor/512x512/apps/asus_notif_yellow.png +%{_datadir}/icons/hicolor/512x512/apps/asus_notif_green.png +%{_datadir}/icons/hicolor/512x512/apps/asus_notif_red.png +%{_datadir}/icons/hicolor/512x512/apps/asus_notif_blue.png +%{_datadir}/icons/hicolor/512x512/apps/asus_notif_orange.png +%{_datadir}/icons/hicolor/512x512/apps/asus_notif_white.png +%{_datadir}/icons/hicolor/scalable/status/gpu-compute.svg +%{_datadir}/icons/hicolor/scalable/status/gpu-hybrid.svg +%{_datadir}/icons/hicolor/scalable/status/gpu-integrated.svg +%{_datadir}/icons/hicolor/scalable/status/gpu-nvidia.svg +%{_datadir}/icons/hicolor/scalable/status/gpu-vfio.svg +%{_datadir}/icons/hicolor/scalable/status/notification-reboot.svg +%{_docdir}/%{name}/ +%{_datadir}/asusd/ + +%files rog-gui +%{_bindir}/rog-control-center +%{_datadir}/applications/rog-control-center.desktop +%{_datadir}/icons/hicolor/512x512/apps/rog-control-center.png +%{_datadir}/rog-gui + +%changelog From 7a3d39b8f12a23085b32952706277c0934e8ec6c Mon Sep 17 00:00:00 2001 From: Ali Abdelaal Date: Thu, 11 Dec 2025 21:01:16 +0000 Subject: [PATCH 2/9] Add fontconfig BuildRequires for Fedora COPR build --- distro-packaging/asusctl.spec | 1 + 1 file changed, 1 insertion(+) diff --git a/distro-packaging/asusctl.spec b/distro-packaging/asusctl.spec index bec3eaf3..079b2e8d 100644 --- a/distro-packaging/asusctl.spec +++ b/distro-packaging/asusctl.spec @@ -55,6 +55,7 @@ BuildRequires: pkgconfig(libseat) BuildRequires: pkgconfig(libudev) BuildRequires: pkgconfig(xkbcommon) BuildRequires: pkgconfig(libzstd) +BuildRequires: pkgconfig(fontconfig) BuildRequires: desktop-file-utils %description From db5de3b854cbcb7c99072a0123fd00ff39f3b5d0 Mon Sep 17 00:00:00 2001 From: Ali Abdelaal Date: Thu, 11 Dec 2025 21:17:00 +0000 Subject: [PATCH 3/9] Fix: add asusctl dir to files, remove duplicate aura_support.ron --- distro-packaging/asusctl.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/distro-packaging/asusctl.spec b/distro-packaging/asusctl.spec index 079b2e8d..1d419e20 100644 --- a/distro-packaging/asusctl.spec +++ b/distro-packaging/asusctl.spec @@ -116,7 +116,6 @@ desktop-file-validate %{buildroot}/%{_datadir}/applications/rog-control-center.d %{_unitdir}/asusd.service %{_userunitdir}/asusd-user.service %{_udevrulesdir}/99-asusd.rules -%{_datadir}/asusd/aura_support.ron %{_datadir}/dbus-1/system.d/asusd.conf %{_datadir}/icons/hicolor/512x512/apps/asus_notif_yellow.png %{_datadir}/icons/hicolor/512x512/apps/asus_notif_green.png @@ -131,6 +130,7 @@ desktop-file-validate %{buildroot}/%{_datadir}/applications/rog-control-center.d %{_datadir}/icons/hicolor/scalable/status/gpu-vfio.svg %{_datadir}/icons/hicolor/scalable/status/notification-reboot.svg %{_docdir}/%{name}/ +%{_datadir}/asusctl/ %{_datadir}/asusd/ %files rog-gui From f1b9ae6f717e80caf454bbb9cf99e2ab66733746 Mon Sep 17 00:00:00 2001 From: Ali Abdelaal Date: Thu, 11 Dec 2025 21:48:40 +0000 Subject: [PATCH 4/9] Fix: rewrite install section to handle Fedora rpm target dir --- distro-packaging/asusctl.spec | 60 +++++++++++++++++++++++++++++++---- 1 file changed, 54 insertions(+), 6 deletions(-) diff --git a/distro-packaging/asusctl.spec b/distro-packaging/asusctl.spec index 1d419e20..b8d33640 100644 --- a/distro-packaging/asusctl.spec +++ b/distro-packaging/asusctl.spec @@ -99,14 +99,62 @@ export RUSTFLAGS="%{rustflags}" %install export RUSTFLAGS="%{rustflags}" -mkdir -p "%{buildroot}/%{_bindir}" "%{buildroot}%{_docdir}" -%make_install -install -D -m 0644 README.md %{buildroot}/%{_docdir}/%{name}/README.md -install -D -m 0644 rog-anime/README.md %{buildroot}/%{_docdir}/%{name}/README-anime.md -install -D -m 0644 rog-anime/data/diagonal-template.png %{buildroot}/%{_docdir}/%{name}/diagonal-template.png +%if %{defined fedora} +%define _target_dir target/rpm +%else +%define _target_dir target/release +%endif -desktop-file-validate %{buildroot}/%{_datadir}/applications/rog-control-center.desktop +# Install binaries +install -D -m 0755 %{_target_dir}/asusd %{buildroot}%{_bindir}/asusd +install -D -m 0755 %{_target_dir}/asusd-user %{buildroot}%{_bindir}/asusd-user +install -D -m 0755 %{_target_dir}/asusctl %{buildroot}%{_bindir}/asusctl +install -D -m 0755 %{_target_dir}/rog-control-center %{buildroot}%{_bindir}/rog-control-center + +# Install systemd units +install -D -m 0644 data/asusd.service %{buildroot}%{_unitdir}/asusd.service +install -D -m 0644 data/asusd-user.service %{buildroot}%{_userunitdir}/asusd-user.service + +# Install udev rules +install -D -m 0644 data/asusd.rules %{buildroot}%{_udevrulesdir}/99-asusd.rules + +# Install dbus config +install -D -m 0644 data/asusd.conf %{buildroot}%{_datadir}/dbus-1/system.d/asusd.conf + +# Install asusd data +install -D -m 0644 rog-aura/data/aura_support.ron %{buildroot}%{_datadir}/asusd/aura_support.ron +cp -r rog-anime/data/anime %{buildroot}%{_datadir}/asusd/ + +# Install rog-gui data +install -D -m 0644 rog-control-center/data/rog-control-center.desktop %{buildroot}%{_datadir}/applications/rog-control-center.desktop +install -D -m 0644 rog-control-center/data/rog-control-center.png %{buildroot}%{_datadir}/icons/hicolor/512x512/apps/rog-control-center.png +mkdir -p %{buildroot}%{_datadir}/rog-gui/layouts +cp -r rog-aura/data/layouts/*.ron %{buildroot}%{_datadir}/rog-gui/layouts/ + +# Install icons +install -D -m 0644 data/icons/asus_notif_yellow.png %{buildroot}%{_datadir}/icons/hicolor/512x512/apps/asus_notif_yellow.png +install -D -m 0644 data/icons/asus_notif_green.png %{buildroot}%{_datadir}/icons/hicolor/512x512/apps/asus_notif_green.png +install -D -m 0644 data/icons/asus_notif_blue.png %{buildroot}%{_datadir}/icons/hicolor/512x512/apps/asus_notif_blue.png +install -D -m 0644 data/icons/asus_notif_red.png %{buildroot}%{_datadir}/icons/hicolor/512x512/apps/asus_notif_red.png +install -D -m 0644 data/icons/asus_notif_orange.png %{buildroot}%{_datadir}/icons/hicolor/512x512/apps/asus_notif_orange.png +install -D -m 0644 data/icons/asus_notif_white.png %{buildroot}%{_datadir}/icons/hicolor/512x512/apps/asus_notif_white.png +install -D -m 0644 data/icons/scalable/gpu-compute.svg %{buildroot}%{_datadir}/icons/hicolor/scalable/status/gpu-compute.svg +install -D -m 0644 data/icons/scalable/gpu-hybrid.svg %{buildroot}%{_datadir}/icons/hicolor/scalable/status/gpu-hybrid.svg +install -D -m 0644 data/icons/scalable/gpu-integrated.svg %{buildroot}%{_datadir}/icons/hicolor/scalable/status/gpu-integrated.svg +install -D -m 0644 data/icons/scalable/gpu-nvidia.svg %{buildroot}%{_datadir}/icons/hicolor/scalable/status/gpu-nvidia.svg +install -D -m 0644 data/icons/scalable/gpu-vfio.svg %{buildroot}%{_datadir}/icons/hicolor/scalable/status/gpu-vfio.svg +install -D -m 0644 data/icons/scalable/notification-reboot.svg %{buildroot}%{_datadir}/icons/hicolor/scalable/status/notification-reboot.svg + +# Install docs +install -D -m 0644 README.md %{buildroot}%{_docdir}/%{name}/README.md +install -D -m 0644 rog-anime/README.md %{buildroot}%{_docdir}/%{name}/README-anime.md +install -D -m 0644 rog-anime/data/diagonal-template.png %{buildroot}%{_docdir}/%{name}/diagonal-template.png + +# Install LICENSE to asusctl datadir +install -D -m 0644 LICENSE %{buildroot}%{_datadir}/asusctl/LICENSE + +desktop-file-validate %{buildroot}%{_datadir}/applications/rog-control-center.desktop %files %license LICENSE From f0488d97503d100cf5f982a223bdaf2575dab850 Mon Sep 17 00:00:00 2001 From: Ali Abdelaal Date: Thu, 11 Dec 2025 22:47:00 +0000 Subject: [PATCH 5/9] Build with --locked for reproducible builds --- distro-packaging/asusctl.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/distro-packaging/asusctl.spec b/distro-packaging/asusctl.spec index b8d33640..e78b4b17 100644 --- a/distro-packaging/asusctl.spec +++ b/distro-packaging/asusctl.spec @@ -92,9 +92,9 @@ EOF %build export RUSTFLAGS="%{rustflags}" %if %{defined fedora} -%cargo_build +%cargo_build --locked %else -/usr/bin/cargo auditable build --release +/usr/bin/cargo auditable build --release --locked %endif %install From 58d740f77a25c4073c3478d319437e11f13d6298 Mon Sep 17 00:00:00 2001 From: Ali Abdelaal Date: Thu, 11 Dec 2025 22:52:46 +0000 Subject: [PATCH 6/9] Fix: use direct cargo build instead of cargo_build macro --- distro-packaging/asusctl.spec | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/distro-packaging/asusctl.spec b/distro-packaging/asusctl.spec index e78b4b17..29f756c6 100644 --- a/distro-packaging/asusctl.spec +++ b/distro-packaging/asusctl.spec @@ -92,7 +92,7 @@ EOF %build export RUSTFLAGS="%{rustflags}" %if %{defined fedora} -%cargo_build --locked +/usr/bin/cargo build --release --locked %else /usr/bin/cargo auditable build --release --locked %endif @@ -100,11 +100,7 @@ export RUSTFLAGS="%{rustflags}" %install export RUSTFLAGS="%{rustflags}" -%if %{defined fedora} -%define _target_dir target/rpm -%else %define _target_dir target/release -%endif # Install binaries install -D -m 0755 %{_target_dir}/asusd %{buildroot}%{_bindir}/asusd From 4449838282e273c4014797d5f919d8e00a84135b Mon Sep 17 00:00:00 2001 From: Ali Abdelaal Date: Thu, 11 Dec 2025 22:55:49 +0000 Subject: [PATCH 7/9] Fix: remove cargo_prep which deletes Cargo.lock --- distro-packaging/asusctl.spec | 6 ------ 1 file changed, 6 deletions(-) diff --git a/distro-packaging/asusctl.spec b/distro-packaging/asusctl.spec index 29f756c6..5da24507 100644 --- a/distro-packaging/asusctl.spec +++ b/distro-packaging/asusctl.spec @@ -75,11 +75,6 @@ a notification service, and ability to run in the background. %prep %autosetup -%if %{defined fedora} -%cargo_prep -sed -i 's|offline = true|offline = false|' .cargo/config.toml -sed -i 's|source.crates-io|source.ignore_this|' .cargo/config.toml -%else mkdir -p .cargo cat > .cargo/config.toml << 'EOF' [term] @@ -87,7 +82,6 @@ verbose = true [net] offline = false EOF -%endif %build export RUSTFLAGS="%{rustflags}" From 3a206eb76f8c406aa4110a20af33c70e46899725 Mon Sep 17 00:00:00 2001 From: Ali Abdelaal Date: Thu, 11 Dec 2025 23:49:24 +0000 Subject: [PATCH 8/9] Add asusctl as dependency for rog-gui subpackage --- distro-packaging/asusctl.spec | 1 + 1 file changed, 1 insertion(+) diff --git a/distro-packaging/asusctl.spec b/distro-packaging/asusctl.spec index 5da24507..6c819101 100644 --- a/distro-packaging/asusctl.spec +++ b/distro-packaging/asusctl.spec @@ -68,6 +68,7 @@ asus-nb-ctrl enables third-party apps to use the above with dbus methods. %package rog-gui Summary: An experimental GUI for %{name} +Requires: %{name} = %{version}-%{release} %description rog-gui A one-stop-shop GUI tool for asusd/asusctl. It aims to provide most controls, From 6f651c2b8567c1496614431851cee7ae37eacf7f Mon Sep 17 00:00:00 2001 From: Ali Abdelaal Date: Mon, 15 Dec 2025 15:36:45 +0000 Subject: [PATCH 9/9] Add systemd scriptlets to restart asusd on upgrade --- distro-packaging/asusctl.spec | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/distro-packaging/asusctl.spec b/distro-packaging/asusctl.spec index 6c819101..37b3dc62 100644 --- a/distro-packaging/asusctl.spec +++ b/distro-packaging/asusctl.spec @@ -147,6 +147,15 @@ install -D -m 0644 LICENSE %{buildroot}%{_datadir}/asusctl/LICENSE desktop-file-validate %{buildroot}%{_datadir}/applications/rog-control-center.desktop +%post +%systemd_post asusd.service + +%preun +%systemd_preun asusd.service + +%postun +%systemd_postun_with_restart asusd.service + %files %license LICENSE %{_bindir}/asusd