Always-on-top window and keeping focus, on AwesomeWM

孤人 提交于 2019-12-12 10:58:12

问题


I am running a script which creates and closes several windows, hence, I added to my rc.lua a way to keep the window where I am working always on top:

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

The problem is:when the new window is created, I lose the focus, which passes to the new window.

Is there a way to make that the previous toggle not only keep the window on top, but also with the focus until I toggle it again?


回答1:


Assuming the awful.rules.rules assignment from lines 357-375 of this awesomerc.lua file are in your user's awesomerc.lua file and the awful.client.focus.filter used in that assignment is the one from this file then you should be able to do something like this.

Define a custom focus filter function somewhere in your rc file.

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

Then use that custom filter function in the rules assignment in place of the original filter function.

awful.rules.rules = {
    -- All clients will match this rule.
    { rule = { },
      properties = { ....
                     focus = custom_focus_filter,
                     .... } },

And then your toggle function just needs to set and unset the global as appropriate.

awful.key({ modkey, "Shift" }, "f", function ()
    global_focus_disable = not global_focus_disable
end)


来源:https://stackoverflow.com/questions/29681677/always-on-top-window-and-keeping-focus-on-awesomewm

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!