A modern, lightweight GUI replacement for HP OMEN Gaming Hub on Linux.
Control GPU modes, fan curves, RGB lighting, and monitor system thermals.
Works on: HP OMEN 16/17 (AMD Ryzen + RTX) · Arch Linux · CachyOS · NixOS
- 🎮 GPU Switching — Integrated ↔ Hybrid mode without reboot (via
supergfxctl) - 🌡️ Real-time Sensors — CPU/GPU temps, fan RPM, live sparklines (CPU/GPU/RAM)
- 🎛️ Fan Curves — Balanced/Silent/Performance presets, live editing
- ⌨️ Keyboard RGB — Per-key backlight preview with mode-specific colors
- 🌙 Dark/Light Theme — Live switching, accent color customization
- 🌍 Multilingual — English, Dutch, Русский
- 📦 Minimal — PyQt6, no external daemons required
yay -S omen-hubPost-install (recommended):
# For GPU switching + fans:
sudo pacman -S supergfxctl omenctl-git polkit
sudo systemctl enable --now omenctl
# For fan reading:
sudo usermod -aG wheel $USER # then log out and back inDependencies:
python≥ 3.10python-pyqt6≥ 6.0python-tomlkitsupergfxctl(required for GPU mode switching)omenctl-git(optional; for fan RPM readings and control daemon)
git clone https://github.com/yourusername/omen-hub.git
cd omen-hub
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python -m gui.appomen-hub # launch from terminal or app menuAfter AUR install:
- Binary:
/usr/bin/omen-hub - Config:
~/.config/omen-hub/settings.json
Settings saved: theme, language, accent color, fan curve presets.
omen-hub/
├── core/ # Logic: sensors, fan control, GPU mode, settings
├── gui/ # PyQt6 UI
│ ├── theme.py # Color palette + role-based QSS
│ ├── i18n.py # Translations (en/ru)
│ ├── app.py # Main window, navigation
│ ├── widgets.py # Custom: TempGauge, FanWidget, Keyboard, etc.
│ └── pages/ # Info, System, Fans, Keyboard, Settings pages
├── config.toml # Fan curve definitions
└── requirements.txt
- CPU/GPU temps, system load — no privileges needed
- Dark/light switching, language selection, accent colors
- Mode descriptions (Balanced/Silent/Performance)
| Feature | Status | How to Fix |
|---|---|---|
| GPU Mode Switch | Needs pkexec |
Install polkit + ensure PolicyKit agent running |
| Fan RPM Reading | Needs omenctl daemon |
sudo pacman -S omenctl-git && sudo systemctl enable --now omenctl |
| Fan Curve Control | Needs omenctl daemon |
Same as above |
| Keyboard RGB | Needs kernel support | See below |
Option 1: Via kernel module
lsmod | grep hp_wmi
sudo modprobe hp_wmiOption 2: Custom kernel — Arch/CachyOS with linux-zen or linux-cachyos usually includes EC access.
"authorization cancelled" on GPU switch:
systemctl status polkit
groups | grep wheel # if missing: sudo usermod -aG wheel $USERFan RPM shows 0:
systemctl status omenctl
sudo systemctl enable --now omenctl"ModuleNotFoundError: No module named 'PyQt6'":
sudo pacman -S python-pyqt6 python-tomlkit- Bug fixes: Create an issue first, then PR with description.
- Features: Discuss in an issue before implementing.
- Code style: Python 3.10+, PEP 8, theme-aware colors (
theme.color(role)), minimal comments. - Do NOT modify
core/settings.py,gui/i18n.py,gui/theme.pywithout coordination. - Test offscreen before submitting:
HOME=/tmp/omenverify QT_QPA_PLATFORM=offscreen python -m gui.app
Edit gui/i18n.py — add a new dict to _TR. Keys follow pattern: nav_*, hw_*, gpu_*, etc.
GPL-3.0 — See LICENSE.
Inspired by OmenCtl · Uses supergfxctl for GPU switching









