在 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)