Copy feedback for the whole of Windows. Press Ctrl+C anywhere — any app,
any window — and a Steam-style card pops up above the text you just selected,
with an optional chime.
Copying text gives you nothing back. On most systems the clipboard either took the selection or it didn't, and the only way to find out is to paste and look. AfterCtrlC gives that moment a small, tasteful acknowledgement.
- Works in every Windows app: browsers, editors, Notepad, Explorer, chat, terminals — not just one program.
- The card appears directly above the copied text, located through Windows UI Automation, so it points at the thing you copied. If no selection can be resolved it falls back to the cursor position.
- Entirely local. No network calls, no telemetry, and the clipboard content is never read or stored.
| 20 entrance animations | pop, bounce, spring, jelly, zoom, ripple, four slide directions, drop, float, swing, skew, spin, flip, wobble, unfold, shine, fade |
| 7 exit animations | shrink, fade, slide, and more |
| Custom sounds | six built-in synthesized chimes, plus drag-in libraries of your own .wav / .mp3 / .ogg files with rename and delete |
| Full appearance control | text, position, font size, radius, colours, opacity, shadow, offset, duration |
| Above/below text | anchored to the selection, or near the cursor |
| Runs quiet | single instance, about 7 MB resident, starts with Windows if you want it to |
Download AfterCtrlC.exe from
Releases, put it anywhere and
run it. It is a self-contained single file — no .NET runtime needed.
There is no main window. After launch a checkmark appears in the notification area; right-click it for Settings, Pause and Exit.
Settings → 开机自启 / Start with Windows writes a value under
HKCU\Software\Microsoft\Windows\CurrentVersion\Run (no admin rights needed).
Requires the .NET 8 SDK.
git clone https://github.com/C4z-Rove/AfterCtrlC.git
cd AfterCtrlC
dotnet publish -c Release -r win-x64 --self-contained true \
-p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=trueThe result lands in bin/Release/net8.0-windows/win-x64/publish/AfterCtrlC.exe.
- Start
AfterCtrlC.exe. - Select some text in any application and press
Ctrl+C. - The card appears above your selection.
Only Ctrl+C triggers it by default, so a copy made by a program's own menu or
by another tool stays quiet. Both can be relaxed in settings.
Useful for scripting and troubleshooting:
AfterCtrlC.exe --status print the active configuration
AfterCtrlC.exe --verify-pipeline drive a real copy end-to-end and report
AfterCtrlC.exe --register-autostart enable start with Windows
AfterCtrlC.exe --no-autostart disable it
AfterCtrlC.exe --autostart start hidden (used by the Run entry)
AfterCtrlC.exe --selftest run built-in checks
| Concern | Approach |
|---|---|
| Knowing a copy happened | A low-level keyboard hook (WH_KEYBOARD_LL) watches for Ctrl+C; a clipboard-format listener (WM_CLIPBOARDUPDATE) confirms the clipboard actually changed. The hook always forwards the key, so it never swallows your input. |
| Finding the toast anchor | Windows UI Automation TextPattern.GetSelection() gives the selection rectangles of the focused control. The app tries the focused element, then up to four ancestors, then the foreground window's descendants. |
| Drawing the card | A layered window (`WS_EX_LAYERED |
| Playback | NAudio, with dedicated readers for WAV, MP3 and Ogg Vorbis. |
| Frame timing | Animations are pure functions of elapsed time, so they run at display rate rather than on a timer tick. |
Settings live in %APPDATA%\AfterCtrlC\:
settings.json the current configuration
_library.json index for the custom-sound library
custom-*.ogg imported sound files
Deleting the folder resets everything to defaults.
Upgrading from the pre-rename build (DSHCopyFeedback): the app copies the old
folder across on first launch, so your settings and sound library carry over.
Program.cs entry point, CLI, single-instance handling
CopyDetector.cs keyboard hook + clipboard listener
SelectionLocator.cs UI Automation selection geometry
ToastPositioner.cs where the card should sit
ToastForm.cs layered-window rendering
ToastAnimations.cs 20 entrance / 7 exit animation curves
Settings.cs persisted configuration
SettingsForm.cs the settings UI
AudioLibrary.cs imported sound files
SoundPlayerService.cs playback and synthesis
TrayApplication.cs notification-area icon and menu
- Windows only, desktop apps as well as browsers.
- The toast anchors to the selection. Programs that paint their own text without exposing UI Automation (some games, some custom-drawn UIs) fall back to the cursor position.
- Password fields and other suppressed selections are intentionally not read.

