From 694542b982d75075e7122d5507b724d365f6edd4 Mon Sep 17 00:00:00 2001 From: Jonas Hahn Date: Fri, 29 Aug 2025 17:47:50 +0200 Subject: [PATCH] added a dashboard that is fully customizable --- lazy-lock.json | 1 + lua/dashboard.lua | 41 +++++++++++++++++++++++++++++++++++++++++ lua/plugins/ui.lua | 8 ++++++++ 3 files changed, 50 insertions(+) create mode 100644 lua/dashboard.lua diff --git a/lazy-lock.json b/lazy-lock.json index defa122..23fb360 100644 --- a/lazy-lock.json +++ b/lazy-lock.json @@ -1,6 +1,7 @@ { "LuaSnip": { "branch": "master", "commit": "458560534a73f7f8d7a11a146c801db00b081df0" }, "aerial.nvim": { "branch": "master", "commit": "c7cbbad40c2065fccfd1f1863bb2c08180c0533d" }, + "alpha-nvim": { "branch": "main", "commit": "2b3cbcdd980cae1e022409289245053f62fb50f6" }, "barbar.nvim": { "branch": "master", "commit": "53b5a2f34b68875898f0531032fbf090e3952ad7" }, "cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" }, "cmp-nvim-lsp": { "branch": "main", "commit": "bd5a7d6db125d4654b50eeae9f5217f24bb22fd3" }, diff --git a/lua/dashboard.lua b/lua/dashboard.lua new file mode 100644 index 0000000..750efbd --- /dev/null +++ b/lua/dashboard.lua @@ -0,0 +1,41 @@ +local alpha = require("alpha") +local dashboard = require("alpha.themes.dashboard") + +dashboard.section.header.val = { + [[░█████╗░░██████╗░█████╗░██╗░░░██╗██╗██╗]], + [[██╔══██╗██╔════╝██╔══██╗╚██╗░██╔╝██║██║]], + [[███████║╚█████╗░██║░░╚═╝░╚████╔╝░██║██║]], + [[██╔══██║░╚═══██╗██║░░██╗░░╚██╔╝░░██║██║]], + [[██║░░██║██████╔╝╚█████╔╝░░░██║░░░██║██║]], + [[╚═╝░░╚═╝╚═════╝░░╚════╝░░░░╚═╝░░░╚═╝╚═╝]], +} + +dashboard.section.buttons.val = { + dashboard.button("e", "New File", ":ene startinsert "), + dashboard.button("r", "Recent Files", ":Telescope oldfiles"), + dashboard.button("c", "Config", ":e $MYVIMRC"), + dashboard.button("q", "Quit", ":qa"), +} + +dashboard.section.footer.val = "Welcome to Neovim! Enjoy!" + +dashboard.section.header.opts.hl = "include" +dashboard.section.buttons.opts.hl = "keyword" +dashboard.section.footer.opts.hl = "type" + +local screen_height = vim.fn.winheight(0) +local content_height = + #dashboard.section.header.val + + #dashboard.section.buttons.val + + #dashboard.section.footer.val + +dashboard.opts.layout = { + { type = "padding", val = math.floor((screen_height - content_height) / 2) }, + dashboard.section.header, + { type = "padding", val = 2 }, + dashboard.section.buttons, + { type = "padding", val = 1 }, + dashboard.section.footer, +} + +alpha.setup(dashboard.opts) diff --git a/lua/plugins/ui.lua b/lua/plugins/ui.lua index 020c36f..ead8d75 100644 --- a/lua/plugins/ui.lua +++ b/lua/plugins/ui.lua @@ -60,4 +60,12 @@ return { vim.keymap.set("n", "bd", ":BufferDelete") end }, + + { + "goolord/alpha-nvim", + dependencies = { "nvim-tree/nvim-web-devicons" }, + config = function() + require("dashboard") + end + } }