Skip to content

Repository files navigation

森时 Focus Garden

一款本地优先的 macOS 专注工具:在番茄钟期间只保留白名单应用,完成后获得露珠并在个人花园里种下一棵植物。

森时是独立开发的原创项目,与 Forest 官方无关,也不包含 Forest 的代码、图像或其他资源。

已实现

  • 5–120 分钟专注计时,含 25 / 50 / 90 分钟快捷选项
  • /Applications 多选白名单应用
  • 专注期间监听并轮询普通前台应用,立即隐藏不在白名单中的应用
  • 域名白名单,支持 Safari、Chrome、Edge、Arc、Brave 与 Opera 当前标签页守护
  • 可命名的多套专注模式,每套保存独立的应用和网页白名单
  • 八种可离线循环的工作背景音:白 / 粉 / 棕噪声、细雨、篝火、溪流、海浪与咖啡馆;支持独立试听、音量控制及随专注自动播放和停止
  • 可选的菜单栏实时剩余时间、拦截次数和快速回到主窗口
  • ⌘⇧F 全局快捷键快速唤醒
  • macOS 正式登录项与独立后台守护助手
  • 原创嫩芽应用图标,打包时自动生成多分辨率 .icns
  • 六种按时长解锁的原创矢量树、稀有度奖励、花园、图鉴与历史记录
  • 按周一至周日生长的“本周森林”场景;新的一周自动开启新森林,往期树木仍保留在收藏与历史中
  • 完成后只发送无声系统横幅,不播放声音、不弹出应用内弹窗
  • 中途放弃不发奖励;意外重启后可恢复未结束的计时
  • 全部数据保存在本机 UserDefaults

运行

需要 macOS 14 或更新版本。只安装 Command Line Tools 也可以构建:

swift run

打包为可双击的本地应用:

./Scripts/build-app.sh
open dist/FocusGarden.app

如需稳定使用“登录时启动”和“后台守护助手”,请先把 FocusGarden.app 移到 /Applications,再在应用的“设置”页启用相应开关。macOS 可能要求在“系统设置 → 通用 → 登录项与扩展”中批准。

当前边界

这是专注辅助工具,不是不可绕过的家长控制工具。启用守护助手后,关闭主窗口或退出主应用不会中断正在进行的守护;但用户仍可在系统设置中关闭登录项或主动结束相关进程。Finder 与必要系统界面始终放行,以避免桌面环境反复崩溃。非白名单应用会被隐藏而非强制退出,因此未保存内容不会被破坏。

网页守护通过 macOS 浏览器自动化读取当前标签页,首次使用时需要允许森时控制对应浏览器。白名单匹配主域名及其子域名,例如添加 notion.so 也会允许 www.notion.so。如果读取或清空标签页失败,浏览器会被隐藏,避免白名单静默失效。它限制顶层浏览页面,不是系统级网络过滤器。

后台助手会在主应用退出后继续执行已经开始的会话,并在会话结束时静默拉起菜单栏应用来结算奖励和发送通知。它不阻止用户在系统设置中关闭登录项,因此仍不是不可绕过的家长控制工具。

背景音来源与致谢

森时的背景音来自开源项目 Moodist(“Ambient sounds for focus and calm”)。感谢作者 MAZE / remvze 及 Moodist 的所有贡献者整理并开放这套声音资源。

本项目使用了 Moodist 中以下音频。自然场景录音会先做离线响度归一化,再在应用内循环播放并进行实时音量平衡:

森时场景 Moodist 原始文件
粉噪声 public/sounds/noise/pink-noise.wav
棕噪声 public/sounds/noise/brown-noise.wav
白噪声 public/sounds/noise/white-noise.wav
叶上细雨 public/sounds/rain/rain-on-leaves.mp3
林间篝火 public/sounds/nature/campfire.mp3
深夜海浪 public/sounds/nature/waves.mp3
林间溪流 public/sounds/nature/river.mp3
远处咖啡馆 public/sounds/places/cafe.mp3

Moodist 采用 MIT License。森时与 Moodist 没有隶属或官方合作关系;这里的署名是对上游开源工作的感谢与保留说明。

要做成更强的版本,下一步应加入:浏览器扩展级网络过滤、中断成本与成就系统,以及可选的 iPhone 伴侣应用。

隐私

  • 专注记录、露珠、应用白名单和网站白名单只保存在本机 UserDefaults
  • 项目不包含账号系统、分析 SDK、广告 SDK或遥测上报。
  • 网页白名单通过 macOS 自动化读取受支持浏览器的当前顶层标签页;源码不会收集或上传浏览历史。
  • 请勿在公开 Issue 中上传包含个人白名单、浏览记录或本机路径的日志与截图。

开发与验证

swift build
swiftc Sources/FocusGarden/Models.swift SmokeTests/main.swift -o .build/model-smoke
.build/model-smoke

./Scripts/build-app.sh 会创建经过本地临时签名的 dist/FocusGarden.app。公开分发前仍应配置自己的 Apple Developer 签名、公证和发布流程。

许可证

项目采用 MIT License。欢迎提交 Issue 和 Pull Request,贡献前请阅读 CONTRIBUTING.md

About

Local-first macOS focus timer with app and website allowlists, a guardian helper, and a growing forest.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages