pastelnight.nvim
pastelnight.nvim copied to clipboard
Neovim theme inspired in Palenight, support a lot of plugins out-of-the-box. Includes themes for iTerm2, Alacritty, Kitty, Fish and others.

PastelNight
⚡️ Quick Start · 🍬 Extras · ⚙️ Configuration
A Neovim theme inspired on the original Palenight theme, fully written in Lua.
Includes themes for Kitty, Alacritty, iTerm2 and Fish.

🎨 Colors
This palette is improved from the original 16 colors to a 40 shades of those, ensuring compability with more plugins and a smooth contrast experience.

✨ Features
- Enhances terminal colors.
- Supports all major plugins.
- Supports the latest Neovim 0.9.0 features.
- Provides extra themes for numerous other applications.
🍬 Extras
- Alacritty (alacritty)
- Delta (delta)
- Dunst (dunst)
- Fish (fish)
- Fish Themes (fish_themes)
- Foot (foot)
- GitUI (gitui)
- iTerm (iterm)
- Kitty (kitty)
- Lua Table for testing (lua)
- Prism (prism)
- Sublime Text (sublime)
- Terminator (terminator)
- Tilix (tilix)
- Tmux (tmux)
- Warp (warp)
- WezTerm (wezterm)
- Windows Terminal (windows_terminal)
- Xfce Terminal (xfceterm)
- Xresources (xresources)
- Zathura (zathura)
⚡️ Quick Start
✋ Requirements
🛠️ Installation
First install the theme with your preferred package manager:
💤 lazy.nvim
{
"pauchiner/pastelnight.nvim",
lazy = false,
priority = 1000,
opts = {},
}
🚀 Usage
VimScript
colorscheme pastelnight
" There are also a theme variant with greater contrast
colorscheme pastelnight-high-contrast
Lua
vim.api.nvim_command [[colorscheme pastelnight]]
-- There are also a theme variant with greater contrast
vim.api.nvim_command [[colorscheme pastelnight-high-contrast]]
🔌 Other supported plugins
Barbecue
require('barbecue').setup {
theme = 'pastelnight',
}
Lualine
require('lualine').setup {
options = {
theme = 'pastelnight'
}
}
Lightline
let g:lightline = {'colorscheme': 'pastelnight'}
⚙️ Configuration
[!WARNING]
Set the configuration before loading the color scheme withcolorscheme pastelnight
.
PastelNight uses the default options, unless setup is explicitly called.
Default options
require("pastelnight").setup({
--- The theme comes in two styles, `default` and `highContrast`.
style = "default"
--- Enable this to disable setting the background color.
transparent = false,
--- Configure the colors used when opening a `:terminal`.
terminal_colors = true,
styles = {
--- Style to be applied to different syntax groups.
comments = { italic = true },
keywords = { italic = true },
functions = {},
variables = {},
--- Background styles. Can be 'dark', 'transparent' or 'normal'.
sidebars = "dark",
floats = "dark",
},
--- Set a darker background on sidebar-like windows. ['terminal', 'packer'...].
sidebars = { "qf", "help" },
--- Enabling this option, will hide inactive statuslines and replace them
---with a thin border instead.
hide_inactive_statusline = false,
--- dims inactive windows.
dim_inactive = false,
--- When true, section headers in the lualine theme will be bold.
lualine_bold = false,
--- 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 & Highlights
How the highlight groups are calculated:
-
colors
are determined based on your configuration, with the ability to override them usingconfig.on_colors(colors)
. - These
colors
are utilized to generate the highlight groups. -
config.on_highlights(highlights, colors)
can be used to override highlight groups.
For default values of colors
and highlights
, please consult the
colors and highlights files.
Settings and color alteration demonstration
require("pastelnight").setup({
--- 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
})
Borderless Telescope example
require("pastelnight").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,
})
⚠️ Common Issues
Fix undercurls in tmux
To have undercurls show up and in color, add the following to your Tmux configuration file:
set -g default-terminal "${TERM}"
set -as terminal-overrides ',*:Smulx=\E[4::%p1%dm'
Also you can enable undescore colors but this needs tmux 3.0
set -as terminal-overrides ',*:Setulc=\E[58::2::%p1%{65536}%/%d::%p1%{256}%/%{255}%&%d::%p1%{255}%&%d%;m'
🤝 Contributing
All contributions are welcome:
🍬 Creating new extras
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/pastelnight/extra/cool-app.lua
.
Add the name and output file extension to the extras table in lua/pastelnight/extra/init.lua
.
Run the following command to generate new extra themes from the pastelnight plugin directory:
nvim --headless "+lua require('pastelnight.extra').setup()" +qa
Check the newly created themes in the extra/ directory.
[!CAUTION] Please DO NOT commit them, as they are already automatically built by the CI.
📃 Credits
🎨 Original Design
This theme is highly inspired by the original theme Palenight from Olaolu Olawuyi.
🏗️ Code Structure
The structure of this plugin is based on the Tokyo Night Theme from Folke Lemaitre, take a look of his work please.
🐾 Hsl support
The way of implement and create the color palette is inspired on the new Solarized Osaka Theme from Takuya Matsuyama, see he's profile to know more.