Thanks to visit codestin.com
Credit goes to github.com

Skip to content

RomanAverin/charleston.nvim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Charleston color theme for neovim charleston_logo

LuaRocks

πŸ“Έ Screenshots

Details

✨ Features

  • High contrast color theme with a low saturation and smooth colors
  • Many plugins supported(write if no support is available)
  • Italic font style option
  • Transparent supported
  • Mainly designed for use with lazyvim
  • Customization colors

Warning

The color scheme is under deep development. But it will be very useful to get feedback.

πŸ—ΊοΈ Roadmap

  • βœ… Transparent supported (with enhanced terminal compatibility)
  • βœ… Customization colors

πŸ“‹ Requirements

  • neovim >= 0.9

πŸ”Œ Supported plugins

πŸ“¦ Install

Using lazy.nvim (recommended for LazyVim users)

{
    "romanaverin/charleston.nvim",
    name = "charleston",
    priority = 1000,
}

Tip

Special information on versioning. You can use the main branch, where the main development with preliminary testing is carried out. However, major changes and established features are fixed in the form of tags. To use a specific version:

{
    "romanaverin/charleston.nvim",
    name = "charleston",
    version = "2.0.1", -- or use "*" for the latest in the main branch
    priority = 1000,
}

Using rocks.nvim

:Rocks install charleston.nvim

Or add to your rocks.toml:

[plugins]
"charleston.nvim" = "2.0.1"

Using packer.nvim

use { "romanaverin/charleston.nvim" }

Using vim-plug

Plug 'romanaverin/charleston.nvim'

Package Manager Comparison

Plugin Manager Source Installation Command
lazy.nvim GitHub { "romanaverin/charleston.nvim" }
rocks.nvim LuaRocks :Rocks install charleston.nvim
packer.nvim GitHub use "romanaverin/charleston.nvim"
vim-plug GitHub Plug 'romanaverin/charleston.nvim'

πŸš€ Usage

Lazy:

  {
    "LazyVim/LazyVim",
    opts = {
      colorscheme = "charleston",
    },
  },

Or:

vim.cmd.colorscheme "charleston"

A cache is used for compilation and fast loading. The average user does not need to know about it. But if you have made any changes, you can see them without restarting neovim. Force compile cache : CharlestonCompile

βš™οΈ Options

To configure options, add opts to the plugin declaration:

opts = {
  terminal_colors = true, -- sets terminal colors
  italic = true, -- use italic font style
  darker_background = false, -- use more darker background
  transparent = false, -- enable transparent background
  palette_overrides = {}, -- override palette colors
}

🎨 Palette Customization

Charleston supports customization of the color palette through palette_overrides. You can override any color from the palette or add custom colors:

{
  "romanaverin/charleston.nvim",
  name = "charleston",
  priority = 1000,
  opts = {
    palette_overrides = {
      -- Override existing colors
      red = "#ff0000",
      bg = "#000000",
      bg_dimmed = "#0a0a0a",

      -- Add custom colors for use with other plugins(example below)
      my_custom_color = "#abcdef",
    }
  }
}

All overrides are fully cached for maximum performance.

Integration with Other Plugins

You can use get_palette() to access the customized palette in other plugins:

{
  "romanaverin/charleston.nvim",
  name = "charleston",
  priority = 1000,
  opts = {
    palette_overrides = {
      statusline_bg = "#2a2a2a",
    }
  }
}

-- In your lualine config
local colors = require("charleston").get_palette()

require("lualine").setup({
  options = {
    theme = {
      normal = {
        a = { bg = colors.blue, fg = colors.bg },
        b = { bg = colors.statusline_bg, fg = colors.text },
      }
    }
  }
})

Default Colors

Click to see the full color palette

Main Palette Colors

Color Name Hex Value Preview
red #cc6666 #cc6666
green #A9C476 #A9C476
yellow #D0AB3C #D0AB3C
blue #88ABDC #88ABDC
magenta #B689BC #B689BC
cyan #7fb2c8 #7fb2c8
charcoal #708499 #708499
teal #749689 #749689
beige #EFC986 #EFC986
orange #de935f #de935f
purple #95739C #95739C
silver #acbcc3 #acbcc3
cambridge_blue #99C1B9 #99C1B9
english_violet #59546C #59546C

Base Colors

Color Name Hex Value Preview
bg #1D2024 #1D2024
bg_dimmed #262B31 #262B31
text #C5C8D3 #C5C8D3
strong_text #80838f #80838f
faded_text #686d75 #686d75
strong_faded_text #464b50 #464b50
medium_background #51545C #51545C

UI Elements

Color Name Hex Value Preview
thin_line #363E47 #363E47
thick_line #5F6366 #5F6366
float_bg #30353b #30353b
bar_bg #2c323c #2c323c
bar_text #b5bac8 #b5bac8
bar_faded_text #70757d #70757d
white #ffffff #ffffff
darker_gray #2c323c #2c323c
medium_gray #515151 #515151
lighter_gray #3e4452 #3e4452

Git Colors

Color Name Hex Value Preview
diff_add_bg #3a413b #3a413b
diff_delete_bg #443c3f #443c3f

Terminal Colors

Color Name Hex Value Preview
brightBlack #636363 #636363
brightRed #a04041 #a04041
brightGreen #8b9440 #8b9440
brightYellow #ec9c62 #ec9c62
brightBlue #5d7f9a #5d7f9a
brightMagenta #b689bC #b689bC
brightCyan #5e8d87 #5e8d87
brightWhite #6d757d #6d757d

See lua/charleston/colors.lua for the complete reference.

🎯 Specific plugins

Lualine.nvim

For the lualine add this

require('lualine').setup {
    options = {
        theme = "charleston"
        -- ... the rest of your lualine config
    }
}

Bufferline.nvim

Charleston provides native support for bufferline.nvim with a dedicated integration module.

Important

Bufferline needs to be loaded after setting up Charleston or it will highlight incorrectly

Basic Usage

return {
  "akinsho/bufferline.nvim",
  after = "charleston", -- Mandatory option, otherwise incorrect
  opts = {
    highlights = function()
      return require("charleston.bufferline").get_theme()
    end,
    options = {
      separator_style = "slant",
      always_show_bufferline = false,
      show_tab_indicators = true,
    },
  },
}

Advanced Configuration

You can customize the bufferline theme with styles and custom colors:

local palette = require("charleston").get_palette()

require("bufferline").setup {
  highlights = require("charleston.bufferline").get_theme {
    styles = { "italic", "bold" },
    custom = {
      all = {
        fill = { bg = "#000000" },
      },
    },
  },
}

Available options:

  • styles: Table with style options ("italic", "bold")
  • custom.all: Custom highlight overrides that apply to all highlights

🍭 Extras

Themes for other app. In the extras folder.

  • Ghostty
  • Zed

About

Contrast dark color scheme for NeoVim

Topics

Resources

License

Stars

Watchers

Forks

Contributors 2

  •  
  •