你能把客户端放到 awesome-wm 的 widget 层次结构中吗?

Can you put a client into a widget hierarchy in awesome-wm?

我想知道您是否可以将客户端放入小部件层次结构中。 基本上有办法做类似的事情:

local cool_background_widget = wibox.widget({
    widget = wibox.container.background,
    {
        client, --??????
    }
})

我预计没有,但如果没有,是否有一些 hacky 方法可以做到这一点?

简答:没有。但是有一些解决方法。

1:使用客户端+标题栏作为顶栏

如果您的 wibar/wibox 中只需要一个客户端,那么您可以在该客户端周围放置一个不同的标题栏,并将其用作您的顶部(或其他)栏。要像普通栏一样添加 space,请使用客户端 :struts() 属性 或使用 screen.padding.

2:创建自定义占位符小部件

第二个选项是创建一个新的小部件,然后使用它自己的 :draw() 函数作为一个挂钩来知道何时移动客户端(使用 c:geometry())。这主要是 the dynamic client layout branch does。这有一些问题,比如必须不断提高客户。您还必须断开一堆东西以防止现有代码路径影响客户端(例如 request::geometry 处理程序,例如 move/resize 客户端使用 mod4+mouse 的处理程序)。您还需要使客户端 floatingsticky 才能获得正确的结果。

3:欢迎补丁

请务必记住,不存在阻止此功能实施的技术限制。现有的 issue regarding adding this. In some alternate universe where both the core AwesomeWM developers would have unlimited time, this would be a feature. We are discussing doing it for the individual systray "icons" first. This issue 也是一个很好的参考,但在这种情况下不足以实现您的要求。