awesomeWM v3.5.6 如何为任务列表设置任意客户端的自定义图标?

How to set a custom icon of any client for the tasklist in awesomeWM v3.5.6?

if (c.class == "Google-chrome") then
     c.icon = capi.image ( "/home/art-attack/.config/awesome/icons/chrome.png" )
end

我试过了,但总是出错,即尝试调用字段'image'(零值)

{ rule = { class = "Google-chrome" },
  properties = { icon = beautiful.icon_chrome } },

然后我找到了另一种使用 awful.rules 中的属性 icon 的方法,它有效但没有更改图标,而是禁用了该客户端的图标。

要修复你的第一次尝试,试试这个:

if c.class == "Google-chrome" then
    local icon = gears.surface("path/to/chrome.png")
    c.icon = icon._native
    icon:finish()
end

带有 icon:finish() 的行不是必需的,但它的存在是为了确保您不会优化此代码。那里有一些你不想知道的黑暗垃圾收集避免魔法,但简短的故事是:永远不要使用 _native 除非你已经将表面本身保存在变量中。

if c.class == "Google-chrome" then
    local icon = gears.surface("path/to/chrome.png")
    return text, bg, bg_image, icon
end

之前添加此代码
if capi.client.focus == c then