-------------------------------------------------- -- Generate vector assets using current colors: -- -- (2015) Yauhen Kirylau -- -------------------------------------------------- local cairo = require("lgi").cairo local gears = require("gears") local recolor_image = gears.color.recolor_image local screen = screen local theme_assets = {} function theme_assets.awesome_icon(size, bg, fg) local img = cairo.ImageSurface(cairo.Format.ARGB32, size, size) local cr = cairo.Context(img) cr:set_source(gears.color(bg)) cr:paint() cr:set_source(gears.color(fg)) cr:set_line_width(size/20) cr:move_to(0, size/3) cr:line_to(size*2/3, size/3) cr:move_to(size/3, size*2/3) cr:line_to(size*2/3, size*2/3) cr:line_to(size*2/3, size) cr:stroke() return img end -- Taglist squares: function theme_assets.taglist_squares_sel(size, fg) local img = cairo.ImageSurface(cairo.Format.ARGB32, size, size) local cr = cairo.Context(img) cr:set_source(gears.color(fg)) cr:paint() return img end function theme_assets.taglist_squares_unsel(size, fg) local img = cairo.ImageSurface(cairo.Format.ARGB32, size, size) local cr = cairo.Context(img) cr:set_source(gears.color(fg)) cr:set_line_width(size/4) cr:rectangle(0, 0, size, size) cr:stroke() return img end function theme_assets.wallpaper(bg, fg, alt_fg, s) s = s or screen.primary local height = s.workarea.height local width = s.workarea.width local img = cairo.RecordingSurface(cairo.Content.COLOR, cairo.Rectangle { x = 0, y = 0, width = width, height = height }) local cr = cairo.Context(img) local letter_size = height/10 local letter_line = letter_size/18 local letter_gap = letter_size/6 local letter_start_x = width - width / 10 local letter_start_y = height / 10 local function make_letter(n, lines, color) local function make_line(coords) for i, coord in ipairs(coords) do if i == 1 then cr:rel_move_to(coord[1], coord[2]) else cr:rel_line_to(coord[1], coord[2]) end end cr:stroke() end lines = lines or {} color = color or fg cr:set_source(gears.color(color)) cr:rectangle( letter_start_x, letter_start_y+(letter_size+letter_gap)*n, letter_size, letter_size ) cr:fill() cr:set_source(gears.color(bg)) for _, line in ipairs(lines) do cr:move_to(letter_start_x, letter_start_y+(letter_size+letter_gap)*n) make_line(line) end end -- bg cr:set_source(gears.color(bg)) cr:paint() cr:set_line_width(letter_line) local ls = letter_size -- a make_letter(0, { { { 0, ls/3 }, { ls*2/3, 0 }, }, { { ls/3, ls*2/3 }, { ls/3, 0 }, { 0, ls/3 }, } }, alt_fg) -- w make_letter(1, { { { ls/3, 0 }, { 0,ls*2/3 }, }, { { ls*2/3, 0 }, { 0,ls*2/3 }, } }) -- e make_letter(2, { { { ls/3, ls/3 }, { ls*2/3, 0 }, }, { { ls/3, ls*2/3 }, { ls*2/3, 0 }, } }) -- s make_letter(3, { { { ls/3, ls/3 }, { ls*2/3, 0 }, }, { { 0, ls*2/3 }, { ls*2/3, 0 }, } }) -- o make_letter(4, { { { ls/2, ls/3 }, { 0, ls/3 }, } }) -- m make_letter(5, { { { ls/3, ls/3 }, { 0,ls*2/3 }, }, { { ls*2/3, ls/3 }, { 0,ls*2/3 }, } }) -- e make_letter(6, { { { ls/3, ls/3 }, { ls*2/3, 0 }, }, { { ls/3, ls*2/3 }, { ls*2/3, 0 }, } }) return img end -- Recolor titlebar icons: function theme_assets.recolor_titlebar_normal(theme, color) for _, titlebar_icon in ipairs({ 'titlebar_close_button_normal', 'titlebar_ontop_button_normal_inactive', 'titlebar_ontop_button_normal_active', 'titlebar_sticky_button_normal_inactive', 'titlebar_sticky_button_normal_active', 'titlebar_floating_button_normal_inactive', 'titlebar_floating_button_normal_active', 'titlebar_maximized_button_normal_inactive', 'titlebar_maximized_button_normal_active', 'titlebar_minimize_button_normal_inactive', }) do theme[titlebar_icon] = recolor_image(theme[titlebar_icon], color) end return theme end function theme_assets.recolor_titlebar_focus(theme, color) for _, titlebar_icon in ipairs({ 'titlebar_close_button_focus', 'titlebar_ontop_button_focus_inactive', 'titlebar_ontop_button_focus_active', 'titlebar_sticky_button_focus_inactive', 'titlebar_sticky_button_focus_active', 'titlebar_floating_button_focus_inactive', 'titlebar_floating_button_focus_active', 'titlebar_maximized_button_focus_inactive', 'titlebar_maximized_button_focus_active', 'titlebar_minimize_button_focus_inactive', }) do theme[titlebar_icon] = recolor_image(theme[titlebar_icon], color) end return theme end -- Recolor layout icons: function theme_assets.recolor_layout(theme, color) for _, layout_name in ipairs({ 'layout_fairh', 'layout_fairv', 'layout_floating', 'layout_magnifier', 'layout_max', 'layout_fullscreen', 'layout_tilebottom', 'layout_tileleft', 'layout_tile', 'layout_tiletop', 'layout_spiral', 'layout_dwindle', 'layout_cornernw', 'layout_cornerne', 'layout_cornersw', 'layout_cornerse', }) do theme[layout_name] = recolor_image(theme[layout_name], color) end return theme end return theme_assets -- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80