1
awmome wm 3.5에서는 cairo를 사용하여 사용자 정의 위젯을 만들어 시각적으로 그릴 수 있습니다. 단색 PNG 아이콘 (wibox.widget.imagebox처럼)을 표시하는 위젯이 필요하며 색상을 빠르게 변경할 수 있습니다. wibox.widget.imagebox의 draw 함수에서 몇 줄을 수정 해 보았습니다.멋진 wm을 통해 아이콘 색상 변경
local cairo = require("lgi").cairo
--- Draw an imagebox with the given cairo context in the given geometry.
function imagebox:draw(wibox, cr, width, height)
if not self._image then return end
if width == 0 or height == 0 then return end
cr:save()
if not self.resize_forbidden then
-- Let's scale the image so that it fits into (width, height)
local w = self._image:get_width()
local h = self._image:get_height()
local aspect = width/w
local aspect_h = height/h
if aspect > aspect_h then aspect = aspect_h end
cr:scale(aspect, aspect)
end
-- Here is my modifications
cr:set_source_surface(self._image, 0, 0)
cr:paint()
cr:set_operator(cairo.Operator.IN)
cr:set_source_rgba(0, 0, 1, 0.5)
cr:paint()
-- End of my my modifications
-- This is original draw code how it was
--cr:set_source_surface(self._image, 0, 0)
--cr:paint()
cr:restore()
end
그러나 작동하지 않습니다. 나는 여러 다른 카이로 합성 연산자를 설정하려고 시도했으며 대부분은 예상대로 작동하지 않습니다. wibox 배경색 대신 겹치는 영역과 검정색 영역이 잘못되었습니다. SOURCE 및 OVER는 올바르게 작동합니다. 나는 어디에서 실수 했습니까?