GithubHelp home page GithubHelp logo

truezombie / tokyonight.nvim Goto Github PK

View Code? Open in Web Editor NEW

This project forked from folke/tokyonight.nvim

0.0 0.0 0.0 447 KB

๐Ÿ™ A clean, dark Neovim theme written in Lua, with support for lsp, treesitter and lots of plugins. Includes additional themes for Kitty, Alacritty, iTerm and Fish.

License: Apache License 2.0

Shell 4.11% JavaScript 1.76% C 1.19% Lua 92.88% Vim Script 0.06%

tokyonight.nvim's Introduction

๐Ÿ™ Tokyo Night

A dark and light Neovim theme written in Lua ported from the Visual Studio Code TokyoNight theme. Includes extra themes for Kitty, Alacritty, iTerm and Fish.

Storm

image

Night

image

Moon

image

Day

image

โœจ Features

  • supports the latest Neovim 5.0 features like TreeSitter and LSP
  • minimal inactive statusline
  • vim terminal colors
  • darker background for sidebar-like windows
  • color configs for Kitty, Alacritty and Fish Shell
  • lualine theme

Plugin Support

โšก๏ธ Requirements

  • Neovim >= 0.6.0

๐Ÿ“ฆ Installation

Install the theme with your preferred package manager:

vim-plug

Plug 'folke/tokyonight.nvim', { 'branch': 'main' }

packer

use 'folke/tokyonight.nvim'

๐Ÿš€ Usage

Enable the colorscheme:

" Vim Script
colorscheme tokyonight

" There are also colorschemes for the different styles
colorscheme tokyonight-night
colorscheme tokyonight-storm
colorscheme tokyonight-day
colorscheme tokyonight-moon
-- Lua
vim.cmd[[colorscheme tokyonight]]

To enable the tokyonight theme for Barbecue:

require('barbecue').setup {
  -- ... your barbecue config
  theme = 'tokyonight',
  -- ... your barbecue config
}

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

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

To enable the tokyonight colorscheme for Lightline:

" Vim Script
let g:lightline = {'colorscheme': 'tokyonight'}

โš™๏ธ Configuration

โ—๏ธ configuration needs to be set BEFORE loading the color scheme with colorscheme tokyonight

The theme comes in four styles, storm, moon, a darker variant night and day.

The day style will be used if:

  • { style = "day"} was passed to setup(options)
  • or vim.o.background = "light"

TokyoNight will use the default options, unless you call setup.

require("tokyonight").setup({
  -- your configuration comes here
  -- or leave it empty to use the default settings
  style = "storm", -- The theme comes in three styles, `storm`, `moon`, a darker variant `night` and `day`
  light_style = "day", -- The theme is used when the background is set to light
  transparent = false, -- Enable this to disable setting the background color
  terminal_colors = true, -- Configure the colors used when opening a `:terminal` in Neovim
  styles = {
    -- Style to be applied to different syntax groups
    -- Value is any valid attr-list value for `:help nvim_set_hl`
    comments = { italic = true },
    keywords = { italic = true },
    functions = {},
    variables = {},
    -- Background styles. Can be "dark", "transparent" or "normal"
    sidebars = "dark", -- style for sidebars, see below
    floats = "dark", -- style for floating windows
  },
  sidebars = { "qf", "help" }, -- Set a darker background on sidebar-like windows. For example: `["qf", "vista_kind", "terminal", "packer"]`
  day_brightness = 0.3, -- Adjusts the brightness of the colors of the **Day** style. Number between 0 and 1, from dull to vibrant colors
  hide_inactive_statusline = false, -- Enabling this option, will hide inactive statuslines and replace them with a thin border instead. Should work with the standard **StatusLine** and **LuaLine**.
  dim_inactive = false, -- dims inactive windows
  lualine_bold = false, -- When `true`, section headers in the lualine theme will be bold

  --- You can override specific color groups to use other groups or a hex color
  --- function will be called with a ColorScheme table
  ---@param colors ColorScheme
  on_colors = function(colors) end,

  --- You can override specific highlights to use other groups or a hex color
  --- function will be called with a Highlights and ColorScheme table
  ---@param highlights Highlights
  ---@param colors ColorScheme
  on_highlights = function(highlights, colors) end,
})

๐Ÿช“ Overriding Colors & Highlight Groups

How the highlight groups are calculated:

  1. the colors for the style are calculated based on your config
  2. config.on_colors(colors) is ran, where you can override the colors
  3. the colors are then used to generate the highlight groups
  4. config.on_highlights(highlights, colors) is ran, where you can overide the highlight groups

Please refer to default values for colors and highlights for the storm, moon, night, day

Example for changing some settings and colors

require("tokyonight").setup({
  -- use the night style
  style = "night",
  -- disable italic for functions
  styles = {
    functions = {}
  },
  sidebars = { "qf", "vista_kind", "terminal", "packer" },
  -- Change the "hint" color to the "orange" color, and make the "error" color bright red
  on_colors = function(colors)
    colors.hint = colors.orange
    colors.error = "#ff0000"
  end
})

Example to make Telescope borderless

require("tokyonight").setup({
  on_highlights = function(hl, c)
    local prompt = "#2d3149"
    hl.TelescopeNormal = {
      bg = c.bg_dark,
      fg = c.fg_dark,
    }
    hl.TelescopeBorder = {
      bg = c.bg_dark,
      fg = c.bg_dark,
    }
    hl.TelescopePromptNormal = {
      bg = prompt,
    }
    hl.TelescopePromptBorder = {
      bg = prompt,
      fg = prompt,
    }
    hl.TelescopePromptTitle = {
      bg = prompt,
      fg = prompt,
    }
    hl.TelescopePreviewTitle = {
      bg = c.bg_dark,
      fg = c.bg_dark,
    }
    hl.TelescopeResultsTitle = {
      bg = c.bg_dark,
      fg = c.bg_dark,
    }
  end,
})

Making undercurls work properly in Tmux

To have undercurls show up and in color, add the following to your Tmux config file:

# Undercurl
set -g default-terminal "${TERM}"
set -as terminal-overrides ',*:Smulx=\E[4::%p1%dm'  # undercurl support
set -as terminal-overrides ',*:Setulc=\E[58::2::%p1%{65536}%/%d::%p1%{256}%/%{255}%&%d::%p1%{255}%&%d%;m'  # underscore colours - needs tmux-3.0

๐Ÿญ Extras

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

image

You can easily use the color palette for other plugins inside your Neovim config:

local colors = require("tokyonight.colors").setup() -- pass in any of the config options as explained above
local util = require("tokyonight.util")

aplugin.background = colors.bg_dark
aplugin.my_error = util.brighten(colors.red1, 0.3)

๐Ÿ”ฅ Contributing

Pull requests are welcome. For the extras, we use a simple template system that can be used to generate themes for the different styles.

How to add a new extra template:

  1. create a file like lua/tokyonight/extra/cool-app.lua
  2. add the name and output file extension to the extras table in lua/tokyonight/extra/init.lua
  3. in Nvim, run :lua require("tokyonight.extra").setup() to generate / update extra themes
  4. commit the newly created themes under extra/

tokyonight.nvim's People

Contributors

folke avatar wangl-cc avatar stsewd avatar github-actions[bot] avatar laughingman-hass avatar jpe90 avatar typicode avatar petertriho avatar ful1e5 avatar gaetan-puleo avatar christianchiarulli avatar augustocdias avatar vinnya3 avatar tymekdev avatar timtyrrell avatar stevearc avatar sam-hobson avatar ssiyad avatar lkhphuc avatar markstory avatar marilari88 avatar lkemitchll avatar lukas-reineke avatar abxh avatar adrian5 avatar ebsi-cgoboncan avatar codicocodes avatar 3xpl0it3r avatar neuromagus avatar mvllow avatar

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.