【问题标题】:AwesomeWM tag with static layout带有静态布局的 AwesomeWM 标签
【发布时间】:2018-11-02 04:16:21
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 如果在标签中添加了一个额外的窗口会发生什么?如果只有一个/两个窗口,同样的问题。
  • 附加窗口应该被最小化/隐藏。只有一/两个窗口应该占据他们应该的位置,并为错过的窗口留出空白空间。

标签: awesome-wm


【解决方案1】:

我在理解 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

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

嗯,以上是write-own-layout方法。或者,您也可以让您的客户浮动并通过awful.rules 为他们分配几何图形。只要有properties = { floating = true, geometry = { x = 42, y = 42, width = 42, height = 42 } }。但是,有了这个,你可以例如不小心移动了您的一位客户。

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

选择一个。没有“只有一个正确答案”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-20
    • 2019-08-07
    • 1970-01-01
    • 2020-12-06
    • 1970-01-01
    • 1970-01-01
    • 2013-10-06
    相关资源
    最近更新 更多