前言
小帽子alfred可以说是macOS上最佳的效率软件了,而其中最强大的功能就属alfred 2.0推出的Workflow特性了。就像我们工程师遇到重复性工作总是想写脚本或者程序来解放自己一样,workflow功能允许你将日常重复性的工作通过使用脚本语言(bash、zsh、php、ruby、python、perl、as、js)封装起来,通过alfred作为统一入口进行使用。
因为alfred的受众之广,所以写workflow被设计的门槛非常低,低到了官方都没有写文字教程,只在alfred内嵌了几个demo给用户自己学习。本文将使用一个示例来详细说明workflow的开发流程。
用户界面
安装好alfred以后,使用默认快捷键 option + space 打开alfred入口:
Command + , 打开设置页面:
打开workflow选项卡:
点击左下角 + 号,可以新建workflow或者查看一些官方的模板以及上面提到的官方的demo示例。
好了,基本操作界面就介绍那么多,下面就开始我们的workflow之旅吧!
准备工作
由于workflow功能是付费的,所以需要提前购买。具体类型、金额可以参考官网购买地址:官网购买地址。开发语言我们选择的是python2.7,一个是语言简单,另外个是python有很多现成的workflow的库,这些库帮助我们屏蔽了和alfred的交互,让我们专注业务数据的开发,例如:,github.com/deanishe/al…。范例里我们即使用这个库来进行开发。
开发流程
基础概念
在开发之前我们需要理解workflow的几个基本概念
- Triggers
- Inputs
- Actions
- Outputs
Triggers
Triggers是触发器,不是必须内容,一般绑定某个快捷键来触发指定的workflow。
Inputs
inputs是我们使用workflow的核心,inputs主要是控制你在alfred窗口输入快捷键和关键字以后展示的内容,以最常用的有道翻译为例:
可以看出inputs就是我们需要重点开发的东西,因为Inputs可以使关键字通过脚本转化为许多列的结果展示给我们,而这个正是我们需要的。实际上workflow展示出的结果在脚本中的表现形式就是一个xml文件,示例如下:
对应的xml:
<?xml version="1.0"?>
<items>
<item uid="1" arg="参数1" valid="yes">
<title>这个是个title</title>
<subtitle>