前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Alfred插件开发--了解Alfred的数据流动

Alfred插件开发--了解Alfred的数据流动

作者头像
屈定
发布2018-09-27 11:54:45
2.4K0
发布2018-09-27 11:54:45
举报
文章被收录于专栏:屈定‘s Blog屈定‘s Blog

最近发现要记住的长命令太多了,因此打算开发一款Alfred插件帮助自己记录. 先展示下成品,大概就是输入关键词->搜索展示->复制到指定位置这一流程,借此开分析下Alfred插件开发.

http://imgblog.mrdear.cn/201811111111.gif
http://imgblog.mrdear.cn/201811111111.gif

Alfred插件开发要解决如下几个问题

  1. 用户输入如何到达自定义脚本?
  2. 自定义脚本如何输出到Alfred的item选项?
  3. Alfred的item选项选择后如何传递到下一个执行点?

用户输入如何到达自定义脚本?

Alfred的入口(inputs组件)有很多,一般常用的是Keyword,Script Filter,List Filter等. 对于Keyword是输入cmd xxx后按enter才能触发. 对于XXX Filter是输入时不停地调用脚本触发.

假设用户输入的是cmd xxx这样的输入,Alfred会把关键词cmd后面的内容当成参数传递,传递有两种形式1.类似shell形式$1 $2这种风格,2.是使用一个字符串{query}来表示后面所有内容

Script Filter为例 当用户输入cmd dt-ansible时,alfred实际上执行命令为./go_start -s dt-ansible 当用户输入cmd dt-ansible1 dt-ansible2时,alfred实际上执行命令为./go_start -s 'dt-ansible1 dt-ansible2',{query}形式主要解决空格等分隔符输入问题.

自定义脚本如何输出到Alfred的item选项?

上述用户输入cmd dt-ansible后,Alfred接管了go_start这个脚本的输入与输出,那么只需要在输出时按照Alfred格式要求,Alfred就会自动显示Item选项,格式如下:

代码语言:javascript
复制
<items>
  <item uid="0" arg="npm config set registry https://registry.npm.taobao.org" valid="YES" autocomplete="npm-common" type="default">
    <title>npm-common</title>
    <subtitle>npm通用命令</subtitle>
    <icon>./icon.png</icon>
  </item>
</items>

其中重要的是arg参数,该参数表示选中这个Item后传递给下一个工作流节点的参数内容,其他参数请参考下列文档. 另外新版的Alfred是推荐使用json形式参数,但是为了兼容Alfred2,没特殊需求的话使用xml时最好的方式. Alfred XML格式指南

Alfred的item选项选择后如何传递到下一个执行点?

每一个Item的xml选项都有对应的Arg参数,如上述xml,那么我传递给下一个节点的就是npm config set registry https://registry.npm.taobao.org这一串命令,同样下一个节点使用{query}即可获取,如下图Copy to Clipboard节点所示.

输入数据转换

输入参数在Alfred可以使用其提供的各种Utils进行filter,map等操作,如下面操作我使用的是filter分支操作,当输入指令为open时执行下面分支,不等于open时执行上面分支.

插件地址

https://github.com/mrdear/Command_Search

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-02-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 用户输入如何到达自定义脚本?
  • 自定义脚本如何输出到Alfred的item选项?
  • Alfred的item选项选择后如何传递到下一个执行点?
  • 输入数据转换
  • 插件地址
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档