🏯 A clean, dark Neovim theme written in Lua, with support for lsp, treesitter and lots of plugins.
Go to file
2023-10-24 11:40:12 +09:00
.github ci: fixed docs build 2023-05-24 10:58:23 +02:00
autoload/lightline/colorscheme chore(package): rename modules and docs 2023-10-04 14:21:37 +09:00
colors refactor(*): rename files and modules 2023-10-03 13:55:44 +09:00
doc chore(package): rename modules and docs 2023-10-04 14:21:37 +09:00
extras chore(files): rename 2023-10-03 15:02:11 +09:00
lua fix(background): darker color 2023-10-24 11:20:13 +09:00
.gitignore ci: checkout v3 2023-01-23 20:52:04 +01:00
.lua-format inital commit 2021-04-17 21:22:55 +02:00
CHANGELOG.md chore(main): release 2.1.0 (#399) 2023-08-29 18:59:17 +02:00
LICENSE docs: added LICENSE 2022-09-05 10:27:41 +02:00
README.md docs(readme): update 2023-10-24 11:40:12 +09:00
selene.toml build: selene + stylua 2021-05-12 11:19:28 +02:00
stylua.toml build: selene + stylua 2021-05-12 11:19:28 +02:00
vim.toml build: selene + stylua 2021-05-12 11:19:28 +02:00

🏯 Solarized Osaka

One of the Solarized-inspired dark theme for Neovim written in Lua.

solarized-osaka_screenshot01

Features

  • Supports the latest Neovim 0.9.0 features.
  • Enhances terminal colors.
  • Introduces a darker background option for sidebar-like windows.
  • Supports all major plugins.

Requirements

📦 Installation

Install the theme with your preferred package manager, such as folke/lazy.nvim:

{
  "craftzdog/solarized-osaka.nvim",
  lazy = false,
  priority = 1000,
  opts = {},
}

🚀 Usage

Vim Script

colorscheme solarized-osaka

Lua

vim.cmd[[colorscheme solarized-osaka]]

⚙️ Configuration

Set the configuration BEFORE loading the color scheme with colorscheme solarized-osaka.

The theme offers four styles: storm, moon, night, and day.

The day style is used when { style = "day" } is passed to setup(options) or when vim.o.background = "light".

Solarized Osaka uses the default options, unless setup is explicitly called.

require("solarized-osaka").setup({
  -- your configuration comes here
  -- or leave it empty to use the default settings
  transparent = false, -- Enable this to disable setting the background color
  terminal_colors = true, -- Configure the colors used when opening a `:terminal` in [Neovim](https://github.com/neovim/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. colors are determined based on your configuration, with the ability to override them using config.on_colors(colors).
  2. These colors are utilized to generate the highlight groups.
  3. config.on_highlights(highlights, colors) can be used to override highlight groups.

For default values of colors and highlights, please consult the colors.lua file.

Settings and color alteration demonstration

require("solarized-osaka").setup({
  -- 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
})
require("solarized-osaka").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,
})

Fix undercurls in Tmux

To have undercurls show up and in color, add the following to your Tmux configuration 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