8000 GitHub - cclank/quickshot: Screenshots, beautifully simple. A fast, local-first screenshot tool for macOS and Windows: hover to capture windows, annotate, beautify and stitch. · GitHub
[go: up one dir, main page]

Skip to content
cclankPublic

About

Screenshots, beautifully simple. A fast, local-first screenshot tool for macOS and Windows: hover to capture windows, annotate, beautify and stitch.

Topics

Resources

Contributing

Security policy

Stars

182 stars

Watchers

1 watching

Forks

Latest commit

 

History

52 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

QuickShot app icon

QuickShot

Screenshots, beautifully simple.
A fast, local-first screenshot tool for macOS and Windows.
Hover to find a window, click to capture it, then annotate, beautify and stitch. Everything stays on your computer.

Latest release Downloads Verify Release build License: GPL-3.0 Stars Follow @LufzzLiz on X

macOS 12+ Windows 10 | 11 Apple silicon and Intel Electron 39 React 18 TypeScript 5 Local only Bilingual

Website · Download · 简体中文 · Features · Shortcuts · Development

Watch the QuickShot demos on the website: capture a window, annotate, change the background and copy
Click to watch the demos: window capture, area capture, annotation, styles, signature, default style, stitching, pinning and text extraction.

Highlights

Hover a window, click, done The screen stays exactly as it is. The window under the pointer lights up in a spectrum outline; click to capture just that window, drag for any area, or click the desktop for the full screen.
Ten annotation tools, one key each Boxes, arrows, numbered steps, text, highlighter and blur, all still editable after you draw them.
Presentation-ready in one click Gradients, window frames, rounded corners, soft shadows, aspect ratios and your own signature. Set a style as the default and every new capture starts that way.
Stitch several captures Add another capture with Mod+Shift+A, or paste and drop images, then lay them out vertically, horizontally or in a grid.
Pin and read Float a capture above everything, or pull out its text with on-device OCR. Smart Redact covers user and host names, emails, IPs and keys in one step.
Zoom, pan and crop Scroll to zoom into details, drag to pan, then crop the capture. Crops support undo and keep the annotations inside the selection.
Private by design Screenshots never leave your computer. No account, no cloud, just an anonymous launch count.

Download

Platform Installer
macOS · Apple silicon QuickShot-Mac-arm64-<version>.dmg
macOS · Intel QuickShot-Mac-x64-<version>.dmg
Windows 10 / 11 (64-bit) QuickShot-Win-x64-<version>-Setup.exe

Get them from the latest release or the website. Installation notes are below.

Features

Capture

  • One shortcut, anywhere. ⌘⇧X on macOS, Ctrl+Shift+X on Windows, or click the tray icon.
  • QuickShot selection (default): the screen stays exactly as it is. Hover to ring the window under the pointer in a soft spectrum and click to capture just that window and open the editor. Or drag out an area: after you let go you can still move it, resize it by an edge or corner, or nudge it with the arrow keys, then press Return, double-click or click ✓ to open the editor (Esc starts over). On macOS a window is captured on its own, so overlapping windows are left out and rounded corners stay transparent.
  • System selection (optional on macOS, via the tray menu → Selection Style): the native crosshair, including Space to capture a single window.
  • The selection's Copy button uses your saved background, frame, shadow and watermark, then closes the overlay. Styled Quick Copies is on by default; turn it off in Settings to copy the original capture. Clicking a detected window still opens the editor. Double-Click Copies Only makes double-clicking a selection copy it directly and is off by default. Opening the editor leaves your clipboard unchanged, and copying from the editor exports your current annotations and style.
  • On macOS, turn off Left-Click Tray Captures in Settings to open the menu without starting a capture. The menu's capture item and keyboard shortcut remain available, including when using menu-bar managers such as Bartender or Ice.
  • On multi-display setups, selection follows the pointer's display. The overlay refreshes its position before appearing; disconnecting that display or changing its resolution during preparation cancels the stale capture so its pixels cannot be stretched onto another screen.
  • The editor window is kept warm in the background. After ten minutes without a capture, hidden helper windows are released to save memory and rebuilt when needed.

