A Neovim plugin for macOS, Linux, and Windows that automatically changes the editor appearance based on system settings.
Using vim-plug
Plug 'f-person/auto-dark-mode.nvim'
- macOS, a Linux environment that implements
org.freedesktop.appearance.color-scheme
, Windows 10+ or WSL - Neovim
You need to call setup
for initialization.
setup
accepts a table with options – set_dark_mode
function,
set_light_mode
function, and update_interval
integer.
set_dark_mode
is called when the system appearance changes to dark mode, and
set_light_mode
is called when it changes to light mode.
By default, they just change the background option, but you can do whatever you like.
update_interval
is how frequently the system appearance is checked.
The value is stored in milliseconds. Defaults to 3000
.
local auto_dark_mode = require('auto-dark-mode')
auto_dark_mode.setup({
update_interval = 1000,
set_dark_mode = function()
vim.api.nvim_set_option('background', 'dark')
vim.cmd('colorscheme gruvbox')
end,
set_light_mode = function()
vim.api.nvim_set_option('background', 'light')
vim.cmd('colorscheme gruvbox')
end,
})
Using lazy
return {
"f-person/auto-dark-mode.nvim",
config = {
update_interval = 1000,
set_dark_mode = function()
vim.api.nvim_set_option("background", "dark")
vim.cmd("colorscheme gruvbox")
end,
set_light_mode = function()
vim.api.nvim_set_option("background", "light")
vim.cmd("colorscheme gruvbox")
end,
},
}
You can disable auto-dark-mode.nvim
at runtime via lua require('auto-dark-mode').disable()
.
- @nekowinston for implementing Linux support and other contributions! <3
- @adityamwagh for implementing Windows support
If you enjoy the plugin and want to support what I do