为了劳逸结合
近期开始试着独立开发项目,随之而来的一个问题是过于专注而不自知,常常一坐下一两个小时就过去了,回过神来腰酸背痛眼睛疼,要缓好一会儿才能继续。因此寄希望于番茄钟 App 能帮助我有规律地工作和休息。我关于番茄钟的需求主要有以下三点:
- 自动开始休息。方便我快速切换状态,不用每次想着要启动休息计时,保持连贯性;
- 适配 Apple Watch。因为我时常会在上班时摸鱼开发,手表震动更加隐秘,更适合摸鱼,另一方面,当一个钟结束后,我可以放心地站起来四处活动,休息时间结束后手表也可以随时提醒我,不需要担心超出休息时间;
- 支持将数据添加到日历或正念,并通过 iCloud 同步。方便我回溯数据的时候,满足自己的成就感。
我尝试了市面上几个流行的番茄钟 App:我的番茄、Bluebird、Flow、滴答清单的番茄钟功能,还发邮件和 Flow 的开发团队有了一点小小的交流。这些 App 已经能满足我的需求,但是一些高级功能和iCloud 数据同步要收费。我不愿意仅仅为了番茄钟这个功能付费(也许等手头的项目结束,我可以自己开发个免费的😋),于是就有了下面的番茄钟快捷指令。
实用模式
部分快捷指令不能同时兼容 iOS、iPadOS、macOS、watchOS,比如在正念中添加数据就只能在 iOS 和 iPadOS 上运行。从兼容性出发结合我个人的需求,下面的快捷指令设置是最为实用的,实现的功能有:
- 支持选择番茄钟对应的事项;
- 支持添加数据到日历、numbers;
- 到点后通过 Apple Watch 提醒;
- iOS、iPadOS 和 macOS 上都可以运行,但是插入数据的操作需要在解锁状态下才能执行。
设置思路如下:
- 设置列表选项,将接下来的番茄钟归类到某个事项中,比如编程、阅读、工作、写作;
- 获取当前的时间、番茄钟结束的时间和休息结束的时间,用于设置提醒事项以及后续的数据记录;
- 设置提醒事项,在番茄钟结束时和休息结束时提醒我;
我习惯的番茄钟时长是45分钟,短休息时长是5分钟,因此我在当前时间上分别添加了45分钟和50分钟,作为番茄钟结束的时间点和休息结束的时间点,你可以修改为自己习惯的时间。
关闭 Mac、iPhone 和 Apple Watch 上提醒事项的通知声音,就可以实现通过 Apple Watch 震动安静地提醒自己。如果这和你使用提醒事项的习惯不符 ,或者你不介意声音提醒,也可以打开声音,或是把这一步改为设置计时器。 - 设置等待时间,在番茄钟结束后让快捷指令继续后续的操作;
这里记得要通过 Mac 来设置等待时长,因为 iPhone 和 iPad 不能直接输入数值,只能通过按钮1秒1秒地增加😱。
当然如果你相信自己的执行力,也可以不设置等待时长,直接添加番茄钟记录。 - 在日历中插入日程;
添加日程的好处是可以通过日历直接查看每天的专注时间轴。 - 在 numbers 中插入数据。
使用 numbers 记录数据主要出于稳定性和兼容性的考虑,通过表格的方式记录也可以在周复盘时做一些简单的分析,以及万一万一后面用上了 Apple Intelligence,也方便它获取数据给我一些惊喜。
这个快捷指令的逻辑是:在指定的 numbers 文件->工作表->表格->顶部或底部插入一行,根据你设置的数值从第1列开始依次插入。
你可以根据你自己表格每一列的表头来设置快捷指令中的数值,比如我的表头依次是「日期」「开始时间」「结束时间」「工作项」,因此我设置的数值依次是「年月日格式的当前时间」「时分格式的当前时间」「时分格式的番茄钟结束时间」「选择的事项」。(下方表格截图中,第5列「时长」是通过「结束时间」-「开始时间」公式计算的结果,因为我需要时间格式的数据,方便汇总展示)
创建 numbers 文件时,要将工作表的名称和表格的名称重新命名,否则快捷指令无法正确识别。
记得将记录数据的 numbers 文件保存在 iCloud 中,并设置为“保留下载”,防止因为文件不存在或是未下载影响快捷指令的执行。
你可以将这一步改为将记录添加到支持数据库的飞书、Notion,或是以文本格式添加到常用的笔记软件,比如 Bear、Obsidian、Logseq。
更优雅地提醒自己
我使用 Ray Cast 的 confetti
指令和 Giphy 的 API 为自己制作了一个番茄钟 MVP 结算画面。
“你很棒!” GIF
macOS 和 iPadOS 提供了一个神奇的快捷指令“查找 Giphy1 GIF”。我们可以在番茄钟结束时获取一个有趣的 GIF 来告诉自己“太棒了!你完成了一个番茄钟!!”。
这个快捷指令需要指定一个查找的关键词,但是同一个关键词每次返回的 GIF 是相同的,这多少有点无趣。因此我设置了一个列表,随机获取其中的一个关键词来查找 GIF。你可以参考下面的图片,将设置添加到上述快捷指令的结尾。
或者你也可以调用 Giphy 的 API 来获得更加随机的 GIF。为此你需要去 Giphy 的网站注册账号并申请 API,Giphy 的免费 API 支持每小时100次的调用,对我来说绰绰有余了。你可以参考我下面的配置方式:
- 使用“获取 URL 内容”快捷指令调用 API;
将 https://api.giphy.com/v1/gifs/random?api_key=APIKey&tag=confetti 中的APIKey
替换为你自己的,将confetti
替换为你想要的关键词。 - 使用“获取词典值”来解析 API 返回的数据;
这一步涉及到数据的解析,不做赘述,可以使用我的设置项data.images.original.url
。 - 使用“显示网页视图”展示 GIF。
遗憾的是不论是“查找 Giphy GIF”快捷指令,或是 Giphy 的 API 都需要科学上网才能访问。你可以将这一步替换为展示本地文件夹中保存的图片和 GIF,或是打开自己的照片集。
全屏撒花
Ray Cast 的 confetti
指令会展示一个全屏撒花的动画,只需要使用“打开URL”快捷指令,打开这一指令的 Deeplink raycast://extensions/raycast/raycast/confetti
就可以执行了。Ray Cast 是一个非常好用的软件,推荐所有 Mac 使用者都尝试一下。
以上就是本文的全部内容,这个快捷指令还有很多扩展的空间,比如在执行时设置本次番茄钟的时长,在结束时重新执行以自动开始番茄钟,或者打开专注模式以实现 app 白名单的功能。不过目前它已经能满足我的全部需求,这些就留待各位自行拓展了。