Git Product home page Git Product logo

nvim-noirbuddy's Introduction

Noirbuddy

A highly customizable minimalist monochromatic colorscheme for Neovim ๐Ÿ–ค

Built on colorbuddy.nvim, with a monochromatic base palette, and the ability to set a flavor color or two ๐Ÿ’…

Installation

  1. Install using your favourite package manager:

    Breaking changes: If you were previously using colorbuddy's dev branch, please switch to master!

    Using packer.nvim:

    use {
      "jesseleite/nvim-noirbuddy",
      requires = { "tjdevries/colorbuddy.nvim" }
    }

    Using lazy.nvim:

    {
      'jesseleite/nvim-noirbuddy',
      dependencies = {
        { 'tjdevries/colorbuddy.nvim' }
      },
      lazy = false,
      priority = 1000,
      opts = {
        -- All of your `setup(opts)` will go here
      },
    }

    Using vim-plug:

    Plug 'tjdevries/colorbuddy.nvim'
    Plug 'jesseleite/nvim-noirbuddy'
  2. Enable the colorscheme in your lua config:

    Note: You can skip this step if you're using lazy.nvim!

    require("noirbuddy").setup()
  3. Order pizza! ๐Ÿ• ๐Ÿค˜ ๐Ÿ˜Ž

Selecting Presets

The default minimal preset consists of a monochromatic grayscale palette with one sexy primary color.

You can select from one of the bundled presets like so:

require('noirbuddy').setup {
  preset = 'miami-nights',
}

Available Presets

Customizing Your Theme

You can configure a custom primary color like so:

require('noirbuddy').setup {
  colors = {
    primary = '#6EE2FF',
  },
}

For a more duotone look, you can configure a secondary color:

require('noirbuddy').setup {
  colors = {
    primary = '#6EE2FF',
    secondary = '#267FB5',
  },
}

You can also customize the background color:

require('noirbuddy').setup {
  colors = {
    background = '#18181A',
  },
}

Or even the base grayscale palette:

require("noirbuddy").setup {
  colors = {
    noir_0 = '#ffffff', -- `noir_0` is light for dark themes, and dark for light themes
    noir_1 = '#f5f5f5',
    noir_2 = '#d5d5d5',
    noir_3 = '#b4b4b4',
    noir_4 = '#a7a7a7',
    noir_5 = '#949494',
    noir_6 = '#737373',
    noir_7 = '#535353',
    noir_8 = '#323232',
    noir_9 = '#212121', -- `noir_9` is dark for dark themes, and light for light themes
  },
}

Customizing Semantic Colors

You may wish to configure specific colors for things that have semantic meaning (ie. red for errors, orange for warnings, etc.), in a way that won't change as you switch between presets:

require("noirbuddy").setup {
  colors = {
    diagnostic_error = '#EC0034',
    diagnostic_warning = '#ff7700',
    diagnostic_info = '#d5d5d5',
    diagnostic_hint = '#f5f5f5',
    diff_add = '#f5f5f5',
    diff_change = '#737373',
    diff_delete = '#EC0034',
  },
}

Customizing Font Styles

Some highlight groups (ie. inline diagnostics) are set up so that you can opt-in to certain font styles (though which styles completely depends on the highlight group, and these are all disabled by default):

require("noirbuddy").setup {
  styles = {
    italic = true,
    bold = false,
    underline = false,
    undercurl = true,
  },
}

If you want more granular control over font styles, check out the customizing highlight grups section.

Customizing Third Party Plugins

Included Configs

Noirbuddy automatically themes several plugins out of the box (ie. telescope.nvim, vim-fugitive, harpoon, etc.), but also allows for customizing highlight groups and exporting colors so that you can have full control over every aspect when it comes to theming third party plugins.

Opt-In Configs

Though most are automatic, certain plugins may require you to opt-in...

  • Lualine.nvim

    local noirbuddy_lualine = require('noirbuddy.plugins.lualine')
    
    require('lualine').setup {
      options = {
        theme = noirbuddy_lualine.theme,
        -- ...
      },
      sections = noirbuddy_lualine.sections,
      inactive_sections = noirbuddy_lualine.inactive_sections,
      -- ...
    }

    Check out @n1ghtmare's lualine config for a fully fleshed out lualine example!

Contributions

If you use a plugin that you think should be included in this repo, PR's are welcome ๐Ÿค˜

Customizing Highlight Groups

Since Noirbuddy is built on colorbuddy.nvim, you can use its API to customize specific highlight groups as needed:

-- Require colorbuddy...
local Color, colors, Group, groups, styles = require('colorbuddy').setup {}

-- Override specific highlight groups...
Group.new('TelescopeTitle', colors.primary)
Group.new('TelescopeBorder', colors.secondary)
Group.new('CursorLineNr', colors.primary, colors.noir_9)
Group.new('Searchlight', nil, colors.secondary)
Group.new('@comment', colors.noir_7)
Group.new('@punctuation', colors.noir_2)

