File screenshots the moment you take them. Record your screen too.
A macOS menu-bar app. Screenshots open in a floating panel where you file them into a Desktop folder. It also records the screen, a window, or an area to video or GIF.
Screenshots land on your Desktop under timestamp names, and after a week there are dozens you can't tell apart.
MacSnap handles the last step. When a screenshot is saved, a panel appears in the corner and files the shot into ~/Desktop/<folder>/ for you.
The panel shows up immediately. MacSnap opens it as soon as the screenshot file finishes writing.
At rest it's just the screenshot. No border, no chrome, sitting in the corner.
Hover for the controls. A frosted-glass panel rises over the blurred preview: Copy, Save, Markup, Share.
The picker lists only folders you made. It starts with one option, Desktop, and never enumerates the rest of your Desktop.
Create a folder as you type. Type a name and press Return. MacSnap creates the folder on your Desktop, files the shot there, and keeps it in the list.
Shots stack. Take several in a row and they stack in the corner, newest on top, each at its real proportions; earlier ones don't shift when a new one lands. Past three, the stack scrolls: no scroll bar, faded top and bottom edges, and the cursor anywhere over it scrolls. Dismiss one and the rest slide up.
Screenshot a web page. Pick Screenshot site from the menu and MacSnap captures the page region your browser is showing, without tabs or toolbar.
Pin the keepers. The menu-bar icon holds a gallery of pinned screenshots. Pins are real copies that survive moving or deleting the original. Drag one into another app, or click to open.
Drag images in from anywhere. Drop an image on the menu-bar icon from Finder, a browser, Preview, or Photos. The panel opens as you hover, so you can release on the icon or continue into the pinned section. Files keep their original; raw images become PNG.
Right-click a pin for Copy, Open, or Unpin. Copy puts the image on the clipboard image-first, so it pastes as a picture into chat boxes and editors, then closes the panel and returns focus to the app you were in.
It stays on your Mac. No account and no telemetry. Files only move around your own disk.
Pick Record from the menu. The flow runs in a small floating panel at the bottom of the screen.
1. Choose the format. Video or GIF.
2. Choose what to record. Drag an Area, click a Window, or take the whole Screen. In Window mode, hovering dims everything else so the window under your cursor stands out.
3. Dial in the area. An area selection isn't locked in on release. A white dashed frame with blue handles lets you resize, and the middle drags to move. The live pixel size shows as you go. Hit Start Recording when it's right.
4. Record, pause, stop. A control bar floats with a rolling timer and Pause / Stop, each labelled with its shortcut. ⌘P and ⌘S work from anywhere, even when another app is focused, overriding that app's bindings while you record. The rest of the screen is click-through, so you can keep using a window while it records; the capture still covers just that window.
When you stop, the recording saves to ~/Desktop/MacSnap Recordings/ and opens in a Liquid-Glass preview with native macOS media controls. Pin a recording and it shows in the gallery with a play badge.
Hand this to your coding agent (Claude Code, Cursor, Codex):
Clone https://github.com/Entrepenulian/MacSnap, run ./build-app.sh, move
MacSnap.app to /Applications, and open it.
- Take a screenshot the way you always do (
⌘⇧4,⌘⇧3, etc.). - The panel appears in the bottom-right.
- Hover it, hit Save, and pick or create a folder.
Ignore the panel and the shot stays on your Desktop. MacSnap never deletes anything; it only moves a file when you pick a folder.
Menu-bar icon → Catch the latest screenshot pops the panel on your most recent shot, useful for trying it without taking a new one. Record starts the video/GIF flow.
- Detection: watches your screenshot folder and fires once the file is complete, checking its end-of-file marker instead of guessing with a delay.
- The panel: a borderless, non-activating window that floats over anything without stealing focus, including fullscreen apps, and follows you across windows and Spaces.
- Filing: moves the file into
~/Desktop/<folder>, creating the folder if it's new, and remembers it for next time. - Recording: ScreenCaptureKit captures the display, window, or cropped area; frames are H.264-encoded to MP4 in real time via AVAssetWriter (paused spans are dropped and re-timed out of the video), and GIFs are transcoded from the MP4 with ImageIO. Global ⌘P/⌘S use Carbon hot keys, so they fire system-wide without Accessibility permission.
swift build # debug build
swift run MacSnap # run from the terminal
swift run MacSnap --selftest # filing + detection self-tests
./build-app.sh # release .app bundleSources/MacSnap/
main.swift entry point + CLI flags
AppController.swift menu bar, wiring, login-item / thumbnail toggle
ScreenshotWatcher.swift detects new screenshots the instant they finish
FolderStore.swift remembers your folders, creates + moves files
Overlay.swift the one scrollable panel that hosts the corner stack
ShotView.swift the SwiftUI glass card UI
Gallery.swift the menu-bar dropdown + pinned-shots gallery
PinStore.swift keeps pinned screenshots + recordings for the gallery
WebCapture.swift finds a browser's visible page region (for Screenshot site)
RecordingController.swift orchestrates a recording: permission, picker, save
RecordSelection.swift the record picker + resize handles + Pause/Stop controls
ScreenRecorder.swift ScreenCaptureKit → AVAssetWriter MP4 (with pause/resume)
GlobalHotKeys.swift system-wide ⌘P / ⌘S while recording (Carbon hot keys)
GIFExporter.swift transcodes a recorded MP4 into a looping GIF
MediaViewer.swift Liquid-Glass preview window with native media controls
Swift 6, SwiftUI + AppKit, Swift Package Manager. No third-party dependencies.
MIT.








