Change your RGB devices' color depending on Neovim's mode.
Fast and asynchronous plugin to live your vim-life to the fullest.
- 🌍 Universal: works with all devices supported by OpenRGB
- 🚀 Fast: snappy and completely asynchronous
- 💎 Reliable: multiple vim instances are supported
- ❤️ Flexible: each mode's colors are customizable
Make sure to have the following plugin in your vimrc:
Plug 'antoinemadec/openrgb.nvim', {'do': 'UpdateRemotePlugins'}
Install:
- OpenRGB : this is the RGB server
- openrgb-python : this is the RGB client
Make sure the OpenRGB server is running:
openrgb --server
And add the folowing in your vimrc :
augroup openrgb
autocmd!
autocmd ModeChanged *:* call OpenRGBChangeColorFromMode(mode(), 0, 255)
autocmd FocusGained,UIEnter * call OpenRGBChangeColorFromMode(mode(), 1, 255)
autocmd FocusLost * call OpenRGBClearColor()
augroup end
" change colors using 'g:openrgb_mode_dict' info:
" mode: vim mode, used as 'g:openrgb_mode_dict' key
" force: optional, force OpenRGB to set all leds
" brightness: optional, in [0:255], force color brightness
OpenRGBChangeColorFromMode(mode, force, brightness)
" change colors directly
" main_color: main vim format color
" led_names: optional, list of lists of led name, each list correspond to a color group
" led_colors: optional, list of vim_colors, one color per color group (or none for automatic color)
" force: optional, force OpenRGB to set all leds
" brightness: optional, in [0:255], force color brightness
call OpenRGBChangeColor(main_color, led_names, led_colors, force, brightness)
" default dict
let s:default_dict = {
\ 'main_color': '#000000',
\ 'led_names': [[]],
\ 'led_colors': []
\ }
let g:openrgb_mode_dict = {}
for mode in ['n', 'v', 'V', '�', 'i', 'R', 'c', 'r', 't', 'default']
let g:openrgb_mode_dict[mode] = copy(s:default_dict)
endfor
" customize dict:
" - if dict[mode] is not found, it falls back to dict['default']
" - each group of keys in 'led_names' are lit using the same color
" - look at 'g:openrgb_led_names' to see the available 'led_names'
" - if empty(led_colors):
" colors are assigned automatically
" else:
" led_colors are used
" -- normal
let g:openrgb_mode_dict['n']['main_color'] = '#ffff00'
let g:openrgb_mode_dict['n']['led_names'] = [
\ ['Key: Right Arrow', 'Key: Left Arrow', 'Key: Up Arrow', 'Key: Down Arrow'],
\ ['Key: H', 'Key: J', 'Key: K', 'Key: L'],
\ ['Key: Left Control', 'Key: Left Windows', 'Key: Left Alt', 'Key: Left Shift'],
\ ['Key: Insert', 'Key: Delete', 'Key: Home', 'Key: End', 'Key: Page Up', 'Key: Page Down'],
\ ['Key: F1', 'Key: F2', 'Key: F3', 'Key: F4'],
\ ['Key: F5', 'Key: F6', 'Key: F7', 'Key: F8'],
\ ['Key: F9', 'Key: F10', 'Key: F11', 'Key: F12'],
\ ['Key: 0', 'Key: 1', 'Key: 2', 'Key: 3', 'Key: 4', 'Key: 5', 'Key: 6', 'Key: 7', 'Key: 8', 'Key: 9'],
\ ]
" -- insert
let g:openrgb_mode_dict['i']['main_color'] = '#007020'
let g:openrgb_mode_dict['i']['led_names'] = [
\ ['Key: F', 'Key: R'],
\ ['Key: A', 'Key: N'],
\ ['Key: C', 'Key: E'],
\ ]
let g:openrgb_mode_dict['i']['led_colors'] = [
\ '#0000ff',
\ '#ffffff',
\ '#ff0000'
\ ]
MIT