• 请不要在回答技术问题时复制粘贴 AI 生成的内容
easternslope
V2EX  ›  程序员

推荐一个 MacOS 上用了就无法自拔的神器 [Hammerspoon]

  easternslope ·
wangshub · Apr 9, 2019 · 38339 views
This topic created in 2766 days ago, the information mentioned may be changed or developed.

推荐一个 MacOS 上用了就无法自拔的 App

Hammerspoon!

Hammerspoon 是 MacOS 上的自动化工具,许多介绍 Hammerspoon 的文章都主要介绍了它是一个窗口管理工具,但是 Hammerspoon 能做到的远远不仅如此。

Hammerspoon 开源、免费和支持插件,将大多数系统层面的接口封装成了 Lua API,这就让这把小锤子在 MacOS 上近乎无所不能,可玩性极高。

我都用 Hammerspoon 做了些什么?

  • 菜单栏显示最近几天天气情况
    • 参考示例
    • 请求免费的天气 API,在深圳这个多雨的城市里提醒我别忘记带伞。
  • 剪切板历史记录

    • 参考示例
    • 记录剪贴板历史,点击某一项再重新复制。
  • 音量调节快捷键

    • 参考示例

    • 当我使用外接键盘时,自定义快捷键 cmd + up/down 调节系统音量

  • 窗口管理

    • 参考示例
    • 快捷键实现二分屏、三分屏和全屏
  • Wi-Fi 自动脚本

    • 参考示例
    • 根据 Wi-Fi SSID 判断是否在公司还是在家,例如在家里自动挂载 NAS 服务器,如果在公司 sshfs 挂载服务器目录等。
  • 蓝牙耳机自动连接

  • 输入法自动切换

    • 参考示例
    • 在每个 App 界面自动切换成搜狗输入法,配合搜狗输入法自动中英文切换,再也不用在系统默认的英文输入法和搜狗输入法之间来回切换了。
  • 定时自动提交代码

    • 参考示例
    • 使用 hs.timer 定时器,定时自动推送我的笔记和下载的电子书到 Github 仓库。
  • USB 设备连接记录

    • 参考示例
    • 记录插上你电脑的每一个 USB 设备信息,凡插过必留记录。
  • 消息推送

  • TTS 发声

    • 参考示例
    • 调用 say hello world 合成 TTS,模拟真人发音,让 Mac 会说话。
  • 更多... (完全停不下来啊)

其他插件思路

  • 番茄钟
  • 应用搜索
  • 桌面小部件
  • ...

使用入门

Hammerspoon 已经将与 MacOS 之间的系统交互封装成了 Lua 的 API,配置 ~/.hammerspoon/init.lua 脚本可以与系统进行交互,只需要了解一些基本的 Lua 语法,就可以 Happy Hacking 了。

我的参考配置

如果你懒得配置,可以参考我的配置,

wangshub/hammerspoon-config

最后

已经完全停不下来了,Hammerspoon 每天至少省下了 30 分钟的时间 😀⏱

156 replies  •  2019-11-28 17:08:54 +08:00
1  2  
❮ ❯
bingoAI
bingoAI
Apr 9, 2019
1
看起来不错
daben1990
daben1990
Apr 9, 2019
2
厉害了,
holy_sin
holy_sin
Apr 9, 2019
3
有点像 Alfred
NVDA
NVDA
Apr 9, 2019 via iPhone❤️1
4
用很久了,根据不同软件自动切换输入法。
easternslope
easternslope
OP
Apr 9, 2019
5
@holy_sin Alfred 和 Hammerspoon 都在重度使用,个人使用下来感觉,Alfred 更适合主动触发和查询事件,而 Hammerspoon 更适合定时任务和注册事件回调触发一些自动脚本
fyooo
fyooo
Apr 9, 2019
6
收藏+感谢
yangg
yangg
Apr 9, 2019
7
想系统休眠时退出 微信不知道能做到么?因为电脑端登录时关了手机端的提醒,导致手机上收不到提醒。
easternslope
easternslope
OP
Apr 9, 2019
8
@yangg

当然可以

参考我这段代码 https://github.com/wangshub/hammerspoon-config/tree/master/headphone

