Touch FX
An overlay that draws a little burst of shapes wherever you click on your Windows desktop
- What it is
- A Windows overlay, published as three releases
- My role
- I wrote and released it on my own
- Built with
- C#, WPF and a low-level mouse hook
- When
- 2026
Why I made it
Some mobile games draw a little burst of shapes wherever you tap, and I wanted the same thing on my Windows desktop. It's a fan project and isn't connected to any game company.
I had a few requirements for it. It had to work across every monitor, it could never swallow a click that was meant for another app, and when nobody was clicking it shouldn't be using any resources to speak of.
How it works
A window that sits on top of everything normally receives every click aimed at the area it covers, so a full-screen overlay built the ordinary way would make the rest of the desktop unusable. The effect is drawn on a borderless, transparent WPF window that covers every monitor and stays on top of everything else. The window's style flags tell Windows to pass every click straight through to whatever is underneath, and also keep it out of the Alt-Tab list, so as far as you're concerned it isn't there.
To know when you've clicked, the app installs a low-level mouse hook. The hook does as little as possible: it notes the position of each left click and hands it over to the UI thread, which does the drawing, so the hook returns straight away and never slows your mouse down.
Each click spawns a pulse, a spinning arc and a handful of small shapes that fade out. The window only subscribes to WPF's per-frame rendering while at least one effect is on screen, and unsubscribes once the last one has faded, so between clicks it isn't drawing anything. There's a hard limit on how many shapes can exist at once, and if you click very quickly the new bursts get smaller instead of piling up. The brushes and shapes are created once and frozen, which lets WPF reuse them cheaply.
The app also reads the Windows light or dark setting and switches to stronger colours on bright backgrounds, and you can quit it from anywhere with Ctrl + Alt + Q or from its tray menu.
Releases
I've put out three small releases, v0.1.0 to v0.1.2. Each one came from using it day to day for a while: the first change made the effect bigger, and the second added the automatic light and dark colours.
What I'd change
The next version should move to a composition-based renderer instead of a full-screen WPF window, which would bring the idle cost down to nothing, and it needs proper testing on monitors that use different scaling settings.
If you'd like to keep reading, the next project is League of Legends data study: comparing what tends to win League of Legends games in 2020 and 2024, and why the comparison doesn't fully hold up.