English | 日本語
ZoomacIt is a native macOS menu bar app inspired by ZoomIt for Windows. The project aims for feature compatibility with ZoomIt, providing system-wide hotkeys, smooth zooming, and on-screen annotation while minimizing required permissions.
📖 Looking for installation, usage, or keyboard shortcuts? Visit the ZoomacIt Documentation Site.
demo_s.mov
| Feature | Status |
|---|---|
| Zoom (Still Zoom) | ✅ |
| Zoom (Live Zoom) | ✅ |
| Draw | ✅ |
| DemoType | |
| Break Timer | ✅ |
| Snip | |
| Record |
Pure Swift 6 + AppKit (SwiftUI used only for Settings UI). macOS 15+. No external dependencies. The Xcode project is generated by xcodegen from src/project.yml.
| Layer | Directory | Purpose |
|---|---|---|
| App | src/ZoomacIt/App/ |
Entry point (main.swift), AppDelegate, StatusBarController (menu bar) |
| Core | src/ZoomacIt/Core/ |
HotkeyManager — Carbon RegisterEventHotKey API |
| Overlay | src/ZoomacIt/Overlay/ |
Fullscreen overlay windows, zoom controllers, ZoomMath |
| Draw | src/ZoomacIt/Draw/ |
DrawingCanvasView (3-layer compositing), renderers, StrokeManager |
| Settings | src/ZoomacIt/Settings/ |
SwiftUI-based preferences with hotkey customization |
| Models / Utils | src/ZoomacIt/Models/, Utilities/ |
State models (DrawingState, Stroke, Settings), extensions |
Detailed design documents are in design/.
- macOS 15+ (build target)
- Xcode (with Swift 6 toolchain)
Compatibility note: The minimum deployment target is macOS 15, but the app is tested and officially supported on macOS 26 only. Earlier versions may work but are not guaranteed.
- xcodegen (
brew install xcodegen) — only needed when editingsrc/project.yml
make build # Debug build
make test # Run unit tests
make run # Build and launch the app
make release # Release build (Developer ID signed)
make notarize # Release build + Apple notarization
make dmg VERSION=1.0.0 # Notarize + create distributable DMG
make clean # Clean build artifacts
make generate # Regenerate .xcodeproj (after editing src/project.yml)
make docs # Start local documentation dev server
make docs-build # Build documentation siteThe project's src/project.yml hardcodes the maintainer's team ID. To build and run locally, replace it with your own:
- Find your team ID:
security find-certificate -c "Apple Development" -p | openssl x509 -noout -subject | grep -o 'OU=[^,]*' | cut -d= -f2 - Edit
src/project.yml— replace theDEVELOPMENT_TEAMvalue with yours (appears twice) - Regenerate and build:
make generate make build make run
Note: A valid code signature is required for macOS to launch the app and grant Screen Recording (TCC) permission. Do not commit your team ID — this is a local-only change.
macOS Gatekeeper blocks unsigned apps downloaded from the internet. To distribute ZoomacIt without requiring users to bypass Gatekeeper warnings, the app must be signed with a Developer ID certificate and notarized by Apple.
Copy .env.example to .env and fill in your credentials:
cp .env.example .env| Variable | Description |
|---|---|
APPLE_ID |
Your Apple ID email address |
TEAM_ID |
Your Apple Developer Team ID (used by make release / make notarize) |
APP_PASSWORD |
An app-specific password generated at appleid.apple.com |
DEVELOPER_NAME |
Your name as it appears on your Developer ID certificate |
Then run:
make dmg VERSION=1.0.0This builds a Release binary signed with your Developer ID, submits it to Apple for notarization, staples the notarization ticket, and packages the result into a distributable DMG.
Note: Notarization requires an Apple Developer Program membership. The
.envfile is gitignored and must never be committed.
Thanks to everyone who helps improve ZoomacIt. See CONTRIBUTORS.md for acknowledgments.
This project is licensed under the GNU General Public License v3.0.
