Skip to content

Releases: yunusemreyl/OmenCtl

๐Ÿš€ OmenCtl v1.6.0-preview โ€” Thermal Safety & Fan Control Update

Choose a tag to compare

@yunusemreyl yunusemreyl released this 02 Jul 08:57

This preview release focuses on resolving critical stability issues, including fan mode inconsistency on startup, custom curve speeds getting locked at high RPM, and the Thermal Protection Mode getting stuck indefinitely. It also adds hardware capability profiles for newer HP OMEN and Victus models.

๐Ÿ› ๏ธ What's Changed
1. Thermal Protection Mode Fixes
Smart Sensor Filtering: The temperature monitor now targets CPU and GPU drivers (coretemp, k10temp, nvidia, amdgpu, etc.) rather than reading all generic hwmon sensors indiscriminately. Hot readings from unrelated NVMe, VRM, or ACPI sensors will no longer trigger or block the release of Thermal Protection Mode.
Realistic Exit Threshold (50ยฐC โžก๏ธ 85ยฐC): Raised the exit threshold to a realistic 85ยฐC (providing a 10ยฐC hysteresis from the 95ยฐC trigger). The old 50ยฐC threshold was below the typical idle temperature of most gaming laptops, which caused the fans to lock at max speed permanently.
5-Minute Safety Timeout: Added a timeout safety net. If protection remains active for more than 5 minutes while temperatures are safely below 90ยฐC, the system will force-exit the protection mode to prevent stale sensor lockouts.

2. Fan Control & Synchronization Enhancements
Startup Fan Mode Sync: Fixed the GUI starting in a hardcoded "Performance" state and overriding the daemon's saved "Auto" state (especially noticeable after a system restart). The GUI now properly syncs from the daemon's actual saved state on launch.
Custom Curve Low-RPM Support (PWM Min Floor 220 โžก๏ธ 50): Lowered the aggressive fallback floor. Fans can now run as quiet as ~1200 RPM in custom curves rather than being locked to a minimum of ~5000+ RPM.
Responsive Transitions (Deadband 400 โžก๏ธ 200 RPM): Lowered the GUI RPM update threshold to 200 RPM, allowing for smoother and more responsive fan speed changes.
Instant Target Application: Cleared target caches upon fan mode switches so new speed targets are applied immediately without being ignored by deadbands.

3. New Hardware & Board Support
Added capability profiles and direct identification for:
HP OMEN 16-wf1xxx (Board ID: 8C78)
HP Victus 16-s1xxx (Board ID: 8C9C)

Release v1.5.3: Fix thermal sensor bug & update D-Bus policies

Choose a tag to compare

@yunusemreyl yunusemreyl released this 06 Jun 11:04
  • Bump version to v1.5.3 across all configuration and source files.
  • Fix an issue in platform_service.py where disconnected or unsupported ACPI thermal sensors reported absolute zero. Temperatures below -100 ยฐC are now correctly ignored.
  • Relax D-Bus security policies (*.conf) for all microservices (fan, platform, mux, power, rgb). Standard unprivileged users now have full read/write access to control hardware states and view metrics via the GUI without requiring sudo or wheel group membership.

OmenCtl v1.5.2 - hpwmi.c, light, compability updates

Choose a tag to compare

@yunusemreyl yunusemreyl released this 01 Jun 22:30

Kernel Compatibility: Upstreamed Linux 7.1 kernel hp-wmi patches (Added support for new board IDs like 8C58, 8902, 8A44, 8BC2, 8C77, 8D41 and updated fan struct mappings).
RGB Driver Fixes (hp-rgb-lighting):

  1. Fixed a critical WMI Mutex race condition by integrating and sharing the global hp_wmi_mutex from the main hp-wmi driver.
  2. Added support for space-separated decimal RGB input (e.g. "255 0 0") in the sysfs node zone_store function.
  3. Added detailed kernel error logging (pr_warn) for WMI GET and SET query failures.

UI & UX Enhancements:

  • Fixed an issue where the "Lighting" and "Dark/Light Theme" toggle icons were invisible on some light desktop themes (e.g. Pop!_OS) by migrating to widely supported standard GTK symbolic icons (lightbulb-symbolic and weather-clear-night-symbolic).

Cleanup:

  • Removed outdated news files.

๐Ÿ”ง OmenCtl v1.5.1 โ€” Fan Control Hotfix

Choose a tag to compare

