如何将已经启动的客户端刚打开的新窗口自动移动到标签?

如何将已经启动的客户端刚打开的新窗口自动移动到标签?

在 tag1 上启动 Firefox 的规则已经困扰了我很长时间:

{ rule = { class = "Firefox" },
  properties = { tag = tags[1][1] }},

现在,使用 Firefox 20 可以打开新的私人浏览会话,同时将其他会话保留在其原始窗口中。

我的规则如下:

{ rule = { name = "Private Browsing - Mozilla Firefox (Private Browsing)" },
      properties = { tag = tags[1][9] }},

我已经注释掉了我的第一条规则,在其中一个标签上启动了 Firefox,但是当我在 Firefox 中按下 CTRL+SHIFT+P 时,新窗口仍然会在原始窗口所在的标签上打开。

经过一些测试,我认为这种行为的原因就是我在问题标题中指出的。Firefox 没有什么特别之处,这是版本 20 中引入的新功能:它们只是带有一些不匹配的 WM_CLASS(STRING) 和 WM_NAME(STRING) 标识符的窗口。

答案1

您的规则将不起作用,因为在启动 PrivateBrowser 时,它的名称是“Mozilla Firefox”。Awesome 的规则在 awesome(重新)启动或出现新客户端时起作用。如果出现客户端,规则将在此客户端上不起作用(直到您重新启动 awesome)。

但你有一个可能性:客户信号

代码:

-- connect a signal on new client appears
client.connect_signal("manage",function(c,startup)
  if (c.class=="Firefox") then
      -- if it's a Firefox we will connect a signal which will call if 'name' changing
      c:connect_signal("property::name",function(c)
          if (string.find(c.name,"(Private Browsing)")) then
              -- if "(Private Browsing)" is part of 'c.name' then 'c' goes to tags[1][9] 
              c:tags({tags[1][9]})
          end
      end)
  end
end)

它应该可以工作(我已经测试过了)。

当客户端出现时,您可以检查其名称:

client.connect_signal("manage",function(c,startup)
    naughty.notify({text=c.name})
end)

相关内容