Basic
唤出快捷键: option+space
简单查找文件:用快捷键呼出Alfred,键入空格,输入你要查找文件名,即可定位文件,回车打开,command+回车打开文件所在文件夹
复杂操作文件:通过find、open、in等关键词搜索文件。find是定位文件,open是定位并打开文件,in是在文件中进行全文检索,三种检索方式基本上可以找到任何你想找的文件
workflows
https://www.packal.org/
https://www.alfredforum.com/forum/3-share-your-workflows/
搜索关键词: # Alfred workflow 插件
效率神器 Alfred workflow 插件推荐: https://hufangyun.com/2018/alfred-workflow-recommend/
https://github.com/ctwise/alfred-workflows
https://www.zhihu.com/question/20656680
参考: https://www.alfredapp.com/help/workflows/
自定义hotkey
指定快捷键打开应用程序: control + s 打开sublime
Reminders for alfred
https://github.com/surrealroad/alfred-reminders
usage:
r help
要在特定日期/时间收到提醒
r today xxx
r tomorrow xxx
r in 4 minutes xxx
r in 4 second xxx
r in 1 hours xxx
r on 21/12/31 xxx
r on 31-12-99 23:22 xxx
r on 12 June 15 xxxx
r at 2pm xxx
r next thursday at 15.30 xxx
Obsidian Utilities
https://github.com/macedotavares/obsidian-utilities
usage:
s
v
dn
dj
nn
t
clip
其他: 1. https://github.com/hauselin/obsidian-alfred Obsidian 笔记应用程序的 Alfred 工作流程。在 Obsidian 中打开保管库和文件
2. 具有许多Obsidian功能的 Alfred 工作流程 https://github.com/chrisgrieser/shimmering-obsidian
其他workflows
Dash手册 https://kapeli.com/dash eg: java11 System; redis hash
Alfred workflow for devdocs.io: https://github.com/yannickglt/alfred-devdocs 存在问题
生成可用的代码变量 https://github.com/xudaolong/CodeVar 目前已失效
查看http code https://github.com/ilstar/http_status_code eg: httpcode 403
爱词霸查词: https://github.com/flexih/iciba.alfredworkflow cc work
有道翻译 Youdao Translate: https://github.com/wensonsmith/YoudaoTranslator
(过往参考: https://www.jianshu.com/p/a048a72f87a9)
查看本地ip 1: https://github.com/alexchantastic/alfred-ip-address-workflow/ 2:本地, 不知出处
iTerm Run Command: https://github.com/anzhihe/Efficient-office/tree/master/iterm-run-command
OCR: 存在问题
Quickly open recent documents and apps / 快捷打开最近访问的文档或应用: https://github.com/mpco/AlfredWorkflow-Recent-Documents
Outline wiki: https://github.com/outline/alfred-outline
Open files or folders in Sublime Text 3:
微信小助手: 一言难尽
tailwind docs: https://github.com/clnt/alfred-tailwindcss-docs
https://github.com/techouse/alfred-tailwindcss-docs
GitHub Workflow for Alfred 4: https://github.com/gharlan/alfred-github-workflow
GitLab workflow https://github.com/lukewaite/alfred-gitlab
设置和使用生成一个 GitLab 个人访问令牌 ( https://gitlab.com/profile/personal_access_tokens ) 然后运行glsetkey <yourkey>(可选)通过运行告诉它您要连接到的 GitLab API 的位置 glseturl https://<host>/api/v4/projects默认为 GitLab.com 的公共 API搜索项目 gl <search>如果发现部分项目搜索不到,可以使用以下命令清除缓存gl workflow:delcache
Browse, search and open Git repositories in Alfred: https://github.com/deanishe/alfred-repos
汇率转换: https://github.com/jin5354/alfred3-workflow-CurrencyConvert
workflow简介
来源: http://louiszhai.github.io/2018/05/31/alfred/
截止到 v3.6.1 版本,workflow 支持 Triggers、Inputs、Actions、Utilities(alfred3.x新增)、Outputs 共5项主要功能
这5项功能一共包含39个组件。其中
- 输入包含 Triggers(触发器)和 Inputs(输入触发);Triggers 中的流程可以触发 Inputs 的流程,反之则不行,同时它们都可以触发其它后续流程。
- 输出即 Outputs,包含了通知,放大展示、复制到剪切板,写入文本、播放声音、触发其它流程等。
- 中间 Actions 包含打开文件、在 finder 中展示文件、唤起 app、打开 web search、打开 URL、执行系统命令、执行 iTunes 命令、执行脚本、执行 applescript 脚本、在终端中执行命令等。
- Utilities 包含了一些公共组件,如变量设置、json 配置、过滤、转换、替换、延时、debug 等。
以上,Hotkey、Keyword、Script Filter 是常用的输入组件,Open URL、Run Script 是高频的 Action 组件,Post Notification、Copy to Clipboard 是受欢迎的输出组件,而 Arg and Vars、Filter、Delay、Debug 是贴心的公共组件。
目前,我们可以直接使用如下8种语言编写脚本:
- bash
- zsh
- php
- ruby
- python
- perl
- applescript
- javascript
workflow的不足
本文聊了这么多,workflow的优势就不多说了。
很明显,workflow 不是万能的,很多场景,v3.6.1 的 alfred 还覆盖不到。比如说:
- 无法监听用户操作,自动录入工作流。对于大多数人来说,编码创造工作流的成本太高,alfred 若能监听一段时间用户操作,将之转换成工作流,无疑工作流入门成本会大幅度降低,同时也能弥补 applescript 语言的不足(未提供 applescript 接口的应用几乎无法编程),当然这个要求很高,比如说alfred可能需要获取输入时光标所在的屏幕位置,被操作应用的坐标、宽高以及输入源(键盘、鼠标等)的操作等。
- 没有可视化的组件界面,相比 v2.x 版本而言,v3.x 版本中操作依然停留在文本输入输出上,若能多些可视化组件,比如图片展示,图文混排等,那么编程的空间将更大。
- 不支持常驻窗口,且常驻窗口上可以二次编程。若能在常驻窗口上放置 todolist、便签,以及监听股票走势等等,那么,几乎就能面向 alfred 开发小程序了。
- 不支持触摸板手势或 touchbar 直接唤起工作流,手势输入或 touchbar 的玩法很多,创意也很多,有很大的想象空间。
当然,可能还有更多更好的 idea,现如今的 alfred 暂不支持,欢迎在评论区回复交流,一起畅想 alfred 的未来。
关于调试:
alfred 流程报错不会有通知和提示,因此一旦 workflow 没有按照你的期望提供输出,那就要注意了,打开 debug 窗口,或引入 Utilities -> Debug 组件,看看有没有异常输出。
alfred 虽然支持多种语言的执行,但执行过程中无法单步 debug,这给调试带来了挑战。所以,开发 workflow 时需要及时的进行单元测试,待部分功能完善后,再进行后续开发,避免陷入根据错误输出无法第一时间定位问题的窘境。
关于alfred选项列表输出: 实际上,选项列表对应一个 xml 配置,工作流中只需输出配置好的 xml 即可,请参考如下格式。
<?xml version="1.0"?>
<items>
<item uid="" arg="https://www.google.com/search?q={query}&safe=off">
<title>谷歌一下 {query}</title>
<subtitle>副标题</subtitle>
<icon>google-icon.png</icon>
</item>
...
</items>
以上,arg 即往后传递的参数,title 标签内填写标题,subtitle 标签内填写副标题,icon 标签内填写当前选项的图标。然后直接使用 shell 的 echo 打印以上 xml,即可输出以上选项列表。
xml 中如果包含链接,则 & 需要替换为 &。
关于选项列表多次输出&流程间调用:
很多时候,一次输入可能不够,若需要多次输入信息,又该如何实现呢?不妨参考如下两种方案:
- 选项列表的输出依赖 Inputs -> Script Filter 组件,若流程中包含多次输入,顺序引入多个 Script Filter 组件即可。
- 若需要唤起 ① 其它分支流程(同一个 workflow 不同流程)、② 其它 workflow 中的流程(跨 workflow 调用)或 ③ 回到当前流程源头(重复执行、直到退出),则可给需要唤起的流程头部插入 Triggers -> External 组件,然后该组件所在流程便可通过 applescript 脚本唤起。applescript 脚本如下所示:
这段代码的意思是:让 Alfred 3 应用,带上参数 “test”,去打开 Bundle Id为 “com.louis.alfred.CRUD_Module” 的 workflow 中名称为 “action” 的触发器所在流程。tell application "Alfred 3" to run trigger "action" in workflow "com.louis.alfred.CRUD_Module" with argument "test"
注意事项:
根据我的经验,workflow 开发中还需注意以下几点:
- 流程中的节点往后传递参数非常简单,只需往控制台输出即可。但须注意,多个控制台输出会合并到一起,因此除了往后传递参数外,其他情况下都不要往控制台打印文本。通常控制台输出会包含换行符,为避免换行符带来干扰,推荐使用
echo -n(bash) 或sys.stdout.write(python);直接执行 js 时,方法内部的return 即往后传递参数,此时console.log输出到控制台并不合法。 - 开发中容易出现 utf-8 编码的问题,建议编程中少用或不用中文注释,或者重载 utf-8 编码(python)。
- 如果需要携带参数,去唤起其它应用,applescript 会是个不错的选择。
