利用Hammerspoon做些自动化

之前知道Hammerspoon,但没玩过,最近看了下,试着写了些脚本,觉得有点意思,这里Mark下

以下我用hs来代指hammerspoon

小工具制作

实现功能

  1. 系统自动静音
  2. MVN切换设定

上代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
-- audio mute 
-- change mvn setting

local workWifi = 'company-wifi'
local outputDeviceName = 'Built-in Output'
hs.wifi.watcher.new(function()
local currentWifi = hs.wifi.currentNetwork()
local currentOutput = hs.audiodevice.current(false)
if not currentWifi then return end
if (currentWifi == workWifi and currentOutput.name == outputDeviceName) then
hs.audiodevice.findDeviceByName(outputDeviceName):setOutputMuted(true)

local changeMvnCommand="ln -sfn ~/.m2/settings_company.xml ~/.m2/settings.xml"
hs.execute(shell_command)

hs.notify.new({title="HS Robot", informativeText="Connect to Company"}):send()

end
end):start()

与Alfred的不同

  • Alfred是提供固定的交互方式,比如关键词,比如快捷键来实现一些功能,从而提高生产力。
  • hs是以Lua语言为口子,基于Mac系统的底层API封装一套API来帮助我们实现一些功能,比如上述的监听WI-FI变化,执行shellm命令,或者实现分屏等,这些是alfred所做不到的。
  • Alfred与hs实际上可以做到互补,作为自动化,效率化的两款神器。

参考文档

这种简单工具使用,没有什么比官网更合适的资料了。