{"id":51172370,"url":"https://github.com/openwong2kim/wsnap","last_synced_at":"2026-06-27T01:30:58.461Z","repository":{"id":361407272,"uuid":"1254347084","full_name":"openwong2kim/wsnap","owner":"openwong2kim","description":"Native macOS-style screen capture for Windows — drag the floating thumbnail straight into any app as a real file. Region capture, on-device OCR (Korean + English), GIF recording, scrolling capture, annotation editor. Free, offline, no tracking, no account.","archived":false,"fork":false,"pushed_at":"2026-06-26T04:33:03.000Z","size":15113,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-26T05:06:20.968Z","etag":null,"topics":["annotation","clipboard","csharp","dotnet","drag-and-drop","gif-recorder","ocr","offline","open-source","paddleocr","productivity","screen-capture","screen-recorder","screenshot","screenshot-tool","scrolling-screenshot","snipping-tool","windows","windows-desktop","wpf"],"latest_commit_sha":null,"homepage":"https://openwong2kim.github.io/wsnap/","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/openwong2kim.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-30T13:01:32.000Z","updated_at":"2026-06-26T04:33:07.000Z","dependencies_parsed_at":null,"dependency_job_id":"3337b069-e871-4ae5-9aa3-f6cf33acfc58","html_url":"https://github.com/openwong2kim/wsnap","commit_stats":null,"previous_names":["openwong2kim/wsnap"],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/openwong2kim/wsnap","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openwong2kim%2Fwsnap","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openwong2kim%2Fwsnap/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openwong2kim%2Fwsnap/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openwong2kim%2Fwsnap/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openwong2kim","download_url":"https://codeload.github.com/openwong2kim/wsnap/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openwong2kim%2Fwsnap/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34839004,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-26T02:00:06.560Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["annotation","clipboard","csharp","dotnet","drag-and-drop","gif-recorder","ocr","offline","open-source","paddleocr","productivity","screen-capture","screen-recorder","screenshot","screenshot-tool","scrolling-screenshot","snipping-tool","windows","windows-desktop","wpf"],"created_at":"2026-06-27T01:30:57.822Z","updated_at":"2026-06-27T01:30:58.451Z","avatar_url":"https://github.com/openwong2kim.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# wsnap\n\n**macOS-style screen capture for Windows.**\n\nPress **Shift+F1**, drag a region, and the image is already on your clipboard.\nPick an action from the toolbar that appears *right at your selection* — copy, save,\nedit, OCR, GIF, pin — or just **drag the floating thumbnail straight into any app as a real file**.\n\nNative. Offline. No account, no tracking. GPL-3.0.\n\n![wsnap demo](https://github.com/openwong2kim/wsnap/raw/main/site/demo.gif)\n\n\u003c/div\u003e\n\n---\n\n## Why wsnap\n\nMost Windows capture tools make you fish a file out of a folder, or they copy a *file path*\nto the clipboard when you actually wanted the image. wsnap treats the two things people do\nwith a screenshot every day — **paste it** and **drag it somewhere** — as first-class:\n\n- The capture is **on your clipboard as an image the instant you release the mouse.** Paste it anywhere with `Ctrl+V`.\n- The floating thumbnail is a **real, draggable file.** Drop it into Slack, a chat, an editor, an email — and it stays put so you can drop it again somewhere else.\n\nEverything else — a precise frozen-screen overlay, a pixel loupe with HEX color readout,\nan annotation editor, on-device OCR, GIF recording, scrolling capture — is built around\nthat core in one consistent dark UI, running quietly from the tray.\n\n## Features\n\n- **Capture → floating thumbnail → drag-and-drop.** Thumbnails stack at the bottom-right, up to a configurable number.\n- **Clipboard-first.** Click = copy the image; auto-copy on capture (optional) so it's ready before you even click. `Ctrl+Click` = copy the file path.\n- **Action toolbar at your selection** — Copy · Save · Edit · OCR · GIF · Pin (keys `C / Enter / E / T / G / P`, `Esc` to cancel).\n- **Precise overlay.** Freezes the screen, brightens only your selection (punch-through dim), shows live W×H, and a **magnifier loupe** with pixel coordinates and the HEX color under the cursor. Physical-pixel cursor grab — correct on mixed-DPI multi-monitor setups.\n- **Color picker (eyedropper).** Click any pixel → `#RRGGBB` copied.\n- **Annotation editor** — arrow, line, rectangle, ellipse, pen, highlighter, text, numbered steps, **mosaic / blur redaction**, crop. Pick thickness and color, **select / move / delete objects** (`V`), undo *and* redo, undoable crop, copy to clipboard (`Ctrl+C`), `Shift` to constrain (45° / square). Keyboard-driven.\n- **Great on-device OCR (KO + EN).** PaddleOCR **PP-OCRv5** models on ONNX Runtime — accurate on mixed Korean/English, code, and UI text. **Free, fully offline, no language pack required** (models ship inside the exe).\n- **Many capture modes** — region · full screen · **click-to-capture a window** (auto-detected) · repeat last region · delayed (3 / 5s).\n- **Capture history gallery.** Browse every saved capture as thumbnails → re-drag, copy, edit, or delete (to Recycle Bin).\n- **Filename templates** — `{app}`, `{title}`, `{date}`, `{seq}`, `{w}`, `{h}` tokens (the foreground app / window title are captured at grab time).\n- **Pin** to keep a thumbnail (disables auto-dismiss and promotes the file out of `%TEMP%`).\n- **GIF recording · scrolling capture · clipboard-image detection.**\n- **One dark design system** across the overlay, editor, and settings — including dark DWM title bars.\n- **Lean tray resident.** Idle memory was cut hard in 1.2.4 (single-digit working set / ~85 MB committed); the OCR engine loads lazily and releases after use, so OCR doesn't tax the idle footprint.\n- **Optional sharing.** Imgur upload (bring your own Client-ID) from the thumbnail.\n\n## Install\n\n**Windows 10/11, x64.**\n\n**Package managers**\n\n```powershell\n# Scoop\nscoop install https://raw.githubusercontent.com/openwong2kim/wsnap/main/packaging/scoop/wsnap.json\n\n# winget (once the manifest is accepted into winget-pkgs)\nwinget install openwong2kim.wsnap\n```\n\n**Direct download** — grab the latest from [Releases](https://github.com/openwong2kim/wsnap/releases):\n\n- `wsnap-setup-x.y.z.exe` — installer (Start Menu shortcut, optional run-at-startup)\n- `wsnap-vx.y.z-win-x64.zip` — portable single `.exe`, no install\n\n\u003e wsnap is **not code-signed yet**, so Windows SmartScreen may show an \"unknown publisher\"\n\u003e prompt — click **More info → Run anyway**. (OSS code signing is wired up and pending; see `SIGNING.md`.)\n\n## Usage\n\n1. Launch — no window appears, just a tray icon.\n2. Press **Shift+F1** (or double-click the tray icon) and drag a region.\n3. The thumbnail at the bottom-right:\n   - **Left-click drag** → hand off the file (stays available to drag again elsewhere)\n   - **Click** → copy the file path\n   - **Hover buttons** → Edit / Text (OCR) / ✕\n   - **Right-click drag (sideways)** → flick it away\n   - Leave it → auto-dismisses after your configured delay\n4. Tray menu: Capture · OCR region · GIF record · Scrolling capture · Clear all · Settings · Quit.\n\n**Settings:** save folder, hotkey rebinding, auto-dismiss delay, max thumbnails shown,\nrun at startup, intercept `Win+Shift+S`, history (date folders), clipboard detection,\ntelemetry (opt-in), upload.\n\n## Build from source (Windows)\n\nRequires the **.NET 8 SDK** (or 9) with the Windows Desktop workload. The project targets\n`net8.0-windows10.0.19041.0` for WinRT projection availability.\n\nThe Korean OCR model lives in `models/v5/` and is embedded into the exe at build time.\nTo (re)download it:\n\n```powershell\npwsh -File tools\\fetch-ocr-models.ps1\n```\n\nRun, publish a single self-contained exe, and build the installer:\n\n```powershell\ndotnet run --project Wsnap.csproj          # run from source\npwsh -File publish.ps1                      # -\u003e publish\\wsnap.exe (single file)\nISCC.exe installer.iss                      # -\u003e dist\\wsnap-setup-x.y.z.exe (Inno Setup 6)\n```\n\n## Source map\n\n| File | Role |\n|---|---|\n| `App.cs` | Entry point · tray · capture modes · action routing · single instance |\n| `Theme.cs` | Shared design system (color · type · control styles · dark title bars) |\n| `Icons.cs` | Vector line icons (font-independent) |\n| `ImageClipboard.cs` | Multi-format image clipboard (DIB + PNG + FileDrop, with retry) |\n| `HotkeyHook.cs` | Global keyboard hook (custom hotkey + `Win+Shift+S` toggle) |\n| `CaptureOverlay.cs` | Capture overlay (freeze · dim · W×H · loupe · action toolbar · Capture/OCR/Region/ColorPick) |\n| `ScreenGrab.cs` | Screen pixel grab + Bitmap→BitmapSource |\n| `CaptureStore.cs` | Save-location / history policy + pin promotion |\n| `ThumbnailWindow.cs` | Floating thumbnail stack (copy · save · edit · OCR · folder · share · pin · delete) |\n| `HistoryWindow.cs` | Capture history gallery (thumbnail grid · drag-out · re-edit · delete) |\n| `EditorWindow.cs` | Annotation editor (11 tools · redo · undoable crop · copy to clipboard) |\n| `Ocr.cs` | PaddleOCR PP-OCRv5 (ONNX / RapidOcrNet) wrapper — Korean rec model, lazy load + idle release |\n| `GifRecorder.cs` / `GifWriter.cs` | GIF recording + delay/loop encoding |\n| `ScrollCapture.cs` | Scrolling capture (overlap stitching) |\n| `ClipboardWatcher.cs` | Clipboard image detection |\n| `Uploader.cs` | Imgur upload |\n| `Settings.cs` / `SettingsWindow.cs` | Settings model · UI (dark cards) |\n| `AutoStart.cs` / `SingleInstance.cs` / `CrashLog.cs` / `Toast.cs` | Tray-resident infrastructure |\n\n## Good to know\n\n- **OCR:** PP-OCRv5 models are embedded in the exe — no language pack needed. The first\n  recognition is slightly slower (engine warm-up), then fast; the engine is released after a\n  short idle. Rotated text isn't de-skewed (screenshots are assumed upright).\n- **Scrolling capture** is best-effort — solid on text and web pages, weaker on smooth-scroll / parallax content.\n- **Privacy:** no tracking. Telemetry is opt-in and local-log only (`%APPDATA%\\wsnap\\wsnap.log`).\n- **Code signing** is recommended before wide distribution to avoid SmartScreen — see `SIGNING.md` / `ROADMAP.md`.\n\n## License\n\n[GPL-3.0-only](LICENSE). © 2026 openwong2kim and wsnap contributors.\n\nOCR is powered by [RapidOcrNet](https://github.com/BobLd/RapidOcrNet) and\n[PaddleOCR](https://github.com/PaddlePaddle/PaddleOCR) PP-OCRv5 models on ONNX Runtime.\nBundled third-party components and their licenses (all permissive / GPL-3.0-compatible) are\nlisted in [`THIRD-PARTY-NOTICES.md`](THIRD-PARTY-NOTICES.md).\n\nSee `ROADMAP.md` for detailed status and `CHANGELOG.md` for release history.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenwong2kim%2Fwsnap","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenwong2kim%2Fwsnap","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenwong2kim%2Fwsnap/lists"}