vibranceGUI 3.0.0 — a modernized fork of juv's vibranceGUI. It automatically raises the GPU's digital-vibrance (NVIDIA) / saturation (AMD) level while a game is in the foreground and restores your desktop level afterwards.
This fork is a ground-up rewrite: .NET 10, x64, WPF, direct managed calls to
nvapi64.dll / atiadlxx.dll — no vibranceDLL, no .NET Framework, no x86.
Attribution: original project by juv / juvlarN, see also vibrancegui.com. Credits only — this app has no runtime dependency on them. Not affiliated with or endorsed by NVIDIA or AMD. Fork modifications are released under the MIT license (see LICENSE); the original repository carries no explicit license file — attribution is kept and the original author's rights are respected.
In competitive shooters, enemy visibility wins fights. Washed-out, desaturated textures make opponents blend into walls and shadows — a higher digital vibrance makes colors pop so targets stand out. vibranceGUI does that automatically, per game: launch the game and your chosen level kicks in; alt-tab or close it and your desktop goes back to normal. No trips to the NVIDIA Control Panel, no forgetting to turn it off.
- Spot enemies faster — saturated colors separate players from drab backgrounds (the original reason this tool exists in the CS community — works great in extraction shooters like Wardogs too)
- See into the dark — the FPS preset combines vibrance with a slight gamma and contrast lift, so shadowed corners stop being black holes
- One click setup — Detect installed games finds your Steam/Epic library and proposes the right executables; pick a level, done
- Tune it live —
Ctrl+Alt+↑/↓nudges the level while you play; a toast shows the current value without stealing focus - Easy on the eyes at night — the Night preset and the scheduled night mode cut blue light on the desktop
- Anti-cheat safe — it only talks to the GPU driver, exactly like the NVIDIA/AMD control panels do: no injection, no game hooks, no memory reads. VAC/Faceit/EAC-safe by design
Per i giocatori: vibranceGUI alza automaticamente la saturazione quando un gioco è in primo piano e ripristina il desktop su alt-tab o alla chiusura — nemici più visibili, zero sbatti. Ora anche con gamma, contrasto e riduzione blu per gioco. Nessuna iniezione nel gioco: usa solo le API del driver, come il pannello NVIDIA.
- Windows 10 22H2 or Windows 11, x64
- NVIDIA driver exposing Digital Vibrance Control (DVC), or
- AMD Adrenalin driver (ADL2/ADL — untested on hardware, see COMPATIBILITY)
- .NET Desktop Runtime 10 (framework-dependent build) or the self-contained "portable" build, which needs nothing extra
- Intel GPUs are not supported (no documented saturation API — see COMPATIBILITY)
Download: grab the latest build from
Releases —
vibranceGUI-3.0.0-win-x64-portable.zip (≈150 MB, no runtime needed,
recommended) or vibranceGUI-3.0.0-win-x64.zip (≈27 MB, needs the
.NET 10 Desktop Runtime).
Unzip and run vibranceGUI.exe — keep the DLLs next to the exe in the
portable build.
Prebuilt artifacts are also produced by CI (ci.yml) on every push.
Build from source (VS 2022 17.14+ or the .NET 10 SDK pinned in global.json):
dotnet build vibranceGUI.sln -c Release
dotnet test vibranceGUI.sln -c Release
dotnet publish src/VibranceGui.App -c Release -r win-x64 --self-contained false -p:PublishSingleFile=true -o out/fd
dotnet publish src/VibranceGui.App -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true -o out/portable
vibranceGUI lives in the system tray. Closing the window hides it; exiting
happens via the in-window Exit button, Ctrl+Q, or tray → Exit.
The main window is a single screen: a status pill in the header, the desktop and default in-game levels as cards, and the games list with inline level sliders.
- Desktop level — the slider applies live (100 ms debounce) and is saved ~1 s after you stop; preset chips 50/70/80/100.
- In-game level (default) — the level prefilled when you add a game; Try 3 s previews it on all displays.
- Profiles — per-executable rules: in-game level (editable inline — changes apply immediately while that game is running), optional desktop level while the game runs (used on alt-tab), optional HDR level, optional resolution switch (row menu → Advanced…). Add programs from a file or from the running-processes picker; import/export as JSON (merge by process name).
- Per-game color pipeline — profiles can additionally carry driver-level
gamma, brightness, contrast, hue and blue-reduction adjustments applied
while the game is in the foreground (per-channel where the driver exposes
it). The display's exact prior color state is captured and restored on
every exit path — including after a crash via
restore-pending.json. A scheduled night mode (settings → Night mode) applies desktop-only blue reduction/brightness inside a configurable [start, end) window and never stacks on a running game's profile. See COMPATIBILITY for the per-driver capability notes. Row menu → Preset applies a combined look: Vibrance only, FPS, Cinema, Night. - Detect installed games — Add game → Detect installed games… scans
Steam (
libraryfolders.vdf+ app manifests, all library folders) and Epic launcher manifests and proposes the likely game exe (verifiable in Advanced…). - Level toast — on every level change a small overlay shows the applied level bottom-right of the game's monitor for ~1.5 s (gear → Show level toast, on by default). It never takes focus. Note: Windows cannot draw it over exclusive-fullscreen games — use borderless/windowed-fullscreen to see it in-game.
- Options (gear flyout) — Game display only (default on), Never change resolution (default on), start minimized, start with Windows (opt-in), update check (opt-in — queries GitHub Releases once per start, downloads nothing), language (Auto / English / Italiano; needs a restart).
- Hotkeys — defaults
Ctrl+Alt+V(toggle),Ctrl+Alt+R(reset to desktop),Ctrl+Alt+↑/Ctrl+Alt+↓(raise/lower the active level by 5 — in-game adjusts the running profile, desktop adjusts the desktop level); editable, validated on focus-loss. - Tray — Open, Toggle vibrance, Reset to desktop, Start with Windows, Exit. The icon shows the currently applied level (green = in-game, grey = desktop, amber = suspended); the tooltip shows the live state; errors and updates surface as balloons.
| Switch | Effect |
|---|---|
--minimized |
start hidden in the tray |
--force-nvidia / --force-amd |
skip the other vendor's backend |
--debug |
Debug log level; also shows the window |
--run-for <s> |
(dev/testing) normal shutdown after s seconds |
VIBRANCEGUI_DATA_DIR |
(dev/testing) override the data directory |
settings.json— all settings and profiles (legacy INI/XML is migrated automatically on first run — see MIGRATION)vibranceGUI.log— rotating log (1 MiB × 3 generations)restore-pending.json— recovery marker: written while a non-desktop level is applied; if the process is killed, the next start restores the desktop level on the marked displays and deletes the marker.
vibranceGUI is an ordinary external tool. It does not inject into games,
install input hooks, or read game memory. Foreground detection uses
SetWinEventHook with WINEVENT_OUTOFCONTEXT | WINEVENT_SKIPOWNPROCESS only;
process identification uses PROCESS_QUERY_LIMITED_INFORMATION (+SYNCHRONIZE
for exit waiting). It only calls the vendor display-driver APIs.
NVIDIA desktop GPUs (tested: RTX 3070, driver 32.0.16.1656 / GeForce 616.56); AMD via ADL (untested on hardware); per-display control across monitors; NVIDIA laptop internal panels are generally not controllable. Details and known limitations: COMPATIBILITY.
- Counter-Strike 2 — a
cs2profile ships in first-run defaults (acsgoprofile too). If the game jumps to the second monitor when launching fullscreen: Never change resolution is on by default now — but if a per-game resolution switch is still needed, prefer borderless / fullscreen-windowed mode in the game. - "Override to reference mode" (#149) — if levels don't stick, NVCP → Display → Adjust desktop color settings → untick Override to reference mode. The app detects read-back mismatches and explains this in a balloon.
- Vibrance not resetting after a crash (#144) — fixed by design: a
process-exit watch plus the
restore-pending.jsonmarker restore the desktop level even after a hard kill. - Laptops — internal panels are typically wired to the iGPU and not controllable; external displays on the dGPU (MUX) should work — untested.
- Dual GPU — each display is owned by the backend that controls it.
- Frametime spikes (#156) — v3 debounces foreground events (150 ms), filters non-top-level/cloaked windows, and caches levels so it doesn't re-write unchanged values. Not verified against driver R595+ on this machine — residual risk, see COMPATIBILITY.
- Privacy — zero telemetry; the only network call is the opt-in update check against GitHub Releases.
Issues and PRs welcome. See docs/AUDIT.md (original analysis),
docs/MIGRATION.md (developer section: architecture map, design decisions),
docs/COMPATIBILITY.md, CHANGELOG.md.
