diff options
| author | Robert Günzler <r@gnzler.io> | 2025-04-30 13:15:05 +0200 |
|---|---|---|
| committer | Robert Günzler <r@gnzler.io> | 2025-04-30 13:15:05 +0200 |
| commit | 051d08df297f3a08e5850739ed93e1e536ed0032 (patch) | |
| tree | 605a6d1d6fbf4d01dc569bd447d31e79b3184e81 | |
| parent | 6a1810f4dfe4ac22dfbaf2b98fb7618fd76eb761 (diff) | |
vim: dark/light switcher
Signed-off-by: Robert Günzler <r@gnzler.io>
Diffstat (limited to '')
| -rw-r--r-- | .vim/lua/internal/plugins/colorschemes.lua | 54 | ||||
| -rw-r--r-- | .vim/plugin/colorscheme.lua | 23 | ||||
| -rw-r--r-- | .vim/plugin/darkmode.lua | 47 |
3 files changed, 98 insertions, 26 deletions
diff --git a/.vim/lua/internal/plugins/colorschemes.lua b/.vim/lua/internal/plugins/colorschemes.lua index 9371229..e533ebb 100644 --- a/.vim/lua/internal/plugins/colorschemes.lua +++ b/.vim/lua/internal/plugins/colorschemes.lua @@ -1,11 +1,59 @@ return { { enabled = false, - 'xero/evangelion.nvim', + 'olivercederborg/poimandres.nvim', lazy = false, - priority = 1000, config = function() - vim.cmd('colorscheme evangelion') + require('poimandres').setup({ + disable_background = true, + -- dim_nc_background = true, + }) + end, + -- optionally set the colorscheme within lazy config + -- init = function() + -- vim.cmd('colorscheme poimandres') + -- end, + }, + { + enabled = true, + 'https://github.com/slugbyte/lackluster.nvim', + lazy = true, + config = function() + local lackluster = require('lackluster') + lackluster.setup({ + tweak_color = { + lack = '#70649a', + -- luster = '#ff0000', + }, + tweak_syntax = { + comment = lackluster.color.gray6, + }, + tweak_background = { + normal = 'none', + }, + tweak_highlight = { + ['@markup.heading'] = { + fg = '#ffffff', + }, + ['@comment'] = { + italic = true, + }, + }, + tweak_ui = { + enable_end_of_buffer = true, + }, + }) + end, + init = function() + vim.g.darkmode_colorscheme_dark = 'lackluster' + end, + }, + { + enabled = true, + 'https://github.com/elaijuh/acme.nvim', + lazy = true, + init = function() + vim.g.darkmode_colorscheme_light = 'acme' end, }, } diff --git a/.vim/plugin/colorscheme.lua b/.vim/plugin/colorscheme.lua deleted file mode 100644 index 240737e..0000000 --- a/.vim/plugin/colorscheme.lua +++ /dev/null @@ -1,23 +0,0 @@ -vim.opt.background = 'dark' - --- setup color-scheme detection via desktop portal apis -vim.api.nvim_create_autocmd('UIEnter', { - once = true, - callback = function() - local job = require('plenary.job'):new({ - command = 'porta', - args = { 'settings', 'org.freedesktop.appearance', 'color-scheme' }, - enable_recording = true, - }) - local res, exitcode = job:sync() - if exitcode == 0 and #res == 1 then - if res[1] == 'prefer-light' then - vim.opt.background = 'light' - else - vim.opt.background = 'dark' - end - end - end, -}) - -vim.api.nvim_set_hl(0, 'ColorColumn', { link = 'CursorColumn', force = true }) diff --git a/.vim/plugin/darkmode.lua b/.vim/plugin/darkmode.lua new file mode 100644 index 0000000..6ffd06f --- /dev/null +++ b/.vim/plugin/darkmode.lua @@ -0,0 +1,47 @@ +-- this plugin registers registers and autocommand that switches colorschemes on UIEnter based on +-- the system's preference for dark/light mode + +local state = { enabled = true } + +if not state.enabled then + return +end + +local set_darkmode = function(enabled) + if enabled then + vim.opt.background = 'dark' + vim.cmd.colorscheme(vim.g.darkmode_colorscheme_dark or 'default') + else + vim.opt.background = 'light' + vim.cmd.colorscheme(vim.g.darkmode_colorscheme_light or 'default') + end +end + +-- returns if system is configured to use darkmode +local discover = function() + require('plenary.job') + :new({ + command = 'porta', + args = { 'settings', 'org.freedesktop.appearance', 'color-scheme' }, + enable_recording = true, + on_exit = vim.schedule_wrap(function(job, exitcode) + local darkmode_enabled = true + local res = job:result() + if exitcode == 0 and #res then + darkmode_enabled = not (res[1] == 'prefer-light') + end + set_darkmode(darkmode_enabled) + end), + }) + :start() +end + +-- setup autogroup +local aug = vim.api.nvim_create_augroup('darkmode', { clear = true }) + +-- setup color-scheme detection via desktop portal apis +vim.api.nvim_create_autocmd({ 'UIEnter', 'VimResume' }, { callback = discover, group = aug }) +vim.api.nvim_create_autocmd({ 'Signal' }, { pattern = 'SIGUSR1', callback = discover, group = aug }) + +-- fix ColorColumn not being defined +vim.api.nvim_set_hl(0, 'ColorColumn', { link = 'CursorColumn', force = true }) |