gears.shape.rounded_rect 的用法中的“cr”是什么,如何使用它来改变 naughty.notify 的形状?

gears.shape.rounded_rect 的用法中的“cr”是什么,如何使用它来改变 naughty.notify 的形状?

我正在尝试将 naughty.notify 通知从矩形重塑为带圆角的矩形。这里有人告诉我,shape 参数需要一个gears.shape参数——所以我查找这里看看如何使用gears.shape.rounded_rect。每个示例都显示类似这样的内容:shape.rounded_rect(cr, 70, 70, 10,但我能找到的唯一提供有关cr“cr:A cairo content”的信息的地方。

什么是 cairo 内容?

这是我正在使用的代码:

naughty.notify({    text = "Monitor Test", ontop = true, position = "bottom_left", 
                    shape = gears.shape.rounded_rect(cr, 70, 20, 5),
                    opacity = .95})

当然,我重新启动 Awesome 时会出错,因为cr什么都没有。我尝试了从数字到 cr:fill 的所有方法,但我不知道应该放在那里。

有没有人?

答案1

Cairo 是 Awesome 使用的 2D 图形库。你可能想看看这里

答案2

我搜索了好久,却没找到一个可以轻松使用的答案。ploth 的链接非常值得一读。简单的答案是,只要你能设置shape,你就可以传递一个函数并调用你想要的形状。你传递给的函数shape将接收(cr, width, height),你可以将它们传递给你想要的形状。例如:

wibox.container.background(widget, "#000", function(cr, width, height)
  gears.shape.partially_rounded_rect(cr, width, height, false, true, true, false, 30)
end)

希望这可以帮助。

答案3

答案是,定义这样的函数,我将用其cr作为占位符:

例子:

local new_shape = function(cr, width, height)
    gears.shape.rounded_rect(cr, width, height, 2)
end

然后只需用作new_shape形状即可。(cr在上面的函数签名第 1 行中定义,因此它已经在第 2 行中定义,并且在调用时将由回调填充正确的值new_shape。您无需rc.lua自己定义它,只需将其留空即可。)

像这样使用 new_shape:

    local noti = naughty.notify {
    position = "top_middle",
    height = 20,
    width = 70,
    timeout = 1,
    shape = new_shape, --SEE HERE
    bg="#333333",
    fg="#ffffff",
    text = "TEST",
}

相关内容