第一次在 AwesomeWM 中使用 cairo
First time using cairo in AwesomeWM
这是为那些在开始使用 cairo 时遇到困难的人准备的。
文档没有给出一个好的、完整的例子。这就是为什么我想分享这个。
我创建了一个具体示例,您可以将其放入您的 rc.lua 并使用它。
local wibox = require('wibox')
local cairo = require("lgi").cairo
local surface = cairo.ImageSurface(cairo.Format.RGB24,20,20)
local cr = cairo.Context(surface)
my_wbox = wibox()
my_wbox.visible = true
my_wbox:set_bg("#ff0000")
cairo_widget = wibox.widget.base.make_widget()
cairo_widget.fit = function(context, width, height)
return 100, 100
end
cairo_widget.draw = function(self, my_wbox, cr, width, height)
cr:translate(100, 100)
cr:set_source_rgb(0,0,0)
cr:rectangle(0, 0, 100, 100)
cr:fill()
end
my_wbox:set_widget(cairo_widget)
my_wbox:geometry({x=50, y=50, width=500, height=500})
有 https://awesomewm.org/apidoc/documentation/04-new-widgets.md.html,但我猜该页面末尾没有“这里是一个 copy-able 块中的所有内容”。
这是为那些在开始使用 cairo 时遇到困难的人准备的。
文档没有给出一个好的、完整的例子。这就是为什么我想分享这个。
我创建了一个具体示例,您可以将其放入您的 rc.lua 并使用它。
local wibox = require('wibox')
local cairo = require("lgi").cairo
local surface = cairo.ImageSurface(cairo.Format.RGB24,20,20)
local cr = cairo.Context(surface)
my_wbox = wibox()
my_wbox.visible = true
my_wbox:set_bg("#ff0000")
cairo_widget = wibox.widget.base.make_widget()
cairo_widget.fit = function(context, width, height)
return 100, 100
end
cairo_widget.draw = function(self, my_wbox, cr, width, height)
cr:translate(100, 100)
cr:set_source_rgb(0,0,0)
cr:rectangle(0, 0, 100, 100)
cr:fill()
end
my_wbox:set_widget(cairo_widget)
my_wbox:geometry({x=50, y=50, width=500, height=500})
有 https://awesomewm.org/apidoc/documentation/04-new-widgets.md.html,但我猜该页面末尾没有“这里是一个 copy-able 块中的所有内容”。