Skip to content

About

Copy feedback for the whole of Windows - a Steam-style card above whatever you copied.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AfterCtrlC

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.

The toast


Why

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.

Features

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

All twenty animations

Install

From a release

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.

Enable at startup

Settings → 开机自启 / Start with Windows writes a value under HKCU\Software\Microsoft\Windows\CurrentVersion\Run (no admin rights needed).

Build from source

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=true

The result lands in bin/Release/net8.0-windows/win-x64/publish/AfterCtrlC.exe.

Usage

  1. Start AfterCtrlC.exe.
  2. Select some text in any application and press Ctrl+C.
  3. 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.

Command line

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

How it works

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.

Configuration

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.

Project layout

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

Limitations

  • 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.

License

MIT

About

Copy feedback for the whole of Windows - a Steam-style card above whatever you copied.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages