Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

125 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MacSnap

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.

macOS 26+ Swift 6 SwiftUI · AppKit License MIT No dependencies


MacSnap floating panel with Copy and Save

The problem it solves

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.

Features

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.

A screenshot resting in the bottom-right 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.

The folder picker showing the Desktop baseline

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.

Type a name to create a new folder

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.

A scrollable stack of screenshot previews in the corner

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.

Record video & GIF

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.

Choose 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.

Area, Window, or Screen

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.

Resizable area selection with handles and Start Recording

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.

Recording controls: timer, Pause ⌘P, Stop ⌘S

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.

The recording preview window with native macOS media controls

Install

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.

Using it

  1. Take a screenshot the way you always do (⌘⇧4, ⌘⇧3, etc.).
  2. The panel appears in the bottom-right.
  3. 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.

How it works

  • 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.

Build from source

swift build                    # debug build
swift run MacSnap              # run from the terminal
swift run MacSnap --selftest   # filing + detection self-tests
./build-app.sh                 # release .app bundle

Project layout

Sources/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

Built with

Swift 6, SwiftUI + AppKit, Swift Package Manager. No third-party dependencies.

License

MIT.

About

MacSnap — a free, native macOS menu-bar app: catch every screenshot and file it into the right Desktop folder, plus record your screen, a window, or an area to video or GIF.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages