Skip to content

loctvl842/monokai-pro.nvim

Repository files navigation

Monokai Pro

Monokai Pro for Neovim

Beautiful functionality for professional developers

monokai.pro · Installation · Configuration · Lazy Loading

monokai-pro.nvim is under active development.

Version v2.0.0 involves a large internal refactor, so some short-term regressions are expected. If you encounter issues, please report them here — they help stabilize the next release.

If you are maintaining a fork with fixes, please consider contributing upstream via pull requests so improvements benefit the whole community.

monokai-pro-macbook

Filters

Pro (default)

pro

Octagon

octagon

Machine

machine

Ristretto

ristretto

Spectrum

spectrum

Classic

classic

Installation

Using lazy.nvim:

{
  "loctvl842/monokai-pro.nvim",
  lazy = false,
  priority = 1000,
  config = function()
    require("monokai-pro").setup()
    vim.cmd.colorscheme("monokai-pro")
  end,
}

Using packer.nvim:

use {
  "loctvl842/monokai-pro.nvim",
  config = function()
    require("monokai-pro").setup()
    vim.cmd.colorscheme("monokai-pro")
  end
}

Configuration

require("monokai-pro").setup({
  transparent_background = false,
  terminal_colors = true,
  devicons = true,
  styles = {
    comment = { italic = true },
    keyword = { italic = true },
    type = { italic = true },
    storageclass = { italic = true },
    structure = { italic = true },
    parameter = { italic = true },
    annotation = { italic = true },
    tag_attribute = { italic = true },
  },
  filter = "pro", -- classic | octagon | pro | machine | ristretto | spectrum
  day_night = {
    enable = false,
    day_filter = "pro",
    night_filter = "spectrum",
  },
  inc_search = "background", -- underline | background
  background_clear = {
    "toggleterm",
    "telescope",
    "renamer",
    "notify",
  },
  plugins = {
    bufferline = {
      underline_selected = false,
      underline_visible = false,
      underline_fill = false,
      bold = true,
    },
    indent_blankline = {
      context_highlight = "default", -- default | pro
      context_start_underline = false,
    },
  },
  override = function(scheme)
    return {}
  end,
  override_palette = function(filter)
    return {}
  end,
  override_scheme = function(scheme, palette, colors)
    return {}
  end,
})

Lazy Loading

Plugin highlights can be lazy-loaded to reduce initial colorscheme load time. Highlights are applied when:

  • Event-based: A Vim event fires (e.g., VimEnter, FileType)
  • Module-based: A module is required (e.g., require("telescope"))

How It Works

Each plugin spec can define a lazy field:

-- Eager loading (default)
{ name = "treesitter", lazy = false }

-- Lazy loading on module require
{ name = "telescope", lazy = { module = "telescope" } }

-- Lazy loading on event
{ name = "dashboard", lazy = { event = "VimEnter" } }

-- Both triggers
{ name = "neo-tree", lazy = { module = "neo-tree", event = "FileType neo-tree" } }

Check Applied Plugins

:lua print(vim.inspect(require("monokai-pro.theme.triggers").applied_plugins))

Disable Specific Plugins

require("monokai-pro").setup({
  disabled_plugins = { "bufferline", "neo-tree" },
})

Plugin Support

33 plugins supported
Plugin Lazy Loading
aerial.nvim module
alpha-nvim module
blink.cmp module
bufferline.nvim module
coc.nvim module
dashboard-nvim event
fidget.nvim module
fzf-lua module
gitsigns.nvim module
indent-blankline.nvim module
lazy.nvim module
lualine.nvim built-in
mason.nvim module
mini.nvim module
neo-tree.nvim module
noice.nvim module
nvim-cmp module
nvim-navic module
nvim-notify module
nvim-tree.lua module
nvim-treesitter eager
nvim-ufo module
packer.nvim module
rainbow-delimiters.nvim module
renamer.nvim module
nvim-scrollbar module
snacks.nvim module
telescope.nvim module
toggleterm.nvim module
vim-illuminate module
which-key.nvim module
wilder.nvim module
Built-in LSP eager

Lualine

require("lualine").setup({
  options = { theme = "monokai-pro" },
})

Barbecue

require("barbecue").setup({
  theme = "monokai-pro",
})

Lightline

let g:lightline = {'colorscheme': 'monokaipro'}

NvChad

monokai-pro.nvim can be integrated with NvChad's base46 theme system, enabling theme toggle functionality.

Step 1: Create theme files in your NvChad config:

-- lua/themes/monokai-pro.lua
return require("monokai-pro").nvchad()
-- lua/themes/monokai-pro-light.lua
return require("monokai-pro").nvchad("light")

Step 2: Update your chadrc.lua:

M.base46 = {
  theme = "monokai-pro",
  theme_toggle = { "monokai-pro", "monokai-pro-light" },
}

Step 3: Ensure monokai-pro is installed (without loading the colorscheme):

{
  "loctvl842/monokai-pro.nvim",
  lazy = false,
  priority = 1000,
  config = function()
    require("monokai-pro").setup()
    -- Don't call vim.cmd.colorscheme() - let NvChad handle it
  end,
}

You can also create theme files for other filters:

-- lua/themes/monokai-pro-spectrum.lua
return require("monokai-pro").nvchad("spectrum")

Customization

Override Highlights

require("monokai-pro").setup({
  override = function(scheme)
    return {
      Normal = { bg = "#000000" },
      IndentBlanklineChar = { fg = scheme.base.dimmed4 },
    }
  end,
})

Custom Palette

require("monokai-pro").setup({
  override_palette = function(filter)
    return {
      dark2 = "#101014",
      dark1 = "#16161E",
      background = "#1A1B26",
      text = "#C0CAF5",
      accent1 = "#f7768e",
      accent2 = "#7aa2f7",
      accent3 = "#e0af68",
      accent4 = "#9ece6a",
      accent5 = "#0DB9D7",
      accent6 = "#9d7cd8",
      dimmed1 = "#737aa2",
      dimmed2 = "#787c99",
      dimmed3 = "#363b54",
      dimmed4 = "#363b54",
      dimmed5 = "#16161e",
    }
  end,
})

Custom Scheme

require("monokai-pro").setup({
  override_scheme = function(scheme, palette, colors)
    return {
      editor = {
        background = colors.blend(palette.background, 0.75, "#000000"),
      },
    }
  end,
})

Commands

Command Description
:MonokaiPro Select filter with picker (requires nui.nvim)
:MonokaiPro <filter> Set filter directly (e.g., :MonokaiPro spectrum)
:MonokaiProSelect Alias for :MonokaiPro

Palette Reference

base = {
  dark = "#19181a",      -- darker background
  black = "#221f22",     -- background
  red = "#ff6188",       -- accent1
  green = "#a9dc76",     -- accent4
  yellow = "#ffd866",    -- accent3
  blue = "#fc9867",      -- accent2
  magenta = "#ab9df2",   -- accent6
  cyan = "#78dce8",      -- accent5
  white = "#fcfcfa",     -- text
  dimmed1 = "#c1c0c0",
  dimmed2 = "#939293",
  dimmed3 = "#727072",
  dimmed4 = "#5b595c",
  dimmed5 = "#403e41",
}

License

MIT

About

Monokai Pro theme for Neovim written in Lua, with multiple filters: Pro, Classic, Machine, Octagon, Ristretto, Spectrum

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors