带有静态布局的AwesomeWM标记

时间:2018-05-23 08:50:14

标签: awesome-wm

StackOverflow被表示为AwesomeWM社区支持的地方。

我想在我的AwesomeWM配置中有一个专用的标签,其中只有三个特定的应用程序将一直运行。我设法使用示例配置创建新标记,并设法使用awful.rules.rules来处理应用程序并将它们放入标记中。

我在理解AwesomeWM布局引擎是如何工作方面遇到了麻烦。我想实现以下内容:三个固定宽度的静态列,每个应用程序位于其自己的列,当焦点更改时,不会发生重新排列,当任何应用程序未运行时,其保留的位置将保持为空。

___________________
|   |       |     |
|   |       |     |
| A |   B   |  C  |
|   |       |     |
|   |       |     |
___________________

在这种情况下如何指定布局?我应该自己写一个吗?我可以使用灵活的布局并为客户指定位置吗?为实现目标,建议的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

  

我在理解AwesomeWM布局引擎如何运作方面遇到了麻烦

布局是一个包含两个条目的表:

  • name是一个字符串,其中包含布局名称
  • arrange是一个被调用以排列可见客户端的函数

所以你真的只需要编写一个arrange函数来按照你想要的方式安排客户端。这个函数的参数是awful.layout.parameters的结果,但你真的需要关心

  • .clients是应安排的客户列表。
  • .workarea是客户的可用空间。
  • .geometries是布局回写客户端指定几何图形的地方

我建议您阅读一些现有的布局,看看它们是如何工作的。例如,max布局就像:

一样简单
function(p)
    for _, c in pairs(p.clients) do
        p.geometries[c] = {
            x = p.workarea.x,
            y = p.workarea.y,
            width = p.workarea.width,
            height = p.workarea.height
        }
    end
end
  

我应该自己写一个吗?我可以使用灵活的布局并为客户指定位置吗?

嗯,上面是写自己的布局方法。或者,您也可以让客户浮动,并通过awful.rules为其分配几何图形。只需properties = { floating = true, geometry = { x = 42, y = 42, width = 42, height = 42 } }。但是,你可以这样做,例如意外地移动了你的一个客户。

  

实现目标的推荐正确方法是什么?

选一个。没有"只有一个正确答案"。