CS

TaskCopy

Single-click clipboard snippet menu -- tray icon, global hotkey, search

C#Desktop
Delivery
Source-first
Browse code, README, and release notes on GitHub.
Primary lane
C# / Desktop lane
The clearest adjacent context for this project inside the portfolio.
Freshness
Updated Jun 1, 2026
Latest release
v0.5.12
Published May 26, 2026

Preview

Using the generated project card as a clean fallback until a live capture is available.

TaskCopy card

Source at github.com/SysAdminDoc/TaskCopy.

README

Cached at build time, cleaned up for in-site reading, and linked back to the canonical GitHub source.

6 min read 1,237 words 18 sections
Contents
  1. TaskCopy
  2. Status
  3. Project planning
  4. Features (v0.5.12)
  5. Picker & paste
  6. Snippet content
  7. Reliability & data safety
  8. Optional
  9. Plumbing
  10. Stack
  11. Install
  12. Prebuilt binary (recommended)
  13. winget
  14. Build from source
  15. Usage
  16. Keyboard cheatsheet
  17. CLI flags
  18. License

TaskCopy

![Version](https://img.shields.io/badge/version-0.5.12-blue) ![License](https://img.shields.io/badge/license-MIT-green) ![Platform](https://img.shields.io/badge/platform-Windows%2010%2F11-0078D4) ![Stack](https://img.shields.io/badge/stack-.NET%2010%20%2F%20WPF-512BD4)

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.exe with 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.

Status

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.

Project planning

Features (v0.5.12)

Picker & paste

  • 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+V default) — 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 sig finds Email signature before design 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 swallow Ctrl+V (legacy terminals, RDP sessions, password fields). Default ON; toggle in Settings.

Snippet content

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

Reliability & data safety

  • SQLite store at %LOCALAPPDATA%\TaskCopy\snippets.db — schema migrations via PRAGMA user_version, journal_mode = WAL, FK enforcement, startup PRAGMA quick_check integrity check with one-click restore.
  • JSON / .taskpack / Espanso YAML import + JSON export. JSON export round-trips text and image snippets; Espanso static matches: entries become text snippets while unsupported dynamic matches are skipped. Automatic on-startup backup uses VACUUM 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.log with 1 MB rotation; one-click "Open log folder" / "Open data folder" / "Copy diagnostics" in Settings.

Optional

  • Clipboard auto-capture (opt-in) — keeps the last ~50 plain-text clips and shows them in a flyout "Recent" section above your snippets. Respects ExcludeClipboardContentFromMonitors and reads the 4-byte CanIncludeInClipboardHistory payload correctly (0 = exclude, 1 = include).
  • Theme: Mocha / Latte / Follow system (AppsUseLightTheme registry follow). Live swap via prompt-to-relaunch.

Plumbing

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

Stack

Install

  1. Grab the latest TaskCopy-<version>-win-x64.zip from Releases.
  2. Unzip somewhere persistent (e.g. %LOCALAPPDATA%\Programs\TaskCopy\).
  3. Double-click TaskCopy.exe. The first launch shows a SmartScreen "Don't run" prompt because the binary is unsigned — click More infoRun anyway. (We're working on a signing cert.)
  4. 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

winget install SysAdminDoc.TaskCopy

(Once the package is approved into the public manifest repo.)

Build from source

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

The icon is checked in. To regenerate it:

powershell -ExecutionPolicy Bypass -File tools\generate-icon.ps1

Usage

  1. Launch TaskCopy.exe. A tray icon appears with a one-time notification confirming the hotkey.
  2. Double-click the tray icon (or pick "Settings…" from the right-click menu) to open Settings; add a few snippets.
  3. Right-click the tray icon (or press Ctrl+Alt+V) — a Catppuccin flyout appears at the cursor with your snippets.
  4. Click a snippet (or press its number key) to copy + auto-paste it into the window you were just in.

Keyboard cheatsheet

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

CLI flags

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

Useful from PowerToys Run, Flow Launcher, the Win+R dialog, or any task scheduler.

License

MIT — see LICENSE.

Read on GitHub → github.com/SysAdminDoc/TaskCopy

Recent Releases

Latest tagged notes pulled from GitHub release history for this project.

  • v0.5.12

    - Shared premium UI primitives for title text, section labels, captions, panels, badges, and password fields across Mocha, Latte, and high-contrast themes. · - Empty states for the Settings library, snippet editor, body

Esc
Start with the strongest work, a key route, or the full archive.