github github
stars 206
issues 2
subscribers 5
forks 3



2 months ago

🌠🌌 Starry 🌌🌠

A collection of colorschemes for neovim (Neovim 8.0+ required), written in lua. This first version of starry plugin was built based on

Following colorschemes were added later on:

  • Moonlight (Low contrast bluish clean and elegant color theme)
  • Dracula & Dracula_blood theme
  • Monokai (Based on Sublime Build 3)
  • Mariana (The latest Sublime (Build 4) builtin color scheme) and Mariana_lighter
  • Emerald (Low contrast green color scheme)
  • Middlenight_blue (The theme to use in middle night)
  • Earlysummer (more vivid colors) and Earlysummer_lighter
  • Darksolar (dark solarized)
  • Ukraine yellow text on blue background

Why this repo:

  • All-In-One
  • Better color contrast and easy for eyes tuning for material.nvim and moonlight.nvim
  • Colorscheme color random loading (loading from Deep ocean, Oceanic, Palenight, Lighter, Darker, moonlight, dracula, monokai, mariana, emerald, middlenight_blue, earlysummer randomly )
  • Built with latest neovim API
  • Tracking latest neovim/lsp/treesitter highlight updates. e.g. NormalFloat, FloatShadow, LspReferenceRead/Write
  • Random loading
  • Daylight mode, tune the color for daytime
  • Transparent background ready


  • marko-cerovac For the material color palettes. The lua color scheme framework
  • shaunsingh for his work of schemes based on material

The basic color palettes of material is from material.vim



transparent mode

moonlight color palette

non-transparent mode


Color palettes from github.com/dracula/vim darcula


reddish tone of dracula blood


Color palettes from colors/monokai.vim



The sublime 4.0 default color scheme

Color palettes from twolfson/sublime-files



Please check README of starry.nvim project for setups.


I heard green can reduce eye strain :-P




Colorful colorscheme


Dark solar

Bluish colorscheme

Nighttime and daytime

Some of the scheme allow choose nighttime and day time mode, you can set starry_daylight_switch to true to turn on this feature. Here is an example for nighttime and daytime for earlysummer color scheme

night time and day time


The only light colorschem

limestone colorscheme


Yellow text on blue background. Color palette from Ukraine nation flag.

Supported Plugins

All the plugins supported by starry.nvim, e.g. Treesitter, LSP, Telescope, NvimTree...





Plug 'ray-x/starry.nvim'


use {'ray-x/starry.nvim', setup = function()
-- see example setup below
vim.g.starry_italic_comments = true

Example Setup

Note: vim way of setting up global variable is deprecated, please use lua way to setup color scheme

local config = {
  border = false, -- Split window borders
  italics = {
    comments = false, -- Italic comments
    strings = false, -- Italic strings
    keywords = false, -- Italic keywords
    functions = false, -- Italic functions
    variables = false -- Italic variables

  contrast = { -- Select which windows get the contrast background
    enable = true, -- Enable contrast
    terminal = true, -- Darker terminal
    filetypes = {}, -- Which filetypes get darker? e.g. *.vim, *.cpp, etc.

  text_contrast = {
    lighter = false, -- Higher contrast text for lighter style
    darker = false -- Higher contrast text for darker style

  disable = {
    background = false, -- true: transparent background
    term_colors = false, -- Disable setting the terminal colors
    eob_lines = false -- Make end-of-buffer lines invisible

  style = {
    name = 'moonlight', -- Theme style name (moonlight, earliestsummer, etc.)
    -- " other themes: dracula, oceanic, dracula_blood, 'deep ocean', darker, palenight, monokai, mariana, emerald, middlenight_blue
    disable = {},  -- a list of styles to disable, e.g. {'bold', 'underline'}
    fix = true,
    darker_contrast = false, -- More contrast for darker style
    daylight_swith = false, -- Enable day and night style switching
    deep_black = false, -- Enable a deeper black background

  custom_colors = {
    variable = '#f797d7',
  custom_highlights = {
    LineNr = { fg = '#777777' },
    Idnetifier = { fg = '#ff4797' },

Toggle style

:colorscheme starry        " this allow pickup a colorscheme randomly
:colorscheme mariana        " this allow switch to mariana


:lua require('starry.functions').toggle_style()



Change to specific style

:Starry dracula_blood
lua require('starry.functions').change_style("dracula_blood")

override default color group, please also check material.nvim Configuration Example:

local starry = require 'starry'
local colors = require 'starry.colors'

    custom_highlights = {
        LineNr = { bg = '#9F809E' }
        CursorLine = { fg = colors.editor.constrast , underline = true },

        -- This is a list of possible values
        -- override @string of treesitter
        @string = {
            fg = "#339922", -- foreground color
            bg = "NONE", -- background color
            sp = "#779988", -- special color (for colored underlines, undercurls...)
            bold = false, -- make group bold
            italic = false, -- make group italic
            underline = false, -- make group underlined
            undercurl = false, -- make group undercurled
            underdot = false, -- make group underdotted
            underdash = false -- make group underslashed
            striketrough = false, -- make group striked trough
            reverse = false, -- reverse the fg and bg colors
            link = "Comment" -- link to some other highlight group

    -- Custom colors must be a function that takes in the default colors table as
    -- a paramter, and then modifies them.
    -- To se the available colors, see lua/material/colors/init.lua
    custom_colors = function(colors)
        colors.editor.bg = "#SOME_COLOR"
        colors.main.purple = "#SOME_COLOR"
        colors.lsp.error = "#SOME_COLOR"
vim.cmd('colorscheme oceanic')