awesome-wm:如何更改系统托盘形状

awesome-wm: How to change systray shape

有什么方法可以在 AwesomeWM window 管理器中将系统托盘形状更改为圆角矩形? 我在文档中搜索了 "wibox.widget.systray" class 但它没有更改其形状的选项。 我试图将系统托盘放入容器并在那里设置形状,但它没有用:

s.mysystray = wibox.widget.systray()
local systray_container = wibox.container.background(s.mysystray, beautiful.bg_systray, gears.shape.rounded_rect)
local systray_margin = wibox.container.margin(systray_container, 0, 0, 5, 5)
local systray = wibox.container.place(systray_margin, {
    halign = "center",
    fill_vertical = true,
})

我想统一系统托盘和任务列表选择,如下图所示: https://imgur.com/a/5m8RZNh

可以!为此,您必须使用 Awesome "container" 模式并将其包装成 wibox.container.background.

-- the systray has its own internal background because of X11 limitations
beautiful.bg_systray = "#ff0000"
beautiful.systray_icon_spacing = 10

local my_round_systray = wibox.widget {
    {
        wibox.widget.systray(),
        left   = 10,
        top    = 2,
        bottom = 2,
        right  = 10,
        widget = wibox.container.margin,
    },
    bg         = "#ff0000",
    shape      = gears.shape.rounded_rect,
    shape_clip = true,
    widget     = wibox.container.background,
}

请注意,系统托盘小部件中的后台处理是有限的。它不能是渐变色或透明色。这是由于 X11 的限制。 Awesome 没有内部合成管理器,而是依赖外部合成管理器,例如 Compton。这样做的缺点之一是系统托盘。好处是,好吧,其他一切。此外,Qt 和 GTK 应用程序都在不断倒退其系统托盘后台支持。这个错误在他们这边,如果不实施非标准兼容的黑客攻击,就无法缓解非合成 WM,而 AwesomeWM 不会 会这样做。所以你最终得到: