Golang Alfred工作流开发教程
最近在学习用Golang开发Alfred工作流,但遇到几个问题想请教:
- 如何用Go调用Alfred的API实现工作流的基本功能?
- 在Go中处理JSON输入输出有什么需要注意的地方?
- 有没有推荐的Go库可以简化Alfred工作流开发?
- 能分享一个完整的Go实现的Alfred工作流示例吗?
- 调试Go写的Alfred工作流有什么技巧或工具推荐?
2 回复
以下是一个简单的Golang Alfred工作流开发教程:
-
安装依赖
- 安装Alfred Powerpack
- 安装Go语言环境
-
创建工作流
- 打开Alfred偏好设置 → Workflows → 点击"+"创建空白工作流
- 设置工作流名称和图标
-
编写Go脚本
package main import ( "encoding/json" "fmt" "os" ) type AlfredItem struct { Title string `json:"title"` Arg string `json:"arg"` } func main() { query := os.Args[1] items := []AlfredItem{ {Title: "结果: " + query, Arg: query}, } output, _ := json.Marshal(map[string][]AlfredItem{"items": items}) fmt.Print(string(output)) } -
配置工作流
- 添加Script Filter输入组件
- 语言选择:/bin/bash
- 脚本内容:
go run main.go "{query}" - 设置关键词触发
-
编译部署
- 编译Go程序:
go build -o workflow main.go - 在工作流中直接调用可执行文件
- 编译Go程序:
-
调试技巧
- 使用Alfred的Debug面板查看输出
- 在终端测试脚本输出格式
提示:确保JSON输出符合Alfred要求格式,包含items数组和必要字段。可以添加更多功能如子标题、图标等增强体验。
更多关于Golang Alfred工作流开发教程的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
Golang Alfred工作流开发指南
Alfred工作流是macOS上强大的自动化工具,结合Golang可以创建高性能的自定义工作流。
基本概念
Alfred工作流通常包含:
- 触发器(热键、关键词等)
- 脚本处理(使用Golang)
- 输出结果到Alfred
开发步骤
1. 创建Golang脚本
package main
import (
"encoding/json"
"fmt"
"os"
)
type AlfredItem struct {
Title string `json:"title"`
Subtitle string `json:"subtitle"`
Arg string `json:"arg"`
}
type AlfredOutput struct {
Items []AlfredItem `json:"items"`
}
func main() {
// 获取Alfred传入的参数
query := ""
if len(os.Args) > 1 {
query = os.Args[1]
}
// 处理逻辑
items := processQuery(query)
// 输出Alfred格式的JSON
output := AlfredOutput{Items: items}
jsonData, _ := json.Marshal(output)
fmt.Print(string(jsonData))
}
func processQuery(query string) []AlfredItem {
var items []AlfredItem
// 示例:简单的搜索功能
items = append(items, AlfredItem{
Title: "搜索结果: " + query,
Subtitle: "按回车执行操作",
Arg: query,
})
return items
}
2. 编译Golang程序
go build -o my-workflow main.go
3. 在Alfred中配置工作流
- 打开Alfred Preferences → Workflows
- 点击"+"创建空白工作流
- 添加Script Filter输入源
- 配置:
- Keyword:触发关键词
- Language:/bin/bash
- Script:
./my-workflow "{query}"
4. 添加后续动作
在Script Filter后可以连接:
- Open URL
- Run Script
- Copy to Clipboard等
实用技巧
环境变量传递
// 读取Alfred环境变量
workflowCache := os.Getenv("alfred_workflow_cache")
workflowData := os.Getenv("alfred_workflow_data")
错误处理
func checkErr(err error) {
if err != nil {
items := []AlfredItem{
{
Title: "错误",
Subtitle: err.Error(),
Arg: "",
},
}
output, _ := json.Marshal(AlfredOutput{Items: items})
fmt.Print(string(output))
os.Exit(1)
}
}
发布工作流
将编译好的二进制文件和图标等资源打包成.alfredworkflow文件即可分享。
这样你就可以用Golang创建高性能的Alfred工作流了!

