Skip to content

LuxVim/nvim-luxdash

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

# LuxDash A highly customizable Neovim dashboard plugin with a beautiful logo, recent files, git status, and quick actions. ![Status](https://img.shields.io/badge/status-active-success.svg) ![Lua](https://img.shields.io/badge/Made%20with-Lua-blueviolet.svg) ![Neovim](https://img.shields.io/badge/NeoVim-%2357A143.svg?&logo=neovim&logoColor=white) ## Features - **Customizable Logo**: Display ASCII art with gradient colors - **Recent Files**: Quick access to recently opened files with numeric keybindings (1-9) - **Git Integration**: Real-time git status, branch info, and commit details - **Quick Actions**: Configurable menu for common operations - **Floating Window**: Beautiful floating dashboard with customizable borders - **Modular Sections**: Easy to add, remove, or customize sections - **Performance**: Efficient caching and rendering system ## Requirements - Neovim >= 0.9.0 - Git (for git status section) - Optional: [Telescope](https://github.com/nvim-telescope/telescope.nvim) or [FzfLua](https://github.com/ibhagwan/fzf-lua) for enhanced file navigation ## Installation ### [lazy.nvim](https://github.com/folke/lazy.nvim) ```lua { 'your-username/nvim-luxdash', dependencies = { 'nvim-telescope/telescope.nvim', -- Optional: for enhanced file navigation }, config = function() require('luxdash').setup() end, keys = { { 'd', 'LuxDash', desc = 'Toggle LuxDash' }, }, } ``` ### [packer.nvim](https://github.com/wbthomason/packer.nvim) ```lua use { 'your-username/nvim-luxdash', requires = { 'nvim-telescope/telescope.nvim', -- Optional }, config = function() require('luxdash').setup() end } ``` ### [vim-plug](https://github.com/junegunn/vim-plug) ```vim Plug 'nvim-telescope/telescope.nvim' " Optional Plug 'your-username/nvim-luxdash' lua << EOF require('luxdash').setup() EOF ``` ## Basic Usage ### Commands - `:LuxDash` - Toggle the dashboard ### Default Keybindings (in dashboard) - `1-9` - Open recent file by number - `q` - Close dashboard - Menu action keybindings as configured ### Lua API ```lua -- Open dashboard require('luxdash').open() -- Toggle dashboard require('luxdash').toggle() ``` ## Configuration ### Default Configuration ```lua require('luxdash').setup({ -- Dashboard name name = 'LuxDash', -- Logo (ASCII art using Braille characters) logo = { '', '��D...', -- Your custom ASCII art '', }, -- Logo gradient colors (hex format) logo_color = { -- Auto-adapt to current theme (default: true) auto_theme = true, -- Or manually specify colors: -- row_gradient = { -- start = '#ff7801', -- Top color (orange) -- bottom = '#db2dee' -- Bottom color (purple) -- } }, -- Section configuration sections = { -- Main section (logo area) main = { type = 'logo', config = { alignment = { horizontal = 'center', vertical = 'center' } } }, -- Bottom sections (horizontal layout) bottom = { { id = 'actions', type = 'menu', title = '� Actions', config = { show_title = true, show_underline = true, padding = { left = 2, right = 2 }, menu_items = { 'newfile', 'backtrack', 'fzf', 'closelux' } } }, { id = 'recent_files', type = 'recent_files', title = '=� Recent Files', config = { show_title = true, show_underline = true, padding = { left = 2, right = 2 }, max_files = 8 } }, { id = 'git_status', type = 'git_status', title = 'h', 'LuxDash', { desc = 'Open Dashboard' }) ``` ### Auto-close on File Open The dashboard automatically closes when you open a recent file using the number keys. ## Performance LuxDash is designed for performance: - **Caching**: Layout, colors, and sections are cached - **Lazy Loading**: Sections are loaded only when needed - **Efficient Rendering**: Optimized highlight and buffer operations - **Debouncing**: Window resize events are debounced ## Troubleshooting ### Dashboard doesn't show Make sure you call `setup()` in your config: ```lua require('luxdash').setup() ``` ### Git status not showing Ensure you're in a git repository and git is installed: ```bash git --version ``` ### Recent files not appearing Recent files are filtered to only show files in the current working directory. Change directory with `:cd` if needed. ### File icons not displaying LuxDash uses built-in icons. Ensure your terminal and font support Nerd Fonts or Unicode characters. ## Architecture LuxDash is built with a modular architecture: ``` lua/luxdash/ � core/ # Core rendering and caching � sections/ # Section implementations (logo, menu, recent files, git) � rendering/ # Rendering utilities and alignment � ui/ # UI components (floating window, buffer manager) � utils/ # Utility functions � menu/ # Menu action handlers ``` ## Contributing Contributions are welcome! Areas for improvement: - [ ] Additional section types - [ ] Custom section API - [ ] More menu actions - [ ] Async git operations - [ ] Unit tests - [ ] Documentation improvements ## License MIT License - see LICENSE file for details ## Acknowledgments - Inspired by [alpha-nvim](https://github.com/goolord/alpha-nvim) and [dashboard-nvim](https://github.com/nvimdev/dashboard-nvim) - ASCII art logo created with love - Built for the Neovim community ## Support If you encounter issues or have questions: 1. Check the [Troubleshooting](#troubleshooting) section 2. Search existing issues on GitHub 3. Create a new issue with details about your setup --- **Made with Lua for Neovim**

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages