A Windows system tray application that automatically switches power plans and Lian Li fan configurations based on CPU/GPU usage or running applications.
- Automatic Power Plan Switching: Monitors CPU and GPU usage and switches between power plans when thresholds are exceeded
- Multi-GPU Support: Detects and monitors NVIDIA, AMD, and Intel GPUs automatically
- Lian Li Fan Control: Integrates with L-Connect 3 to switch fan profiles
- Game Detection: Watches for specific executables and triggers boost mode automatically
- System Tray Interface: Clean tray icon with right-click menu for manual control
- Configurable Thresholds: Customize CPU/GPU thresholds, hold times, and watched games
- Start with Windows: Option to run automatically at Windows startup
- Admin Elevation: Automatically requests admin rights for power plan changes
- Download the latest release from GitHub Releases
- Extract the ZIP to a folder of your choice (e.g., your Dropbox folder for portability)
- Double-click
DynamicPowerPlan.exe - Click "Yes" on the UAC prompt (admin rights required)
- The tray icon appears - you're done!
- Install Python 3.11+ from python.org
- Clone or download this repository
- Install dependencies:
pip install -r requirements.txt
- Run the application (as Administrator):
python main.py
Edit config.json to customize the application. The file is located in the same folder as the executable.
{
"plans": {
"normal": "Everyday",
"boost": "High Performance"
},
"thresholds": {
"cpuPercent": 70,
"gpuPercent": 70,
"promoteHoldSeconds": 5,
"demoteHoldSeconds": 15
},
"sampling": {
"intervalMs": 1000
},
"games": {
"watch": [
"cod.exe",
"bf2042.exe",
"fortniteclient-win64-shipping.exe"
]
},
"gpu": {
"nvidia": {
"preferSMI": true,
"smiPath": "C:\\Windows\\System32\\nvidia-smi.exe"
},
"amd": {
"preferPyadl": true
}
},
"lconnect": {
"enableFanBoost": true,
"serviceName": "LConnectService",
"targetFile": "C:\\ProgramData\\Lian-Li\\L-Connect 3\\settings\\L-Connect-Service",
"mbOnDir": ".\\MB_on",
"mbOffDir": ".\\MB_off"
}
}| Setting | Description | Default |
|---|---|---|
plans.normal |
Name of your normal/everyday power plan | "Everyday" |
plans.boost |
Name of your high performance power plan | "High Performance" |
thresholds.cpuPercent |
CPU usage threshold to trigger boost mode | 70 |
thresholds.gpuPercent |
GPU usage threshold to trigger boost mode | 70 |
thresholds.promoteHoldSeconds |
Seconds of sustained high usage before switching to boost | 5 |
thresholds.demoteHoldSeconds |
Seconds of sustained low usage before switching back to normal | 15 |
sampling.intervalMs |
How often to check CPU/GPU usage (milliseconds) | 1000 |
games.watch |
List of executable names that trigger boost mode when running | [] |
gpu.nvidia.preferSMI |
Use nvidia-smi for NVIDIA GPU monitoring | true |
gpu.nvidia.smiPath |
Path to nvidia-smi.exe | System default |
gpu.amd.preferPyadl |
Use pyadl library for AMD GPU monitoring | true |
lconnect.enableFanBoost |
Enable Lian Li fan profile switching | true |
Right-click the tray icon to access:
- Status Display: Current CPU/GPU usage and mode (Boost/Normal)
- High Performance: Manually switch to boost mode
- Everyday (Normal): Manually switch to normal mode
- Auto: Return to automatic switching based on usage
- Start with Windows: Toggle auto-start at Windows boot
- Open Config File: Edit configuration in your default editor
- Exit: Close the application
- The app monitors CPU and GPU usage at regular intervals (default: 1 second)
- When usage exceeds the threshold for the "promote hold time", it:
- Switches to the "High Performance" power plan via
powercfg - Copies the
MB_onfan configuration to L-Connect 3 (full-speed fans)
- Switches to the "High Performance" power plan via
- When usage drops below the threshold for the "demote hold time", it:
- Switches back to the "Everyday" power plan
- Copies the
MB_offfan configuration (normal fans)
- If a watched game executable is detected running, boost mode is triggered immediately
- Windows 10/11
- Administrator rights (for power plan switching)
- Lian Li L-Connect 3 (optional, for fan control features)
The application automatically detects and monitors GPUs from multiple vendors:
| GPU Vendor | Primary Method | Fallback Method |
|---|---|---|
| NVIDIA | nvidia-smi command | GPUtil library |
| AMD | pyadl library | Windows Performance Counters |
| Intel | Windows Performance Counters | - |
Notes:
- NVIDIA: Install the NVIDIA driver (nvidia-smi is included)
- AMD: Supported out of the box
- Intel: Works automatically on Windows 10/11
- Multi-GPU: Returns maximum utilization across all detected GPUs
The app expects power plans named "Everyday" and "High Performance" by default. To check your available power plans:
powercfg /listYou can change the plan names in config.json to match your existing plans.
To create a standalone executable:
- Install Python 3.11+ and dependencies:
pip install -r requirements.txt pip install pyinstaller
- Build the executable:
pyinstaller --clean DynamicPowerPlan.spec
- Find the executable in the
distfolder
DynamicPowerPlan/
├── DynamicPowerPlan.exe # Main executable
├── config.json # User configuration
├── MB_on/ # Full-speed fan configuration
│ └── L-Connect-Service
├── MB_off/ # Normal fan configuration
│ └── L-Connect-Service
├── backup/ # Original L-Connect backup
└── logs/ # Application logs
- Make sure you're running as Administrator
- Check that Python dependencies are installed (if running from source)
- Verify the power plan names in config.json match your system (
powercfg /list) - Ensure you clicked "Yes" on the UAC prompt
- NVIDIA: Install the latest NVIDIA driver
- AMD: Supported out of the box
- Check the logs folder for error messages
- Verify L-Connect 3 is installed
- Check the target path in config.json matches your L-Connect installation
- The MB_on and MB_off folders must contain valid L-Connect-Service files
This project is open source. See LICENSE for details.
If you encounter issues, please open an issue on GitHub.