# 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