Hammerspoon hs.application:kill() 不可调用

Hammerspoon hs.application:kill() not callable

试图让 Hammerspoon 在 OS X 打开时退出(杀死)音乐应用程序。 (Apple 安装此应用程序的方式使其很难更改,并且只要连接蓝牙设备就会启动。基本上是烦人的过时软件。)所以,我从 Hammerspoon“入门”页面抄袭了这个 https://www.hammerspoon.org/go/...

function applicationWatcher(appName, eventType, appObject)
  if (eventType == hs.application.watcher.launched) then
    if (appName == "Music") then
      hs.application:kill()
    end
  end
end
appWatcher = hs.application.watcher.new(applicationWatcher)
appWatcher:start()

这正确地响应了正在启动的音乐应用程序,但它像这样出错...ERROR: LuaSkin: hs.application.watcher callback: /Users/seancamden/.hammerspoon/init.lua:142: method 'kill' is not callable (a nil value)

如何使这个方法可调用?或者,正确的做法是什么?

https://www.hammerspoon.org/docs/hs.application.watcher.html https://www.hammerspoon.org/docs/hs.application.html#kill

你的代码基本正确,只有一处错误。您使用了全局模块 hs.application 并试图从中调用对象方法 :kill()。您必须首先实例化一个新对象才能调用它的 kill 方法。例如:hs.application.get(appName):kill().

但是,watcher 已经为您提供了调用该函数的应用程序对象 appObject。所以 appObject:kill() 就是你要找的。

function applicationWatcher(appName, eventType, appObject)
  if (eventType == hs.application.watcher.launched) then
    if (appName == "Music") then
      appObject:kill()
    end
  end
end

appWatcher = hs.application.watcher.new(applicationWatcher)
appWatcher:start()

此处在 MacOS BigSur 上测试