Skip to content
hofmann-developmentPublic

About

ClipFlow is a fast and minimalistic clipboard text manager for Windows 11 or later. Save reusable snippets, load them with a global hotkey, and expand template fields with a few keystrokes. The source is available under GPLv3; prebuilt versions are offered as convenient packaged downloads.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

ClipFlow

ClipFlow

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 file
  • Ctrl+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.

Editions

ClipFlow ships as two editions built from the same source:

  • Free — assembled with FREE_VERSION defined; 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.

File formats

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

Template fields

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.

Build

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+) for d.bat
build.bat

builds 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

Prebuilt versions are available at:

Repository layout

  • build/ — generated by build.bat, gitignored
  • dist/ - generated by d.bat, gitignored
  • doc/devel - developer-facing project documentation
  • doc/user/free - Free-edition README.html
  • doc/user/pro — Pro-edition README.html
  • marketing/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 into build\free and build\pro
  • clean.bat — recursively removes build\
  • d.bat — clean, build, and package both editions into dist\ClipFlowFree.zip and dist\ClipFlowPro.zip
  • clipflow.asm — the entire application in a single translation unit
  • clipflow.manifest — asInvoker execution level and PerMonitorV2 DPI awareness
  • clipflow.rc — icon, template input dialogs, manifest reference and version information
  • clipflow.af, clipflow.ico, clipflow.xcf — application icon
  • compat.inc — Win32 declarations missing from the WinInc windows.inc (NOTIFYICONDATAW, Shell_NotifyIconW, NIF_*/NIM_*, MOD_NOREPEAT)
  • README.md — developer documentation
  • util.inc — assembly-time helpers, currently the WSTR macro 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.

Licensing

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.af
  • clipflow.ico
  • clipflow.xcf

Line endings

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.

About

ClipFlow is a fast and minimalistic clipboard text manager for Windows 11 or later. Save reusable snippets, load them with a global hotkey, and expand template fields with a few keystrokes. The source is available under GPLv3; prebuilt versions are offered as convenient packaged downloads.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages