local beautiful = require("beautiful") local gears = require("gears") local M = {} local relative_lua_path = tostring(...) local function get_layout_icon_path(name) local relative_icon_path = relative_lua_path :match("^.*bling"):gsub("%.", "/") .. "/icons/layouts/" .. name .. ".png" for p in package.path:gmatch('([^;]+)') do p = p:gsub("?.*", "") local absolute_icon_path = p .. relative_icon_path if gears.filesystem.file_readable(absolute_icon_path) then return absolute_icon_path end end end local function get_icon(icon_raw) if icon_raw ~= nil then return gears.color.recolor_image(icon_raw, beautiful.fg_normal) else return nil end end local layouts = { "mstab", "vertical", "horizontal", "centered", "equalarea", "deck" } for _, layout_name in ipairs(layouts) do local icon_raw = get_layout_icon_path(layout_name) if beautiful["layout_" .. layout_name] == nil then beautiful["layout_" .. layout_name] = get_icon(icon_raw) end M[layout_name] = require(... .. "." .. layout_name) end return M