Hammerspoon:正在使用的过滤器应用程序

时间:2019-01-22 09:42:14

标签: macos filter lua hammerspoon

我绑定了一些密钥来执行脚本。我只需要在Visual Studio Code窗口聚焦时才能激活绑定。

我看到了Hammerspoon过滤器的功能,但我不知道该如何使用。

应用程序名称:Code

hs.hotkey.bind({"ctrl"}, "b", function()
    local codeWindowFilter = hs.window.filter:setAppFilter('Code')
    codeWindowFilter:isAppAllowed("Code", function()

        mycode here

    end)
end)

但出现错误attempt to call a nil value (method 'setAppFilter')

这是正确的方法吗? 有没有办法将所有绑定放入批准的过滤器中?

提前打招呼

3 个答案:

答案 0 :(得分:0)

根据此处的文档(http://www.hammerspoon.org/docs/hs.window.filter.html):

您需要遵循以下结构:

local wf=hs.window.filter
wf.default:setAppFilter('My IDE',{allowTitles=1})

OR

创建一个新的窗口过滤器,如下所述:

  

虽然您可以自定义默认的windowfilter,但通常建议通过mywf = hs.window.filter.new()在本地副本上进行自定义。默认的windowfilter可能会在多个Hammerspoon模块中使用,更改它可能会带来意想不到的后果...

因此,将您的代码更改为:

local codeWindowFilter = hs.window.filter.new():setAppFilter('Code')

.new()方法创建一个新的窗口过滤器。 :setAppFilter在新对象上调用一个方法,然后返回修改后的窗口过滤器对象。

答案 1 :(得分:0)

最终的解决方案是:

local frontmostApplication = hs.application.frontmostApplication()

if frontmostApplication and frontmostApplication:name() == "Code" then

   {my code here}

end

答案 2 :(得分:0)

您可以像这样过滤应用

RecyclerView.