@yunusemreyl yunusemreyl released this 27 May 17:01

๐Ÿ› 1. Fix: "Maximum" Fan Mode Broken on Omen Boards (Board 878A and similar)

Affected boards: All boards in omen_thermal_profile_boards[] where the kernel driver does not expose fan*_target sysfs files (e.g., Board 878A โ€” HP OMEN Laptop 15-ek0xxx).

Root cause (3 separate bugs):

Bug A โ€” GUI sent unnecessary SetFanTarget after SetFanMode("max")
The GUI's "Max" button (fan control level 2) previously mapped to ("max", 100), meaning it would:

Call SetFanMode("max") โ€” which correctly wrote pwm1_enable=0 or used the platform profile fallback
Then loop through all fans and call SetFanTarget(fan, max_rpm) โ€” which on boards with fan_target support would write to the kernel driver, automatically switching the driver mode from PWM_MODE_MAX back to PWM_MODE_MANUAL, undoing the MAX mode!
On boards without fan_target support, step 2 simply failed silently, so the MAX mode persisted. But on boards where the custom hp-wmi driver exposes fan_target, this was a direct regression.

Fix: Changed Max button mapping from ("max", 100) โ†’ ("max", None). Now clicking Max only calls SetFanMode("max") and lets the BIOS/EC handle the actual fan speed ramping. No individual fan target writes are sent.

Bug B โ€” _read_mode_fallback() conflated "performance" power profile with "max" fan mode
When pwm1_enable returned 2 (AUTO), the daemon's _read_current_mode() would call _read_mode_fallback(), which checked the platform profile path. If the power profile was set to "performance", it incorrectly returned "max" as the current fan mode.

This caused set_mode("max") to hit the early-return check (if self.get_mode() == mode: return True) and skip the actual pwm1_enable write entirely, since it believed the fan was already in max mode.

Fix: Removed _read_mode_fallback() entirely. When pwm1_enable == 2, the mode is definitively "auto". The "performance" power profile is a separate concept from the "max" fan mode.

Bug C โ€” set_mode() early-return skipped writes based on stale cache
The set_mode() method called self.get_mode() to check if the requested mode was already active. Since get_mode() called _read_current_mode() which relied on the buggy fallback, it could return incorrect results, causing legitimate mode change requests to be silently ignored.

Fix: Removed the early-return optimization. The daemon now always attempts the pwm1_enable write, ensuring the hardware state is always synchronized with the requested mode.

Bonus โ€” Added "auto" mode platform profile fallback
Previously, only the "max" mode had a fallback chain (writing to thermal_profile or platform_profile when pwm1_enable write failed). Now, the "auto" mode also has a fallback that writes balanced to the platform profile paths, ensuring fans return to EC control even on boards where direct PWM control is unsupported.

๐Ÿ” 2. Diagnosis: ACPI Errors on Board 8BAB (OMEN 16-wf0xxx)

Board: 8BAB โ€” OMEN by HP Gaming Laptop 16-wf0xxx

The kernel logs show ACPI errors:

ACPI Error: Aborting method \_SB.WMID.WQBC due to previous error (AE_AML_OPERAND_VALUE)
ACPI Error: Aborting method \_SB.WMID.WQBE due to previous error (AE_AML_OPERAND_VALUE)
ACPI Error: Aborting method \_SB.WMID.WHCM due to previous error (AE_AML_OPERAND_VALUE)
ACPI Error: Aborting method \_SB.WMID.WMAA due to previous error (AE_AML_OPERAND_VALUE)

Diagnosis: These are BIOS firmware bugs โ€” the ACPI tables contain a broken GETB helper method (CreateField with zero length) that causes certain WMI methods to abort. This is the same issue documented for board 8BAC in the kernel driver.

Impact: These errors are cosmetic and do not affect fan control. The fan speed queries (WMI 0x2D/0x2E) and thermal profile commands (WMI 0x1A) use separate WMI paths that are not affected by the broken GETB helper. The user's debug info confirms this โ€” fan speeds are being read correctly (5000/5300 RPM) and all services are active.

No code changes needed for this issue. The errors are a BIOS-level bug that HP would need to address in a BIOS update.

๐Ÿ”Œ 3. Decoupling Power and Fan Modes (UX & Reliability Fix)

Change: Power profile changes (quiet, balanced, performance) no longer automatically modify or override the user's active fan mode.

