使用 Alfred 制作一个简单工作流

2021/05/16

1. 新建工作流

首先新建一个空白的工作流,点击下方的 + 按钮,选择 Blank workflow,在弹出的窗口中填写这个工作流的相关信息:

首先工作的流的第一步是我们需要读取用户输入的关键字,用于 Alfred 进行匹配。添加的方法为:右键 -> Inputs -> Keyword,然后在弹出的窗口中填写 keyword:

接下来我们需要运行生成 token 的脚本,右键 -> Action -> Run Script,在编辑窗口中写触发这个工作流之后需要执行的脚本代码:

虽然,Alfred 中运行脚本可以直接使用 python 脚本,但是版本是 python2 的,同时也不好进行管理。因此使用 bash 来执行我们的 python 脚本文件更加的适合。再之后我们需要将脚本的输入内容复制到剪切板,右键 -> Outputs -> Copy to clipboard :

现在我们的工作流就创建好了,它包含了三个步骤:

  • 匹配工作流触发的关键字;
  • 运行脚本;
  • 将脚本执行的结果复制到剪切板中。

然后,我们再通过这个运行的顺序将这三个串接起来,效果如下:

套用这个模板我们可以完成很多事情,这里我给演示如何使用生成 otp token。

2. 编写脚本代码

点击 Run Script 窗口中的下边这个按钮打开该工作流的工作目录:

并复制出系统的绝对路径地址,大概是长下面这个样子的:

/Users/pushyzheng/Library/Application Support/Alfred/Alfred.alfredpreferences/workflows/user.workflow.B5BBAAE4-DB0A-46EC-9B02-AD8E9BD3E185

因为我们需要用到第三方库 pyotp ,Alfred 需要我们隔离的独立的环境,所以通过 pip 安装第三方库时,我们需要指定安装路径:

$ pip3 install --target="/Users/pushyzheng/Library/Application Support/Alfred/Alfred.alfredpreferences/workflows/user.workflow.B5BBAAE4-DB0A-46EC-9B02-AD8E9BD3E185" pyotp

然后在该路径在新建 main.py

import pyotp

totp = pyotp.TOTP('your secret')
# 必须要指定 end = ‘’ 否则输出的字符串会多一个换行符
print(totp.now(), end='')

3. 调试

Alfred Workflow 提供了 debug 的功能,允许我们查看执行的流程和相关的日志,如下所示:

然后输入 gotp 即可: