将 Mac 硬件刘海转化为时间管理入口
English | 中文 | Français | Español | 日本語 | 한국어
NotchBlock 是一款极简但强制执行的时间块(Time-Blocking)日程管理工具。它将 Mac 的硬件刘海转化为隐形交互入口,通过不容忽视的全屏弹窗中断机制,强迫你保持专注。
🎯 鼠标悬停刘海 → 查看今日排程 → 任务结束时强制全屏提醒 → 必须确认完成状态
| 功能 | 说明 |
|---|---|
| 🔲 刘海悬停面板 | 鼠标在刘海区域停留 0.5 秒,优雅滑出今日日程简报 |
| 🛡️ 全屏避让 | 看视频、打游戏、放 PPT 时自动暂停刘海检测 |
| ⚡ 硬中断遮罩 | 任务结束时强制全屏变暗,拦截所有操作 |
| ⏱️ 5 分钟超时 | 未响应自动标记「未完成」+ 系统通知 |
| 📋 今日排班器 | 极简时间轴列表,时间冲突自动检测 |
| 🔄 历史补录 | 手动修正任务状态,精准复盘 |
| 🚀 开机启动 | 菜单栏一键开关,安静常驻后台 |
| 💾 本地存储 | 数据完全本地,无需网络,隐私安全 |
从 Releases 页面下载最新 NotchBlock-*.dmg。
打开 DMG 后,按照窗口背景提示操作:
- 拖入 Applications — 将
NotchBlock.app拖到Applications文件夹 - 双击
FixQuarantine.command— 一键移除隔离标记并启动应用(首次需右键→打开) - 完成 — 菜单栏会出现图标,开始使用
💡 为什么需要第 2 步?NotchBlock 未经过 Apple 公证(需要 $99/年 的开发者账号),macOS 会对下载的应用标记隔离属性。
FixQuarantine.command会自动执行xattr -cr /Applications/NotchBlock.app移除此标记。
首次运行后需授权:
| 权限 | 用途 | 设置路径 |
|---|---|---|
| 辅助功能 (Accessibility) | 检测全屏应用状态 | 系统设置 → 隐私与安全性 → 辅助功能 |
| 通知 (Notifications) | 任务超时提醒 | 系统设置 → 通知 → NotchBlock |
# 如果 DMG 内的脚本无法运行,手动执行:
xattr -cr /Applications/NotchBlock.app
open /Applications/NotchBlock.appmacOS 14.0+ · Swift 6.1 · SwiftUI + AppKit
关键 API:
NSTrackingArea— 刘海区域鼠标追踪NSPanel+.nonactivatingPanel— 下拉面板(不抢焦点)CGShieldingWindowLevel()+.fullScreenAuxiliary— 全屏遮罩穿透CGWindowList— 全屏状态检测SMAppService— 开机启动注册UserNotifications— 超时横幅通知UserDefaults/ ISO 8601 JSON — 本地持久化
项目结构:
NotchBlock/
├── Models/ TimeBlock · BlockStatus
├── Managers/ TimeBlockStore · NotchTracker · NotchPanelController
│ OverlayWindowController · BlockScheduler
├── Views/ MainSchedulerView · TimeBlockRowView · AddEditBlockView
│ NotchPanelView · OverlayView
└── Utilities/ DateExtensions · LaunchManager
| 快捷键 | 操作 |
|---|---|
⌘O |
打开排程面板 |
⌘Q |
退出 NotchBlock |
# 添加新文件后重新生成 Xcode 项目
python3 generate_xcode_project.py
# CLI 构建
xcodebuild -project NotchBlock.xcodeproj -scheme NotchBlock -configuration Release build
# 创建 DMG
./scripts/build-dmg.shBuilt with ❤️ for focused work · macOS Apple Silicon