reverb.nvim is a Neovim plugin that adds sound effects to specific autocmd events. With this plugin, you can enhance your Neovim experience by associating various sounds with different actions, providing an auditory dimension to your coding environment.
github.mp4
⭐ Turn sound on
Any suggestions or help is welcome and appreciated 😄
Sound files cam be played with paplay, pw-play or mpv. Check with your local package manager if you're not sure.
To get started, configure the plugin's options in your Neovim configuration. Here's a few examples)
Lazy:
local sound_dir = "/some/path/to/sounds/"
return {
"whleucka/reverb.nvim",
event = "BufReadPre",
opts = {
player = "paplay", -- options: paplay (default), pw-play, mpv
max_sounds = 20, -- Limit the amount of sounds that can play at the same time
sounds = {
-- Add custom sound paths or lists of sounds for other events here
-- For example, BufRead can play a random sound from a list
BufRead = { path = { sound_dir .. "start1.ogg", sound_dir .. "start2.ogg" }, volume = 0-100 },
CursorMovedI = { path = sound_dir .. "click.ogg", volume = 0-100 },
InsertLeave = { path = sound_dir .. "toggle.ogg", volume = 0-100 },
ExitPre = { path = sound_dir .. "exit.ogg", volume = 0-100 },
BufWrite = { path = sound_dir .. "save.ogg", volume = 0-100 },
},
},
}neovim 0.12+ vim.pack:
local sound_dir = "/some/path/to/sounds/"
vim.pack.add({
{
src = "https://github.com/whleucka/reverb.nvim",
name = "reverb",
}
})
require("reverb").setup({
player = "paplay",
max_sounds = 20,
sounds = {
BufRead = { path = { sound_dir .. "start1.ogg", sound_dir .. "start2.ogg" }, volume = 0-100 },
CursorMovedI = { path = sound_dir .. "click.ogg", volume = 0-100 },
InsertLeave = { path = sound_dir .. "toggle.ogg", volume = 0-100 },
ExitPre = { path = sound_dir .. "exit.ogg", volume = 0-100 },
BufWrite = { path = sound_dir .. "save.ogg", volume = 0-100 },
},
})By default each binding listens with pattern = "*". You can scope a binding to a specific pattern with the pattern field — useful for User events and any event that distinguishes kinds via the pattern (e.g. PackChanged):
sounds = {
-- Fugitive's User event
User = { path = sound_dir .. "git.ogg", volume = 50, pattern = "FugitiveChanged" },
-- Only fire on package updates, not install/delete
PackChanged = { path = sound_dir .. "ding.ogg", volume = 50, pattern = "update" },
}To bind multiple patterns to the same event, pass a list of configs:
sounds = {
User = {
{ path = sound_dir .. "git.ogg", volume = 50, pattern = "FugitiveChanged" },
{ path = sound_dir .. "boot.ogg", volume = 50, pattern = "LazyVimStarted" },
},
}You can manage the sound settings in reverb.nvim with the following commands:
:ReverbToggleto switch sounds on or off.:ReverbEnableto turn sounds on.:ReverbDisableto turn sounds off.
- Note: reverb.nvim does not include any sound files.
- You can find free (CC0) interface sounds at https://www.kenney.nl/assets/interface-sounds
This project is licensed under the MIT License.