休眠或者锁屏状态自动退出和启动应用
jpdev
jpdev
Apr 9, 2019 via iPhone
9
感觉功能很类似一款正准备买的 app,能禁止待机不呢?
FunnyCodingXu
FunnyCodingXu
Apr 9, 2019
10
看起来不错
easternslope
easternslope
OP
Apr 9, 2019
11
@jpdev 哈哈,可以禁止待机,参考官方文档的这里 https://www.hammerspoon.org/docs/hs.caffeinate.html
lzs5240
lzs5240
Apr 9, 2019
12
楼主的 zsh 美化好漂亮, 发一下?
ffkjjj
ffkjjj
Apr 9, 2019
13
不错不错
OrangeM21
OrangeM21
Apr 9, 2019
14
收藏 感谢
jsondog
jsondog
Apr 9, 2019
15
炫酷
MuscleOf2016
MuscleOf2016
Apr 9, 2019
16
那么 win 上有类似的吗
usdf
usdf
Apr 9, 2019❤️1
17
好牛逼的样子,我先去买个 mac
easternslope
easternslope
OP
Apr 9, 2019
18
@lzs5240 满足你! 刚开源了 https://github.com/wangshub/dotfile
easternslope
easternslope
OP
Apr 9, 2019
19
@Tomorrowxxy 我在这儿等你
yangg
yangg
Apr 9, 2019
20
@easternslope 不知道微信怎么退出 ,之前试过结束进程,微信登录不会掉。
tell application "WeChat"
quit
end tell
这个也找不到。
RuiQu
RuiQu
Apr 9, 2019
21
哇哦 炫酷青年
youngitachi
youngitachi
Apr 9, 2019 via Android
22
看起来不错
sarlanori
sarlanori
Apr 9, 2019❤️1
23
@MuscleOf2016 AutoHotkey 吧
scukmh
scukmh
Apr 9, 2019 via iPhone
24
刚刚一直想着用 alfred 实现相同的功能,因为不想装两个软件,但好像确实 alfred 不适合做这个。
Hilong
Hilong
Apr 9, 2019 via Android
25
之前研究了下,自己写了一点小脚本,感觉发挥不了它的功能,就卸载了,看到楼主的分享,又想搞起来了
easing
easing
Apr 9, 2019
26
我其实并不需要这些功能,但我还是点进来赞一下
easternslope
easternslope
OP
Apr 9, 2019 via Android
27
@yangg
有两种方式都可以
1. hammerspoon 应用管理 api https://www.hammerspoon.org/docs/hs.application.html

2. hanmerspoon 去调用 applescript,再 applescript 里面调用 shell
yangg
yangg
Apr 9, 2019
28
osascript -e 'tell application "WeChat" to quit' 用这个可以了,多谢,就是要花好久,不知道能不能行
mosesyou
mosesyou
Apr 9, 2019
29
天气怎么切换城市呢,我这里使用你的脚本还是深圳的天气
hhyvs111
hhyvs111
Apr 9, 2019 via iPhone
30
不错,马克了
easternslope
easternslope
OP
Apr 9, 2019 via Android
31
@mosesyou 不用切换,api 根据请求的 ip 地址自动识别城市,你 curl 试试~
thet
thet
Apr 9, 2019 via Android
32
看起来不错 回头试试看
sunocean
sunocean
Apr 9, 2019 via iPhone
33
楼主我能转载到我的博客吗?
sunocean
sunocean
Apr 9, 2019 via iPhone
34
话说楼主录屏用的什么软件啊?
easternslope
easternslope
OP
Apr 9, 2019 via Android
35
@scukmh 之前和你也有同样的困惑,但是后来发现 Alfred + Hammersoon 一起才是双剑合璧
lishv2
lishv2
Apr 9, 2019
36
插眼
goodryb
goodryb
Apr 9, 2019
37
@sunocean #34 应该是自带的 QuickTime 吧
ATiGr
ATiGr
Apr 9, 2019 via iPhone
38
很早以前就发现了这个神器,然而因为自己太菜鸡,没有写出来什么有用的东西,不得不放弃…… 看到 LZ …… 膜拜一下
gkiwi
gkiwi
Apr 9, 2019
39
已经用起来了,楼主 clipboard 就是我最想要的~3ks !
18k
18k
Apr 9, 2019
40
现在在用

Alfred 的 clipboard 管剪切板
manico 管窗口
万年历做日历和天气
滴答做番茄

