如何禁止任何应用程序窃取 Awesome WM 焦点?

如何禁止任何应用程序窃取 Awesome WM 焦点?

似乎任何新窗口都会默认获得焦点,这很好。然而,某些应用程序有时会抢走焦点。例如,JetBrains IDEA 在启动过程中会多次执行此操作。是否可以避免这种焦点窃取?

答案1

为了防止程序窃取 Awesome WM 中的焦点,请将此行添加到您的 rc.lua 中:

awful.ewmh.add_activate_filter(function() return false end, "ewmh")
awful.ewmh.add_activate_filter(function() return false end, "rules")

第一行添加一个过滤器,拒绝已打开的程序发出的任何请求以“窃取”焦点(这些请求具有上下文“ewmh”)。

第二行添加一个过滤器,以防止新打开的应用程序窃取焦点(上下文“规则”)。

请参阅的文档add_activate_filter了解更多信息。

顶部的行相当于以下代码(但更简洁):

function filter_activation(c, context, hints)
    if context == 'ewmh' or context == 'rules' then
        return false
    else
        return true
    end
 end
 awful.ewmh.add_activate_filter(filter_activation)
 

答案2

来自API文档
为什么新客户默认是紧急的?

您可以通过在 rc.lua 中重新定义 bad.ewmh.activate(c) 来更改此设置。如果您不希望默认情况下新客户很紧急,请将其放入您的 rc.lua 中:

client.disconnect_signal("request::activate", awful.ewmh.activate)
function awful.ewmh.activate(c)
    if c:isvisible() then
        client.focus = c
        c:raise()
    end
end
client.connect_signal("request::activate", awful.ewmh.activate)

相关内容