Hyprland-dotfiles/nvim/lua/modules/configs/ui/alpha.lua
2024-07-21 02:51:17 -04:00

139 lines
3.5 KiB
Lua

return function()
local dashboard = require("alpha.themes.dashboard")
require("modules.utils").gen_alpha_hl()
dashboard.section.header.val = require("core.settings").dashboard_image
dashboard.section.header.opts.hl = "AlphaHeader"
local function button(sc, txt, leader_txt, keybind, keybind_opts)
local sc_after = sc:gsub("%s", ""):gsub(leader_txt, "<leader>")
local opts = {
position = "center",
shortcut = sc,
cursor = 5,
width = 50,
align_shortcut = "right",
hl = "AlphaButtons",
hl_shortcut = "AlphaShortcut",
}
if nil == keybind then
keybind = sc_after
end
keybind_opts = vim.F.if_nil(keybind_opts, { noremap = true, silent = true, nowait = true })
opts.keymap = { "n", sc_after, keybind, keybind_opts }
local function on_press()
-- local key = vim.api.nvim_replace_termcodes(keybind .. '<Ignore>', true, false, true)
local key = vim.api.nvim_replace_termcodes(sc_after .. "<Ignore>", true, false, true)
vim.api.nvim_feedkeys(key, "t", false)
end
return {
type = "button",
val = txt,
on_press = on_press,
opts = opts,
}
end
local leader = " "
local icons = {
documents = require("modules.utils.icons").get("documents", true),
git = require("modules.utils.icons").get("git", true),
ui = require("modules.utils.icons").get("ui", true),
misc = require("modules.utils.icons").get("misc", true),
}
dashboard.section.buttons.val = {
button(
"space f c",
icons.misc.Neovim .. "Telescope collections",
leader,
nil,
{ noremap = true, silent = true, nowait = true }
),
button(
"space f f",
icons.documents.FileFind .. "Find files",
leader,
nil,
{ noremap = true, silent = true, nowait = true }
),
button(
"space f d",
icons.ui.FolderWithHeart .. "Retrieve dossiers",
leader,
nil,
{ noremap = true, silent = true, nowait = true }
),
button(
"space f p",
icons.documents.Word .. "Find patterns",
leader,
nil,
{ noremap = true, silent = true, nowait = true }
),
button(
"space f g",
icons.git.Git .. "Locate Git objects",
leader,
nil,
{ noremap = true, silent = true, nowait = true }
),
button(
"space f m",
icons.misc.Ghost .. "Miscellaneous artifacts",
leader,
nil,
{ noremap = true, silent = true, nowait = true }
),
}
dashboard.section.buttons.opts.hl = "AlphaButtons"
local function footer()
local stats = require("lazy").stats()
local ms = (math.floor(stats.startuptime * 100 + 0.5) / 100)
return "  Have Fun with neovim"
.. " 󰀨 v"
.. vim.version().major
.. "."
.. vim.version().minor
.. "."
.. vim.version().patch
.. " 󰂖 "
.. stats.count
.. " plugins in "
.. ms
.. "ms"
end
dashboard.section.footer.val = footer()
dashboard.section.footer.opts.hl = "AlphaFooter"
local head_butt_padding = 2
local occu_height = #dashboard.section.header.val + 2 * #dashboard.section.buttons.val + head_butt_padding
local header_padding = math.max(0, math.ceil((vim.fn.winheight(0) - occu_height) * 0.25))
local foot_butt_padding = 1
dashboard.config.layout = {
{ type = "padding", val = header_padding },
dashboard.section.header,
{ type = "padding", val = head_butt_padding },
dashboard.section.buttons,
{ type = "padding", val = foot_butt_padding },
dashboard.section.footer,
}
require("modules.utils").load_plugin("alpha", dashboard.opts)
vim.api.nvim_create_autocmd("User", {
pattern = "LazyVimStarted",
callback = function()
dashboard.section.footer.val = footer()
pcall(vim.cmd.AlphaRedraw)
end,
})
end