
I built PABS: Intelligent Power & Brightness automation. Control your hardware performance and tune it perfectly for every app.
There are quite a few power plan switchers out there. Some are free but lack some features I needed, while the paid ones still don't offer everything I was looking for.
Therefore, I’ve spent an afternoon creating a small utility that does what I want. I call it PABS (Powerplan And Brightness Selector). It’s a single script that runs in the tray and manages everything based on your active apps and power source using minimal CPU resources.
While designed for laptops (with integrated brightness control), desktop users can still benefit from the automated power plan switching, why not?
Key features:
- No bloat – pure PowerShell, minimal resources.
- Free – open source for everyone but moderators of r/Windows10 and r/GamingLaptops . You guys can have it for $49.99 ;)
- It actually cares about brightness – unlike most switchers.
- Executable-Path-Based Priorities: Higher items in your watchlist have higher priority. If you have a game and a browser open, the game's plan wins.
- AC/DC Awareness: Separate automation rules for when you're plugged in vs. on battery.
- Brightness Inheritance: If you manually adjust your brightness, PABS "remembers" it and carries it over to the next plan (no more 100% brightness flashes!).
- Manual Brightness Sync (Ctrl+Shift+B): Instantly push your current brightness level to ALL plans.
- Stealth Dashboard: Runs hidden in the tray. You can toggle a Dashboard log window to see what's happening.
- Bulletproof: The console "X" button is disabled to prevent accidental closure (exit via tray only).
- Tailored to you: Easy to modify the code to fit your specific needs.
To make the script work, you may need to do a few things first:
- (Optional) Take a look at power plans table:
# list of defined power plans mapped to their system GUIDs
$PowerPlans = @{
"Ultra" = "e9a42b02-d5df-448d-aa00-03f14749eb61"
"High" = "8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c"
"Balanced" = "381b4222-f694-41f0-9685-ff5bb260df2e"
"PwrSaver" = "a1841308-3541-4fab-bc81-f71556f20b4a"
}
It contains standard Windows power plan GUIDs. The names in the table have nothing to do with Windows PP names and are used as labels within the script. So you can even set:
$PowerPlans = @{ "ExtremeUltraHiperMegaTurboBlastingPowerUltimateNitroWarp" = "guid-here" }
You can add of course your custom power plans GUIDs. To display the list of PP open cmd.exe or powershell and type:
powercfg /l
Then copy the GUIDs and choose a name for them.
2. (Mandatory) Configure the switching logic by editing the $WatchList* tables:
This is the AC watchlist:
$WatchListAC = @(
@{ Path = "C:\Games\*"; Plan = "Ultra" } # Top Priority
@{ Path = "C:\Apps\Editor\*"; Plan = "High" } # Lower Priority
)
In the above example, there are two monitored directories. Any application from C:\Games and its subdirectories will trigger the "Ultra" plan.
If you start any app from the C:\Apps\Editor directory while a game is already running, the "Ultra" plan will remain active (due to higher priority) until you close the game. Only then will it switch to "High".
If all watched apps are closed, the script reverts to your default ($DefaultPPAC = "Balanced").
So... To summarize: just copy-paste and/or edit the entries to include your folders in the list and assign power plan names from $PowerPlans table for them e.g.
$WatchListAC = @(
@{ Path = "C:\Games\*"; Plan = "Ultra" } # Top Priority
@{ Path = "C:\MediumPriority\*"; Plan = "PwrSaver" } # Med Priority
@{ Path = "C:\Apps\Editor\*"; Plan = "High" } # Lower Priority
)
The script is designed to automatically find your Brightness GUID by searching for the "Display brightness" string in your power settings, but you may want to verify it manually.
To do this run:
powercfg /q SCHEME_CURRENT SUB_VIDEO
Look for the section named "Display brightness"—the GUID listed there is what the script uses to control your screen. If the brightness control is not working, that's the place to dig.
How to run PABS after you configure watchlists:
Option A: Stealth Launch (Recommended)
Copy the code from the pastebin link below, save it as PABS.ps1
Create a .bat file in the same directory (e.g., run_PABS.bat) with a single line:
start powershell.exe -ExecutionPolicy Bypass -File "C:\Tools\PABS\PABS.ps1"
Where "C:\Tools\PABS\" is of course the path to the script. You can move this .bat to your Startup folder to run it automatically on logon.
Option B: Enable Scripts Permanently and run manually:
Run PowerShell as Admin and type:
Set-ExecutionPolicy Unrestricted -Force
Change dir to the folder where you saved the script and run it: ./PABS.ps1
Code:
I tested it on Windows 10 but it should work on 11 as well.
It's not much, but it’s a tiny, "set and forget" tool that made my laptop experience much smoother. As I said - the code is free (with exceptions as per p.2 above;)) , but I'll be happy if you keep the credits intact! ;)
1