ScrollSnap is an open-source macOS application designed to capture scrolling screenshots with a customizable selection area and menu interface. It allows users to define a capture region, take stitched scrolling screenshots, and save them to various destinations (e.g., Desktop, Clipboard, Preview). Built with Swift and leveraging AppKit and ScreenCaptureKit, ScrollSnap provides a sleek overlay-based UI for precise control.
- 📦 Download ZIP from GitHub Releases - Free
- 🍎 Download on the App Store – Paid version for users who prefer App Store convenience
- Customizable Selection Area: Resize and drag a selection rectangle to define the capture region.
- Scrolling Capture: Automatically stitches multiple screenshots into a single image for capturing long content.
- Interactive Menu: Includes options to capture, save, reset positions, or cancel, with a draggable interface.
- Thumbnail Preview: Displays a draggable thumbnail of the captured image with swipe-to-save or right-click options.
- Save Destinations: Supports saving to Desktop, Documents, Downloads, Clipboard, or opening in Preview.
- Preferences: Reset selection and menu positions via a settings window (Command + ,).
- macOS 12.0 or later (requires ScreenCaptureKit framework).
- Xcode 14.0 or later for development.
- Clone the Repository:
git clone https://github.com/brkgng/ScrollSnap.git cd ScrollSnap
- Open in Xcode:
- Open
ScrollSnap.xcodeproj
- Build and Run:
- Press
Cmd + R
to build and run. - Note: Ensure the app has screen recording permissions enabled in System Settings > Security & Privacy.
- Launch the App:
- ScrollSnap starts automatically, displaying an overlay with a selection rectangle and menu bar.
- Adjust the Selection:
- Drag the rectangle to move it or use the resize handles to adjust its size.
- Capture a Screenshot:
- For scrolling capture, click "Capture" to start, then "Save" to stop and stitch the images.
- Interact with the Thumbnail:
- Drag the thumbnail to copy the image elsewhere, swipe right to save, or right-click for options (Show in Finder, Delete, Close).
- Save Options:
- Use the "Options" menu to set the save destination (Desktop, Clipboard, etc.).
- Preferences:
- Press
Cmd + ,
to open the settings window and reset positions if needed.
- Quit:
- Press
Esc
or select "Quit ScrollSnap" from the main menu.
ScrollSnap
│── App
│ │── ScrollSnapApp.swift # App entry point (SwiftUI)
│ │── AppDelegate.swift # Menu and settings setup
│── Controllers
│ │── SettingsWindowController.swift # Preferences window
│── Utilities
│ │── Constants.swift # App-wide constants
│ │── ScreenshotUtilities.swift # Screenshot capture and save logic
│── Views
│ │── OverlayView.swift # Main overlay coordinator
│ │── ContentView.swift # SwiftUI entry point
│ │── SelectionRectangleView.swift # Selection area UI
│ │── MenuBarView.swift # Menu bar UI
│ │── ThumbnailView.swift # Thumbnail preview UI
│── Managers
│ │── OverlayManager.swift # Overlay and state management
│ │── StitchingManager.swift # Image stitching for scrolling capture
- Overlay System:
OverlayManager
creates overlays on all screens, managed byOverlayView
, which delegates drawing and interaction toSelectionRectangleView
andMenuBarView
. - Screenshot Capture:
ScreenshotUtilities
uses ScreenCaptureKit to capture the defined rectangle, excluding the app’s UI. - Scrolling Capture:
StitchingManager
combines screenshots into a single image using overlap detection. - Thumbnail:
ThumbnailView
provides an interactive preview with drag-and-drop and swipe gestures.
ScrollSnap is an open-source project, and we welcome contributions! If you’d like to improve it:
- Report Issues: Open an issue on the GitHub repository for bugs or feature requests.
- Submit Pull Requests:
- Fork the repo.
- Create a new branch for your changes (e.g.,
git checkout -b feature/your-feature-name
). - Make your changes and commit them.
- Submit a pull request with your improvements.
MIT Licensed.