You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
# LuxDash
A highly customizable Neovim dashboard plugin with a beautiful logo, recent files, git status, and quick actions.



## 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**