Files
n8n-colorscheme.nvim/README.md

179 lines
4.7 KiB
Markdown
Raw Permalink Normal View History

# n8n.nvim
A dark Neovim colorscheme inspired by the [n8n](https://n8n.io) workflow automation platform's dark mode UI.
Built from n8n's actual CSS design tokens: the same neutrals, the signature orange accent, the purple/blue/green syntax colors you see in the n8n editor and JSON viewer.
## Features
- Full Treesitter highlight group support
- LSP semantic token highlights
- Terminal colors
- Lualine theme included
- Plugin support: Telescope, NvimTree, Neo-tree, cmp, Blink.cmp, GitSigns, Indent Blankline, Which-Key, Lazy, Mason, Noice, Notify, Trouble, Mini, Bufferline, Snacks, and more
- Transparent background option
- Customizable styles and color overrides
## Installation
### vim.pack (native packages)
Clone the repo into your Neovim pack path so it loads automatically:
```bash
git clone https://github.com/your-username/n8n.nvim \
~/.config/nvim/pack/plugins/start/n8n.nvim
```
Then in your `init.lua`:
```lua
require("n8n").setup({
-- optional config
})
vim.cmd("colorscheme n8n")
```
If you prefer to load it on demand, clone into `opt` instead:
```bash
git clone https://github.com/your-username/n8n.nvim \
~/.config/nvim/pack/plugins/opt/n8n.nvim
```
```lua
vim.cmd("packadd n8n.nvim")
require("n8n").setup()
vim.cmd("colorscheme n8n")
```
### lazy.nvim
```lua
{
"your-username/n8n.nvim",
lazy = false,
priority = 1000,
config = function()
require("n8n").setup({
-- your config here (optional)
})
vim.cmd("colorscheme n8n")
end,
}
```
### packer.nvim
```lua
use({
"your-username/n8n.nvim",
config = function()
require("n8n").setup()
vim.cmd("colorscheme n8n")
end,
})
```
### vim-plug
```vim
Plug 'your-username/n8n.nvim'
" in your init.vim, after plug#end():
lua require('n8n').setup()
colorscheme n8n
```
## Configuration
Call `setup()` **before** setting the colorscheme. All options are optional.
```lua
require("n8n").setup({
transparent = false, -- enable transparent background
terminal_colors = true, -- configure terminal colors
dim_inactive = false, -- dim inactive split windows
styles = {
comments = { italic = true },
keywords = {},
functions = {},
strings = {},
variables = {},
},
-- Override specific colors
on_colors = function(colors)
-- colors.bg = "#000000"
return colors
end,
-- Override specific highlight groups
on_highlights = function(highlights, colors)
-- highlights.Normal = { fg = "#ffffff", bg = "#000000" }
end,
})
```
## Lualine
The theme ships with a built-in lualine theme:
```lua
require("lualine").setup({
options = {
theme = "n8n",
},
})
```
## Palette
The color palette is extracted directly from n8n's dark mode CSS custom properties. Key colors:
| Role | Color | Hex |
|------|-------|-----|
| Background | ![#171717](https://placehold.co/15x15/171717/171717.png) | `#171717` |
| Surface | ![#212121](https://placehold.co/15x15/212121/212121.png) | `#212121` |
| Foreground | ![#e0e0e0](https://placehold.co/15x15/e0e0e0/e0e0e0.png) | `#e0e0e0` |
| Accent (Orange) | ![#ff6f5c](https://placehold.co/15x15/ff6f5c/ff6f5c.png) | `#ff6f5c` |
| Keywords | ![#ff6f5c](https://placehold.co/15x15/ff6f5c/ff6f5c.png) | `#ff6f5c` |
| Strings | ![#a098dc](https://placehold.co/15x15/a098dc/a098dc.png) | `#a098dc` |
| Functions | ![#7fb3e6](https://placehold.co/15x15/7fb3e6/7fb3e6.png) | `#7fb3e6` |
| Types | ![#c3bee9](https://placehold.co/15x15/c3bee9/c3bee9.png) | `#c3bee9` |
| Numbers | ![#29a360](https://placehold.co/15x15/29a360/29a360.png) | `#29a360` |
| Constants | ![#e6a23d](https://placehold.co/15x15/e6a23d/e6a23d.png) | `#e6a23d` |
| Comments | ![#828282](https://placehold.co/15x15/828282/828282.png) | `#828282` |
| Error | ![#ea1f30](https://placehold.co/15x15/ea1f30/ea1f30.png) | `#ea1f30` |
| Warning | ![#ffc400](https://placehold.co/15x15/ffc400/ffc400.png) | `#ffc400` |
| Info | ![#2878c8](https://placehold.co/15x15/2878c8/2878c8.png) | `#2878c8` |
| Hint | ![#33cc78](https://placehold.co/15x15/33cc78/33cc78.png) | `#33cc78` |
## Project Structure
```
n8n.nvim/
├── colors/
│ └── n8n.lua # entry point for :colorscheme n8n
├── lua/
│ ├── n8n/
│ │ ├── init.lua # setup() and load() logic
│ │ ├── palette.lua # raw hex values from n8n's CSS
│ │ ├── theme.lua # semantic color mapping
│ │ └── groups.lua # all highlight group definitions
│ └── lualine/
│ └── themes/
│ └── n8n.lua # lualine theme extra
├── LICENSE
└── README.md
```
## Acknowledgements
Colors derived from the [n8n design system](https://github.com/n8n-io/n8n). This is a community project and is not affiliated with n8n GmbH.
## License
MIT