Files
dotfiles/wezterm/.config/picker/colorscheme.lua
2025-04-08 15:31:34 -04:00

47 lines
1.3 KiB
Lua

---@module "picker.colorscheme"
---@author sravioli
---@license GNU-GPLv3
local Utils = require "utils"
local Picker, Layout = Utils.class.picker, Utils.class.layout
return Picker.new {
title = "󰢷 Colorscheme",
subdir = "colorschemes",
fuzzy = true,
fuzzy_description = "Fuzzy matching: ",
build = function(__choices, _, opts)
local choices = {}
for _, item in pairs(__choices) do
local id, label = item.value.id, item.value.label
local colors = item.module.scheme
---@cast label string
local ChoiceLayout = Layout:new "ColorschemeChoices"
for i = 1, #colors.ansi do
local bg = colors.ansi[i]
ChoiceLayout:append("none", bg, "")
end
ChoiceLayout:append("none", "none", " ")
for i = 1, #colors.brights do
local bg = colors.brights[i]
ChoiceLayout:append("none", bg, "")
end
local Config = opts.window:effective_config()
local fg = Config.color_schemes[Config.color_scheme].foreground
ChoiceLayout:append("none", "none", (" "):rep(5))
ChoiceLayout:append("none", fg, label)
choices[#choices + 1] = { label = ChoiceLayout:format(), id = id }
end
table.sort(choices, function(a, b)
return a.id < b.id
end)
return choices
end,
}