return { src = "https://github.com/goolord/alpha-nvim", name = "alpha-nvim", spec = { "alpha-nvim", cmd = "Alpha", keys = { { "ma", "Alpha", desc = "Back to startpage" }, }, beforeAll = function() if vim.fn.argc(-1) == 0 then require("lz.n").trigger_load("alpha-nvim") end end, after = function() local alpha = require("alpha") local dashboard = require("alpha.themes.dashboard") local function os_name() local f = io.open("/etc/os-release") if f then for line in f:lines() do local name = line:match('^PRETTY_NAME="?(.-)"?$') if name then f:close() return name end end f:close() end return vim.uv.os_uname().sysname end local startup_ms local function stats_line() local ms = startup_ms or (vim.uv.hrtime() - vim.g.nvim_start_time) / 1e6 local v = vim.version() local rtp = {} for _, path in ipairs(vim.api.nvim_list_runtime_paths()) do rtp[path] = true end local loaded, total = 0, 0 for _, p in ipairs(vim.pack.get(nil, { info = false })) do total = total + 1 if rtp[p.path] then loaded = loaded + 1 end end return string.format( " %d.%d.%d |  %d/%d %.2fms |  %s", v.major, v.minor, v.patch, loaded, total, ms, os_name() ) end local function time_line() return string.format(" %s -  %s", os.date("%H:%M:%S"), os.date("%a %d/%m/%Y")) end local stats = { type = "text", val = function() local s, t = stats_line(), time_line() local diff = vim.fn.strdisplaywidth(s) - vim.fn.strdisplaywidth(t) if diff > 0 then t = string.rep(" ", math.floor(diff / 2)) .. t elseif diff < 0 then s = string.rep(" ", math.floor(-diff / 2)) .. s end return { s, t } end, opts = { position = "center", hl = "Special" }, } local btn = dashboard.button local config_dir = vim.fn.stdpath("config") alpha.setup({ layout = { { type = "padding", val = 2 }, dashboard.section.header, { type = "padding", val = 1 }, stats, { type = "padding", val = 2 }, { type = "group", val = { btn("n", " New file", "ene"), btn("r", " Recent files", "Telescope oldfiles"), btn("s", " Load session", "Telescope persisted"), }, opts = { spacing = 0 }, }, { type = "padding", val = 1 }, { type = "group", val = { btn("c", " Config", "cd " .. config_dir .. " | e init.lua"), btn("p", " Plugins", "Pack"), }, opts = { spacing = 0 }, }, { type = "padding", val = 2 }, { type = "group", val = { btn("q", " Exit", "qa") }, opts = { spacing = 0 }, }, }, opts = { margin = 5 }, }) vim.api.nvim_create_autocmd("User", { pattern = "DeferredUIEnter", once = true, callback = function() startup_ms = (vim.uv.hrtime() - vim.g.nvim_start_time) / 1e6 vim.schedule(function() pcall(alpha.redraw) end) end, }) end, }, }