QuickShot ringing the window under the pointer in a spectrum outline, with its name and size, over an unchanged screen

Annotate

Ten tools, each on a single key: select, rectangle, ellipse, arrow, line, pen, highlighter, text, numbered steps, and redaction (pixelate or blur).

  • Every annotation stays editable. Select it to move, resize, recolor, restyle, duplicate or delete it.
  • Smart Redact (Mod+Shift+M, or the button in the redact tool's bar) reads the capture's text on-device and covers, in one step, this computer's user and host names (in user@host prompts and ls -l owners), the user folder in paths like /Users/name, emails, IP and MAC addresses, and common keys such as sk-…, ghp_… and AKIA… or the value in KEY=value. One undo removes it all. It is an aid, so check the result before you share.
  • Hold Shift for squares, circles and 45° lines. Drawing tools pick up existing marks of the same kind, so an arrow can still start on the edge of a box.
  • Text supports plain, background and outline styles, multiple lines, and Chinese/Japanese input methods.
  • Sizes follow the capture's pixel density, so annotations look the same on Retina and standard displays.
  • Unlimited undo and redo.

Zoom and crop

  • Scroll over the canvas to zoom around the pointer, or use the bottom controls to choose 1%–800%, actual size or fit to window. Trackpad pinch and Mod+= / Mod+- also zoom.
  • Pan with the hand tool, hold Space and drag, or drag with the middle mouse button. Scrolling pans in hand mode; Shift + scroll pans horizontally.
  • Press C to crop. Draw a selection, move it or resize its edges and corners; press Return to apply or Esc to cancel. Crops support undo/redo, retain the original image and preserve annotations within the crop. Text extraction, Smart Redact and export use the cropped content.
  • Zoom changes only the view, so saving and copying keep the output resolution. Long captures render only the visible canvas area to keep memory use bounded.

Stitch

  • Press Stitch (Mod+Shift+A) in the editor to take another capture and join it to the current one. Pasting or dropping an image adds it too.
  • Arrange the captures vertically, horizontally or in a grid, with adjustable spacing and alignment. Reorder or remove any capture.
  • Annotations move with the capture they were drawn on, and every change can be undone. Beautify, export, pin and text extraction work on the stitched image.

Beautify

  • Curated mesh gradients, wallpapers, solid colors, a blurred copy of the capture itself, or a transparent background.
  • Window frames: classic card, frosted glass, macOS dark and light, and a browser window.
  • Padding, corner radius, layered soft shadows and social-ready aspect ratios (1:1, 4:3, 16:9, 3:4, 9:16).
  • An optional signature watermark that picks a readable color automatically.
  • Turn Beautify off to export the plain capture with annotations.

An exported screenshot with a gradient background, window frame and annotations

Share

  • Copy to the clipboard, save to Downloads, or Save As.
  • Pin a capture as a floating, always-on-top reference with adjustable opacity and click-through.
  • Extract text from the capture on-device, with Apple Vision on macOS and Windows OCR on Windows.

Private by design

Screenshots, and any text in them, never leave your computer. There is no account and no cloud. From 1.2.0, QuickShot sends one anonymous report per launch so we can tell how many people use it: a random installation ID, the app version, the OS and its version, and the CPU type. Nothing about what you capture is included. To turn it off, set "usageStats": false in settings.json (in ~/Library/Application Support/quickshot/ on macOS, %APPDATA%\quickshot\ on Windows) and restart QuickShot; development builds never send it. The renderer runs with context isolation, no Node.js access and an allow-listed IPC bridge.

Keyboard shortcuts

Mod is ⌘ on macOS and Ctrl on Windows. The global capture shortcut can be changed, and scrolling capture given its own, under Settings… in the menu bar menu.

Where Shortcut Action
Anywhere Mod+Shift+X Capture a region
Anywhere Mod+Shift+L Restore interaction with click-through pins
Selecting Click / drag Capture the window under the pointer / an area, then edit
Selecting Right-click / Esc Cancel
Editor V R O A L P H T N M Select, rectangle, ellipse, arrow, line, pen, highlighter, text, counter, redact
Editor Mod+Z / Mod+Shift+Z Undo / redo
Editor Mod+C Copy the final image and close the editor (Settings can keep it open)
Editor Mod+Enter Copy and close, always
Editor Mod+S / Mod+Shift+S Save to Downloads / Save As
Editor Mod+Shift+P / Mod+Shift+T Pin / extract text
Editor Mod+Shift+M Smart Redact
Editor C Crop; Return applies, Esc cancels
Editor Mod+= / Mod+- Zoom in / out
Editor Mod+0 / Mod+9 Actual size / fit to window
Editor Mod+Shift+A, Mod+V Stitch another capture / a copied image
Editor Mod+D, Delete, arrow keys Duplicate, delete, nudge the selected annotation
Editor [ / ] Thinner / thicker
Editor Mod+. Show or hide the style panel
Editor Esc Deselect, then close

Install

Download the latest installer from Releases:

  • macOS: QuickShot-Mac-arm64-<version>.dmg (Apple Silicon) or -x64- (Intel).
    1. Open the DMG and drag QuickShot into Applications.
    2. If macOS blocks the first launch (the app is not notarized), run this in Terminal, then open QuickShot again:
      sudo xattr -rd com.apple.quarantine /Applications/QuickShot.app
      Or click Open Anyway in System Settings → Privacy & Security.
    3. A welcome guide shows the shortcut and walks you through allowing Screen Recording. Reopen it any time from the menu bar icon.
  • Windows: QuickShot-Win-x64-<version>-Setup.exe. Text extraction uses the OCR languages installed in Windows Settings.

QuickShot lives in the menu bar (macOS) or the notification area (Windows). The tray menu offers the selection style, language, launch at login and diagnostics.

Development

Requirements: Node.js 20.19+ or 22.12+, and Xcode Command Line Tools on macOS for the OCR helper.

git clone https://github.com/cclank/quickshot.git
cd quickshot
npm install
npm run dev

npm run dev:ui serves the editor and the selection overlay against HTML fixtures, without Electron or screen permissions. It is the fastest way to work on the interface:

  • Editor: http://localhost:5188/test-fixtures/screenshot-preview.html?windowType=screenshot-preview&sessionId=1&fixtureSource=/test-fixtures/sample-ui.svg&scaleFactor=2
  • Selection: http://localhost:5188/test-fixtures/region-selector.html?windowType=screenshot-region (add &scroll=on for scrolling capture)
  • Scrolling capture panel: http://localhost:5188/test-fixtures/scroll-capture.html?windowType=scroll-capture

Development-only environment variables (ignored by packaged builds):

Variable Effect
QUICKSHOT_USER_DATA_DIR Use a separate profile, so a dev build never shares state or the single-instance lock with an installed copy
QUICKSHOT_DEV_CAPTURE_FILE Use this PNG instead of the screen, so the whole capture flow runs without Screen Recording permission
QUICKSHOT_DEV_SCROLL_FIXTURE macOS: a tall PNG that a scrolling capture (--capture-scroll) scrolls through instead of the screen
QUICKSHOT_ENABLE_DEV_SHORTCUT=0 Do not register global shortcuts (the capture shortcut, and Esc/Return during a scrolling capture)
QUICKSHOT_DEV_REMOTE_DEBUGGING_PORT Expose the Chrome DevTools Protocol for automated checks
QUICKSHOT_DEV_USAGE_STATS=1 Send the anonymous usage report from a dev build (off by default); QUICKSHOT_DEV_USAGE_STATS_ENDPOINT points it elsewhere, such as a local test server
QUICKSHOT_DEV_SETTINGS_BUNDLE Test the Screen Recording helper against another app's window (e.g. com.apple.finder) instead of opening System Settings

Scripts

Command Purpose
npm run dev Vite with Electron
npm run dev:ui Renderer-only fixtures for UI work
npm test Unit tests
npm run verify Tests, type check, production build and bundle budgets
npm run test:ocr-helper Build and smoke-test the macOS OCR helper
npm run test:scroll-stitcher Check the macOS scrolling-capture stitcher against synthetic pages
npm run build:mac macOS DMGs (arm64 and x64)
node scripts/render-dmg-background.mjs Re-render the DMG background from installer/dmg-background.html
node scripts/record-site-demos.mjs Re-record the landing page videos in site/assets/video (needs npm run dev:ui running, Chrome, ffmpeg and cwebp)
npm run build:win Windows NSIS installer

Project structure

electron/                 Main process: tray, capture, windows, IPC, OCR
  main.ts                 Capture flow and window lifecycle
  preload.ts              The only bridge exposed to the renderer
  windowsOcr.ts           Windows.Media.Ocr through PowerShell
src/
  editor/                 Pure editor logic: annotations, geometry, layout, rendering
  components/editor/      Editor UI: toolbar, context bar, style panel, canvas stage
  components/screenshot/  Selection overlay, pinned window, text extraction panel
native/quickshot-ocr/     Apple Vision OCR helper for macOS
native/quickshot-window-list/  Window detection helper for the macOS overlay
native/quickshot-capture-agent/ Resident ScreenCaptureKit helper: screen, window and window-list capture
test-fixtures/            Browser fixtures for the editor and overlay
scripts/                  Build verification, packaging and fixture capture tools

Releasing

Pushing a v* tag runs .github/workflows/release.yml, which builds the macOS DMGs and the Windows installer and attaches them to a draft GitHub release. The CSC_LINK and CSC_KEY_PASSWORD secrets hold the macOS release certificate; with them, the macOS apps are signed with it and checked after the build (see docs/release-signing.md, in Chinese, for where the certificate comes from and how to set it up). Notarization also runs when APPLE_ID, APPLE_APP_SPECIFIC_PASSWORD and APPLE_TEAM_ID are set, which needs an Apple Developer ID certificate. Keep the macOS signing identity stable across releases: changing it makes macOS ask for Screen Recording permission again.

The release also carries latest.json, the update feed QuickShot reads (see electron/updates.ts). Installed copies check dl.lanshuagent.com/quickshot/latest.json first, then the feed on GitHub's latest release, and GitHub's API only when neither answers; they check at launch and every six hours, offer what they find, and install it only when asked, after verifying its SHA-256. After publishing the draft release, mirror it to the download host:

WRANGLER=/path/to/wrangler node scripts/publish-update-feed.mjs vX.Y.Z

Builds installed with npm run install:mac:local skip the automatic checks, so a public release never replaces an unreleased local fix.

Contributing

Issues and pull requests are welcome. Please read CONTRIBUTING.md first.

Contributors

Thank you to the contributors who help improve QuickShot.

Contributor Contributions
@wlzh Transparent icon corners (#4), capture overlay copy actions and a double-click setting (#5), idle window recycling (#6), stable local signing requirements (#7), a tray-click capture setting (#11), multi-display capture placement (#12), and styled quick copies (#13).
@dcn-autotest-team Capture size rounding for fractional display scale factors (#3).

Project origins and wallpaper notice

QuickShot's early implementation grew out of OpenScreen's screenshot work. The current resource loader and renderer build configuration have been reworked for QuickShot. We acknowledge the project's origins and thank OpenScreen's author, Siddharth Vaddem; the original code copyright and MIT terms are preserved in THIRD_PARTY_NOTICES.md.

The bundled public/wallpapers/wallpaper1.jpg through wallpaper12.jpg, together with their thumbnails, were inherited from this historical OpenScreen asset directory. These images are third-party assets; QuickShot does not claim authorship. Their original creators and redistribution permissions have not yet been verified. A license for QuickShot's code does not grant rights to these images. Anyone redistributing them must separately confirm the necessary permissions; this notice does not replace authorization. If you hold rights to an image, please contact the maintainers through a repository issue so its attribution, permission or inclusion can be corrected.

Author

QuickShot is built by 岚叔 (@cclank on GitHub, @LufzzLiz on X).

License

QuickShot's source code is released under the GNU General Public License v3.0. Third-party code keeps its own license, listed in THIRD_PARTY_NOTICES.md. The bundled wallpapers are not covered by this license; see the notice above.

About

Screenshots, beautifully simple. A fast, local-first screenshot tool for macOS and Windows: hover to capture windows, annotate, beautify and stitch.

Topics

Resources

Contributing

Security policy

Stars

182 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

0