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 26+. 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 26+
- Xcode (with Swift 6 toolchain)
- 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 sitemacOS 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.
