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

Hammerspoon 0.9.51 发布好几天了,竟然没人提嘛?

  •  
  •   ashfinal · 2016-12-30 22:09:34 +08:00 · 6159 次点击
    这是一个创建于 2884 天前的主题,其中的信息可能已经有所发展或是发生改变。

    难道是使用人数太少的缘故?😖 个人感觉挺好的软件啊…… 既然没人写我就随便写点什么吧,虽然本人也很菜……

    因为前一段时间搞了awesome hammerspoon,对 Hammerspoon 自然多了一些关注。此次发布的 0.9.51 (从 0.9.50 ⇡) 版本还是比较给力的,很值得关注。 Bug 修复和 API 改动就不说了,只说下增加的新特性:

    1. 增加 hs.spotlight 模块。能读取 spotlight 数据了,配合 hs.chooser 模块就能实现类似 spotlight 的功能;不过个人对系统自带的 spotlight 挺满意,所以这块文档没细看;
    2. 增加 hs.network.ping 模块。用于确定网络状况、延迟等。
    3. 增加 hs.deezer 模块。一个音乐播放器的自动控制,和咱无关。
    4. 增加 hs.watchable 模块。实现对文件变动或者变量的监控,很容易在此基础上做基于事件的自动化。
    5. 增加 hs.canvas 模块。 hs.drawing 模块的升级版,增加了众多吸引人的特性。比如组合操作,把多个绘图元素组合统一操作,也方便在不同分辨率屏幕上自动伸缩;支持 sourceIn/sourceOut 等集合操作,方便解决图层层叠处理的问题;支持多级渐变和径向渐变,之前 hs.drawing 只支持两级和方向渐变(之前想创建个色盘来着,发现这个限制悻悻作罢);可以创建图像给其它模块使用,比如绘制完直接作为 menubar 的状态栏;支持鼠标进入/退出/点击等事件的识别,可以有更多交互类的玩法了,一堆 Geektool 、 Ubersicht 、 Anybar 等去一边歇着吧;一定程度上支持了动画,比如直接把例子里的几行代码复制到终端,就能看到转动的电风扇和波峰图了,没事绘制绘制 CPU 负载、网络流量等也是挺好的事儿;对了,这模块对 hs.drawing 完全向下兼容,老代码不需任何修改,最终是要完全取代 hs.drawing 模块的。
    6. 增加 hs.caffeinate.sessionProperties API 。 hs.caffeinate 可以代替 caffeinate 、 Vatamin 等 app ,新增加的好像是让 Hammerspoon 重载配置也能读取之前状态?
    7. hs.chooser 模块读取被选行内容还有右键鼠标事件,更好看了一点。其实我对 hs.chooser 模块有更大的期待。作为 Hammerspoon 几乎唯一一处支持用户输入的宝贝疙瘩(当然直接调 hs.applescript 模块也能有输入框),只要不局限于单行输入,配合 hs.markdown 模块就能实现 md 文档的实时预览,配合 hs.styledText 模块就能实现 snippet 片段预览和管理。。。当然维护者也在逐渐增强这个模块的功能,目前只能慢慢等。

    以上,就是本次小版本更新我粗看文档后了解到的内容。 不知不觉写的还挺多……也算给自己的一个备忘吧。🐶

    写以上内容的时候,打开官方的 release notes 对照来看。发现又发布了 0.9.52 版本,瞅了一眼,说修复了 hs.chooser 的一处死循环 bug 。 这么说,我昨天费劲半天修复 awesome hammerspoon 的 hsearch 模块,原来是你们的锅?!(๑ó﹏ò๑) 每次按键都潮水般向服务器发送至少 200 次请求,害得我有道词典的 API key 都被封了!

    不管咋样,昨天我最终在 0.9.51 版本下成功让每次按键只发送一次请求。 0.9.52 版本应该也没啥问题(吧?),写完这帖子就去下载。

    最后说下 awesome hammerspoon,当时也是一边看 lua + hammerspoon 文档一边写的。代码可能不规整,但用到现在好像也没啥大 bug (?)。

    目前提供了桌面 widgets 、窗口管理、应用启动、词典/ Safari 搜索、计时器、快捷键 Cheatsheet 、剪贴板读取等功能。反正个人用的还是蛮爽的,针对上次有人提出的自定义快捷键等的问题,也改进了很多。写个小功能模块门槛还是很低的( 100 行左右),期待有人写出更好用的脚本来。

    嗯,先这样。

    第 1 条附言  ·  2016-12-30 23:11:45 +08:00
    把我之前的帖子复制过来吧,免得有些人不知道我在胡言乱语啥 (,,•́ . •̀,,)

    https://www.v2ex.com/t/324303

    45 条回复    2017-01-13 20:24:45 +08:00
    xjbeta
        1
    xjbeta  
       2016-12-30 22:39:33 +08:00
    怎么说呢 高级 == 复杂 == 烦 == 死
    所以说自带的够用了就好
    HuangLibo
        2
    HuangLibo  
       2016-12-30 22:48:55 +08:00
    lua 到 cocoa 的桥接工具? 有什么方便之处, 比原生的代码好吗
    kfll
        3
    kfll  
       2016-12-30 22:57:07 +08:00
    /t/330374

    有人提

    (基本)没人关注
    ashfinal
        4
    ashfinal  
    OP
       2016-12-30 22:59:55 +08:00
    @xjbeta 我配置都给你写好了,就是 awesome hammerspoon ,重启 Hammerspoon 就能用了啊。
    这个帖子是我边看 hs 文档边写的,只是我自己的一个参考。
    是我的错,不该放这里。帖子写完长的我也吓了一跳,然而你也不用管这些。
    ashfinal
        5
    ashfinal  
    OP
       2016-12-30 23:03:47 +08:00
    @HuangLibo 面向最终用户的,不是开发者。
    提供了丰富的 API ,几十到 100 行就能撸个小功能出来。
    ashfinal
        6
    ashfinal  
    OP
       2016-12-30 23:06:01 +08:00
    @kfll 矮油 真不知道你们撸 Alfred 怎么撸那么欢, powerpack 难道不折腾?
    感觉 Hammerspoon 就是缺个分享社区。
    Lonely
        7
    Lonely  
       2016-12-30 23:08:28 +08:00 via iPhone
    用的人肯定知道,不用的人不关心,有必要发个帖刷存在感?
    wc0517
        8
    wc0517  
       2016-12-30 23:16:12 +08:00
    @ashfinal LZ 我用你这个会报错,虽然看上去没什么问题,但是不太爽。话说能不能精简一个只显示左下角网络状态的?本人非程序员研究了一下搞不赢
    ashfinal
        9
    ashfinal  
    OP
       2016-12-30 23:22:22 +08:00
    @wc0517 其它所有功能都不要嘛?额,可以
    在 `~/.hammerspoon/private/awesomeconfig.lua` 路径下新建这个文件。加入以下几行,重启 Hammerspoon 就可以了。

    module_list = {
    "widgets/netspeed",
    }
    ashfinal
        10
    ashfinal  
    OP
       2016-12-30 23:23:10 +08:00
    @Lonely 好吧,是我有点激动了 😳
    wc0517
        11
    wc0517  
       2016-12-30 23:23:23 +08:00
    @ashfinal 我试试哈
    wc0517
        12
    wc0517  
       2016-12-30 23:40:06 +08:00
    @ashfinal 搞定,非常感谢!已 Star !
    Lattez
        13
    Lattez  
       2016-12-30 23:56:29 +08:00
    有个问题就是控制窗口问题的操作,最好检测下 dock 栏,现在的是直接扩展到 dock 后面去了。
    xcv58
        14
    xcv58  
       2016-12-30 23:57:15 +08:00 via iPhone
    我两个都是重度用户, Alfred 真比 Hammerspoon is 好折腾多了。不同的事情看哪个方便用哪个实现。拿着锤子看什么都是钉子真不好。
    ashfinal
        15
    ashfinal  
    OP
       2016-12-31 00:09:45 +08:00
    @Lattez 谢谢反馈。我平时菜单栏和 dock 栏都是默认隐藏的,没注意到这个问题。
    记得 Hammerspoon 文档里貌似有这个选项,我明个看下更新上去。

    @xcv58 Alfred 支持语言很多,还支持可视化编辑,上手难度应该低一些。
    不过感觉 Hammerspoon 貌似功能更多一些?至少挺适合我的…… 各人有各人的菜,适用就好。
    SoloCompany
        16
    SoloCompany  
       2016-12-31 00:24:37 +08:00
    我只关心架构上能不能做到 Karabiner 在 10.11 上那样灵活,我用的最多的主要是组合按键的映射
    如果不行的话,对我来说就没啥大用处
    Tink
        17
    Tink  
       2016-12-31 03:47:21 +08:00 via iPhone
    这是干啥用的
    jedihy
        18
    jedihy  
       2016-12-31 04:31:53 +08:00
    Hammerspoon 重度用户
    @Tink 可以取代你电脑上诸如 moom , keyboard maestro 之类的软件,自己写脚本实现功能。
    xcv58
        19
    xcv58  
       2016-12-31 07:10:52 +08:00 via iPhone
    @SoloCompany 并不行,目前我是用 BetterTouchTool 暂时顶着。
    bao3
        20
    bao3  
       2016-12-31 07:17:41 +08:00 via Android   ❤️ 1
    一个软件,不能普及客制基本只能沦为小众,看完楼主这长帖虽然心疼楼主这辛苦汗水,但是只想说普通用户谁关心这个呢。
    xream
        21
    xream  
       2016-12-31 08:54:36 +08:00
    shuxiao9058
        22
    shuxiao9058  
       2016-12-31 10:39:40 +08:00
    Programmer Dvorak 键盘布局下使用完全乱了,没法用。。。
    yangg
        23
    yangg  
       2016-12-31 11:23:36 +08:00
    不错,很屌
    ashfinal
        24
    ashfinal  
    OP
       2016-12-31 13:40:43 +08:00
    @jedihy
    @Tink
    窗口管理替代 moom 等软件应该是 Hammerspoon 最常见的做法,但其实功能更多。
    比如到达咖啡馆了自动发个信息给基友, 10 点还没回家自动发信息给老婆,在办公室拔出耳机自动静音,做个在线词典翻译, V2EX 自动签到 /新帖查看,帮你自动点程序菜单,绘制漂亮的桌面 widgets 等等。具体取决于你的需求。
    ashfinal
        25
    ashfinal  
    OP
       2016-12-31 14:03:15 +08:00
    @SoloCompany
    @xcv58
    @xream
    Karabiner 没咋用过。实际上是:当时花了两三分钟还没搞明白咋用,转念一想觉得直接修改按键映射也许真的不是个好主意,于是就删了……
    Hammerspoon 引入了场景按键的概念,比如在 Finder 中按 D 键是删除当前文件,按 T 打开终端,在 Safari 中按 D 键是关闭当前 Tab ,按 T 新建 Tab 等等。都是可以实现的。
    但是以上所说的例子在我的配置里并没实现,因为我暂时没有这方面的需求。不过,下图很好的说明了场景按键的潜力:

    能注意到窗口的 resize 和移动都是靠单键完成的。
    ashfinal
        26
    ashfinal  
    OP
       2016-12-31 14:10:43 +08:00
    @shuxiao9058 完全没接触过 Dvorak 键盘,不清楚这个。可以去官方提 issue 。
    Tink
        27
    Tink  
       2016-12-31 14:16:27 +08:00
    看起来很强大
    xcv58
        28
    xcv58  
       2016-12-31 14:20:30 +08:00 via iPhone
    @ashfinal 你没理解 Karabiner 用户的需求。只好说辛苦了。

    但说实话 你说的这些功能我要不就不 care 要不有好得多的方案。
    ashfinal
        29
    ashfinal  
    OP
       2016-12-31 14:37:23 +08:00
    @Lattez 刚打开 dock 和 menubar 栏,没能重现你说的问题……
    建议更新到最新的 0.9.52 ,并终端里执行一次 `cd ~/.hammerspoon && git pull` 再试试看。
    还有问题的话,最好能详细描述下应用程序、详细的操作等细节。
    Lattez
        30
    Lattez  
       2016-12-31 14:39:12 +08:00 via Android
    @ashfinal 不知道。就是扩展到全屏的会这样,不过也没怎么用了
    ashfinal
        31
    ashfinal  
    OP
       2016-12-31 14:41:40 +08:00
    @xcv58 Karabiner 这么多人用,应该是个好软件。有空我再看看,尝试下理解。
    你也可以再多说两句,省得我再去下载安装配置神马的 ●__●
    ashfinal
        32
    ashfinal  
    OP
       2016-12-31 14:58:05 +08:00
    @Lattez 全屏照我的理解,应该是新建了一个 space 。这时候窗口 resize 、 move 等操作应该是不起作用的。
    不排除一些软件使用了非标准的全屏方式,这样窗口操作可能会发生些“意外”。

    @xcv58 可以分享下 Karabiner 配置嘛?
    xcv58
        33
    xcv58  
       2016-12-31 20:18:33 +08:00 via iPhone
    @ashfinal https://github.com/tekezo/Karabiner/issues/660 短期内是用不了的。 https://github.com/tekezo/Karabiner-Elements 是一个还在开发的重新实现。

    这个是我的配置,但基本上没什么意义了 https://github.com/xcv58/Karabiner 而且我只是对 HHKB 做了一点优化。

    不是说 Hammerspoon 不好 但我看来很多功能要不是不如别的工具。要不是用别的实现更优雅。譬如 Karabiner 可以精准地控制 /接受 KeyDown Up Release ,内置的各种 Vi Mode 。 Alfred 的 Workflow HotKey 触发方式也有好几种, Toggle App 更加智能,调用脚本可以很方便地指定解释器。浏览器内快捷键也是类似 基于浏览器的第三方 Vim 模式扩展 无疑更强大好用,我以前用 Windows 时用 AHK 写了一个跨浏览器的 Vim Mode 的实现 但要用快捷键点击链接时就懵逼了,最终还是直接调用浏览器 API 的扩展直接解决问题。

    Hammerspoon 用来做窗口管理 高级的程序切换(一个快捷键对应一组 App ,每次按下会在这组 App 中切换或 Toggle )。但用来做剪切板增强实在有些太复杂 而且我相信很难做得比 Alfred 或 别的专门的剪切板增强工具更好。计时器我更觉得没必要,简单的 Timer Stopwatch 直接 Google 更方便。复杂的有各种番茄工作法的 App 或者直接 Google Calendar 。
    adoyle
        34
    adoyle  
       2016-12-31 21:35:05 +08:00
    感谢推荐!很不错。感觉和 Alfred 可以互补。
    Shared
        35
    Shared  
       2016-12-31 23:17:08 +08:00
    我现在是 Amethyst + Karabiner-Elements 解决了键位和窗口管理,不过看起来 hammerspoon 还有更多有趣的玩法。感谢 @ashfinal 推介,这两天研究一下。
    ashfinal
        36
    ashfinal  
    OP
       2017-01-01 15:03:33 +08:00
    @xcv58 Karibiner 在按键定制方面确实强,譬如 Hammerspoon 目前仍无法识别单按 `Cmd` `Shift` 等辅助键事件,也无法将一个按键映射为另一个按键, KeyDown Up 事件倒是可以识别。

    窗口管理方面我感觉要比收费的 Moom 等软件要强,至少我用的挺顺手。
    桌面 widgets 应该要比 Geektool 、 Ubersicht 等要强一些, Menubar 方面应该要比 Anybar 强一点。
    Hammerspoon 提供的 API 范围还是比较广泛的。

    我这里只是希望有人有空可以尝试下,毕竟多个选择也是挺好的事儿。
    ashfinal
        37
    ashfinal  
    OP
       2017-01-01 15:04:38 +08:00
    @Shared 有什么好的想法或者脚本可以分享一下 ₍⁽⁽(ી( ・◡・ )ʃ)₎₎⁾⁾
    xcv58
        38
    xcv58  
       2017-01-01 21:39:41 +08:00 via iPhone
    @ashfinal 👍
    ashfinal
        39
    ashfinal  
    OP
       2017-01-01 22:25:45 +08:00
    今天被同一个老外提了好几个 issue 。

    有几个小问题我是知道的,但是懒,一直没管。

    现在全被指出来了 …… 😭
    xcv58
        40
    xcv58  
       2017-01-01 23:29:27 +08:00 via iPhone
    @ashfinal 这也是我很多时候不想分享自己用的配置的原因。用得人一多就很麻烦 😄
    ashfinal
        41
    ashfinal  
    OP
       2017-01-02 13:20:28 +08:00
    @xcv58 还行还行,有两个小问题其实我是想解决来着,只是懒癌犯了而已。😓
    毕竟自己也在用这份配置,迟早要动手改的。
    iCyMind
        42
    iCyMind  
       2017-01-03 23:57:41 +08:00
    楼主, 不知道能不能实现这个需求:
    选取鼠标下的单词?

    之所以有这个需求是因为想提高查单词的效率.现在用的欧陆字典, 开鼠标查词的话很烦, 很多时候并不需要查词.
    开划词搜索嘛, 有时候只想复制点东西, 又 tm 弹出翻译窗口来.

    如果能取到光标下的单词就好了: 按某个按键, 取得单词, 然后调用翻译软件的查词快捷键, OK
    thekoc
        43
    thekoc  
       2017-01-04 15:24:23 +08:00
    @xcv58
    @ashfinal
    普通的按键映射是可以实现的,不知道你具体要什么,不想看 xml 。。。
    以下是精简版 Emacs 模式
    https://gist.github.com/thekoc/10f64dfb18f3c466ae79befab9432ec3

    并且可以设置在一些软件中不启动此模式(比如 MacVim 或者 iTerm )。我觉得这个应用还是不错的。
    ashfinal
        44
    ashfinal  
    OP
       2017-01-04 16:24:20 +08:00
    @iCyMind 这个目前貌似没有稳定可靠的方法,只能通过模拟双击鼠标实现。

    感谢 @thekoc 回复。经测试 Hammerspoon 确实是可以把某单键映射为另一个单键的,比如你按下 “ J ”,实际上输入的却是 “ K ”。对看似系统级的按键也可以 override ,比如按下 “ J ”,实际发送 “ cmd + c ” 来完成复制,发送 “ cmd + tab ” 来启动应用切换等 …… 这样貌似 Hammerspoon 就只剩下无法识别单按 “ cmd/ctrl/alt ” 等辅助键事件的缺陷了。

    可以在一些软件中不启动该模式,这我是知道的,免去手动切 modal 的麻烦了。比如 Finder 窗口在最前时自动启动 `Finder` 组情景按键,失去焦点则自动退出该组按键。

    有兴趣的童鞋可以把 Finder 改成你们钟爱的 `vim` 或 `totalcommander` 风格按键。
    @xcv58
    iCyMind
        45
    iCyMind  
       2017-01-13 20:24:45 +08:00
    @ashfinal 楼主, 能帮我看看为什么这段代码没有实现预期的效果吗?

    https://gist.github.com/icymind/064e322b561fd37f58cbb0f42044e400

    我想让当前窗口退出全屏后, 再挪动到左边 /右边

    但是按下快捷键后, 仅仅退出了全屏, 没有挪动窗口
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   930 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 21:36 · PVG 05:36 · LAX 13:36 · JFK 16:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.