如何使用 Awesome-wm 将应用程序放置在第二台显示器上?

如何使用 Awesome-wm 将应用程序放置在第二台显示器上?

我最近在工作中获得了第二台显示器,并希望使用我的窗口管理器来配置所有显示器:太棒了。我遇到了将一些应用程序放在屏幕上的标签上的问题。例如,我有一个规则,让 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 }

相关内容