onenord.nvim

🏔️ A Neovim theme that combines the Nord and Atom One Dark color palettes for a more vibrant programming experience.

MIT License

Stars
515

🏔️ onenord.nvim

Features

OneNord is a Neovim theme written in Lua that combines the Nord and Atom One Dark color palettes. More specifically, it seeks to add more vibrance to the Nord theme and provide a great programming experience by leveraging Treesitter!

Plugin Support

Requirements

  • Neovim >= 0.8.0

Installation

Install via your favourite package manager:

" If you are using Vim Plug
Plug 'rmehri01/onenord.nvim', { 'branch': 'main' }
-- If you are using Packer
use 'rmehri01/onenord.nvim'

Usage

For the defaults, simply enable the colorscheme:

" Vim Script
colorscheme onenord
-- Lua
require('onenord').setup()

To enable the onenord theme for Lualine, specify it in your lualine settings:

require('lualine').setup {
  options = {
    -- ... your lualine config
    theme = 'onenord'
    -- ... your lualine config
  }
}

Configuration

The configuration of different options is done through a setup function which will handle setting the colors, so there's no need to set colorscheme yourself! This is an example of the function with the default values:

require('onenord').setup({
  theme = nil, -- "dark" or "light". Alternatively, remove the option and set vim.o.background instead
  borders = true, -- Split window borders
  fade_nc = false, -- Fade non-current windows, making them more distinguishable
  -- Style that is applied to various groups: see `highlight-args` for options
  styles = {
    comments = "NONE",
    strings = "NONE",
    keywords = "NONE",
    functions = "NONE",
    variables = "NONE",
    diagnostics = "underline",
  },
  disable = {
    background = false, -- Disable setting the background color
    float_background = false, -- Disable setting the background color for floating windows
    cursorline = false, -- Disable the cursorline
    eob_lines = true, -- Hide the end-of-buffer lines
  },
  -- Inverse highlight for different groups
  inverse = {
    match_paren = false,
  },
  custom_highlights = {}, -- Overwrite default highlight groups
  custom_colors = {}, -- Overwrite default colors
})

Here is an example of overwriting the default highlight groups and colors:

local colors = require("onenord.colors").load()

require("onenord").setup({
  custom_highlights = {
  ["@constructor"] = { fg = colors.dark_blue, style = 'bold' },
  },
  custom_colors = {
    red = "#ffffff",
  },
})

If you use the light and dark keys, the override will be specific to those themes, otherwise they apply to both:

local colors = require("onenord.colors").load()

require("onenord").setup({
  custom_highlights = {
    light = {
      ["@constructor"] = { fg = colors.dark_blue, style = 'bold' }, -- only applies in light theme
    },
  },
  custom_colors = {
    blue = "#0000ff", -- applies in both themes
    light = {
      red = "#000000", -- only applies in light theme
    },
    dark = {
      red = "#ffffff", -- only applies in dark theme
    },
  },
})

You can also use the OneNord color palette for other plugins using local colors = require("onenord.colors").load()!

Extras

Extra color configs for Kitty, Alacritty, iTerm, Warp, and Xresources can be found in extras. To use them, refer to their respective documentation.

There is also a version for JetBrains IDEs if you are interested!

Credits

I was highly inspired by these other awesome themes, check them out!

Package Rankings
Top 6.66% on Proxy.golang.org