最近看到1个效率启动神器 LaunchBar
详细可以查看 LaunchBar,加速并简化 Mac 操作的必备利器 | Matrix 精选
在体验过程中,体会到Instant Send功能非常强大,可以把mac下各个独立的应用,脚本和服务无缝的连接起来提升mac使用体验。
随着深入使用发现launchBar无论是自带还是三方的action实在是太少了,远没有alfred那么多的可供选择,翻了下action的开发资料,开发1个action并不难。
本文写1个杀死进程的action抛砖引玉,希望能帮助大家快速上手,编写提高自己工作效率的插件
执行效果
准备工作
通读LaunchBar 6 Developer
主要了解action的
- 配置
- 支持的脚本和代码示例
- 脚本输出格式
脚本类型大家可以选择自己擅长的,我个人习惯ruby,所以示例选用的脚本是ruby
步骤
新建1个Action并配置
LaunchBar弹出菜单中选择 “Index” -> “Show Index”
按照图中标的打开Action Editor
按照文档和上面2张图,填写基本配置
这里需要特别标注,在开发过程中最好勾选Enable Debug Log,通过系统程序“控制台”查看输出日志
接下来看脚本配置页面
这里做一下说明
Live feedback enabled # 立即执行,并返回
Keep window active # 保持launchBar的输入框激活状态
Requires argument # 需要参数
Accepts string argument # 字符串类型
Returns result # 返回类型,这里选择item,列表形式返回
默认执行的脚本为default.rb文件
编写代码
在Action Editor左侧的列表中,右键 Kill Process action,执行“Show in Finder”功能,之后 右键 KillProecss.lbaction文件执行“显示包内容”
当然大家也可以在shell中执行
open ~/Library/Application\ Support/LaunchBar/Actions/KillProcess.lbaction/Contents/
编辑Scripts目录下的default.rb文件
#!/usr/bin/env ruby
#
# LaunchBar Action Script
#
require 'json'
items = []
# 进程名
process_name = ARGV.first
# 获取 ps -eo .... | grep -i 进程名 的返回值
results = IO.popen("ps -eo pid,ppid,%cpu,%mem,stat,start,ucomm,comm | grep -i #{process_name}").readlines
# 拆分返回值
results = results.map do |result|
result.delete("\n").split(' ')
end
# 得到进程pid
pids = results.map { |res| res[0] }
# 过滤掉子进程,只保留父进程
results.delete_if { |res| pids.include? res[1] }
# 根据 action 需要格式 生成返回值
# 这里 需要注意的是 action 和 actionArgument 对应为后续执行的脚本和传递参数
results.each do |result|
items << {
title: result[6],
subtitle: "cpu: #{result[2]}% mem: #{result[3]}% #{result[7]}",
action: 'kill.rb',
actionArgument: "#{result[0]},#{result[6]}"
}
end
puts items.to_json
在default.rb同一目录中新建kill.rb文件,输入代码
require 'json'
pid, name = ARGV.first.split ','
`kill -9 #{pid}`
puts [{title: "#{name} killed"}].to_json
至此,1个杀死进程的action就完成了
说点什么
写完以后想和大家分享,看了下官方论坛的action板块,发帖量少的可怜,大都是很老版本的。
Google搜索,结果也不多。
估计还是LaunchBar上手有一定难度影响的。
我建了个launch bar action github仓库,欢迎大家在issue里留言自己希望开发的功能。大家多交流
网友评论