LZ 这个一个打十个。。。
hihikm
hihikm
Apr 9, 2019 via Android
41
确实方便
easternslope
easternslope
OP
Apr 9, 2019
42
@18k 哈哈哈,习惯用脚本解决问题了 😂
cxtrinityy
cxtrinityy
Apr 9, 2019
43
买了一个显示器后,写了几个脚本,外接屏的时候快速拖屏到另外一个屏幕,鼠标快速屏幕切换和外屏分辨率切换
rrubick
rrubick
Apr 9, 2019
45
貌似类似 bitbar ? 不过这得用 lua 吗?
easternslope
easternslope
OP
Apr 9, 2019
46
@magic3584

1. 可以实现 bitbar 的全部功能,得用 lua 来写插件,
2. 但是别担心,lua 的语法很简单,很值得一试,你可以先用我的配置,慢慢改
3. 我也是刚开始写 lua
cxtrinityy
cxtrinityy
Apr 9, 2019
47
@easternslope 没有,mac 的,自己 xjb 写的,看了下官方文档折腾几下就出来了,写的时候还不知道是 lua,后来工作的时候用到 lua 才发现
kwGao
kwGao
Apr 9, 2019
48
@easternslope 大神,我执行你给的 zsh 主题之后,zsh 报这个错误:
/Users/gao/.zshrc:source:28: no such file or directory: /Users/kaboom/.oh-my-zsh/oh-my-zsh.sh
ERROR: Can't find Ruby library file or shared library colorls
/Users/gao/.zshrc:source:33: no such file or directory: /tab_complete.sh
/Users/gao/.zshrc:source:51: no such file or directory: /usr/local/share/zsh-autosuggestions/zsh-autosuggestions.zsh
/Users/gao/.zshrc:source:53: no such file or directory: /usr/local/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
/Users/gao/.zshrc:77: command not found: pyenv
/Users/gao/.zshrc:78: command not found: pyenv
/Users/gao/.zshrc:80: command not found: fortune
这还有治不~
tyhunter
tyhunter
Apr 9, 2019
49
准备试试,好像能解决一个痛点:
合盖睡眠后自动退出 Mac 微信,这样手机就会恢复推送
RockPoetTodd
RockPoetTodd
Apr 9, 2019
50
不错 收藏了
easternslope
easternslope
OP
Apr 9, 2019
51
@kwGao 这个和本主题无关,你在 https://github.com/wangshub/dotfile/issues 开个 Issue 吧 ~
Akikiki
Akikiki
Apr 9, 2019
52
@kwGao。。。。 咱俩一样的问题
easternslope
easternslope
OP
Apr 9, 2019
53
@tyhunter
- 这个倒是可以在 Hammerspoon 里面检测屏幕状态实现,参考 https://github.com/wangshub/hammerspoon-config/blob/master/headphone/headphone.lua

- 不过这个痛点我没注意,手机电脑同时登陆,微信里关闭手机静音,应该可以同时收到推送呀
Heavytiger
Heavytiger
Apr 9, 2019
54
这个真心不错。
loading
loading
Apr 9, 2019 via Android
55
似乎很不错,有时间看看。
byasm32
byasm32
Apr 9, 2019
56
看起来很强大的样子,研究研究。。
blacklee
blacklee
Apr 9, 2019
57
感谢分享。我造了一个显示 AQI 的菜单栏轮子。

https://gist.github.com/blacklee/7425b1f7b3e16acbfa9d1bbf04bdea28
ultimate010
ultimate010
Apr 9, 2019
58
非常好用,顺便安利下一个好的 repo https://github.com/ashfinal/awesome-hammerspoon
dullwit
dullwit
Apr 9, 2019
59
有获取当前时间的 api 吗?
oops0119
oops0119
Apr 9, 2019
60
有点心动~
easternslope
easternslope
OP
Apr 9, 2019❤️1
61
crbee
crbee
Apr 9, 2019
62
插眼
stevenhawking
stevenhawking
Apr 9, 2019
63
没有女朋友的你多 30 分钟有什么用
fsafdasfsdafsd
fsafdasfsdafsd
Apr 9, 2019
64
@stevenhawking
扎心了
QMore
QMore
Apr 9, 2019
65
很方便的样子,这有点类似于 iOS 上的捷径吧。
goodryb
goodryb
Apr 9, 2019
66
天气 Mac 就自带了,剪切板还是 alfred 比较厉害,支持文件和图片

