47 lines
1.1 KiB
Lua
47 lines
1.1 KiB
Lua
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
|