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
- Oldfiles builtin
- Current dir builtin
- Floating widget builtin
- Ascii frame anim builtin
- Vertical padding builtin
- Static text sections
- Dynamic text sections
- Per-section state
- Simple and extensible API
- Rendering / API V2 (in progress)
- 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
2023-03-29.06-25-07.mp4
Using lazy.nvim
{
'willothy/veil.nvim',
lazy = true,
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"
}
config = true,
-- 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")
-- if you want to have the days of the week display, uncomment the following line
-- local current_day = os.date("%A")
-- then change "builtin.headers.frames_nvim" to "builtin.headers.frames_days_of_week[current_day]"
local default = {
sections = {
builtin.sections.animated(builtin.headers.frames_nvim, {
hl = { fg = "#5de4c7" },
}),
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.oldfiles(),
mappings = {},
startup = true,
listed = false
}