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 needs to be larger than whatever time your system takes to query dark mode.
Otherwise you risk freezing neovim on shutdown.
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