# lualine.nvim — Blazing Fast Statusline for Neovim > Statusline plugin written in pure Lua with themes and a component system for Neovim. ## Install Save as a script file and run: # lualine.nvim — Blazing Fast Statusline for Neovim ## Quick Use Install via lazy.nvim: `{ "nvim-lualine/lualine.nvim", dependencies = { "nvim-tree/nvim-web-devicons" } }`. Add `require("lualine").setup()` to your config. The statusline appears immediately with the default theme. ## Introduction lualine.nvim is a statusline plugin for Neovim written entirely in Lua. It provides a configurable, component-based statusline that displays information like mode, branch, diagnostics, filename, and file progress. The repository is nvim-lualine/lualine.nvim on GitHub with approximately 8,060 stars. ## What lualine.nvim Does lualine.nvim replaces Neovim's default statusline with a structured bar divided into sections (a, b, c, x, y, z). Each section holds components that display dynamic information—current mode, git branch, diff stats, LSP diagnostics, filetype, encoding, cursor position. The plugin also supports tabline and winbar rendering using the same component system. ## Architecture Overview The plugin organizes the statusline into six sections mirroring the vim-airline convention. Each section contains an ordered list of components. Built-in components cover common needs (mode, branch, diff, diagnostics, filename, progress), and users can define custom components as functions or tables. A theme engine applies color schemes to sections and mode transitions. The rendering pipeline evaluates components, applies formatting, and updates the statusline string on each relevant event. ## Self-Hosting & Configuration lualine.nvim runs locally inside Neovim. Install the plugin and optionally nvim-web-devicons for component icons. Configuration is done through `require("lualine").setup({})` where you specify options for theme, section_separators, component_separators, and the component layout for each section. Themes can be selected from built-in options or defined as custom color tables. ## Key Features - Component-based architecture with six configurable sections - Built-in components: mode, branch, diff, diagnostics, filename, filetype, progress, location - Theme system with many built-in themes (gruvbox, dracula, nord, auto, and more) - Custom components via functions, returning strings or tables - Section and component separators with customizable icons - Tabline and winbar support using the same configuration pattern - Conditional component display based on window width or custom conditions - Extensions for plugin integration (nvim-tree, fugitive, fzf, etc.) ## Comparison with Similar Tools Compared to vim-airline, lualine.nvim is Lua-native, loads faster, and avoids Vimscript overhead. galaxyline.nvim offers a provider-based approach with more granular control per segment but requires more configuration. heirline.nvim provides a lower-level statusline framework with full control over evaluation order, while lualine.nvim favors convention over configuration. feline.nvim is similar in concept but is no longer actively maintained, making lualine.nvim a more reliable choice. ## FAQ **Q: How do I change the theme?** A: Set `options = { theme = "gruvbox" }` in the setup call. Use `"auto"` to follow the current colorscheme automatically. **Q: Can I add custom components?** A: Yes. Pass a function returning a string in any section's component list, e.g., `lualine_c = { function() return os.date("%H:%M") end }`. **Q: Does lualine support the winbar?** A: Yes. Use the `winbar` and `inactive_winbar` keys in setup to configure per-window bars with the same component system. ## Sources - GitHub repository: https://github.com/nvim-lualine/lualine.nvim - Wiki: https://github.com/nvim-lualine/lualine.nvim/wiki --- Source: https://tokrepo.com/en/workflows/asset-4ea8cc00 Author: Script Depot