Why this was done: Previously, selecting "performance" power profile would automatically force the fan mode to custom/performance, and choosing "balanced" or "saver" would override the fan mode to "auto". This prevented users from running balanced power mode with custom fan speeds, or quiet power mode with high fan speeds.

How it works now: The fan mode is completely decoupled from the power profile. Changing the power profile will adjust CPU/GPU power limits (and toggles like cTGP/PPAB) at the hardware level but will not touch your fan controller. Your fan mode will stay exactly on what you set (Auto, Custom, or Max) until you change it.

โšก 4. Aggressive Performance Fan Curve & Telemetry Governing

Redesigned Performance Curve
The previous performance curve was too conservative: self.performance_points = [(35, 0), (50, 35), (80, 70), (85, 90), (90, 100)] At 80ยฐC (which is typical under modern CPU workloads), the fans only spun at 70%, causing temperatures to rapidly spike to very high levels before reaching full speed.

We redesigned the performance curve to ramp up much more aggressively to keep temperatures low under heavy loads:

New Performance Points: [(35, 0), (50, 45), (65, 70), (75, 90), (82, 100)]

At 50ยฐC, the fans start cooling earlier at 45% speed.
At 65ยฐC, fans run at 70%.
At 75ยฐC, fans run at 90%.
At 82ยฐC and above, fans run at 100% to keep temperatures safe.

Dual-Telemetry Temperature Governing
Previously, the active fan curve was solely driven by the CPU temperature. If you were playing a GPU-bound game, the CPU could remain relatively idle (e.g. 55ยฐC) while the GPU was running extremely hot (e.g. 80ยฐC). Since the curve only looked at CPU temperature, the fans would stay very quiet, causing the GPU to overheat.

We have updated the telemetry history to collect max(cpu_temp, gpu_temp). Now, the fan curves (both custom and performance) will react to the hottest component in the system, ensuring absolute safety and optimal cooling regardless of whether the load is CPU-intensive or GPU-intensive.

๐Ÿ“ฆ 5. D-Bus Policy Permissions & Service Startup Reliability (setup.sh)

Changes & Improvements:

D-Bus Config Hot-Reload: We added an automatic systemctl reload dbus call right after copying the service policy configurations. This ensures that new D-Bus permissions are immediately active during installation or update, avoiding AccessDenied/policy errors without requiring a system reboot.
Secure Permissions & Ownership: The installer now explicitly applies secure 644 file permissions and root:root ownership to all D-Bus configurations and systemd service files.
Correct Boot Ordering (systemd-logind.service): To address race conditions during startup, we updated all five systemd microservice configuration templates (data/hpm-*.service) to boot After and Require systemd-logind.service.
Startup Jitter Delay (ExecStartPre=/bin/sleep 2): Added a 2-second sleep delay before service launch to guarantee that the hwmon driver directory in /sys has fully initialized, avoiding early startup telemetry crashes.
Real-time Installation Verification: Added a post-installation service status validation loop in setup.sh that checks if each microservice starts successfully using systemctl is-active. If a service fails to initialize, it immediately warns the user and provides the exact journalctl command to troubleshoot.

โšก 6. Technical Note: NVIDIA Laptop GPU Power Limits (115W vs 140W)

Explanation: Some users noted that their laptop GPU (e.g. RTX 5070 Ti / 4070 Laptop) has a specified maximum power cap of 140W, but nvidia-smi or OmenCtl shows it at 115W (fluctuating up to 140W for the first few minutes and then settling at 115W when idle).

This is fully expected and correct hardware behavior under Linux:

Base TGP (115W): The physical base power budget of the GPU is 115W.
Dynamic Boost (cTGP/PPAB, +25W = 140W): The additional 25W is dynamically allocated using NVIDIA Dynamic Boost 2.0.
Behavior: Under Linux, the nvidia-powerd system daemon monitors active CPU and GPU loads.
When idle or under light load, nvidia-powerd (or the driver itself) automatically locks the power limit to the base 115W to conserve energy and keep temperatures low.
When a heavy 3D workload/game is launched, the dynamic boost rails (PPAB/cTGP) are immediately engaged, boosting the power cap dynamically up to the maximum 140W.
If a manual query is sent via terminal when the system is idle, it will register 115W, but under full load, it will scale perfectly up to 140W.

v1.5.0 - The OmenCtl Era: Smoother Fans, Dynamic Power & Premium UI

