About
一个截图工具,重写了一遍。
MacShot 的第一版跑在 Electron 上。功能是全的,但每次启动都在等一个浏览器内核加载,包体 242 MB。后来花了些时间用 Swift 和 AppKit 重写,功能对齐,体积降到 724 KB。
Why rewrite
不想为了截一张图,
不想为了截一张图,
启动一个浏览器。
Electron 让桌面工具的开发门槛降下来了,代价是每个应用都带着一整套 Chromium 和 Node。对一个「按快捷键就要立刻出图」的工具来说,这个代价不划算。
重写时定了几条规矩:不引第三方库、不用 Xcode 工程(一条 swiftc 命令就能产出)、不把任何图片或行为发到网络上。到 v1.2.2,整个应用是 12 个源文件,编译产物 724 KB。
设置界面仍然用 HTML 写——那部分适合 Web 技术,原生只负责它更擅长的:文件选择、全局热键录制、真实水印渲染。
| 层 | 用了什么 | 为什么 |
|---|---|---|
| 界面 | AppKit + 自绘覆盖层 | 覆盖层要盖住菜单栏与 Dock,还要精确控制命中区 |
| 抓屏 | CoreGraphics | 整屏 2880×1800 约 19–20 ms;ScreenCaptureKit 单帧固定 300 ms 起 |
| 设置页 | WebKit | 表单类界面用 HTML 写更快,原生负责桥接 |
| 全局热键 | Carbon | 至今最稳的系统级热键注册方式 |
| 开机启动 | ServiceManagement | macOS 13 起的标准做法 |
| 第三方依赖 | 无 | 少一个依赖,少一份体积和一次供应链风险 |
Principles
三条一直没变的原则。
图片不出本机
没有账号、没有云端、没有埋点。抓屏到编码全在本地内存里完成,断网照常用。
操作不离开键盘
唤起、框选、切工具、确认,都能用键完成。鼠标是可选路径,键盘也能全程完成。
不留死胡同
每个模式都有明确出口:确认、取消、撤销、删除各司其职。点下去没反应这件事,在截图工具里格外难受。
Contact
关于作者与联系方式。
MacShot 由 Daniel_Yen 独立开发与维护:设计、编码、文档、更新都是一个人。功能建议和 bug 都欢迎,尤其是能复现的那种。
- 作者
- Daniel_Yen
- 角色
- 独立开发与维护
- 反馈方式
- 应用内「设置 → 关于 → 反馈」扫码添加作者微信
- 邮件
- 待填写
- 响应
- 工作日通常 24 小时内回复;带复现步骤的会更快
- 版本
- v1.2.2(更新日志)
反馈时附上:macOS 版本、芯片型号、复现步骤、期望结果与实际结果。有截图更好。
隐私承诺
应用不上传截图、不收集使用行为、不要求注册账号。网站只使用必要的访问统计(如已启用,会在隐私说明里列明具体工具与用途)。
许可
当前版本为免费使用。安装包发布渠道确定后,会在下载页与更新日志里写明授权方式。
应用不上传截图、不收集使用行为、不要求注册账号。网站只使用必要的访问统计(如已启用,会在隐私说明里列明具体工具与用途)。
许可
当前版本为免费使用。安装包发布渠道确定后,会在下载页与更新日志里写明授权方式。
本网站与 Apple Inc. 无隶属关系。macOS、App Store 是 Apple Inc. 的商标。
下一次截图,少开一个软件。
724 KB,装完就在菜单栏。没有账号、没有订阅、没有上传。
- 区域、全屏、窗口、智能四种截图方式
- 矩形、画笔、文字、马赛克,画完回车出图
- 品牌水印带时间戳与二维码,可给已有图片套用
- 图片全程留在本机,不上传、不联网、不统计