A blazingly fast, animated, and infinitely customizeable startup / dashboard plugin
Warning
Work in progress, there may be some bugs :)
- Animated sections rendered with virtual text
- Builtin "standard library"
- Buttons builtin
- Ascii frame anim builtin
- Vertical padding builtin
- Static text sections
- Dynamic text sections
- Per-section state
- Simple and extensible API
- Interactible components (use buttons with
<CR>
)- Cursor 'hover' events
- Lock cursor to menus
- Highlighting
- Shortcut mappings
- Startup in <1ms
- Mouse events
- API for advanced rendering / terminal graphics
- Bundle drawille (temporary, in progress)
- Custom rendering API (to eventually replace drawille dependency)
VeilNewDemo.mp4
Using lazy.nvim
{
'willothy/veil.nvim',
config = true,
lazy = true,
event = 'VimEnter',
dependencies = {
-- All optional, only required for the default setup.
-- If you customize your config, these aren't necessary.
"nvim-telescope/telescope.nvim",
"nvim-lua/plenary.nvim",
"nvim-telescope/telescope-file-browser.nvim"
}
-- or configure with:
-- opts = { ... }
}
Veil comes with the following defaults
The defaults assume you have Telescope installed because... you probably do.
local builtin = require("veil.builtin")
local default = {
sections = {
builtin.sections.animated(builtin.headers.frames_nvim, {
hl = { fg = "#5de4c7" },
}),
builtin.sections.padding(2),
builtin.sections.buttons({
{
icon = "",
text = "Find Files",
shortcut = "f",
callback = function()
require("telescope.builtin").find_files()
end,
},
{
icon = "",
text = "Find Word",
shortcut = "w",
callback = function()
require("telescope.builtin").live_grep()
end,
},
{
icon = "",
text = "Buffers",
shortcut = "b",
callback = function()
require("telescope.builtin").buffers()
end,
},
{
icon = "",
text = "Config",
shortcut = "c",
callback = function()
require("telescope").extensions.file_browser.file_browser({
path = vim.fn.stdpath("config"),
})
end,
},
}),
builtin.sections.padding(3),
},
mappings = {},
startup = true,
}