项目概况

Alfred-workflow-js

2026-01-292 min read未分类
Alfred Plugin

1. 基本运行

javascript
1var AlfredNode = require('alfred-workflow-nodejs'); 2var actionHandler = AlfredNode.actionHandler; 3var workflow = AlfredNode.workflow; 4var Item = AlfredNode.Item; 5 6(function main() { 7 actionHandler.onAction("action1", function(query) { 8 // your code to handle action 1 here 9 }); 10 actionHandler.onAction("action2", function(query) { 11 // your code to handle action 2 here 12 }); 13 14 actionHandler.onMenuItemSelected("action2", function(query, selectedTitle, selectedData) { 15 // your code to handle manu item selected of action 2 here 16 }); 17 18 AlfredNode.run(); 19})(); 20

2. 日志打印

text
1console.warn("action1, 参数:" + query)

3. 菜单

使用脚本当使用tab键,会进行跳转的操作。

javascript
1 2 //输入tab键会把上一个选中的参数翻到这里 3 actionHandler.onMenuItemSelected("action1", function (query, title, data) { 4 console.warn("data:" + data) 5 console.warn("title:" + title) 6 console.warn("query:" + query) 7 8 var item1 = new Item({ 9 title: "Item 1 of " + title, 10 arg: "item 1 of " + title + " which has alias ", 11 subtitle: "data", // we can get data of selected item 12 valid: true 13 }); 14 15 var item2 = new Item({ 16 title: "Item 2 of " + title, 17 arg: "item 2 of " + title + " which has alias ", 18 subtitle: data, 19 valid: true 20 }); 21 22 workflow.addItem(item1); 23 workflow.addItem(item2); 24 25 26 var item3 = new Item({ 27 title: "Item 3 of " + storage.get("key1"), 28 arg: "item 3 of " + title + " which has alias ", 29 subtitle: data, 30 valid: true 31 }); 32 workflow.addItem(item3); 33 34 var item4 = new Item({ 35 title: "Item 4 of " + storage.get("key2").name, 36 arg: "item 4 of " + title + " which has alias ", 37 subtitle: data, 38 valid: true 39 }); 40 workflow.addItem(item4); 41 42 workflow.feedback(); 43 });

4. 使用本地缓存进行CURD

javascript
1 2var AlfredNode = require('alfred-workflow-nodejs'); 3var actionHandler = AlfredNode.actionHandler; 4var workflow = AlfredNode.workflow; 5var Item = AlfredNode.Item; 6workflow.setName("example-alfred-workflow-using-nodejs"); 7//类似本地的缓存 8var storage = AlfredNode.storage; 9 10 11 12var storage = AlfredNode.storage; 13storge.set("key", "value"); 14storage.set("key", {name: "node"}, 1000); 15storage.get("key"); 16storage.remove("key"); 17storage.clear();

5. 获取Alfred-workflow中的配置

javascript
1 2 //获取系统外部配置 3 console.warn("系统环境变量:" + utils.envVars.get("outSetting"))

6. 异常图标

可以是图片地址,也可以是系统icns地址

(ACCOUNT, BURN, CLOCK, COLOR, EJECT, ERROR, FAVORITE, GROUP, HELP, HOME, INFO, NETWORK, NOTE, SETTINGS, SWIRL, SWITCH, SYNC, TRASH, USER, WARNING, WEB)

text
1 2icon: AlfredNode.ICONS.INFO 3 4icon: AlfredNode.ICONS.ERROR

7. 传递给下一个的变量

text
1AlfredNode.utils.generateVars({arg: 'xyz', variables: {key: value}}; 2

8. 获取mac的钥匙串

text
1 var settings = AlfredNode.settings; 2 // 将账户密码添加到钥匙串 3 settings.setPassword("alfred-liuxin", "password"); 4 // 获取mac的钥匙串中的,密码 5 settings.getPassword("alfred-liuxin", function(error, password){ 6 console.warn("获取密码:" + password); 7 });

9. 自动黏贴APP中