-
📸 Screen Capture
- Full screen and custom area selection
- Global keyboard shortcut support
- High-quality screenshot capture using ScreenCaptureKit
-
✏️ Image Editing
- Multiple annotation tools (text, shapes, arrows, blur, etc.)
- Crop and resize functionality
- Border and shadow effects
-
💾 Flexible Saving
- Save to local disk with custom paths
- Copy to clipboard
- Pin screenshots to floating windows
-
🎨 Modern UI
- Native SwiftUI interface
- Smooth animations and transitions
- Dark mode support
- OS: macOS 15.0 (Sequoia) or later
- Xcode: 15.0 or later
- Swift: 5.10 or later
- Visit the Releases page
- Download the latest
.dmgfile - Open the file and drag iCap to your Applications folder
- Grant screen recording permission when prompted
# Clone the repository
git clone https://github.com/wflixu/iCap.git
cd iCap
# Open in Xcode
open iCap.xcodeproj
# Build and run (⌘R)- Launch iCap - Grant screen recording permission when prompted
- Take a screenshot - Use the global shortcut (default:
⌘⇧X) - Select area - Drag to select the screen region
- Annotate - Use tools from the left panel to annotate
- Save - Choose your preferred save option
| Shortcut | Action |
|---|---|
⌘⇧X |
Take screenshot |
Esc |
Cancel selection |
⌘Z |
Undo annotation |
⌘⇧Z |
Redo annotation |
# Debug build
xcodebuild -project iCap.xcodeproj -scheme iCap -configuration Debug build
# Release build
xcodebuild -project iCap.xcodeproj -scheme iCap -configuration Release build
# Run tests
xcodebuild test -project iCap.xcodeproj -scheme iCap -destination 'platform=macOS'iCap/
├── iCapApp.swift # Main app entry point
├── AppState.swift # Global state management
├── Editor/ # Image editing components
│ ├── CanvasView.swift
│ ├── AnnotationManager.swift
│ └── EditorView.swift
├── Shared/ # Shared utilities
│ ├── EventBus.swift # Event system
│ ├── Constants.swift
│ └── Utils.swift
└── Assets.xcassets # App assets
- SwiftUI - Modern UI framework
- ScreenCaptureKit - Screen capture API
- Combine - Reactive programming
- KeyboardShortcuts - Global hotkeys
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Please read our Contributing Guidelines for details.
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with SwiftUI
- Uses ScreenCaptureKit for screen capture
- Icons from SF Symbols
- Keyboard shortcuts managed by KeyboardShortcuts
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Built with ❤️ by @wflixu
