始终置顶窗口并保持焦点,关于AwesomeWM

我正在运行一个脚本,它创建和关闭了几个窗口,因此,我在我的rc.lua中添加了一种方式,使得我正在工作的窗口始终处于顶部:

awful.key({ modkey, "Control" }, "space",
function(c)
  awful.client.floating.toggle()
  c.ontop = not c.ontop
end),

问题是:当新窗口创建时,我失去了焦点,焦点转移到了新窗口。

有没有办法让前面的切换不仅让窗口保持在顶部,而且还要保持焦点,直到我再次切换它?

点赞
用户258523
用户258523

假设你的用户awesomerc.lua文件中有来自此awesomerc.lua文件的第357-375行awful.rules.rules分配,并且该分配中使用的awful.client.focus.filter是来自此文件的过滤器,那么你应该可以做到这一点。

在您的rc文件的某个位置定义一个自定义focus过滤器函数。

function custom_focus_filter(c)
    if global_focus_disable then
        return nil
    end
    return awful.client.focus.filter(c)
end

然后在规则分配中使用该自定义过滤器函数来替换原始过滤器函数。

awful.rules.rules = {
    -- 所有客户端都将匹配此规则。
    { rule = { },
      properties = { ....
                     focus = custom_focus_filter,
                     .... } },

然后您的切换功能只需要适当地设置和取消设置全局变量。

awful.key({ modkey, "Shift" }, "f", function ()
    global_focus_disable = not global_focus_disable
end)
2015-04-19 15:48:24