Veil.nvim
A blazingly fast, animated, and infinitely customizeable startup / dashboard plugin (currently unmaintained)
Install / Use
/learn @willothy/Veil.nvimREADME
veil.nvim
A blazingly fast, animated, and infinitely customizeable startup / dashboard plugin
UPDATE 12/25/2023:
Everything below this notice is deprecated, pending a complete rewrite. As seen in #14, I intend to rebuild Veil as a composable floating-window-based UI library providing rendering, placement, interaction, and query primitives. The architecture should allow for complex startup screens with widgets and graphs, interactable items, animated headers (like before), and much more. Floating windows should also make supporting mouse interaction for heretics (/j) much easier.
Warning
I would not recommend using the current implementation, as I am not maintaining it and it is likely very buggy.
Features
- [x] Animated sections rendered with virtual text
- [x] Builtin "standard library"
- [x] Buttons builtin
- [x] Oldfiles builtin
- [ ] Current dir builtin
- [ ] Floating widget builtin
- [x] Ascii frame anim builtin
- [x] Vertical padding builtin
- [x] Static text sections
- [x] Dynamic text sections
- [x] Per-section state
- [ ] Simple and extensible API
- [ ] Rendering / API V2 (in progress)
- [x] Interactible components (use buttons with
<CR>)- [x] Cursor 'hover' events
- [x] Lock cursor to menus
- [x] Highlighting
- [x] Shortcut mappings
- [x] Startup in <1ms
- [ ] Mouse events
- [ ] API for advanced rendering / terminal graphics
Demo (default config)
<!--https://user-images.githubusercontent.com/38540736/227105511-7988cd83-be56-4606-a32d-07d6245d1307.mp4--> <!--https://user-images.githubusercontent.com/38540736/227207398-b8f7af6a-0e88-4874-93fa-196e78c14938.mp4-->https://user-images.githubusercontent.com/38540736/228553706-b68e99a7-c4d6-4803-a06e-4e3bb12109ea.mp4
Installation
<details> <summary>Using lazy.nvim</summary>{
'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 = { ... }
}
</details>
Configuration
<details> <summary>Veil comes with the following defaults</summary> <br/>The defaults assume you have Telescope installed because... you probably do.<br/>
local builtin = require("veil.builtin")
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
}
</details>
Configuration Recipes
<details> <summary>Days of week header by <a href="https://github.com/coopikoop">@coopikoop</a></summary>-- in your config:
local current_day = os.date("%A")
require('veil').setup({
sections = {
builtin.sections.animated(builtin.headers.frames_days_of_week[current_day], {
hl = { fg = "#5de4c7" },
}),
-- other sections
-- ...
}
}
</details>Related Skills
node-connect
354.3kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
112.3kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
354.3kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
354.3kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
