A lightweight, native macOS screenshot utility written in Rust that provides fast, minimal-UI screenshot capture with global hotkeys.
- Fullscreen Screenshot (
Alt+Shift+A) - Capture the entire screen - Area Selection Screenshot (
Alt+Shift+S) - Select and capture a specific area - Background Operation - Runs silently with menu bar icon only
- Automatic Save - Screenshots saved to
~/Documents/Screenshots/Snappr/ - Clipboard Integration - Screenshots automatically copied to the clipboard
- Retina Display Support - High-resolution capture on Retina displays
- Fast Performance - Native Rust implementation with minimal overhead
- macOS 10.13 (High Sierra) or later
- Screen Recording permission (granted on first run)
-
Install Rust (if not already installed):
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
-
Clone and build:
git clone <repository-url> cd snappr ./scripts/build_app_bundle.sh
-
Install to Applications:
cp -r target/release/Snappr.app /Applications/
-
Launch:
open /Applications/Snappr.app
-
Fullscreen: Press
Alt+Shift+A- Captures the entire screen
- Saves to
~/Documents/Screenshots/Snappr/Screenshot-YYYYMMDD-HHMMSS.png - Copies the screenshot to the clipboard
-
Area Selection: Press
Alt+Shift+S- Displays transparent overlay
- Click and drag to select area
- Release to capture
- Saves to
~/Documents/Screenshots/Snappr/Screenshot-YYYYMMDD-HHMMSS.png - Copies the screenshot to the clipboard
Click the πΈ icon in the menu bar to:
- View app version
- Quit the application
On first run, Snappr will request Screen Recording permission:
- A message will appear in the terminal
- System Settings will open automatically
- Navigate to: Privacy & Security > Screen Recording
- Enable Snappr
- Restart the app
To automatically start Snappr when you log in:
./scripts/generate_launch_agent.sh
launchctl load ~/Library/LaunchAgents/com.snappr.agent.plistTo disable auto-launch:
launchctl unload ~/Library/LaunchAgents/com.snappr.agent.plistsnappr/
βββ src/
β βββ main.rs # Application entry point
β βββ app_delegate.rs # AppDelegate and menu bar
β βββ hotkeys.rs # Global hotkey registration
β βββ screenshot.rs # Screenshot capture logic
β βββ clipboard.rs # Clipboard integration
β βββ storage.rs # File saving
β βββ permissions.rs # Permission handling
β βββ utils.rs # Utility functions
β βββ overlay/
β βββ mod.rs # Overlay module
β βββ window.rs # Transparent overlay window
β βββ selection_view.rs # Selection rectangle view
βββ resources/
β βββ Info.plist # App bundle configuration
βββ scripts/
β βββ build_app_bundle.sh # Build .app bundle
β βββ generate_launch_agent.sh # Auto-launch setup
βββ Cargo.toml
# Check for errors
cargo check
# Build debug version
cargo build
# Build release version
cargo build --release
# Create .app bundle
./scripts/build_app_bundle.shcargo run- Language: Rust (2021 edition)
- macOS APIs: AppKit, CoreGraphics, Carbon (via FFI)
- Key Crates:
cocoa- Rust bindings for Cocoaobjc- Objective-C runtimecore-graphics- CoreGraphics bindingsimage- PNG encoding
- NSApplication with Accessory activation policy (no dock icon)
- Carbon HotKey API for global hotkey registration
- CGDisplay for screen capture
- NSPasteboard for clipboard operations
- Custom NSView subclass for selection overlay
- Screenshot capture: < 50ms
- Memory usage: < 50MB
- Binary size: < 10MB
- Startup time: < 5ms
- Check Screen Recording permission in System Settings
- Restart the app after granting permission
- Ensure no other app is using the same hotkeys
- Check Console.app for error messages
- Try restarting the app
- Check if the app is running:
ps aux | grep snappr - Kill and restart:
killall snappr && open /Applications/Snappr.app
[Add your license here]
Built with Rust and native macOS frameworks for maximum performance and minimal resource usage.