如何进行出色的配置,以便它以两个对齐的窗口启动新应用程序,如下所示:

----------------
|xxxxxxxxxx####|
|xxxxxxxxxx####|
|xxxxxxxxxx####|
|xxxxxxxxxx####|
----------------


例如,“ x”是在pidgin中的对话窗口,而“#”是好友列表窗口。

通常,我想指定右窗口的宽度并将其放在右侧(垂直最大),而另一个窗口应占用剩余空间。

我已经有一些几乎可以正常工作的代码,但是它的行为很奇怪(它为pidgin设置了所有正确的东西,但不适用于gimp和v_sim,有时我不知道有什么原因会改变左窗口的几何形状。或者当我启动应用程序(v_sim),它没有放置在正确的位置,也没有垂直最大化,但是当我重新启动时,它正确地放置了它,所以我猜想这个应用程序在启动时会有所改变。

这是我现在使用的代码:

awful.rules.rules = {
  ...
  { rule = { class = "Pidgin", role = "buddy_list" },
    properties = {
      floating = true
    },
    callback = function( c )
      local w_area = screen[ c.screen ].workarea
      local winwidth = 340
      c:struts( { right = winwidth } )
      c:geometry( { x = w_area.width - winwidth, width = winwidth, y = w_area.y, height = w_area.height } )
    end
  },
  { rule = { class = "Pidgin", role = "conversation" },
    properties = {
      floating = true,
      x = 0,
      maximized_vertical = true,
      maximized_horizontal = true
    },
    callback = awful.client.setslave
  },
  ...
}

最佳答案

我遇到了完全相同的问题,但是我想在左侧有一个大型Firefox窗口,在右侧有一个小终端。为了使其正常工作,我为此专用了一个标签,该标签具有左图块的布局并调整了宽度因子(即通常由CTRL-L执行的操作)。

将以下内容添加到rc.lua的末尾,其中yourtag是您要在其中放置这些窗口的标签。 0.15值可以根据您的口味进行调整。

awful.tag.viewonly(yourtag)
awful.tag.incmwfact(0.15, yourtage)


另外,在右侧想要的窗口上使用awful.client.setslave可以确保它们不会被切换。

{
    rule = { class = "URxvt" },
    callback = awful.client.setslave
},


您也可以使用tag属性将某些应用程序定向到标签。

{
    rule = { class = "Firefox" },
    properties = { tag = browse }
},
{
    rule = { class = "URxvt", instance = "browse" },
    properties = { tag = browse },
},


然后,我创建了一个绑定,如下所示打开这些应用程序。

-- Custom programs
awful.key({ modkey, "Shift" }, "b", function()
    awful.tag.viewonly(browse)
    awful.util.spawn_with_shell("urxvt -name browse -e newsbeuter")
    awful.util.spawn("firefox")
end)


这是最终结果:

关于awesome-wm - 在Awesome-WM中为特定应用程序设置Windows布局,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5120399/

10-15 02:23
查看更多