Choose a tag to compare

@yunusemreyl yunusemreyl released this 25 May 19:15
c465974

๐Ÿš€ OmenCtl v1.5.0 โ€” Re-branded & Re-engineered

โšก More Modern. More Responsive. Simply Better.

Welcome to OmenCtl v1.5.0 (formerly known as OMEN Command Center for Linux). This release marks a massive milestone, bringing a complete re-branding, advanced low-level hardware optimizations, re-engineered fan safety algorithms, desktop environment integration fixes, and complete legacy cleanup tools.


๐ŸŒŒ 1. Re-branding to OmenCtl

We have officially retired the lengthy name OMEN Command Center for Linux in favor of OmenCtl.

  • Clean Identity: All GitHub clone URLs, package definitions (PKGBUILD), API release checks, and NixOS flake inputs are updated to use the new streamlined OmenCtl paths.
  • Update Continuity: The built-in updater in the Settings page is fully wired to check https://github.com/yunusemreyl/OmenCtl for instant, seamless future updates.

๐Ÿ› ๏ธ 2. Desktop & Dock Integration Fix (Taskbar Grouping)

We have successfully diagnosed and resolved the launcher dock association issue on modern Linux desktop environments (such as GNOME Shell and KDE Plasma):

  • StartupWMClass Alignment: Added StartupWMClass=com.yyl.hpmanager to the .desktop launcher file to explicitly declare window manager class association.
  • Application ID Match: Aligned the Gtk/Adw Application ID instantiation inside the Python GUI to exactly match com.yyl.hpmanager.
  • Benefit: When you run the application, the open window will now cleanly stack and associate directly over the official OmenCtl launcher icon in your dock, instead of showing a separate generic system/gear icon.

๐ŸŒช๏ธ 3. Acoustic Fan Hysteresis & RPM Stability

Legacy fan controls would frequently "pulsate" or "rev" up and down as CPU temperatures hovered near a threshold. We have completely re-architected the fan daemon with a robust cooling safety system:

  • 15-Sample Moving Average: The temperature reader now calculates a rolling average across the last 15 seconds of CPU temperature queries, smoothing out quick, non-critical thermal spikes.
  • 4.0ยฐC Hysteresis Deadband: Once the fans speed up to cool the laptop, they stay at that RPM until the CPU drops at least 4.0ยฐC below the trigger threshold. This keeps fan speeds smooth and prevents annoying pulsing noises.
  • 400 RPM Jitter Filter: Filters out micro-adjustments under 400 RPM, locking the fan speed to avoid unnecessary motor adjustments.

โšก 4. ACPI/WMI Power Profiles & PolicyKit Bypass

Switching performance modes previously felt sluggish and often triggered annoying PolicyKit authentication popups or D-Bus access blocks. We redesigned this path from the ground up:

  • Dynamic WMI Capsules: Instead of hardcoding power profile buttons, the UI now queries the ACPI/WMI bus dynamically at startup. It draws buttons representing the exact modes supported by your specific motherboard (e.g. power-saver, balanced, performance).
  • PolicyKit Bypass: Integrated powerprofilesctl commands directly inside our root-level system microservice. You can now toggle power profiles instantly inside the GUI without ever seeing a PolicyKit password prompt.
  • Hardware-First Sync: The ACPI platform profile register (/sys/firmware/acpi/platform_profile) is queried as the absolute source of truth, ensuring the GUI perfectly reflects physical motherboard registers.
  • cTGP & PPAB Rails: Configurable TGP and Dynamic Boost limits are automatically set at the hardware level when performance mode is active.

๐Ÿงน 5. Pristine Legacy Cleanup in setup.sh

To prevent system clashes between old and new packages, the installer (setup.sh) has been completely rewritten:

  • System Remnants Sweeper: The update routine now systematically searches and recursively deletes all legacy directories, D-Bus configuration files, obsolete omen-command-center launchers, and services.
  • Clean Reloads: Automatically reloads systemd, clears obsolete daemon socket locks, and cleanly starts the new optimized service suite.

๐ŸŽจ 6. Cyberpunk UI Refinements & Dynamic Theme Reactions

