Single-click clipboard snippet menu for Windows. Hit a hotkey or right-click the tray icon and a Catppuccin Mocha flyout pops up at your cursor with every snippet you've saved. Click one and it's copied (and optionally auto-pasted into the window you were just in).
About the name: TaskCopy was originally specced as "right-click the bottom taskbar to see snippets." Windows 11's taskbar is a XAML Islands surface inside
explorer.exewith no third-party context-menu API — direct extension requires DLL injection via Windhawk. The default build delivers the same UX through a tray icon + global hotkey (the same pattern Ditto and CopyQ use); a Windhawk companion mod remains a future power-user add-on for the literal taskbar trigger. See research/architecture-research.md for the full rationale.
v0.5.12 — premium UX polish. Settings, the flyout, dialogs, empty states, focus states, and high-contrast accent handling have been tightened into a calmer, more consistent interface while preserving the same workflow. The v0.5 line also includes hardening/regression tests, FTS5 search at scale, syntax-highlighted code editing, opt-in shell placeholders, image snippets, reusable form prompts, Espanso YAML import, encrypted backups, per-app rules, multi-clip paste, edit history, usage stats, sticky flyout position, high-contrast mode, external editor integration, and GitHub issue filing. See CHANGELOG.md for the full list and ROADMAP.md for what's next.
- ROADMAP.md — active future work.
- COMPLETED.md — shipped feature summary.
- RESEARCH_REPORT.md — current research synthesis.
- docs/archive/research/RESEARCH_FEATURE_PLAN_2026-05-25.md — archived historical audit and acceptance detail.
- Tray icon — left-click opens snippet flyout at the cursor; right-click opens a native Mocha/Latte menu (Open snippets / Settings / About / Quit); double-click opens Settings.
- Global hotkey (
Ctrl+Alt+Vdefault) — opens the same flyout from anywhere; rebindable in Settings (safe-fail: the previous combo stays active if a new one can't be registered). - Flyout search + keyboard nav — type to filter on Title/Body; Up/Down moves the highlight; Enter copies; Esc clears the filter then closes on a second press. Fuzzy/prefix-weighted ranking so
sigfindsEmail signaturebeforedesign rationale; libraries with 500+ snippets use a maintained SQLite FTS5 index for body search speed. - Alt+1..9 quick-pick in the open flyout; per-snippet hotkeys (any combo, e.g.
Ctrl+Alt+S) for direct copy + auto-paste from anywhere. - Group chips in the flyout when ≥1 group is defined — click to filter, persists across opens.
- Auto-paste — after copy, TaskCopy restores the previously focused window and synthesises
Ctrl+V. Per-snippet "Type characters" mode for apps that swallowCtrl+V(legacy terminals, RDP sessions, password fields). Default ON; toggle in Settings.
- Placeholders —
{{date}}{{date:format}}{{time}}{{time:format}}{{clipboard}}{{cursor}}{{ask:Field}}{{form:Field1|Field2}}, plus opt-in{{shell:cmd}}. A form token prompts once and reuses values through matching{{ask:Field}}tokens. Pipe-chained transforms:{{clipboard|upper}},{{clipboard|trim|lower}},{{clipboard|jsonpretty}},{{clipboard|urldecode}},{{clipboard|base64decode}},{{clipboard|sha256}}. Live preview in the editor. - Groups — organize snippets via the Manage groups dialog; per-snippet Group dropdown; flyout chip strip.
- Image snippets — Settings → Add image captures the current clipboard image into an explicit image snippet, shows thumbnails in Settings and the flyout, and copies/pastes the image back when picked. Background clipboard capture remains text-only.
- Pin to top + flyout sort modes — Manual / Most used (decay-weighted frecency, pinned on top) / Recently used (pinned on top).
- Monospace/code mode per snippet — Settings switches to an AvalonEdit code editor with line numbers and syntax highlighting; flyout tooltips use Cascadia Mono for aligned code.
- SQLite store at
%LOCALAPPDATA%\TaskCopy\snippets.db— schema migrations viaPRAGMA user_version,journal_mode = WAL, FK enforcement, startupPRAGMA quick_checkintegrity check with one-click restore. - JSON /
.taskpack/ Espanso YAML import + JSON export. JSON export round-trips text and image snippets; Espanso staticmatches:entries become text snippets while unsupported dynamic matches are skipped. Automatic on-startup backup usesVACUUM INTO(3-deep rotation, throttled to once per 24 h). - Restore from backup… — Settings → Diagnostics lists the available snapshots and swaps them in atomically (with a pre-restore rollback snapshot in case the user changes their mind).
- Soft-delete trash — confirm-delete then 30-day auto-purge. Trash window in Settings shows trashed snippets with per-row Restore / Delete Permanently / Empty Trash.
- Single-instance handoff via a per-user named pipe; subsequent launches focus an existing window or take a CLI directive.
- Crash log at
%LOCALAPPDATA%\TaskCopy\logs\crash.logwith 1 MB rotation; one-click "Open log folder" / "Open data folder" / "Copy diagnostics" in Settings.
- Clipboard auto-capture (opt-in) — keeps the last ~50 plain-text clips and shows them in a flyout "Recent" section above your snippets. Respects
ExcludeClipboardContentFromMonitorsand reads the 4-byteCanIncludeInClipboardHistorypayload correctly (0 = exclude, 1 = include). - Theme: Mocha / Latte / Follow system (
AppsUseLightThemeregistry follow). Live swap via prompt-to-relaunch.
- First-run welcome seeds five generic example snippets (no signature identity leakage) and opens Settings.
- Catppuccin Mocha or Latte theme throughout — full dark/light parity with keyboard focus outlines.
- Drag-reorder in the Settings snippet list (or Up/Down buttons).
- AutomationProperties on flyout + Settings for screen readers.
- Per-monitor DPI v2 manifest for sharp rendering across mixed-DPI setups.
- .NET 10 WPF (single project)
- H.NotifyIcon.Wpf 2.4.1 — tray icon
- NHotkey.Wpf 3.0.0 — global hotkey
- CommunityToolkit.Mvvm 8.4.0 — MVVM primitives
- Microsoft.Data.Sqlite 9.0.0 — snippet store
- YamlDotNet 16.1.0 — Espanso YAML import
- AvalonEdit 6.3.1 — code editor
- Grab the latest
TaskCopy-<version>-win-x64.zipfrom Releases. - Unzip somewhere persistent (e.g.
%LOCALAPPDATA%\Programs\TaskCopy\). - Double-click
TaskCopy.exe. The first launch shows a SmartScreen "Don't run" prompt because the binary is unsigned — click More info → Run anyway. (We're working on a signing cert.) - Optional: enable Start TaskCopy with Windows in Settings.
The single-file build needs the .NET 10 Desktop Runtime on the box. If you'd rather download a fully self-contained binary (~80 MB, no runtime required), grab TaskCopy-<version>-win-x64-selfcontained.zip instead.
winget install SysAdminDoc.TaskCopy(Once the package is approved into the public manifest repo.)
git clone https://github.com/SysAdminDoc/TaskCopy.git
cd TaskCopy
dotnet restore TaskCopy.sln
dotnet build TaskCopy.sln -c Release -warnaserror
dotnet test TaskCopy.sln -c Release --no-build
.\src\TaskCopy\bin\Release\net10.0-windows\TaskCopy.exeThe icon is checked in. To regenerate it:
powershell -ExecutionPolicy Bypass -File tools\generate-icon.ps1- Launch
TaskCopy.exe. A tray icon appears with a one-time notification confirming the hotkey. - Double-click the tray icon (or pick "Settings…" from the right-click menu) to open Settings; add a few snippets.
- Right-click the tray icon (or press Ctrl+Alt+V) — a Catppuccin flyout appears at the cursor with your snippets.
- Click a snippet (or press its number key) to copy + auto-paste it into the window you were just in.
| Where | Key | What it does |
|---|---|---|
| Anywhere | Ctrl+Alt+V (default) |
Open the snippet flyout at the cursor |
| Anywhere | Your per-snippet hotkey | Copy + auto-paste that snippet directly |
| Flyout | type | Filter snippets live |
| Flyout | ↑ / ↓ |
Move selection |
| Flyout | PgUp / PgDn |
Jump 8 rows |
| Flyout | Enter |
Copy the highlighted row |
| Flyout | Esc (once) |
Clear the filter |
| Flyout | Esc (twice) |
Close the flyout |
| Flyout | Alt+1..Alt+9 |
Pick the matching visible row |
| Settings list | Del |
Delete the selected snippet |
| Settings list | Ctrl+N |
Add a new snippet |
| Settings list | F2 |
Focus the Title editor (rename) |
| Settings list | drag | Reorder snippets |
| Tray | left-click | Open snippet flyout at cursor |
| Tray | right-click | Open the tray context menu |
| Tray | double-click | Open Settings |
TaskCopy is a single-instance app. Launching the exe a second time signals the first instance:
TaskCopy.exe # default: bring Settings forward
TaskCopy.exe --settings # explicit Settings
TaskCopy.exe --flyout # open the snippet picker at the cursor
TaskCopy.exe --copy <id|title> # copy that snippet to the clipboard (no paste)
TaskCopy.exe --paste <id|title> # copy + auto-paste into the foreground window
TaskCopy.exe --list # write all snippets as "id\tTitle" lines to %LOCALAPPDATA%\TaskCopy\snippets.listUseful from PowerToys Run, Flow Launcher, the Win+R dialog, or any task scheduler.
MIT — see LICENSE.