Files
n8n-colorscheme.nvim/README.md
2026-04-14 20:20:41 -04:00

4.7 KiB

n8n.nvim

A dark Neovim colorscheme inspired by the n8n 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:

git clone https://github.com/your-username/n8n.nvim \
  ~/.config/nvim/pack/plugins/start/n8n.nvim

Then in your init.lua:

require("n8n").setup({
  -- optional config
})
vim.cmd("colorscheme n8n")

If you prefer to load it on demand, clone into opt instead:

git clone https://github.com/your-username/n8n.nvim \
  ~/.config/nvim/pack/plugins/opt/n8n.nvim
vim.cmd("packadd n8n.nvim")
require("n8n").setup()
vim.cmd("colorscheme n8n")

lazy.nvim

{
  "your-username/n8n.nvim",
  lazy = false,
  priority = 1000,
  config = function()
    require("n8n").setup({
      -- your config here (optional)
    })
    vim.cmd("colorscheme n8n")
  end,
}

packer.nvim

use({
  "your-username/n8n.nvim",
  config = function()
    require("n8n").setup()
    vim.cmd("colorscheme n8n")
  end,
})

vim-plug

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.

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:

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 #171717
Surface #212121 #212121
Foreground #e0e0e0 #e0e0e0
Accent (Orange) #ff6f5c #ff6f5c
Keywords #ff6f5c #ff6f5c
Strings #a098dc #a098dc
Functions #7fb3e6 #7fb3e6
Types #c3bee9 #c3bee9
Numbers #29a360 #29a360
Constants #e6a23d #e6a23d
Comments #828282 #828282
Error #ea1f30 #ea1f30
Warning #ffc400 #ffc400
Info #2878c8 #2878c8
Hint #33cc78 #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. This is a community project and is not affiliated with n8n GmbH.

License

MIT