【问题标题】:Always-on-top window and keeping focus, on AwesomeWM在 AwesomeWM 上始终位于顶部的窗口并保持焦点
【发布时间】:2015-04-19 23:48:24
【问题描述】:

我正在运行一个创建和关闭多个窗口的脚本,因此,我在我的 rc.lua 中添加了一种方法来保持我正在工作的窗口始终位于顶部:

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

问题是:新窗口创建时,我失去了焦点,传递到新窗口。

有没有办法使之前的切换不仅使窗口保持在顶部,而且在我再次切换之前保持焦点?

【问题讨论】:

  • 以防万一:我的解决方法是为该程序设置一个规则以在特定标签上打开......但我真的想要一个切换来将我的窗口固定在其他所有内容之上,而不是当其他窗口出现时失去焦点。
  • 是否有任何新窗口打开切换焦点或仅来自此应用程序/脚本的窗口?
  • 任何窗口,但弹出窗口并不常见,仅使用此脚本。
  • this discussion 有帮助吗?
  • 嗯,不是真的。我可以完全避免焦点样式,但对我来说,它通常是一个功能(如果你打开一个新程序,焦点会转到它的窗口),我要求的是一种切换它的方法,所以如果我有一些东西正在创建疯狂的新窗口,正如我提到的这个脚本,我可以暂时关闭焦点样式。

标签: lua awesome-wm


【解决方案1】:

假设this awesomerc.lua file 的第357-375 行的awful.rules.rules 分配在您用户的awesomerc.lua 文件中,并且该分配中使用的awful.client.focus.filter 是来自this file 的分配,那么您应该能够做一些事情像这样。

在 rc 文件中的某处定义自定义焦点过滤器函数。

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

然后在规则分配中使用该自定义过滤器功能代替原始过滤器功能。

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

然后您的切换功能只需要根据需要设置和取消设置全局。

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

【讨论】:

  • 太棒了!有效。谢谢! (是的,我完全没有理解你的意思,对此感到抱歉)
猜你喜欢
  • 2019-09-16
  • 1970-01-01
  • 2015-02-08
  • 2018-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-23
相关资源
最近更新 更多