The interface has received a massive graphical update, yielding a sleek, high-fidelity experience:

  • Performance-Reactive Accents: The global highlight colors react in real-time to your selected performance mode:
    • ๐ŸŸข Power Saver: Emerald Green highlight accents.
    • ๐Ÿ”ด Balanced: HP Omen Signature Crimson highlight accents.
    • ๐ŸŸฃ Performance: Glowing Amethyst Purple highlight accents.
  • Premium Telemetry Gauges: High-contrast Dark and Light modes now feature beautiful, responsive mechanical radial speedometer gauges, displaying real-time telemetry like CPU/GPU loads, disk usage, fan speeds, and memory.
  • Visual Cards & Badges: The settings card borders are stylized with glowing left borders, and driver states are encapsulated in gorgeous status capsules.

๐ŸŒˆ 7. Zero-overhead Keyboard RGB Animation

  • 0% CPU Idle Mode: Static colors are locked via an optimized signaling thread that consumes precisely 0% CPU.
  • High-Efficiency Animations: Wave, Cycle, Breathing, and Static animations are completely optimized with precise sleeping cycles to preserve system resources and thermal headroom.

๐ŸŽฎ 8. Hardened MUX GPU Switching

  • Graphics mode switching supporting prime-select, supergfxctl, and envycontrol backends has been hardened with intelligent fallback algorithms, preventing boot loops or missing graphic displays on mixed platforms.

๐Ÿ“Š Summary Comparison

Feature Legacy Version OmenCtl v1.5.0 (New)
Acoustic Fan Sound Constant pulsing and speed revving Perfectly smooth and silent hysteresis
Power Profile Setup Hardcoded buttons (mismatches common) Dynamically queried from ACPI WMI registers
Authentication Flow Annoying PolicyKit popups on switches Zero-auth instant switches via root microservice
Old Remnants Leftover folders caused conflicts Automatic pristine legacy cleaner in setup.sh
Interface Style Basic monochrome accents High-fidelity performance-reactive accents
RGB Performance Thread polling consumed CPU cycles Zero-CPU idle locks for static color states
Desktop Dock Match Generic icon & separate window tracking Flawless taskbar grouping & launcher association
GitHub Updates Referenced old repo path Fast, integrated OmenCtl release checking

Thank you to all our incredible issue openers and code contributors for making this release possible!

๐Ÿ›ก๏ธ Updated Security Architecture v1.4.0

Choose a tag to compare

@yunusemreyl yunusemreyl released this 23 May 15:46
962fd91

The application has undergone a comprehensive security audit and refactoring:

  • Kernel Memory Safety: Fixed ACPI buffer overflows and uninitialized memory leaks in hp-wmi and hp-rgb-lighting.
  • Race Condition Prevention: Introduced global mutexes to prevent WMI command clobbering between kernel modules.
  • Strict Least-Privilege: D-Bus policies now restrict hardware write operations exclusively to wheel, sudo, and adm groups.
  • Systemd Sandboxing: Microservices now run without CAP_SYS_RAWIO, with protected network and home directories.

๐Ÿ“š Comprehensive Documentation

  • Added a full documentation/ suite covering Architecture, Code Structure, and detailed driver internals.

v1.3.7 - CLI and cTGP,PPAB fixes

Choose a tag to compare

@yunusemreyl yunusemreyl released this 15 May 09:37

### ๐Ÿ› ๏ธ What's New in v1.3.7?
๐Ÿš€ New: omen Command Line Interface (CLI)
Introducing a powerful new CLI for terminal lovers. Control your laptop's core features without opening the GUI.

omen fan max          # Set fans to max speed
omen fan auto         # Restore auto fan control
omen mode performance # Enable high-performance mode (lifts 80W cap)
omen mode balanced    # Switch to balanced profile
omen mode quiet       # Switch to quiet/power-saver mode
omen mux hybrid       # Switch to Hybrid GPU mode
omen mux discrete     # Switch to Discrete GPU mode

โšก GPU Power Limit (80W Cap) Resolution

The 80W power limit issue on NVIDIA GPUs is now fully resolved.

Kernel-level TGP & PPAB Control: Added support for lifting power caps on OMEN/Victus laptops via the patched hp-wmi driver.
Automatic Sync: Switching to "Performance" mode now automatically triggers both NVIDIA-SMI limits and kernel-level power expansion (lifting the 80W cap to 140W+ on supported hardware).

๐Ÿ”ง Driver & Stability Improvements

