Install
#One-liner
sh
curl -sSL https://raw.githubusercontent.com/MPJHorner/ScreenshotUltra/main/scripts/install.sh | bashWhat it does:
- Detects your arch (arm64 / x86_64).
- Reads the latest tag from the GitHub API.
- Downloads the matching universal
.zipfrom Releases. - Verifies the
.sha256sidecar. - Removes any previous
/Applications/Screenshot Ultra.appand unpacks the new one viaditto -xk. - Clears the
com.apple.quarantinexattr so Gatekeeper doesn't gripe on first launch. - Opens the app once so macOS prompts you for Screen Recording permission.
#Manual: download from a GitHub release
Grab
ScreenshotUltra-v*-universal.zipfrom the latest release.Unzip into
/Applications/.Clear quarantine:
shxattr -dr com.apple.quarantine "/Applications/Screenshot Ultra.app"Launch and grant Screen Recording in System Settings → Privacy & Security → Screen & System Audio Recording. Relaunch.
The binary is universal (arm64 + x86_64), unsigned for now. Signing + notarisation lands in M6.
#Build from source
Rust stable, macOS 13 or newer:
sh
git clone https://github.com/MPJHorner/ScreenshotUltra.git
cd ScreenshotUltra
make app
open "dist/Screenshot Ultra.app"make app runs:
cargo build --releasescripts/render-icon.sh(regeneratesicon/AppIcon.icnsfromicon/icon.svgvia Swift +iconutil)- Assembles the
.appbundle indist/
#Permissions
- Screen Recording is required for every capture mode. macOS prompts on first launch; if you click "Don't Allow", re-enable it in System Settings → Privacy & Security → Screen & System Audio Recording.
- Accessibility is not required for the default hotkey scheme. It'll be needed for the planned modifier-only (chord) bindings — but those don't ship yet.
#Uninstall
sh
# 1. Quit Screenshot Ultra from the menu bar (or kill the process)
pkill -f screenshot-ultra
# 2. Remove the app bundle
rm -rf "/Applications/Screenshot Ultra.app"
# 3. (Optional) wipe settings + logs
rm -rf "$HOME/Library/Application Support/ScreenshotUltra"
rm -rf "$HOME/Library/Logs/ScreenshotUltra"Captures in ~/Pictures/ScreenshotUltra/ are left alone — they're yours.