inkline is a dark-theme early 2000s aesthetic theme written in Lua, ported from TextMate's vibrant-ink theme.
- Supports the latest Neovim 0.11.0 features
- Terminal colors
- Supports most major plugins
Install with whatever plugin manager you use, and call the require("inkline").setup(opts)
function
Example installing via Lazy:
{
"hectron/inkline.nvim",
lazy = false,
priority = 1000,
opts = {},
}
inkline.nvim comes with multiple style variants:
original
(default) - Faithful port of TextMate's vibrant-ink thememodern
- Contemporary colors with purple properties and bright orange constantsretro
- Softer early 2000s aesthetic with pink properties and warm yellow constantsclassic
- Original vibrant-ink port with teal properties and yellow constantscyberpunk
- Electric neon colors with cyan functions and matrix green constants
require("inkline").setup({
style = "original", -- "original", "modern", "retro", "classic", or "cyberpunk"
})
require("inkline").load()
vim.cmd([[colorscheme inkline]]) -- Uses default "original" style
colorscheme inkline
require("inkline").switch_style("retro")
require("inklin
94D5
e").switch_style("cyberpunk")
inkline.nvim supports several configuration options:
require("inkline").setup({
style = "original", -- Style variant
dim_inactive_windows = true, -- Dim inactive windows
transparent = false, -- Transparent background
purple_comments = false, -- Use purple for comments
vibrant_strings = true, -- Use vibrant green for strings
cache = true, -- Enable caching for better performance
on_colors = function(colors) end, -- Customize colors
on_highlights = function(hl, c) end, -- Customize highlights
})
inkline.nvim includes a high-performance caching system that stores pre-computed highlight groups:
- Enabled by default (
cache = true
) - Cache location:
~/.cache/nvim/inkline-{style}.json
- Auto-invalidation: Automatically detects config changes
- Significant speedup: Faster theme loading on subsequent startups
- Manual clearing:
require("inkline").clear_cache()
The cache is automatically invalidated when you change any configuration options, ensuring you always see your latest customizations.
You can customize colors and highlight groups using callback functions:
require("inkline").setup({
on_colors = function(colors)
colors.purple = "#ff00ff" -- Make purple more vibrant
return colors
end
})
require("inkline").setup({
on_highlights = function(highlights, colors)
highlights.Comment = { fg = "#888888", italic = true }
highlights.String = { fg = "#00ff00" }
return highlights
end
})
Use the @
prefix for treesitter groups:
require("inkline").setup({
on_highlights = function(highlights, colors)
highlights["@string"] = { fg = "#66ff00" }
highlights["@comment"] = { fg = "#888888", italic = true }
highlights["@keyword"] = { fg = "#ff6600", bold = true }
return highlights
end
})
To run the test suite:
nvim -l tests/minit.lua
Tests will run silently and only report failures. Exit code 0 indicates all tests passed, exit code 1 indicates failures.