Skip to content

About

Beautiful screenshots in a click - a tiny macOS menu bar app that wraps your captures in gradients, padding, shadows & window chrome

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

3 Commits

Folders and files

Repository files navigation

Screenshot Studio

🤖 No humans were involved in developing this. Completely built and reviewed by AI — only tested by a human.

Screenshot Studio editor — a screenshot composited on a gradient background with padding, shadow, and window chrome

A macOS menu bar app that captures screenshots and dresses them up — gradient, solid, or pattern backgrounds, padding, rounded corners, soft shadows, and an optional fake macOS window frame with traffic-light buttons. Like Xnapper or Shots.so, but yours.

Requires macOS 14 (Sonoma) or later.

Install (download)

  1. Download the latest ScreenshotStudio-*.dmg from the Releases page.

  2. Open the .dmg and drag Screenshot Studio into Applications.

  3. First launch: right-click the app → Open → Open in the dialog.

    This build is open-source and ad-hoc signed but not notarized, so macOS Gatekeeper shows a one-time "Apple could not verify…" warning. Right-click → Open clears it. (Alternatively: xattr -dr com.apple.quarantine "/Applications/Screenshot Studio.app".)

  4. The first capture prompts for Screen Recording permission — grant it, then quit and relaunch. See Permissions below.

Building from source instead? You'll need the Swift toolchain (Xcode, or xcode-select --install for Command Line Tools).

Build & run

Option A — one command, no Xcode project

cd ScreenshotStudio
chmod +x build.sh
./build.sh
open build/ScreenshotStudio.app

Option B — full Xcode project (via XcodeGen)

brew install xcodegen
cd ScreenshotStudio
xcodegen
open ScreenshotStudio.xcodeproj   # then ⌘R

Option C — manual Xcode project

  1. Xcode → New Project → macOS App, SwiftUI, name it ScreenshotStudio.
  2. Delete the generated ContentView.swift and *App.swift.
  3. Drag everything from Sources/ into the project.
  4. Target settings → Info: add Application is agent (UIElement) = YES.
  5. Signing & Capabilities: remove the App Sandbox capability (the app shells out to /usr/bin/screencapture, which the sandbox blocks).
  6. Set deployment target to macOS 14.0. Run.

First launch

The app lives in the menu bar (camera icon) — no Dock icon.

The first capture triggers macOS's Screen Recording permission prompt. Grant it under System Settings → Privacy & Security → Screen & System Audio Recording, then quit and relaunch the app.

Permissions and rebuilding

macOS ties the Screen Recording grant to the app's code signature. With the default ad-hoc signature, every ./build.sh run produces a new signature, which invalidates the previous grant — the capture then fails silently (no crosshair). The build script clears the stale entry so macOS re-prompts, but you must re-grant (and relaunch) after every rebuild.

To make the grant survive rebuilds, sign with a stable identity:

  1. Keychain Access → Certificate Assistant → Create a Certificate… Name it e.g. ScreenshotStudio Dev, set Certificate Type to Code Signing, and create it in the login keychain.
  2. Build with CODESIGN_ID="ScreenshotStudio Dev" ./build.sh.

(If you have Xcode signed in to an Apple ID, an Apple Development: … identity from security find-identity -v -p codesigning works too.)

Usage

  • ⌃⇧S anywhere (or menu bar → Capture Screenshot) starts a capture.
    • Drag to select a region, or press Space to switch to window mode, Esc to cancel.
  • The editor opens with your shot composited live. Tweak:
    • Background: 12 gradient presets, any solid color, or dot/grid/stripe patterns
    • Padding, corner radius, aspect ratio (Auto / 1:1 / 4:3 / 16:9)
    • Shadow size and opacity
    • Window chrome toggle + optional title text
  • ⌘C copies the result, ⌘S saves a PNG, ⌘N starts a new capture.
  • Menu bar → "Open Image…" lets you beautify any existing image too.

Exports render at 2× scale, so Retina captures stay pixel-sharp.

How it's put together

File Role
App.swift Menu bar app entry, capture/open flow
HotKeyManager.swift Global ⌃⇧S hotkey (Carbon, zero dependencies)
CaptureManager.swift Capture via the system screencapture -i -o tool
Style.swift CompositionStyle model, gradient presets, layout math
CompositionView.swift The canvas: background + chrome bar + clipped screenshot
EditorView.swift Editor window UI: live preview + control panel
Exporter.swift ImageRenderer export, clipboard, save panel, window controller

The same CompositionView drives the live preview and the export (ImageRenderer at 2×), so output always matches the preview exactly.

Roadmap ideas

  • Replace the screencapture shell-out with ScreenCaptureKit and a custom selection overlay (also unblocks App Sandbox / App Store distribution)
  • Auto-copy to clipboard right after capture
  • Remember the last-used style between sessions (@AppStorage)
  • Blurred-desktop and image backgrounds, mesh gradients
  • Annotations: arrows, text, redaction blur
  • Configurable hotkey (swap HotKeyManager for the KeyboardShortcuts package)

Known limitations

  • Not sandboxed (see above) — fine for personal use and direct distribution with notarization, but not App Store-ready as-is.
  • Window chrome bar is light-mode styled; a dark variant is an easy follow-up.
  • Material/blur effects can't be used in the composition because ImageRenderer doesn't render them — stick to colors, gradients, shadows.

Releasing

./package.sh          # builds a universal binary and a build/ScreenshotStudio-<version>.dmg

Or let CI do it: push a tag and .github/workflows/release.yml builds the universal .dmg and attaches it to a GitHub Release.

git tag v1.0
git push origin v1.0

Bump CFBundleShortVersionString in build.sh before tagging.

Note: released builds are ad-hoc signed, not notarized, so downloaders see a one-time Gatekeeper warning (handled in the Install steps). For a warning-free install, join the Apple Developer Program ($99/yr), sign with a Developer ID, and notarize with xcrun notarytool — then the same .dmg flow works without any user bypass.

Contributing

Issues and PRs welcome. The whole app is ~7 small Swift files (see How it's put together) and builds with a single ./build.sh — no Xcode project required.

License

Licensed under the Apache License 2.0. See NOTICE for attribution.

About

Beautiful screenshots in a click - a tiny macOS menu bar app that wraps your captures in gradients, padding, shadows & window chrome

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages