美文网首页launchbar程序员MacTribe(如何优雅的使用Mac)
如何开发1个LaunchBar action-自己动手,丰衣足食

如何开发1个LaunchBar action-自己动手,丰衣足食

作者: 6593443e12c1 | 来源:发表于2017-04-13 23:41 被阅读576次

    最近看到1个效率启动神器 LaunchBar
    详细可以查看 LaunchBar,加速并简化 Mac 操作的必备利器 | Matrix 精选

    在体验过程中,体会到Instant Send功能非常强大,可以把mac下各个独立的应用,脚本和服务无缝的连接起来提升mac使用体验。
    随着深入使用发现launchBar无论是自带还是三方的action实在是太少了,远没有alfred那么多的可供选择,翻了下action的开发资料,开发1个action并不难。
    本文写1个杀死进程的action抛砖引玉,希望能帮助大家快速上手,编写提高自己工作效率的插件

    执行效果


    准备工作

    通读LaunchBar 6 Developer
    主要了解action的

    1. 配置
    2. 支持的脚本和代码示例
    3. 脚本输出格式

    脚本类型大家可以选择自己擅长的,我个人习惯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里留言自己希望开发的功能。大家多交流

    相关文章

      网友评论

        本文标题:如何开发1个LaunchBar action-自己动手,丰衣足食

        本文链接:https://www.haomeiwen.com/subject/jnviattx.html