vimpostor / vim-lumen

Make vim follow your system-wide dark mode preference
GNU General Public License v3.0
84 stars 2 forks source link
colorscheme dark-mode neovim neovim-plugin nvim vim vim-plugin

vim-lumen

This plugin enables vim to follow the global system-wide dark mode preference of your platform.

https://user-images.githubusercontent.com/21310755/225781457-2a1e4f26-fbd5-4c08-a75e-2c2f931488b3.mp4

Supported platforms are Linux, MacOS and Windows. All platform implementations are interrupt-based and do not use any resources in the background because they avoid polling and use the proper system APIs instead.

Installation

With vim-plug add the following line to your .vimrc:

Plug 'vimpostor/vim-lumen'

Once a system dark mode preference change is detected, this plugin will set the background vim option accordingly, so make sure that your colorscheme supports reloading as described in :h 'background'.

Dependencies

Linux

On Linux it is required that you have gdbus installed together with one of the following options:

Make sure that the xdg-desktop-portal is running.

MacOS

It is required that Swift is available on your system. Swift is shipped with Xcode for example.

Windows

At least Windows 10 1903 is required. No further installed components are needed. This also works inside WSL2.

FAQ

How can I add custom callbacks?

You can use the LumenLight and LumenDark User autocommands:

au User LumenLight echom 'Entered light mode'
au User LumenDark echom 'Entered dark mode'

Note that for the common usecase of switching the colorscheme, there are the g:lumen_light_colorscheme and g:lumen_dark_colorscheme variables.

What are some good light colorschemes?

There are not many colorschemes that work well both in light and dark mode. Here are some example colorschemes that I can personally recommend:

Why not use the new SIGWINCH autocmd in neovim?

Neovim recently merged support for SIGWINCH autocmds. It is possible to hack together dark mode support by abusing the SIGWINCH autocmd, but this has quite a few disadvantages: