(自我)感觉良好的 Hammerspoon 配置,有原生 aria2 前端和类似 Alfred 的搜索了 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ashfinal
V2EX    分享发现

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

  •  
  •   ashfinal 2017-05-01 22:39:41 +08:00 4638 次点击

    之前发过帖子: 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 没?
    20 条回复    2025-08-09 08:43:45 +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
    helsinglee
        20
    helsinglee  
       62 天前
    有更新吗
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2764 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 14:44 PVG 22:44 LAX 07:44 JFK 10:44
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86