我最近在工作中获得了第二台显示器,并希望使用我的窗口管理器来配置所有显示器:太棒了。我遇到了将一些应用程序放在屏幕上的标签上的问题。例如,我有一个规则,让 urxvt 将其放入第一个屏幕上的标签一中:
{ rule = { class = "URxvt" },
properties = { tag = tags[1][1] }
}
只要我的鼠标光标位于第一台显示器上,就可以正常工作。如果我将光标移到第二个屏幕上并启动 urxvt 的实例,它将被放置到第二个监视器上的实际标记中。同样,如果我为第二个屏幕上的标签配置应用程序,但如果我的鼠标光标位于第一个屏幕上,则该应用程序不起作用。
我怎样才能解决这个问题?
答案1
使用扩展包有一种非常简单的方法可以做到这一点awful
。一些发行版会自动捆绑它,其他发行版则将其作为子包。一旦你拥有它,你就可以简单地使用内置的awful.client.movetoscreen
.例如,我有一个如下所示的绑定:
awful.key({modkey}, "o", awful.client.movetoscreen)
这意味着只需按一次键,我就可以将一个窗口发送到当前活动标签(无论其当前不在哪个屏幕上)。如果您只有两个屏幕,这将切换它们,或者如果您有更多屏幕,它将循环显示它们。
答案2
这取决于您使用的 Awesome 版本:
太棒了 1.x
screen
在规则中设置变量:
{ rule =
{ class = "URxvt" },
properties = { tag = tags[1][1] },
screen = 1
}
真棒 2.x
在函数中设置screen
客户端的属性hook_manage
:
if c.class == "URxvt" then
awful.client.movetotag(tags[1][1], c)
c.screen = 1
end
从您的代码示例看来,您正在使用 Awesome 1.x;顺便说一句,1.x 现在已经很旧了,所以您可能需要考虑升级到 2.x,它使用 Lua 而不是自定义配置格式
答案3
不完全是答案,而是后续。
这肯定是awesome 中的一个错误。有了awesome-3.4.10
它,你就能按照你想要的方式工作。现在,要在预定义标签上打开应用程序 当前的屏幕,使用这样的东西:
{ rule = { instance = "urxb" },
callback = function(c)
c.screen = mouse.screen
c:tags({tags[c.screen][3]})
end }