A Neovim plugin that adds a colored vertical bar to the left of the editor window, inspired by the VSCode Peacock extension. Perfect for visually distinguishing between different workspaces/projects.
lutos.mp4
- 🎨 18 color options including VSCode Peacock-inspired colors
- 📂 Per-workspace persistence - colors are saved and restored per directory
- 🔄 Dynamic updates - responds to text changes, scrolling, and window resizing
- 🏗️ Hybrid architecture - combines statuscolumn + floating window for full coverage
- 🚫 Non-interfering - preserves all diagnostic signs, LSP indicators, and folds
- ⚡ Efficient - single shared buffer for all floating windows
Using lazy.nvim
{
"sfn101/lutos.nvim",
dependencies = {
"folke/which-key.nvim",
},
config = function()
require("lutos").setup({
bar_width = 2, -- Width of the colored bar (default: 2)
})
end,
}Using packer.nvim
use {
"sfn101/lutos.nvim",
requires = { "folke/which-key.nvim" },
config = function()
require("lutos").setup({
bar_width = 2,
})
end,
}Press <leader>wp to open the color picker menu and choose a color for your current workspace.
- Angular Red
- Azure Blue
- JavaScript Yellow
- Mandalorian Blue
- Node Green
- React Blue
- Something Different
- Svelte Orange
- Vue Green
- Red
- Green
- Yellow
- Blue
- Magenta
- Orange
- Purple
- Pink
- None (remove color)
require("lutos").setup({
bar_width = 2, -- Width of the colored bar in characters (default: 2)
})Lutos uses a two-layer architecture to provide full window height coverage without interfering with existing UI elements:
Layer 1 - Statuscolumn (for existing buffer content):
- Wraps your existing statuscolumn with a colored bar prefix
- Preserves all sign column functionality (diagnostics, LSP, folds, git signs)
- No overlay conflicts - sits naturally to the left of all other elements
Layer 2 - Floating Window (for empty space below content):
- Dynamically positioned below the last buffer line
- Only appears when there's empty space in the window
- Automatically adjusts as content changes, scrolls, or window resizes
- Single shared buffer for efficiency across all windows
Colors are stored per workspace (directory) in ~/.local/share/nvim/lutos_state.json and automatically restored when you return to a workspace.
- Neovim >= 0.9.0
- which-key.nvim (for keymap menu)
Lutos works seamlessly with snacks.nvim statuscolumn. If you're using Snacks, lutos will automatically wrap its statuscolumn output with the colored bar.
Inspired by the Peacock extension for VSCode.
MIT License - see LICENSE for details.