推荐一个 MacOS 上用了就无法自拔的神器 [Hammerspoon] - V2EX
2020-07-10 22:21:28 Author: www.v2ex.com(查看原文) 阅读量:589 收藏

这是一个创建于 458 天前的主题,其中的信息可能已经有所发展或是发生改变。

推荐一个 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 分钟的时间 😀⏱

daben1990

2

daben1990   2019-04-09 10:39:15 +08:00

厉害了,

holy_sin

3

holy_sin   2019-04-09 10:42:46 +08:00

有点像 Alfred

Mirage09

4

Mirage09   2019-04-09 10:44:18 +08:00 via iPhone   ❤️ 1

用很久了,根据不同软件自动切换输入法。

easternslope

5

easternslope   2019-04-09 10:46:51 +08:00

@holy_sin Alfred 和 Hammerspoon 都在重度使用,个人使用下来感觉,Alfred 更适合主动触发和查询事件,而 Hammerspoon 更适合定时任务和注册事件回调触发一些自动脚本

fyooo

6

fyooo   2019-04-09 10:47:31 +08:00

收藏+感谢

yangg

7

yangg   2019-04-09 10:53:42 +08:00

想系统休眠时退出 微信不知道能做到么?因为电脑端登录时关了手机端的提醒,导致手机上收不到提醒。

jpdev

9

jpdev   2019-04-09 10:58:46 +08:00 via iPhone

感觉功能很类似一款正准备买的 app,能禁止待机不呢?

lzs5240

12

lzs5240   2019-04-09 11:16:35 +08:00

楼主的 zsh 美化好漂亮, 发一下?

ffkjjj

13

ffkjjj   2019-04-09 11:19:06 +08:00

不错不错

OrangeM21

14

OrangeM21   2019-04-09 11:20:18 +08:00

收藏 感谢

jsondog

15

jsondog   2019-04-09 11:21:37 +08:00

炫酷

Tomorrowxxy

17

Tomorrowxxy   2019-04-09 11:28:27 +08:00   ❤️ 1

好牛逼的样子,我先去买个 mac

yangg

20

yangg   2019-04-09 11:33:20 +08:00

@easternslope 不知道微信怎么退出 ,之前试过结束进程,微信登录不会掉。
tell application "WeChat"
quit
end tell
这个也找不到。

RuiQu

21

RuiQu   2019-04-09 11:33:47 +08:00

哇哦 炫酷青年

youngitachi

22

youngitachi   2019-04-09 11:33:54 +08:00 via Android

看起来不错

scukmh

24

scukmh   2019-04-09 11:35:23 +08:00 via iPhone

刚刚一直想着用 alfred 实现相同的功能,因为不想装两个软件,但好像确实 alfred 不适合做这个。

Hilong

25

Hilong   2019-04-09 11:37:44 +08:00 via Android

之前研究了下,自己写了一点小脚本,感觉发挥不了它的功能,就卸载了,看到楼主的分享,又想搞起来了

easing

26

easing   2019-04-09 11:40:45 +08:00

我其实并不需要这些功能,但我还是点进来赞一下

yangg

28

yangg   2019-04-09 11:43:04 +08:00

osascript -e 'tell application "WeChat" to quit' 用这个可以了,多谢,就是要花好久,不知道能不能行

mosesyou

29

mosesyou   2019-04-09 11:44:14 +08:00

天气怎么切换城市呢,我这里使用你的脚本还是深圳的天气

hhyvs111

30

hhyvs111   2019-04-09 11:44:48 +08:00 via iPhone

不错,马克了

easternslope

31

easternslope   2019-04-09 11:45:13 +08:00 via Android

@mosesyou 不用切换,api 根据请求的 ip 地址自动识别城市,你 curl 试试~

thet

32

thet   2019-04-09 11:48:59 +08:00 via Android

看起来不错 回头试试看

sunocean

33

sunocean   2019-04-09 11:51:03 +08:00 via iPhone

楼主我能转载到我的博客吗?

sunocean

34

sunocean   2019-04-09 11:52:41 +08:00 via iPhone

话说楼主录屏用的什么软件啊?

easternslope

35

easternslope   2019-04-09 12:01:17 +08:00 via Android

@scukmh 之前和你也有同样的困惑,但是后来发现 Alfred + Hammersoon 一起才是双剑合璧

lishv2

36

lishv2   2019-04-09 12:47:23 +08:00

插眼

ATiGr

38

ATiGr   2019-04-09 13:16:38 +08:00 via iPhone

很早以前就发现了这个神器,然而因为自己太菜鸡,没有写出来什么有用的东西,不得不放弃…… 看到 LZ …… 膜拜一下

gkiwi

39

gkiwi   2019-04-09 13:19:36 +08:00

已经用起来了,楼主 clipboard 就是我最想要的~3ks !

18k

40

18k   2019-04-09 13:34:37 +08:00

现在在用

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

LZ 这个一个打十个。。。

hihikm

41

hihikm   2019-04-09 13:44:35 +08:00 via Android

确实方便

cxtrinityy

43

cxtrinityy   2019-04-09 13:44:50 +08:00

买了一个显示器后,写了几个脚本,外接屏的时候快速拖屏到另外一个屏幕,鼠标快速屏幕切换和外屏分辨率切换

magic3584

45

magic3584   2019-04-09 13:47:21 +08:00

貌似类似 bitbar ? 不过这得用 lua 吗?

easternslope

46

easternslope   2019-04-09 13:50:13 +08:00

@magic3584

1. 可以实现 bitbar 的全部功能,得用 lua 来写插件,
2. 但是别担心,lua 的语法很简单,很值得一试,你可以先用我的配置,慢慢改
3. 我也是刚开始写 lua

cxtrinityy

47

cxtrinityy   2019-04-09 13:55:41 +08:00

@easternslope 没有,mac 的,自己 xjb 写的,看了下官方文档折腾几下就出来了,写的时候还不知道是 lua,后来工作的时候用到 lua 才发现

kwGao

48

kwGao   2019-04-09 14:41:07 +08:00

@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

49

tyhunter   2019-04-09 14:51:15 +08:00

准备试试,好像能解决一个痛点:
合盖睡眠后自动退出 Mac 微信,这样手机就会恢复推送

Heavytiger

54

Heavytiger   2019-04-09 15:22:45 +08:00

这个真心不错。

loading

55

loading   2019-04-09 15:26:04 +08:00 via Android

似乎很不错,有时间看看。

byasm32

56

byasm32   2019-04-09 15:26:18 +08:00

看起来很强大的样子,研究研究。。

dullwit

59

dullwit   2019-04-09 15:43:06 +08:00

有获取当前时间的 api 吗?

crbee

62

crbee   2019-04-09 15:53:08 +08:00

插眼

QMore

65

QMore   2019-04-09 16:02:43 +08:00

很方便的样子,这有点类似于 iOS 上的捷径吧。

goodryb

66

goodryb   2019-04-09 16:23:46 +08:00

天气 Mac 就自带了,剪切板还是 alfred 比较厉害,支持文件和图片

这个拿来做一些自动化或者事件触发脚本比较有用,比如来公司连上 WiFi 后就静音

freeznet

67

freeznet   2019-04-09 16:37:17 +08:00

插眼感谢

hubahuba

68

hubahuba   2019-04-09 16:41:00 +08:00

插眼感谢

Ginray

69

Ginray   2019-04-09 16:42:47 +08:00

马……马来人.jpg

allonli

70

allonli   2019-04-09 16:50:28 +08:00

会玩,zsh 主题效果真不错。

godgc

72

godgc   2019-04-09 16:55:01 +08:00

这个确实不错,定制化很强

cheeto

73

cheeto   2019-04-09 16:56:00 +08:00

装完这个 zsh 之后我的 terminal 就挂掉了,现在正在疯狂 google 如何恢复 terminal

easternslope

75

easternslope   2019-04-09 16:59:02 +08:00

@cheeto 别慌兄弟,里面有很多我使用第三方插件,你把 ~/.zshrc 里面你不需要的功能删掉就行,如果只是对主题配色感兴趣的话,可以参考我的方案

kylix

76

kylix   2019-04-09 17:02:08 +08:00

首先,得有一台 mac

hackpro

77

hackpro   2019-04-09 17:02:56 +08:00

Python 撸个脚本配合 Alfred Workflow 爽歪歪

allonli

78

allonli   2019-04-09 17:06:24 +08:00

@cheeto 哪个插件报错就安装哪个。全装完改一下 nerd 字体就 ok 了

missdeer

79

missdeer   2019-04-09 17:11:49 +08:00

感谢推荐

tyhunter

82

tyhunter   2019-04-09 17:30:13 +08:00

@easternslope #53 感谢,我看下,如果手机也开启推送的话,两个地方的推送一起过来,会把其他推送都给淹没了

leesymbol

83

leesymbol   2019-04-09 17:40:19 +08:00

不错 收藏了

Yien

84

Yien   2019-04-09 17:45:52 +08:00 via iPhone

赞👍感谢分享

iiusky

85

iiusky   2019-04-09 17:59:19 +08:00

玩玩看

Wicked

88

Wicked   2019-04-09 18:11:46 +08:00 via iPhone

看起来不错

fazero

89

fazero   2019-04-09 18:49:29 +08:00

感谢,那个输入切换正需要

swsh007

91

swsh007   2019-04-09 19:29:47 +08:00 via Android

用这个有送 mac ?

haon

95

haon   2019-04-09 21:24:00 +08:00

借楼问一下 macos 能不能实现同一时刻只有一个声音播放?例如听语音时自动停止播放音乐

gouflv

96

gouflv   2019-04-09 21:25:42 +08:00 via Android

做窗口管理真的很棒,完全能根据自己的需求实现,比记住一堆快捷键舒服多了

entimm

97

entimm   2019-04-09 21:26:05 +08:00 via Android

能不能搞个看股票的插件

Mirage09

98

Mirage09   2019-04-09 21:39:21 +08:00 via iPhone

@btv2bt Mac 自带那个完全搞不懂怎么触发,简直是玄学。


文章来源: https://www.v2ex.com/t/553241?p=1
如有侵权请联系:admin#unsafe.sh