之前,在 macOS 上使用的番茄时钟,来自网络下载的一个 Alfred Workflow,但是不巧在某次重装系统时丢失了;现在,出于简单即可的心态,所有的 Workflow 都自己写,仅仅是满足自己的需求,轻量又透明。

鉴于我需求简单:一个番茄钟一般在 30 分钟以内,完成后全屏显示一个提示。于是推翻了之前使用系统时间和计数器两个想法,就搞了一个 sleep,它醒了就叫我一下:

import time
import sys

T = abs(int(sys.argv[1].split()[0]))

if T <= 60:
  time.sleep(T * 60)
  exit
else:
  exit

Workflow 图形如下,后面的 bash 是一行简单的统计脚本,通过 API 往 Google Analytics 发送我的打卡记录,用于将来的自我审视。

tomator timer

举个例子:⌘ + ␣ 快捷键调出 Alfred,输入 tm 30 read perspective made easy,上面的 Python 脚本设置一个 30 秒 * 60 的计时器,下方的 Bash 则分解字符串为 action = ‘read’label = ‘perspective made easy’value = 30,并将数据推到 Google Analytics 的事件统计报表里,当计时结束,会有一个 take a break 的全屏通知和一个小 Banner 形式的 GA response 结果。

val=$(echo $time | cut -f1 -d' ')
act=$(echo $time | cut -f2 -d' ')
lb=$(echo $time | cut -f3-20 -d' ')
ga=`curl -s -o /dev/null -w "%{http_code}" -X POST -d "v=1&tid=UA-XXXXXXXX-Y&cid=AAA&uid=BBB&t=event&ec=timer&ea=$act&el=$lb&ev=$val" https://www.google-analytics.com/collect`
echo -n $ga

根据我的输入,GA 会产出如下的汇总报表给我:

Event Category Event Action Event Lable Total Events Unique Events Event Value
timer play dota 2 1 46
timer read the_beginning_of_infinity 3 1 138
timer read perspective made easy 1 1 30