A modern, clean-architecture screenshot tool for Windows 11 — capture, auto-beautify, and share in one keystroke.
Snaply is a screenshot utility built the way a modern Windows app should be: a platform-independent, dependency-free core wrapped by thin platform adapters and a WinUI 3 shell. Existing tools (Greenshot, ShareX) carry a decade of WinForms baggage; Snaply is a clean-room take on the same job.
- Three capture modes — full screen, region select, and window picker (hover-to-highlight), all reachable from a global hotkey or the tray.
- Automatic beautification — every capture is composited onto a harmonised gradient background (average colour → OKLCH hue-travel), with proportional padding, corner radius, and a drop shadow. No sliders to fiddle with.
- Fluid preview — cursor-anchored zoom and 1:1 pan, powered by Windows Composition spring animations on the compositor thread.
- Capture-time self-hiding — the app excludes itself from the capture
deterministically (
SetWindowDisplayAffinity), no hide-and-wait races. - Global hotkeys + system tray —
PrintScreenfor region,Ctrl+Shift+2for full screen; runs quietly in the tray. - Save or copy — PNG to disk or straight to the clipboard.
- Scriptable
snaplyCLI + Model Context Protocol server — capture and auto-beautify from the command line, pipe PNG bytes into CI, or let an AI assistant drive captures over MCP. - Fully localised — English, 日本語, and 简体中文 (WinUI resources + MRT).
- Fluent theming — System / Light / Dark, with automatic High Contrast.
Snaply follows ports & adapters (hexagonal) clean architecture. The dependency arrow always points inward; the core never references a platform.
┌─────────────────────────────────────────────────────────────┐
│ Snaply.App WinUI 3 shell · DI composition root · │
│ ViewModels · XAML views │
│ │ depends on │
│ ▼ │
│ Snaply.Platform Adapters: WGC capture · Win2D compositing ·│
│ PNG/clipboard · Win32 hotkeys · tray │
│ │ depends on │
│ ▼ │
│ Snaply.Core Zero dependencies · immutable records · │
│ pure logic · Result-typed failures │
└─────────────────────────────────────────────────────────────┘
Snaply.Core targets plain net10.0 and has no Windows dependency at all —
its unit tests run on Linux in CI, which is the architecture fitness test made
executable. Pure functions live in the core; every side effect is isolated at
the outermost edge.
WinUI 3 · Windows App SDK 2.2.0 · .NET 10 · Win2D · CommunityToolkit (MVVM + WinUI controls) · Serilog · xUnit.
The toolchain is provisioned with mise; recipes run through just. No global SDK install needed.
mise install # provision the pinned .NET 10 SDK + just
just build # build the whole solution
just test # run the headless Core unit tests
just run # build the app (x64) and launch it
just publish # assemble the self-contained bundle → build/dist/SnaplyPrerequisites: Windows 11, the Windows App SDK runtime (bundled in the published build — the app ships self-contained and unpackaged).
The same capture + beautify pipeline is available headless via the snaply
CLI and as a Model Context Protocol server for AI assistants.
just cli -- capture full --out shot.png # capture & beautify from the shell
snaply mcp serve --allow-capture # expose capture tools over MCPSee docs/CLI.md for the full command tree and docs/MCP.md for the MCP tools and consent model.
Grab the latest self-contained build from the
Releases page, unzip, and
double-click Snaply.exe. Nothing to install.
Release artifacts carry keyless Sigstore build provenance — verify a download with:
gh attestation verify snaply-*-win-x64.zip --repo P4suta/SnaplyContributions are welcome — see CONTRIBUTING.md. In short:
the toolchain is mise + just, commits follow
Conventional Commits, and the analyzer
gate (TreatWarningsAsErrors) must stay green.
Licensed under the Apache License 2.0. See NOTICE for attribution.


