Awesome
<div align="center" > <img src=".github/images/logo.png" alt="pastelnight logo" width="100", height="100"> </div> <h1 align="center">PastelNight</h1> <!-- panvimdoc-ignore-start --> <h4 align="center"> <a href="#%EF%B8%8F-installation"> β‘οΈ Quick Start </a> Β· <a href="#%EF%B8%8F--configuration"> π¬ Extras </a> Β· <a href="#%EF%B8%8F--configuration"> βοΈ Configuration </a> </h4> <p align="center"> A <a target="_blank" href="https://neovim.io/">Neovim</a> theme inspired on the original <a href="https://github.com/whizkydee/vscode-palenight-theme">Palenight</a> theme, fully written in <a href="https://www.lua.org/">Lua</a>. </p> <p align="center"> Includes themes for <a href="https://sw.kovidgoyal.net/kitty/conf.html">Kitty</a>, <a target="_blank" href="https://github.com/alacritty/alacritty">Alacritty</a>, <a href="https://iterm2.com">iTerm2</a> and <a href="https://fishshell.com/docs/current/index.html">Fish</a>. </p> <!-- panvimdoc-ignore-end --> <!-- panvimdoc-include-comment A Neovim theme inspired on the original Palenight<https://github.com/whizkydee/vscode-palenight-theme> theme, fully written in Lua. Includes themes for Kitty<https://sw.kovidgoyal.net/kitty/conf.html>, Alacritty<https://github.com/alacritty/alacritty>, iTerm2<https://iterm2.com> and Fish<https://fishshell.com/docs/current/index.html>. --> <img align="center" src="./.github/images/showcase.png" />π¨ 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.
<img align="center" alt="pastelnight palette" src="./.github/images/colors.png" />β¨ Features
- Enhances terminal colors.
- Supports all major plugins.
- Supports the latest Neovim 0.9.0 features.
- Provides extra themes for numerous other applications.
π¬ Extras
<!-- extras:start -->- 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 <u>undescore colors</u> 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
<a target="_blank" alt="Olaolu's profile" href="https://github.com/whizkydee"> <img style="border-radius: 13%; margin-bottom: 10px" width='90px' src="https://avatars.githubusercontent.com/u/8625066?v=4"> </a>This theme is highly inspired by the original theme Palenight from Olaolu Olawuyi.
ποΈ Code Structure
<a target="_blank" alt="folke's profile" href="https://github.com/folke"> <img style="border-radius: 13%; margin-bottom: 10px" width='90px' src="https://avatars.githubusercontent.com/u/292349?v=4"> </a>The structure of this plugin is based on the Tokyo Night Theme from Folke Lemaitre, take a look of his work please.
πΎ Hsl support
<a target="_blank" alt="Takuya's profile" href="https://github.com/craftzdog"> <img style="border-radius: 13%; margin-bottom: 10px" width='90px' src="https://avatars.githubusercontent.com/u/1332805?v=4"> </a>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.
<div align="center"> <sup>With π by Pau GarcΓa Chiner</sup> </div>