A lightweight clipboard text manager for Windows 11 or later, written entirely in x86-64 assembly (JWasm/MASM syntax, Win64 calling convention). It runs as a notification area (tray) application without a visible main window.
Two global hotkeys:
Ctrl+Alt+S— save the Unicode clipboard text to a fileCtrl+Alt+L— load a text file into the clipboard, expanding template fields on the way
End-user documentation is in doc/user/free/README.html and doc/user/pro/README.html, one per edition. This file describes the repository itself.
ClipFlow ships as two editions built from the same source:
- Free — assembled with
FREE_VERSIONdefined; limited to a single template field per document - Pro — assembled without
FREE_VERSION; up to 32 distinct template fields per document
clipflow.rc picks the product name (ClipFlow Free/ClipFlow Pro) from the same FREE_VERSION define, so it must be passed identically to both jwasm and rc.
- Save — UTF-16LE with a byte order mark.
- Load — UTF-16LE with a byte order mark, UTF-8 with or without a byte order mark, or the active Windows code page as a fallback. UTF-16BE and files containing embedded null characters are rejected. Input files are limited to 16 MiB.
A loaded file may contain placeholders that ClipFlow asks for before the text is placed on the clipboard:
$$Name$$ single-line input
$$#Message$$ multiline input
\$$ literal double dollar signs
A field that appears several times is asked for once and inserted everywhere. Names are compared case-sensitively. Cancelling any dialog leaves the clipboard unchanged.
Requires Windows with:
- JWasm
- the Windows SDK (
rc.exe,link.exe) - the WinInc include set at
%USERPROFILE%\WinInc\Include tar.exe(bundled with Windows 10 1803+) ford.bat
build.batbuilds both editions, one after the other, into build\free\clipflow.exe and build\pro\clipflow.exe. Each edition repeats the same three steps with FREE_VERSION defined or omitted:
jwasm -nologo -I%USERPROFILE%\WinInc\Include -win64 -Zp8 [-DFREE_VERSION] -Fo<dir>\clipflow.obj clipflow.asm
rc /nologo [/dFREE_VERSION] /fo <dir>\clipflow.res clipflow.rc
link /nologo /subsystem:windows /out:<dir>\clipflow.exe <dir>\clipflow.obj <dir>\clipflow.res-Zp8 (8-byte structure packing) is required; without it, Win32 structures such as NOTIFYICONDATAW and OPENFILENAMEW are laid out incorrectly.
clean.bat recursively removes build\. d.bat runs clean.bat, then build.bat, then packages each edition's executable together with its doc\user\free/doc\user\pro files and the repository root LICENSE/LICENSE-ASSETS files (flattened, no subfolder) into dist\ClipFlowFree.zip and dist\ClipFlowPro.zip.
There is no test suite and no CI. The application is verified by running clipflow.exe and exercising both hotkeys, including the cancel paths and template files.
Read the writeup: Writing Windows Applications in x64 Assembly in 2026 — the toolchain, the Win64 ABI, and every migration trap, with this app as the running example.
Prebuilt versions are available at:
build/— generated bybuild.bat, gitignoreddist/- generated byd.bat, gitignoreddoc/devel- developer-facing project documentationdoc/user/free- Free-editionREADME.htmldoc/user/pro— Pro-editionREADME.htmlmarketing/gumroad— store listing assets (description.md,summary.txt,product.png,product.xcf).gitattributes— line-ending policy and binary file types.gitignore— build outputs (build/) and release archives (dist/)build.bat— assemble, compile resources and link both editions intobuild\freeandbuild\proclean.bat— recursively removesbuild\d.bat— clean, build, and package both editions intodist\ClipFlowFree.zipanddist\ClipFlowPro.zipclipflow.asm— the entire application in a single translation unitclipflow.manifest—asInvokerexecution level and PerMonitorV2 DPI awarenessclipflow.rc— icon, template input dialogs, manifest reference and version informationclipflow.af,clipflow.ico,clipflow.xcf— application iconcompat.inc— Win32 declarations missing from the WinIncwindows.inc(NOTIFYICONDATAW,Shell_NotifyIconW,NIF_*/NIM_*,MOD_NOREPEAT)README.md— developer documentationutil.inc— assembly-time helpers, currently theWSTRmacro that emits zero-terminated UTF-16 strings
Resource IDs are duplicated by hand between clipflow.asm and clipflow.rc and have to be changed together.
The application source code, build scripts, and project documentation outside marketing/ are licensed under GNU GPL version 3 only. See LICENSE.
Branding, design assets, and promotional materials are excluded from the GPL and remain subject to LICENSE-ASSETS.
Excluded assets include:
marketing/clipflow.afclipflow.icoclipflow.xcf
All text files use CRLF. .gitattributes declares * text=auto eol=crlf, so Git stores them with LF and checks them out with CRLF regardless of platform. Files added to the repository should follow the same convention.
