• Stars
    star
    140
  • Rank 261,473 (Top 6 %)
  • Language
    Lua
  • Created over 1 year ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A blazingly fast, animated, and infinitely customizeable startup / dashboard plugin (currently unmaintained, but with plans for a ground-up rewrite)

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

  • 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

Demo (default config)

2023-03-29.06-25-07.mp4

Installation

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 = { ... }
}

Configuration

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.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
}

Configuration Recipes

Days of week header by @coopikoop
-- 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
    -- ...
  }
}

More Repositories

1

nvim-cokeline

👃 A Neovim bufferline for people with addictive personalities
Lua
540
star
2

flatten.nvim

Open files and command output from wezterm, kitty, and neovim terminals in your current neovim instance
Lua
476
star
3

wezterm.nvim

Utilities for interacting with Wezterm from within Neovim
Lua
178
star
4

moveline.nvim

Neovim plugin for moving lines up and down
Rust
131
star
5

nvim-utils

Utilities and bindings for writing Neovim plugins in Rust
Rust
78
star
6

nvim-config

My personal Neovim config
Lua
59
star
7

strat-hero.nvim

Helldivers 2's "Strategem Hero" minigame for Neovim. Become a better Helldiver from the comfort of your favorite editor!
Lua
24
star
8

savior.nvim

Customizable, event-based auto saving for Neovim
Lua
22
star
9

luahint

LSP inline hints for Lua, intended for use with Neovim.
Rust
16
star
10

glass.nvim

A stateful windowing and animation plugin / library for Neovim (WIP)
Lua
8
star
11

dotfiles

Shell
7
star
12

sesh

Simple terminal session management (tmux but super mid), written in Rust btw
Rust
7
star
13

blam.nvim

A simple plugin for viewing git blame info, inspired by GitLens
Rust
6
star
14

Letter

Letter is a compiler project built in TypeScript using LLVM node bindings.
TypeScript
5
star
15

sharp

LLVM-Based procedural-ish programming language written in Rust, with Rust-like syntax and modules
Rust
4
star
16

sanguine

A library for creating dynamic TUI experiences in Rust
Rust
3
star
17

twitch.nvim

Highly experimental Twitch chat integration for Neovim
Rust
2
star
18

minimus

Personal color scheme
Lua
2
star
19

wrangler.nvim

Harpoon-like mark manager for Neovim, backed by SQLite (WIP)
Lua
2
star
20

micro-async.nvim

Ultra-simple async library for Neovim, with cancellation support
Lua
2
star
21

hollywood.nvim

📸 Action! A flexible, elegant and featureful code action menu (WIP)
Lua
2
star
22

worth

Compiler for the Porth programming language, targeting x86_64 assembly.
Rust
1
star
23

notify-ls.nvim

Experimental progress and notification reporting for Neovim using an in-process language server. Not at all ready for use.
Lua
1
star
24

lazyline.nvim

Lazy-loading statusline for Neovim
Lua
1
star
25

lua-lexer-deez

Simple transpiler in Lua (Luajit). Transpiles toy language into Lua. Incomplete, may revisit at some point.
Lua
1
star
26

neosuggest

WIP cross-shell autosuggestion engine
Rust
1
star
27

PeachOS

C
1
star
28

crates_cli

A command line interface for finding and managing Rust crates.
Rust
1
star
29

judge.lua

Lua
1
star
30

awesome-config

Lua
1
star
31

leptos.nvim

Experimental Lua/Nvim bindings for the leptos-reactive rust crate
Rust
1
star
32

winborder.nvim

Floating border surrounding the active split
Lua
1
star
33

crane-lang

WIP compiler targeting x86_64
Rust
1
star
34

.nix

Nix
1
star
35

goose

Good ol' OS experiment. Probably bad. I have no idea what I'm doing, but the goal is to have some idea when I'm done.
Rust
1
star
36

libsql-lua

Mlua-based Luajit bindings to tursodatabase/libsql. Synchronous only, for now. Entirely untested and not ready for use.
Rust
1
star