Case study My first shipped project · 2025

The right app takes focus, the display retunes itself.

EXFIL is a small Windows app that lives down in your taskbar tray. You tie a color profile to any app, and EXFIL swaps to it the second you click into that app. Tarkov is washed out and dark, so I crank up the color for it. My desktop and editing apps stay normal. Movies sit somewhere in between. You point it at an app, pick a profile, and then stop thinking about it.

Since it's already running anyway, it doubles as a slim overlay that shows your live frame rate, your graphics card, processor and memory load, and your core temperatures. That way I can see what my PC is doing without opening a second tool.

This was the first tool I ever shipped. I built the first version early in 2025 in C# and .NET 8, and it's the project where I learned to take an idea all the way to finished, working software. Then in 2026 I rebuilt it from scratch in Rust. Same app, much better foundation, and everything below that I'd learned the hard way the first time got designed in from the start. Both versions are public and open source, so you can put them side by side and see how far the work came in a year. The Rust one is the one to actually install — it's free to download and it updates itself.

Role
Designer & builder
Stack
C# · .NET 8 → Rust · Tauri 2
Surface
Tray + settings + overlay
Status
Both versions open source · MIT
01 / 05 The problem Why this exists

One screen setting can't cover everything you do on the same PC.

It started with Tarkov. The game is dark and low on contrast, so I crank up the screen's color to make targets stand out. The problem is that same setting makes my desktop, my photos, and my movies look radioactive. The usual fix is to toggle it by hand every time you launch the game. Nobody actually does that.

Once I had Tarkov working, the rest came almost for free. EXFIL keeps an unlimited list of profiles, one for each app you care about. You tie a profile to an app, and EXFIL swaps to it the instant you click into that app. No hotkeys, no flipping settings by hand.

02 / 05 Inside EXFIL Tray · settings · overlay

A tray icon, a settings window, and a slim overlay. Then you forget it's there.

There are really only three parts. The little tray icon down by the clock handles quick profile switching. The settings window is where you set up your per-app profiles, the on-screen overlay, and the system info. And the overlay itself floats over whatever app you're in, showing your frame rate and PC stats. That's the entire app.

exfil · dashboard
EXFIL dashboard with tray status, OSD preview, game library, and live system telemetry
Dashboard. Live tray status, a preview of the on-screen overlay, your game library, and a panel pulling graphics and processor temps and load straight from the hardware.
exfil · presets
EXFIL preset editor with vibrance, gamma, brightness, and contrast curves
Presets. Set color, brightness, and contrast for each app. Tie a preset to a game and EXFIL applies it the instant you click in.
exfil · overlay designer
EXFIL OSD designer with overlay layout, content, and style controls
Overlay designer. Drag the overlay wherever it fits, pick a layout, and choose what it shows. Your frame rate, graphics and processor load, and temps all draw on top of the game without ever touching it.
exfil · about
EXFIL about page with build info, driver status, and install notes
About. Build, runtime, and graphics-driver status all in one view. Bug-report copy, changelog, and source links live here too.
C# .NET 8 WPF Rust Tauri 2 Graphics driver Windows APIs HDR-aware Multi-monitor
03 / 05 The ugly corners The part that took the months

Easy on my own PC. Hard on everyone else's.

Getting this working on my own machine took a weekend. Getting it to not break on someone else's laptop took a lot longer. Think a strange external monitor, HDR turned half on, the thing docked at a coffee shop. That's where the real time went.

01 Knowing which app you just clicked into

EXFIL watches for whichever app you've clicked into and figures out what it actually is. It matches on the real program, not the window's title, because titles change all the time. It does this without constantly checking in the background, which would drain your battery. Anything it doesn't recognize just quietly falls back to your normal look.

How
It spots the real program the moment you switch
Result
As many app profiles as you want
02 Talking to the graphics card

The color setting EXFIL controls isn't something Windows lets you reach. It's buried deep inside NVIDIA's graphics driver, with no clean or reliable way in. So this part had to be built from scratch, talking straight to the driver's own low-level controls. Getting it right taught me a lot about how that layer really behaves.

How
It talks straight to the graphics driver
Result
Steady, reliable control of your screen
03 HDR screens change the rules

When a screen is in HDR mode, the color works differently, and using the wrong settings can look worse than doing nothing at all. So before EXFIL touches anything, it asks Windows whether each display is actually in HDR, then adjusts to match. It never just assumes how your setup is put together.

How
It checks each screen before it acts
Result
Looks right on HDR and normal screens
04 Monitors get unplugged mid-session

People unplug monitors. They dock and undock laptops. Screens go to sleep and wake up looking different. When any of that happens, EXFIL notices, takes stock of what's connected now, and re-applies the right settings. It doesn't just sit there confused, still pointed at a screen that isn't there anymore.

How
It re-checks whenever your screens change
Result
Handles unplugging and docking cleanly
05 Settings that survive an update

Every time I change how settings get saved, I risk wiping out everyone's existing setup on the next update. So EXFIL knows how to read its older settings and quietly bring them up to date. If anything looks wrong while it's doing that, it backs out safely instead of corrupting your setup. The settings you saved six months ago still load just fine today.

How
It upgrades your old settings for you
Result
Updates never wipe out your setup
06 If it crashes, your desktop is still fine

The worst case is EXFIL crashing while a punchy game profile is still on. That leaves your whole desktop looking blown out and oversaturated, with no obvious way to fix it. So every time it starts up, it checks whether the last session ended badly and resets you back to normal before it does anything else. You never get stuck staring at a wrong-looking screen.

How
It resets you to normal after a crash
Result
You never get left stuck
04 / 05 How I built it AI-assisted, not AI-written

Built the way I build everything. I make the calls, the AI helps me move.

I'd decide the next piece myself. Say, it needs to notice when a monitor gets unplugged and put the right profile back. I'd sketch out how I wanted it to work and hand that off. Then I'd read through what came back and keep only what I'd been through and could stand behind. That's why I can still explain every choice here. Why it recovers the way it does after a crash. Why your old settings survive an update. Why it checks for HDR first.

05 / 05 What I'd do differently Honest retro

What the next build would get right from day one.

01
Start with the crash path

The crash-recovery safety net got added late. Next time I'd plan out the "what happens if this dies at a bad moment" story on day one, not after I'd already shipped and started getting nervous about it.

02
Write the settings schema first

I evolved the config organically, then had to retrofit versioning. Next time I'd commit to a schema and migration pattern before writing any UI.

03
Test on a laptop earlier

Mismatched screen sizes, HDR, external monitors, docking. All the ugly display edge cases live on laptops. I tested on a desktop too long, and the bugs piled up while I wasn't looking.

This is where it started. See where it went.