为了劳逸结合

近期开始试着独立开发项目,随之而来的一个问题是过于专注而不自知,常常一坐下一两个小时就过去了,回过神来腰酸背痛眼睛疼,要缓好一会儿才能继续。因此寄希望于番茄钟 App 能帮助我有规律地工作和休息。我关于番茄钟的需求主要有以下三点:

  1. 自动开始休息。方便我快速切换状态,不用每次想着要启动休息计时,保持连贯性;
  2. 适配 Apple Watch。因为我时常会在上班时摸鱼开发,手表震动更加隐秘,更适合摸鱼,另一方面,当一个钟结束后,我可以放心地站起来四处活动,休息时间结束后手表也可以随时提醒我,不需要担心超出休息时间;
  3. 支持将数据添加到日历或正念,并通过 iCloud 同步。方便我回溯数据的时候,满足自己的成就感。

我尝试了市面上几个流行的番茄钟 App:我的番茄、Bluebird、Flow、滴答清单的番茄钟功能,还发邮件和 Flow 的开发团队有了一点小小的交流。这些 App 已经能满足我的需求,但是一些高级功能和iCloud 数据同步要收费。我不愿意仅仅为了番茄钟这个功能付费(也许等手头的项目结束,我可以自己开发个免费的😋),于是就有了下面的番茄钟快捷指令。

来自德国友人的回复

实用模式

部分快捷指令不能同时兼容 iOS、iPadOS、macOS、watchOS,比如在正念中添加数据就只能在 iOS 和 iPadOS 上运行。从兼容性出发结合我个人的需求,下面的快捷指令设置是最为实用的,实现的功能有:

  1. 支持选择番茄钟对应的事项;
  2. 支持添加数据到日历、numbers;
  3. 到点后通过 Apple Watch 提醒;
  4. iOS、iPadOS 和 macOS 上都可以运行,但是插入数据的操作需要在解锁状态下才能执行。

设置思路如下:

  1. 设置列表选项,将接下来的番茄钟归类到某个事项中,比如编程、阅读、工作、写作;
  2. 获取当前的时间、番茄钟结束的时间和休息结束的时间,用于设置提醒事项以及后续的数据记录;
  3. 设置提醒事项,在番茄钟结束时和休息结束时提醒我;
    我习惯的番茄钟时长是45分钟,短休息时长是5分钟,因此我在当前时间上分别添加了45分钟和50分钟,作为番茄钟结束的时间点和休息结束的时间点,你可以修改为自己习惯的时间。
    关闭 Mac、iPhone 和 Apple Watch 上提醒事项的通知声音,就可以实现通过 Apple Watch 震动安静地提醒自己。如果这和你使用提醒事项的习惯不符 ,或者你不介意声音提醒,也可以打开声音,或是把这一步改为设置计时器。
  4. 设置等待时间,在番茄钟结束后让快捷指令继续后续的操作;
    这里记得要通过 Mac 来设置等待时长,因为 iPhone 和 iPad 不能直接输入数值,只能通过按钮1秒1秒地增加😱。
    当然如果你相信自己的执行力,也可以不设置等待时长,直接添加番茄钟记录。
  5. 在日历中插入日程;
    添加日程的好处是可以通过日历直接查看每天的专注时间轴。
  6. 在 numbers 中插入数据。
    使用 numbers 记录数据主要出于稳定性和兼容性的考虑,通过表格的方式记录也可以在周复盘时做一些简单的分析,以及万一万一后面用上了 Apple Intelligence,也方便它获取数据给我一些惊喜。
    这个快捷指令的逻辑是:在指定的 numbers 文件->工作表->表格->顶部或底部插入一行,根据你设置的数值从第1列开始依次插入。
    你可以根据你自己表格每一列的表头来设置快捷指令中的数值,比如我的表头依次是「日期」「开始时间」「结束时间」「工作项」,因此我设置的数值依次是「年月日格式的当前时间」「时分格式的当前时间」「时分格式的番茄钟结束时间」「选择的事项」。(下方表格截图中,第5列「时长」是通过「结束时间」-「开始时间」公式计算的结果,因为我需要时间格式的数据,方便汇总展示)
    创建 numbers 文件时,要将工作表的名称和表格的名称重新命名,否则快捷指令无法正确识别。
    记得将记录数据的 numbers 文件保存在 iCloud 中,并设置为“保留下载”,防止因为文件不存在或是未下载影响快捷指令的执行。
    你可以将这一步改为将记录添加到支持数据库的飞书、Notion,或是以文本格式添加到常用的笔记软件,比如 Bear、Obsidian、Logseq。
日历可以展示每天的专注时间轴

 

更优雅地提醒自己

我使用 Ray Cast 的 confetti 指令和 Giphy 的 API 为自己制作了一个番茄钟 MVP 结算画面。

Good!🎉

“你很棒!” GIF

macOS 和 iPadOS 提供了一个神奇的快捷指令“查找 Giphy1 GIF”。我们可以在番茄钟结束时获取一个有趣的 GIF 来告诉自己“太棒了!你完成了一个番茄钟!!”。

这个快捷指令需要指定一个查找的关键词,但是同一个关键词每次返回的 GIF 是相同的,这多少有点无趣。因此我设置了一个列表,随机获取其中的一个关键词来查找 GIF。你可以参考下面的图片,将设置添加到上述快捷指令的结尾。

或者你也可以调用 Giphy 的 API 来获得更加随机的 GIF。为此你需要去 Giphy 的网站注册账号并申请 API,Giphy 的免费 API 支持每小时100次的调用,对我来说绰绰有余了。你可以参考我下面的配置方式:

  1. 使用“获取 URL 内容”快捷指令调用 API;
    https://api.giphy.com/v1/gifs/random?api_key=APIKey&tag=confetti 中的 APIKey 替换为你自己的,将 confetti 替换为你想要的关键词。
  2. 使用“获取词典值”来解析 API 返回的数据;
    这一步涉及到数据的解析,不做赘述,可以使用我的设置项 data.images.original.url
  3. 使用“显示网页视图”展示 GIF。

遗憾的是不论是“查找 Giphy GIF”快捷指令,或是 Giphy 的 API 都需要科学上网才能访问。你可以将这一步替换为展示本地文件夹中保存的图片和 GIF,或是打开自己的照片集。

全屏撒花

Ray Cast 的 confetti 指令会展示一个全屏撒花的动画,只需要使用“打开URL”快捷指令,打开这一指令的 Deeplink raycast://extensions/raycast/raycast/confetti 就可以执行了。Ray Cast 是一个非常好用的软件,推荐所有 Mac 使用者都尝试一下。

以上就是本文的全部内容,这个快捷指令还有很多扩展的空间,比如在执行时设置本次番茄钟的时长,在结束时重新执行以自动开始番茄钟,或者打开专注模式以实现 app 白名单的功能。不过目前它已经能满足我的全部需求,这些就留待各位自行拓展了。