这个拿来做一些自动化或者事件触发脚本比较有用,比如来公司连上 WiFi 后就静音
freeznet
freeznet
Apr 9, 2019
67
插眼感谢
hubahuba
hubahuba
Apr 9, 2019
68
插眼感谢
Ginray
Ginray
Apr 9, 2019
69
马……马来人.jpg
allonli
allonli
Apr 9, 2019
70
会玩,zsh 主题效果真不错。
lzs5240
lzs5240
Apr 9, 2019
71
@easternslope
字体好像安装有点问题, 所有图标全是 ?
是这个没安装好吗?
https://github.com/gabrielelana/awesome-terminal-fonts

安装说明安装了还是没弄好
godgc
godgc
Apr 9, 2019
72
这个确实不错,定制化很强
cheeto
cheeto
Apr 9, 2019
73
装完这个 zsh 之后我的 terminal 就挂掉了,现在正在疯狂 google 如何恢复 terminal
easternslope
easternslope
OP
Apr 9, 2019❤️1
74
@lzs5240 配置 iterm 字体 Preference>profiles>Text>font

我的配置截图见

https://raw.githubusercontent.com/wangshub/image-hosting/master/img/20190409165546.png
easternslope
easternslope
OP
Apr 9, 2019
75
@cheeto 别慌兄弟,里面有很多我使用第三方插件,你把 ~/.zshrc 里面你不需要的功能删掉就行,如果只是对主题配色感兴趣的话,可以参考我的方案
kylix
kylix
Apr 9, 2019
76
首先,得有一台 mac
hackpro
hackpro
Apr 9, 2019
77
Python 撸个脚本配合 Alfred Workflow 爽歪歪
allonli
allonli
Apr 9, 2019
78
@cheeto 哪个插件报错就安装哪个。全装完改一下 nerd 字体就 ok 了
missdeer
missdeer
Apr 9, 2019
79
感谢推荐
easternslope
easternslope
OP
Apr 9, 2019
80
@hackpro Alfred + Hammerspoon 一起用才是爽,哈哈,俩个正好互补
lzs5240
lzs5240
Apr 9, 2019
81
@easternslope
安装你这个字体后搞定了,多谢
tyhunter
tyhunter
Apr 9, 2019
82
@easternslope #53 感谢,我看下,如果手机也开启推送的话,两个地方的推送一起过来,会把其他推送都给淹没了
leesymbol
leesymbol
Apr 9, 2019
83
不错 收藏了
Yien
Yien
Apr 9, 2019 via iPhone
84
赞👍感谢分享
iiusky
iiusky
Apr 9, 2019
85
玩玩看
btv2bt
btv2bt
Apr 9, 2019
86
@Mirage09 这个功能 Mac 自带呀
ruolis
ruolis
Apr 9, 2019
87
不错不错
Wicked
Wicked
Apr 9, 2019 via iPhone
88
看起来不错
fazero
fazero
Apr 9, 2019
89
感谢,那个输入切换正需要
rafa
rafa
Apr 9, 2019
90
标记一下,回家试试
whkvf
whkvf
Apr 9, 2019 via Android
91
用这个有送 mac ?
easternslope
easternslope
OP
Apr 9, 2019
92
@swsh007 送你 5 元优惠券一张 🍺
yuthelloworld
yuthelloworld
Apr 9, 2019 via Android
93
马克
OfJCQ35M0N9ZD98T
OfJCQ35M0N9ZD98T
Apr 9, 2019
94
Hammerspoon 下载好难
haon
haon
Apr 9, 2019
95
借楼问一下 macos 能不能实现同一时刻只有一个声音播放?例如听语音时自动停止播放音乐
gouflv
gouflv
Apr 9, 2019 via Android
96
做窗口管理真的很棒,完全能根据自己的需求实现,比记住一堆快捷键舒服多了
entimm
entimm
Apr 9, 2019 via Android
97
能不能搞个看股票的插件
NVDA
NVDA
Apr 9, 2019 via iPhone
98
@btv2bt Mac 自带那个完全搞不懂怎么触发,简直是玄学。
scukmh
scukmh
Apr 9, 2019
99
@yuanmiexinghai 没梯子嘛?不是挺方便的嘛?下个 zip 包,解压,拖进去就完事了。
OfJCQ35M0N9ZD98T
OfJCQ35M0N9ZD98T
Apr 9, 2019
100
@scukmh 主要就是没梯子。
1  2  
❮ ❯
About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1436 Online   Highest 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 141ms · UTC 22:43 · PVG 06:43 · LAX 14:43 · JFK 17:43
♥ Do have faith in what you're doing.