Skip to content

07JP27/ZoomacIt

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CI Release License Swift 6.0 macOS 26+ Sponsor

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

🎥 Watch in high resolution

Feature coverage

Feature Status
Zoom (Still Zoom)
Zoom (Live Zoom)
Draw
DemoType
Break Timer
Snip
Record

Architecture

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/.

Development

Prerequisites

  • macOS 26+
  • Xcode (with Swift 6 toolchain)
  • xcodegen (brew install xcodegen) — only needed when editing src/project.yml

Build commands

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 site

Code signing and notarization

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.0

This 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 .env file is gitignored and must never be committed.

License

This project is licensed under the GNU General Public License v3.0.

About

A native macOS menu bar app inspired by ZoomIt for Windows. Draw on your screen with hotkeys.

Topics

Resources

License

Stars

Watchers

Forks

Contributors