summaryrefslogtreecommitdiff
path: root/awesome/themes/xresources/assets.lua
diff options
context:
space:
mode:
Diffstat (limited to 'awesome/themes/xresources/assets.lua')
-rw-r--r--awesome/themes/xresources/assets.lua250
1 files changed, 250 insertions, 0 deletions
diff --git a/awesome/themes/xresources/assets.lua b/awesome/themes/xresources/assets.lua
new file mode 100644
index 0000000..9f6bbfa
--- /dev/null
+++ b/awesome/themes/xresources/assets.lua
@@ -0,0 +1,250 @@
+--------------------------------------------------
+-- 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
+
+local function make_letter(cr, n, lines, size, bg, fg, alt_fg)
+ local letter_gap = size/6
+
+ 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 {}
+ local color = alt_fg or fg
+ cr:set_source(gears.color(color))
+ cr:rectangle(
+ 0, (size+letter_gap)*n,
+ size, size
+ )
+ cr:fill()
+
+ if bg then
+ cr:set_source(gears.color(bg))
+ else
+ cr:set_operator(cairo.Operator.CLEAR)
+ end
+
+ for _, line in ipairs(lines) do
+ cr:move_to(0, (size+letter_gap)*n)
+ make_line(line)
+ end
+
+ cr:set_operator(cairo.Operator.OVER)
+end
+
+function theme_assets.gen_awesome_name(cr, height, bg, fg, alt_fg)
+ local ls = height/10 -- letter_size
+ local letter_line = ls/18
+
+ cr:set_line_width(letter_line)
+
+ -- a
+ make_letter(cr, 0, { {
+ { 0, ls/3 },
+ { ls*2/3, 0 },
+ }, {
+ { ls/3, ls*2/3 },
+ { ls/3, 0 },
+ { 0, ls/3 },
+ } }, ls, bg, fg, alt_fg)
+ -- w
+ make_letter(cr, 1, { {
+ { ls/3, 0 },
+ { 0,ls*2/3 },
+ }, {
+ { ls*2/3, 0 },
+ { 0,ls*2/3 },
+ } }, ls, bg, fg)
+ -- e
+ make_letter(cr, 2, { {
+ { ls/3, ls/3 },
+ { ls*2/3, 0 },
+ }, {
+ { ls/3, ls*2/3 },
+ { ls*2/3, 0 },
+ } }, ls, bg, fg)
+ -- s
+ make_letter(cr, 3, { {
+ { ls/3, ls/3 },
+ { ls*2/3, 0 },
+ }, {
+ { 0, ls*2/3 },
+ { ls*2/3, 0 },
+ } }, ls, bg, fg)
+ -- o
+ make_letter(cr, 4, { {
+ { ls/2, ls/3 },
+ { 0, ls/3 },
+ } }, ls, bg, fg)
+ -- m
+ make_letter(cr, 5, { {
+ { ls/3, ls/3 },
+ { 0,ls*2/3 },
+ }, {
+ { ls*2/3, ls/3 },
+ { 0,ls*2/3 },
+ } }, ls, bg, fg)
+ -- e
+ make_letter(cr, 6, { {
+ { ls/3, ls/3 },
+ { ls*2/3, 0 },
+ }, {
+ { ls/3, ls*2/3 },
+ { ls*2/3, 0 },
+ } }, ls, bg, fg)
+end
+
+function theme_assets.gen_logo(cr, width, height, bg, fg)
+ local ls = math.min(width, height)
+
+ local letter_line = ls/18
+
+ cr:set_line_width(letter_line)
+
+ make_letter(cr, 0, { {
+ { 0, ls/3 },
+ { ls*2/3, 0 },
+ }, {
+ { ls/3, ls*2/3 },
+ { ls/3, 0 },
+ { 0, ls/3 },
+ } }, ls, bg, fg)
+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_start_x = width - width / 10
+ local letter_start_y = height / 10
+ cr:translate(letter_start_x, letter_start_y)
+
+ -- background
+ cr:set_source(gears.color(bg))
+ cr:paint()
+
+ theme_assets.gen_awesome_name(cr, height, bg, fg, alt_fg)
+
+ return img
+end
+
+-- Recolor titlebar icons:
+
+function theme_assets.recolor_titlebar_normal(theme, color)
+ for _, titlebar_icon in ipairs({
+ 'titlebar_close_button_normal',
+ 'titlebar_minimize_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',
+ }) 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_minimize_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',
+ }) 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