-- Add font styles to highlight groups...
Group.new('@constant', colors.noir_2, nil, styles.bold)
Group.new('@method', colors.noir_0, nil, styles.bold + styles.italic)

-- Link highlight groups...
Group.link('SignifySignAdd', groups.DiffAdd)
Group.link('SignifySignChange', groups.DiffChange)
Group.link('SignifySignDelete', groups.DiffDelete)

-- etc.

Exporting Colors

If you need access to Noirbuddy's raw color codes for other plugin configs:

-- Export noirbuddy colors...
local noirbuddy = require('noirbuddy.colors').all()

-- Outputs a simple lua table...
-- {
--   primary = "#e4609b",
--   secondary = "#47bac0",
--   background = "#18181a",
--   noir_0 = "#ffffff",
--   noir_1 = "#f5f5f5",
--   noir_2 = "#d5d5d5",
--   -- etc.
-- }

You can run :lua print(vim.inspect(require('noirbuddy.colors').all())) to see a full list of what is exported.

Thank You!

  • Dimitar Dimitrov for your contributions, slick ideas, and teamwork (this project is actually a spiritual successor to his awesome noirblaze colorscheme) ๐Ÿ’ช

  • TJ DeVries for your incredible work on colorbuddy.nvim (and all things Neovim for that matter) ๐Ÿค˜

nvim-noirbuddy's People

Contributors

h0rv avatar jesseleite avatar kborling avatar n1ghtmare avatar theoboldalex avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

nvim-noirbuddy's Issues

example monochrome light preset

Hey @jesseleite! Thanks for the awesome plugin.

I am struggling with setting up basic monochrome light preset. I can't do design work to save my life, I was born without any capability to create visual stuff.

I love the idea of your theme - mostly gradients of gray with maybe one or two colors. Most light colorschmes suck because they are throw a kaleidoscope of colors at you, which is very distracting.

Can you help a talent-less neovim nerd with light theme?
Much appreciated!

Number of issues

Hello, I have number of issues:

  1. I tried to change color of text under cursor, but my solution doesn't work (it is pink, not black).
    screen-1679679524
  2. Also I don't know how to change color of this orange line and exclude it.
    screen-1679679630
  3. How to change color of visual section on lualine?
    screen-1679679691

How do i use it with a Neovim distro like LazyVim?

So lazyvim uses the tokyonight by default and when i disabled tokyonight and use noirbuddy instead the problem is that i can not make lazyvim use the preset.

--------------------------------------------------------------------------------
-- Noirbuddy: A highly customizable minimalist monochromatic colorscheme
--------------------------------------------------------------------------------

return {
	{
		"jesseleite/nvim-noirbuddy",
		dependencies = {
			{ "tjdevries/colorbuddy.nvim", branch = "dev" },
		},
		lazy = true,
		priority = 1000,
		opts = {
			preset = "miami-nights",
			styles = {
				italic = true,
				undercurl = true,
				bold = false,
			},
		},
	},
	{ "LazyVim/LazyVim", opts = { colorscheme = "noirbuddy" } },
}

how do i tell lazyvim to use the miami-nights preset?

thank you beforehand for any help

how to quickly iterate on color edits?

Perhaps a stupid noob question:

How can I edit noirboddy settings and see the effect without restarting nvim?
Restarting the editor for every little change is demotivating and I am sure there is a better way.

Todo before going public...

  • Finish picking colors for default preset
    • Maybe put together a few extra presets
  • Finish basic highlighting in theme.lua
    • Highlight treesitter syntax capture groups by default (ie. @string.special)
    • [ ] Detect nvim version and fallback to old capture groups for older versions (ie. SpecialChar)
      • Don't need to do this. We highlight both, and treesitter automatically takes precedence.
  • Font options (should default to false)~~
    • Bold
    • Italics
    • Underlines
    • Undercurls
  • Test in following languages
    • Lua
    • Vimscript
    • Javascript
    • Typescript
    • JSX/TSX
    • JSON
    • YAML
    • HTML
    • CSS
    • PHP
    • Rust
    • Markdown
    • Any others?
  • Finish readme
    • Screenshots for each preset
    • Show installation and configuration examples
  • Export themes or preset colors (?) for third party plugins (such as lualine)

colorbuddy not found...

Hi,
Wanting to try this cool concept. I am using Lazy loader with:

   {
     "jesseleite/nvim-noirbuddy",
     lazy = false,                                                                     
     config = function()                                                               
       require("noirbuddy").setup({                                                    
         preset = "miami-nights",                                                      
       })                                                                              
     end,
   },

But on nvim startup I get:

Failed to run `config` for nvim-noirbuddy

...al/share/nvim/lazy/nvim-noirbuddy/lua/noirbuddy/init.lua:6: module 'colorbuddy' not found:
^Ino field package.preload['colorbuddy']module colorbuddy not found

Any ideas? Thanks!!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.