在很棒的 wm 容器小部件上的两种颜色之间切换

Switching between two colors on a awesome wm container widget

我创建了一个 wibox.container.background 类似的东西:

local w = wibox.widget({
        {
          id = "texte",
          text = "mon texte",
          widget = wibox.widget.textbox
       },
       bg = beautiful.bg_normal,
       widget = wibox.container.background
})

现在我想在两种背景颜色之间切换:

w.bg = w.bg == beautiful.bg_normal and beautiful.bg_focus or beautiful.bg_normal

但这不起作用。似乎 w.bg 指的是实心图案而不是简单的六色字符串。

我是否指向正确的 bg 变量?

我建议您保留自己的变量 local is_focus = true 并使用它来更新背景。

发生的情况是您指定的背景“字符串”经过 gears.color 并转换为 cairo 模式。这就是实际用于绘图的内容。您也可以直接传入 cairo 模式并避免通过 gears.color.

的“循环”

我提出的解决方案示例:

local w = wibox.widget({
        {
          id = "texte",
          text = "mon texte",
          widget = wibox.widget.textbox
       },
       bg = beautiful.bg_normal,
       widget = wibox.container.background
})
local is_focused = false
local function switch_background()
    is_focused = not is_focused
    w.bg = is_focused and beautiful.bg_focus or beautiful.bg_normal
end