🏙 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
Night
Day
✨ 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
- TreeSitter
- LSP Diagnostics
- LSP Trouble
- LSP Saga
- Git Signs
- Git Gutter
- Telescope
- NvimTree
- WhichKey
- Indent Blankline
- Dashboard
- BufferLine
- Lualine
- Lightline
- Neogit
- vim-sneak
- Fern
- Barbar
⚡️ Requirements
- Neovim >= 0.5.0
📦 Installation
Install the theme with your preferred package manager:
Plug 'folke/tokyonight.nvim', { 'branch': 'main' }
use 'folke/tokyonight.nvim'
🚀 Usage
Enable the colorscheme:
" Vim Script
colorscheme tokyonight
-- Lua
vim.cmd[[colorscheme tokyonight]]
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 three styles, storm
, a darker variant night
and day
.
The day style will be used if:
vim.g.tokyonight_style == "day"
- or
vim.o.background == "light"
Option | Default | Description |
---|---|---|
tokyonight_style | "storm" |
The theme comes in three styles, storm , a darker variant night and day . |
tokyonight_terminal_colors | true |
Configure the colors used when opening a :terminal in Neovim |
tokyonight_italic_comments | true |
Make comments italic |
tokyonight_italic_keywords | true |
Make keywords italic |
tokyonight_italic_functions | false |
Make functions italic |
tokyonight_italic_variables | false |
Make variables and identifiers italic |
tokyonight_transparent | false |
Enable this to disable setting the background color |
tokyonight_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. |
tokyonight_sidebars | {} |
Set a darker background on sidebar-like windows. For example: ["qf", "vista_kind", "terminal", "packer"] |
tokyonight_transparent_sidebar | false |
Sidebar like windows like NvimTree get a transparent background |
tokyonight_dark_sidebar | true |
Sidebar like windows like NvimTree get a darker background |
tokyonight_dark_float | true |
Float windows like the lsp diagnostics windows get a darker background. |
tokyonight_colors | {} |
You can override specific color groups to use other groups or a hex color |
tokyonight_day_brightness | 0.3 |
Adjusts the brightness of the colors of the Day style. Number between 0 and 1, from dull to vibrant colors |
tokyonight_lualine_bold | false |
When true , section headers in the lualine theme will be bold |
-- Example config in Lua
vim.g.tokyonight_style = "night"
vim.g.tokyonight_italic_functions = true
vim.g.tokyonight_sidebars = { "qf", "vista_kind", "terminal", "packer" }
-- Change the "hint" color to the "orange" color, and make the "error" color bright red
vim.g.tokyonight_colors = { hint = "orange", error = "#ff0000" }
-- Load the colorscheme
vim.cmd[[colorscheme tokyonight]]
" Example config in VimScript
let g:tokyonight_style = "night"
let g:tokyonight_italic_functions = 1
let g:tokyonight_sidebars = [ "qf", "vista_kind", "terminal", "packer" ]
" Change the "hint" color to the "orange" color, and make the "error" color bright red
let g:tokyonight_colors = {
\ 'hint': 'orange',
\ 'error': '#ff0000'
\ }
" Load the colorscheme
colorscheme tokyonight
undercurls
work properly in Tmux
Making 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 and iTerm can be found in extras. To use them, refer to their respective documentation.
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 utils = requires("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:
- create a file like
lua/tokyonight/extra/cool-app.lua
- add the name and output file extension to the
extras
table inlua/tokyonight/extra/init.lua
- in the root directory, run
$ lua lua/tokyonight/extra/init.lua
to generate / update extra themes - commit the newly created themes under
extra/