Flux is a GTK4/libadwaita power and thermal control app for Linux laptops, focused on ASUS AMD systems with optional NVIDIA hybrid graphics.
It provides power profile control, GPU mode switching, fan curve editing, live monitoring, and historical process usage in one desktop app.
- Thermal and power management:
- Switch between power profiles (
power-saver,balanced,performance) - Switch GPU mode (
integrated,hybrid,dedicated) throughenvycontrol - Edit 8-point CPU/GPU fan curves through ASUS
asus_custom_fan_curve - Live CPU and iGPU temperature readouts
- Switch between power profiles (
- Live system monitor:
- Rolling 60-second graphs for CPU, memory, iGPU utilization, and temperature
- Process list with pause (
SIGSTOP), resume (SIGCONT), and kill actions
- Historical usage insights:
- SQLite-backed process CPU/memory samples
- Top consumer charts for 1h, 6h, 24h, and 7d windows
- Linux desktop with GTK4/libadwaita support
- Python 3
- PyGObject (
python3-gobject) psutilpower-profiles-daemon(required for power profile switching)envycontrol(optional, required for GPU mode switching)- ASUS kernel support for fan curves (
asus_wmi/asus_custom_fan_curve)
sudo dnf install gtk4 libadwaita python3-gobject python3-psutil
pip install envycontrol # optional./run.sh./install.shinstall.sh performs a user-local install and does not require system-wide packaging:
- App files:
~/.local/share/flux/ - Launcher binary:
~/.local/bin/flux - Desktop entry:
~/.local/share/applications/com.flux.app.desktop - Icon:
~/.local/share/icons/hicolor/scalable/apps/flux.svg
Launch after install:
fluxOr open it from your desktop app grid as Flux.
Flux runs as a regular user process by default.
Only operations that require elevated permissions trigger Polkit authentication via pkexec:
- Writing fan curves
- Switching GPU mode
Flux does not keep persistent root privileges.
Designed primarily for ASUS Linux laptops, with these expected interfaces:
- CPU temperature via
k10temp - AMD iGPU temperature/utilization via
amdgpu - Optional NVIDIA dGPU for hybrid/dedicated switching
- ASUS fan curve hwmon interface (
asus_custom_fan_curve)
If your hardware paths differ, some controls may be unavailable.
flux.svg
install.sh
run.sh
src/
main.py
window.py
backend/
sensors.py
fan_control.py
fan_profiles.py
gpu_switch.py
power_profile.py
process_monitor.py
history_db.py
ui/
thermal_tab.py
monitor_tab.py
history_tab.py
data/
com.flux.app.desktop
flux: command not foundafter install:- Ensure
~/.local/binis in yourPATH
- Ensure
- Power profile actions fail:
- Verify
power-profiles-daemonis installed and running
- Verify
- GPU switching unavailable:
- Install
envycontroland confirm supported hybrid graphics setup
- Install
- Fan controls unavailable:
- Confirm ASUS fan curve sysfs interface is present and writable (with Polkit when prompted)
This project is licensed under the MIT License. See the LICENSE file for full terms.