V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ashfinal
V2EX  ›  分享发现

(自我)感觉良好的 Hammerspoon 配置,有原生 aria2 前端和类似 Alfred 的搜索了

  •  
  •   ashfinal · 2017-05-01 22:39:41 +08:00 · 4248 次点击
    这是一个创建于 2763 天前的主题,其中的信息可能已经有所发展或是发生改变。

    之前发过帖子: https://www.v2ex.com/t/324303

    awesome-hammerspoon 是一份针对 macOS 上自动化软件 Hammerspoon 的配置。

    GitHub 地址在这: https://github.com/ashfinal/awesome-hammerspoon

    不过相比上一次,变化还是挺大的。觉得有必要另开一贴说一下。

    • Hammerspoon Search

    改成“关键词+tab ”的方式来触发数据源了,更方便灵活更容易扩展。如图:

    hsearch

    按 tab 后,继续输入,搜索-选中某项,然后复制选中项,或者在浏览器打开,或者点击相应菜单,或者杀掉进程 …… 基本使用流程就是这样。

    目前有 6 个源:Safari tabs、有道词典、英语同义词、杀进程、菜单项搜索,还有 V2EX 新帖。

    重写了 hsearch.lua 整个文件,现在添加新源很简单了。基本上就是本地或者远程获取数据,喂给选择器,有必要的话加个 callback,然后设置下输出类型就可以了。大同小异。目前 6 个源+空格注释大约 400 行。

    这个组件官方最近添加了 darkmode 支持,并且可以 Ctrl+P/N/V 翻行翻页了。个人使用频率大大提高,感觉用来作为 spotlight 的补充,还是不错的。以后有需求再慢慢加源。

    • aria2 ”原生“前端

    ”原生“加引号是因为:管理界面实际上是通过 hs.canvas “画”出来的。但从使用体验上来说,几乎与原生客户端无异。之前用的是 web 网页端管理,觉得还行。但有几点一直略感遗憾。

    于是最近就查了下 Hammerspoon 的文档,看能不能倒腾点什么东西出来。就算解决不了所有问题,用 canvas 画个下载进度条悬浮窗口,免去切来切去的麻烦也是好的。

    最后的结果是超出我预期的。如图:

    aria2

    截图没太截好,显得有点大。实际上,它只是悬浮在桌面右下角落,宽度大致与 Today Widget 相当。

    通过“ toolbar ”添加普通 /BT/Metafile 任务;支持批量添加任务(一行一 URL );在下载项上单击可 pause / resume 当前任务,如果已下载完成它会直接打开该文件;按住“ cmd “键并单击则会 stop 或者 remove 下载项;支持下载完成/错误等系统通知,即使 aria2 窗口当前已隐藏;如果当前没有活跃任务,它会慢慢减少服务器请求,而不是固定间隔一直发。

    另外,lua 脚本竟然能够调用 AppleScript,拉起文件选择框等交互界面。当时还是给了我很大惊喜。

    • 还有其它一些变化,这里简单概述下

    不再使用 mode block 显示当前状态了。有些状态显示根本没有必要,而且很难看。

    现在只用个类似 iOS 小圆点的东东(右下角),不同颜色来区分场景。而且只在非常有必要的时候才出现,以减少对使用者的干扰。

    cheatsheet 正常工作了。之前直接拿别人的代码,现在完全通读一遍,并修复了其中的 bug。记得有个哥们抱怨说包含上下左右键的快捷键没有显示出来,现在应该所有的都 OK 了。

    netspeed 监视器给挪到菜单栏了,因为我实在找不到别的好地方来放它 …… 而我又非常关注网速。如果你知道别的什么好地方,可以告诉我 :)

    最后的最后,欢迎 star,欢迎 contribute。

    https://github.com/ashfinal/awesome-hammerspoon

    第 1 条附言  ·  2017-05-02 19:54:52 +08:00
    醉了 回复这么少 (๑ó﹏ò๑)

    加星没加星的都说说,你们用 aria2 没?
    19 条回复    2017-12-04 12:30:55 +08:00
    avalon
        1
    avalon  
       2017-05-02 16:27:18 +08:00
    网络监控太赞了,可以关了 istat menu 了。
    ashfinal
        2
    ashfinal  
    OP
       2017-05-02 19:40:43 +08:00
    @avalon 嗯 当时也是发现:

    我真正想关注的只有网速而已。
    mildhurt
        3
    mildhurt  
       2017-05-05 21:46:57 +08:00
    试用了一下,功能很赞。
    想加入几个快捷键怎么修改呢? alt + h j k l 对应上下左右方向键。alt + , .对应光标到句首句尾。
    ashfinal
        4
    ashfinal  
    OP
       2017-05-06 16:48:57 +08:00   ❤️ 1
    sendup = hs.hotkey.bind({"alt"},"k",nil,function() hs.eventtap.keyStroke({},"up") end)

    @mildhurt 类似于这种的。一共才几行,直接放到 private/awesomeconfig.lua 里面就行。
    mildhurt
        5
    mildhurt  
       2017-05-06 22:47:17 +08:00
    @ashfinal
    加了上下左右,句首句尾的关键字是?(不知道文档从哪查)
    alt + hjkl 长按会不好用。这个有办法改成长按一直有效?
    并且感觉这个有点卡。直接按上下左右不会卡的,这个大概有 0.5 秒的延时。
    ashfinal
        6
    ashfinal  
    OP
       2017-05-07 16:34:12 +08:00
    @mildhurt 句首句尾可以用 cmd+left/right 或者 ctrl+a/e 来模拟。
    想让长按有效,应该再补一个参数,让按下和长按调用的函数一样即可。

    可以去查下 Hammerspoon 的文档,都很简短容易理解,用到哪个查哪个。
    http://www.hammerspoon.org/docs/hs.hotkey.html#bind
    http://www.hammerspoon.org/docs/hs.eventtap.html#keyStroke
    mildhurt
        7
    mildhurt  
       2017-05-07 19:34:41 +08:00
    @ashfinal 收到,我再看看文档。
    移动到副屏可以加全局快捷键吗?
    另外,在副屏中 resize 模块的很多快捷键都会重回主屏幕。并不能在副屏用 h j k l。
    ashfinal
        8
    ashfinal  
    OP
       2017-05-07 19:43:31 +08:00
    @mildhurt 把 window 移动到别的屏幕?
    可以使用 上下左右还有空格键。
    mildhurt
        9
    mildhurt  
       2017-05-07 20:38:18 +08:00
    @ashfinal 移动到别的屏幕的快捷键好用。移动到副屏后再 resize 就会回主屏幕。比如说在副屏按 k 应该在副屏在上半屏显示才合理。现在是会回到主屏幕。
    ashfinal
        10
    ashfinal  
    OP
       2017-05-07 20:57:21 +08:00
    @mildhurt 副屏上按 K 把窗口 resize 到上半屏了嘛? resize 后回到主屏幕?
    正常应该是针对当前“激活”窗口的,如果没有按预想的工作,可以去 GitHub 提个 issue。

    目前我没有多监视器的硬件条件,所以涉及到这块的 issue,没法测试。希望有人提 PR 吧。
    mildhurt
        11
    mildhurt  
       2017-05-07 21:25:09 +08:00
    @ashfinal resize 后回主屏幕。
    我原来试用这个配置时在副屏移动是好用的。https://github.com/S1ngS1ng/HammerSpoon/blob/master/README-cn.md
    看看有时间再折腾……
    ashfinal
        12
    ashfinal  
    OP
       2017-05-07 23:08:43 +08:00
    @mildhurt 看了下那份配置调用了另一个模块,但是结果应该是一样的呀……
    可能是个 bug,不过我这没法重现。只能再等等看了……
    zander
        13
    zander  
       2017-05-12 11:24:40 +08:00
    有一段时间没用,再用的时候 setlocation 开始报错了,不知道怎么了。
    ashfinal
        14
    ashfinal  
    OP
       2017-05-12 21:33:42 +08:00   ❤️ 1
    @zander setlocation? 具体什么错误,可以到 GitHub 提 issue。

    @mildhurt 今天刚好对多监视器环境做了支持,这些问题应该都解决了。欢迎测试 :)
    mildhurt
        15
    mildhurt  
       2017-05-13 21:19:29 +08:00
    @ashfinal 更新了,副屏上的问题解决了,我再测试测试:)
    ashfinal
        16
    ashfinal  
    OP
       2017-05-13 21:47:42 +08:00
    @mildhurt 好的 👌 多显示器相关的问题终于可以告一段落了。
    另外,顺手给 hsearch 加了个图标。这份配置有空继续慢慢搞 ʕ•ᴥ•ʔ
    mildhurt
        17
    mildhurt  
       2017-05-14 06:57:46 +08:00
    @ashfinal 不错不错,等于整合了几个软件,方便了不少。
    clotong
        18
    clotong  
       2017-12-03 20:25:18 +08:00
    @ashfinal
    想问下,在-- resizeM modal environment 的配置里,如果我想调用里面几个常用的屏幕方式弄个全局快捷键,而不用先进入 resizeM,再按字母,要如何写,谢谢
    ashfinal
        19
    ashfinal  
    OP
       2017-12-04 12:30:55 +08:00
    @clotong 可以用 http://www.hammerspoon.org/docs/hs.hotkey.html#bind 绑定。

    所有加载的 Spoon 都可以通过全局命名 spoon 访问到,比如 spoon.WinWin。

    至于 WinWin 有哪些可调用的方法,可以看它的线上手册: http://www.hammerspoon.org/Spoons/WinWin.html
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2986 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 14:05 · PVG 22:05 · LAX 06:05 · JFK 09:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.