Fixed INIT_DELAYED_WORK Race Condition: Prevented potential kernel crashes during module initialization.
Fixed TOCTOU Vulnerabilities: Synchronized GPU power state updates in the driver for better data integrity.
Improved NULL-Safety: Hardened the hp-wmi driver against unexpected WMI responses.
Cleaned up Fan Fallbacks: Improved reliability on newer Victus-S series boards.

๐Ÿš€ v1.3.5 - The Microservices Revolution!

Choose a tag to compare

@yunusemreyl yunusemreyl released this 01 May 15:10

๐Ÿ› ๏ธ What's New?

๐Ÿงฉ Decoupled Microservices Architecture

Instead of one large background process, the system now runs 5 independent services, each dedicated to a specific task:

hpm-fan: Intelligent fan control and curve management.
hpm-rgb: Lighting effects and animation engine.
hpm-power: Power profiles and energy management.
hpm-mux: GPU switching logic (prime-select, envycontrol, etc.).
hpm-platform: System temperatures, battery info, and keyboard fixes.
This architecture ensures that if one service (e.g., RGB) fails, critical system functions like fan control or MUX switching continue to work uninterrupted.

โšก Maximum Performance & Minimum Resource Usage

RGB Engine: When using a static color, the engine now enters a deep sleep using Event.wait(), consuming 0% CPU.
Smart GPU Monitoring: The service now checks the Nvidia GPU's power state (suspended) before polling. It will not force-wake the dGPU, significantly extending battery life.
Dynamic Backoff: Polling intervals automatically expand when system values remain unchanged, further reducing background overhead.

๐ŸŽฎ GPU TGP 80W Cap Mitigation (HP Omen Max 16)

The chronic issue in mainline kernels (v7.0+) that caused the GPU power to be capped at 80W on certain Omen models (specifically 8D41) has been fixed. Thanks to a patch provided by xcellsior, the unnecessary firmware writes at probe time are now gated, allowing your GPU to reach its full TGP!

๐Ÿ”„ Refined Installation & Update Experience

Due to the major architectural change, you must use the updater script: sudo ./setup.sh update to transition to this version.
The installer now prompts you before installing the "Custom DKMS Driver." (Kernel 7.0+ users with working out-of-the-box fan control can safely skip this).

โš ๏ธ Important Update Instructions

If you are upgrading from an older version, please run the following commands in your terminal to cleanly remove old service artifacts and register the new microservices:

cd OmenCommandCenterforLinux
git pull
sudo ./setup.sh update

โค๏ธ Developed for the OMEN community by yunusemreyl and contributors.

v1.3.0 - New and Polished Experience

Choose a tag to compare

@yunusemreyl yunusemreyl released this 18 Apr 14:45

I had taken a break from development due to my exam period. I'm back with a fantastic interface update.

New in v1.3.0:

๐Ÿš€ Completely Renewed Experience: OMEN Command Center for Linux was fully renewed in v1.3.0 with a redesigned interface flow, updated page structure, and cleaner cross-page consistency.
๐Ÿ“ Responsive UI Scaling: All major pages now adapt to compact, normal, and spacious window sizes for better desktop and small-window usability.
๐Ÿงญ Navigation & Header Polish: Inline page header/back behavior and launcher layout were refined for cleaner page transitions and more consistent navigation.
๐ŸŒ— Theme Consistency Improvements: Light/dark mode readability and dropdown/popover styling were improved for clearer contrast and better visual stability.
๐Ÿ› ๏ธ Settings Reliability Updates: Debug info actions and related settings labels were stabilized and aligned with translations.

Release v1.2.4 - Stability and Compability Updates

Choose a tag to compare

@yunusemreyl yunusemreyl released this 17 Apr 12:46

New in v1.2.4:

๐Ÿงฐ Kernel Synchronization: Synced hp-wmi driver with the mainline Linux kernel. Added missing board IDs (8A4D, 8BCA, 8C76) for complete compatibility.
๐Ÿงช MUX Switch Fix (Errno 22 Mitigation): Resolved Invalid Argument (22) errors during MUX switching on newer models by implementing a 4-byte payload fallback in the WMI query.
โŒจ๏ธ KDE Omen Key Shortcut: The OMEN Key desktop shortcut now activates instantly on KDE Plasma (e.g., CachyOS) without requiring a reboot, using qdbus to reload global shortcuts.
๐Ÿ–ฑ๏ธ Touchpad Keymap: Restored touchpad toggle keymap support (KEY_TOUCHPAD_OFF / KEY_TOUCHPAD_ON).