dotfiles/nvim/lua/ui.lua
2026-06-02 08:20:14 +02:00

162 lines
3.8 KiB
Lua

--- This module will load a random colorscheme on nvim startup process.
local utils = require("utils")
local M = {}
local use_theme = function(name)
local ok, err = pcall(vim.cmd.colorscheme, name)
if not ok then
vim.notify(
string.format("Failed to load colorscheme %s, err: %s", name, err),
vim.log.levels.WARN
)
vim.cmd.colorscheme("default")
end
end
-- Colorscheme to its directory name mapping, because colorscheme repo name is not necessarily
-- the same as the colorscheme name itself.
M.colorscheme_conf = {
onedark = function()
-- Lua
require("onedark").setup {
style = "darker",
}
require("onedark").load()
end,
edge = function()
vim.g.edge_style = "default"
vim.g.edge_enable_italic = 1
vim.g.edge_better_performance = 1
use_theme("edge")
end,
sonokai = function()
vim.g.sonokai_enable_italic = 1
vim.g.sonokai_better_performance = 1
use_theme("sonokai")
end,
gruvbox_material = function()
-- foreground option can be material, mix, or original
vim.g.gruvbox_material_foreground = "original"
--background option can be hard, medium, soft
vim.g.gruvbox_material_background = "hard"
vim.g.gruvbox_material_enable_italic = 1
vim.g.gruvbox_material_better_performance = 1
use_theme("gruvbox-material")
end,
everforest = function()
vim.g.everforest_background = "hard"
vim.g.everforest_enable_italic = 1
vim.g.everforest_better_performance = 1
use_theme("everforest")
end,
nightfox = function()
use_theme("carbonfox")
end,
onedarkpro = function()
-- set colorscheme after options
-- onedark_vivid does not enough contrast
use_theme("onedark_dark")
end,
material = function()
vim.g.material_style = "darker"
use_theme("material")
end,
arctic = function()
use_theme("arctic")
end,
kanagawa = function()
use_theme("kanagawa-dragon")
end,
modus = function()
use_theme("modus")
end,
jellybeans = function()
use_theme("jellybeans")
end,
github = function()
use_theme("github_dark_default")
end,
ashen = function()
use_theme("ashen")
end,
melange = function()
use_theme("melange")
end,
makurai = function()
use_theme("makurai_dark")
end,
vague = function()
use_theme("vague")
end,
kanso = function()
use_theme("kanso")
end,
citruszest = function()
use_theme("citruszest")
end,
oxocarbon = function()
use_theme("oxocarbon")
end,
ember = function()
use_theme("ember")
end,
lake_dweller = function()
require("lake-dweller").setup {
-- "lake-dweller", "pond-dweller", or "ocean-dweller"
variant = "lake-dweller",
}
use_theme("lake-dweller")
end,
alabaster = function()
use_theme("alabaster")
end,
thorn = function()
use_theme("thorn")
end,
}
--- Fixe the colorscheme
vim.opt.termguicolors = true
vim.api.nvim_create_autocmd("VimEnter", {
callback = function()
vim.g.everforest_background = "medium"
vim.o.background = "light"
vim.g.everforest_light_background = true
vim.g.everforest_enable_italic = 1
vim.cmd("colorscheme everforest")
end,
})
-- enable the experiment UI
require("vim._core.ui2").enable {
enable = true,
msg = { -- Options related to the message module.
targets = {
[""] = "cmd",
empty = "msg",
},
cmd = { -- Options related to messages in the cmdline window.
height = 0.2, -- Maximum height while expanded for messages beyond 'cmdheight'.
},
dialog = { -- Options related to dialog window.
height = 0.2, -- Maximum height.
},
msg = { -- Options related to msg window.
height = 0.2, -- Maximum height.
timeout = 1000, -- Time a message is visible in the message window.
},
pager = { -- Options related to message window.
height = 0.3, -- Maximum height.
},
},
}
return M