ESXScreenshot 是一款轻量级 macOS 截图工具,面向日常办公、开发调试、文档编写和快速标注截图场景。它支持区域截图、窗口截图、全屏截图、长截图、重复上次区域、冻结区域截图等能力,并提供菜单栏入口、全局快捷键、截图确认编辑、自动保存、复制到剪贴板和多语言界面。
项目基于 Objective-C / Cocoa 开发,使用 Masonry 编写自动布局。普通用户可以直接下载 Release 中的打包文件使用;开发者可以克隆源码后在 Xcode 中编译、修改和二次开发。
- 区域截图、窗口截图、全屏截图和主屏幕截图。
- 长截图、重复上次区域、冻结区域截图和延时截图。
- 菜单栏常驻入口,支持从菜单快速触发截图。
- 支持全局快捷键,默认区域截图快捷键为
Control + Option + 5,默认全屏截图快捷键为Control + Option + 3。 - 截图确认窗口支持撤销、重做、缩放、保存、钉图和取消截图。
- 标注工具支持矩形、圆形、箭头、文字、马赛克和常用颜色。
- 截图后可自动复制到剪贴板,也可自动保存为 PNG 文件。
- 支持自定义保存目录,文件名会自动包含时间信息。
- 支持截图时隐藏应用窗口,减少截图内容干扰。
- 支持随系统启动、屏幕录制权限说明和隐私相关设置。
- 支持多语言本地化,包含中文、英文、德语、法语、西班牙语等语言。
- macOS 13.0 或更高版本。
- Xcode 15 或更高版本用于源码编译。
如果你只是想直接使用 App,可以到 GitHub Releases 下载最新版本:
- 下载
ESXScreenshot.dmg或ESXScreenshot.zip。 - 将
ESXScreenshot.app拖入Applications文件夹。 - 首次启动时,根据 macOS 提示授予必要权限。
如果应用没有经过 Apple Developer ID 签名和公证,macOS 可能会提示无法直接打开。可以在 Finder 中右键点击 App,选择“打开”,再确认启动。正式分发时建议使用 Developer ID 签名并完成 Apple notarization。
截图工具需要部分系统权限才能正常工作:
- 屏幕录制权限:用于读取屏幕内容并完成截图。
- 辅助功能权限:用于部分窗口隐藏、滚动截图或自动化操作。
- 登录项权限:用于开启随系统启动。
你可以在“系统设置 > 隐私与安全性”中管理这些权限。
克隆仓库:
git clone https://github.com/your-name/ESXScreenshot.git
cd ESXScreenshot使用 Xcode 打开项目:
open ESXScreenshot/ESXScreenshot.xcodeproj也可以使用命令行构建:
xcodebuild -project ESXScreenshot/ESXScreenshot.xcodeproj -scheme ESXScreenshot -configuration Debug build项目已在源码中集成 Masonry,不需要额外通过 CocoaPods 或 Swift Package Manager 安装依赖。
建议以 GitHub Releases 的方式发布可直接使用的构建产物:
- 使用 Release 配置构建 App。
- 使用 Developer ID 对 App 签名。
- 将 App 打包为
.dmg或.zip。 - 提交 Apple notarization 并 staple 公证结果。
- 在 GitHub Releases 中创建版本,例如
v1.0.0。 - 上传打包文件,并写清版本更新说明。
如果只是内部测试,也可以先发布未签名版本,但需要在说明中提醒用户 macOS 可能会出现安全提示。
ESXScreenshot/
ESXScreenshot.xcodeproj Xcode 项目文件
ESXScreenshot/ App 源码、资源和本地化文件
Vendor/
Masonry/ 自动布局依赖
UI/ UI 设计参考图
docs/ 项目文档
ESSettingsManager:管理保存目录、快捷键、启动项和偏好开关。ESHotKeyManager:注册和刷新全局快捷键。ESScreenshotManager:负责屏幕、窗口和区域截图。ESScreenshotWorkflow:串联截图后的复制、保存和结果处理流程。ESAppCoordinator:协调按钮、菜单栏和快捷键触发的截图动作。ESCaptureOverlayController:区域截图选择遮罩。ESWindowCaptureOverlayController:窗口截图选择遮罩。ESScreenshotLongCaptureController:长截图流程控制。ESScreenshotConfirmationWindowController:截图确认、编辑和保存窗口。ESScreenshotEditorView:截图标注画布。ESScreenshotPinManager:管理钉图窗口。ESStatusItemController:管理菜单栏入口。
欢迎提交 issue 和 pull request。建议在提交前先确认:
- 代码保持简单、清晰、易读。
- 新增函数、方法、类型和属性添加中文注释。
- 涉及 UI 的改动尽量附带截图说明。
- 提交信息同时包含中文和英文描述。
目前仓库尚未添加开源许可证。正式公开前建议添加 MIT License,方便其他开发者自由使用、修改和分发。