keybars Pro in Neovim: builds and errors on the keyboard, Focus and typing speed in the statusline
  • Lua 99%
  • Makefile 1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Jonathan Warykowski 86bc3f31c9
All checks were successful
CI / lint (push) Successful in 53s
CI / test (nightly) (push) Successful in 1m17s
CI / test (stable) (push) Successful in 1m16s
docs: CLAUDE.md with what to keep in mind working here (#2)
2026-10-19 00:14:49 +00:00
.github/workflows feat: keybars Pro in Neovim (#1) 2026-10-18 05:22:47 +00:00
lua/keybars feat: keybars Pro in Neovim (#1) 2026-10-18 05:22:47 +00:00
tests feat: keybars Pro in Neovim (#1) 2026-10-18 05:22:47 +00:00
.busted feat: keybars Pro in Neovim (#1) 2026-10-18 05:22:47 +00:00
.luacheckrc feat: keybars Pro in Neovim (#1) 2026-10-18 05:22:47 +00:00
.stylua.toml feat: keybars Pro in Neovim (#1) 2026-10-18 05:22:47 +00:00
CLAUDE.md docs: CLAUDE.md with what to keep in mind working here (#2) 2026-10-19 00:14:49 +00:00
LICENSE chore: licence 2026-10-18 16:20:21 +11:00
Makefile feat: keybars Pro in Neovim (#1) 2026-10-18 05:22:47 +00:00
README.md feat: keybars Pro in Neovim (#1) 2026-10-18 05:22:47 +00:00

keybars.nvim

keybars Pro in Neovim: your editor's work on the keyboard, and the keyboard's state in your statusline.

  • :KeybarsRun make test runs a command through keybars-pro run, so the keyboard shows build.running, then build.passed or build.failed (the marketplace's CI pack plays them), and a failure's output opens in the quickfix list.
  • :KeybarsMarket [words] browses the marketplace in a picker: show an item, install it, or remove it if it's installed.
  • :KeybarsFocus [start|stop|status] drives keybars Pro's Focus timer.
  • :KeybarsLight top-row red -effect pulse and :KeybarsClear light and clear keys, as keybars-pro light and clear do.
  • require("keybars").status() is a statusline component: 🎯12m · 74 wpm while Focus or Typing runs, else "". It follows one keybars-pro watch for the session, so it's cheap on every redraw.
  • With diagnostics = true, a key holds red while any loaded buffer has errors, and clears when they're fixed.

Everything goes through the keybars-pro command, so it works on any keyboard keybars Pro drives. With herdr, herdr-keybars puts your agents and pull requests on the keyboard too.

requirements

  • Neovim ≥ 0.11
  • keybars Pro running, with its command installed: App settings, Command line, Install the command-line tool

install

lazy.nvim:

return {
	"jwarykowski/keybars.nvim",
	cmd = { "KeybarsRun", "KeybarsMarket", "KeybarsFocus", "KeybarsLight", "KeybarsClear" },
	keys = {
		{ "<leader>kr", ":KeybarsRun ", desc = "keybars: run a command" },
		{ "<leader>km", "<cmd>KeybarsMarket<cr>", desc = "keybars: marketplace" },
		{ "<leader>kf", "<cmd>KeybarsFocus<cr>", desc = "keybars: start Focus" },
	},
	opts = {},
}

Other plugin managers: add the repo and call require("keybars").setup().

configuration

require("keybars").setup({
	cmd = "keybars-pro", -- the command, if it isn't on $PATH
	run_name = "build", -- :KeybarsRun's events: <name>.running, .passed, .failed
	diagnostics = false, -- hold a key while there are errors
	diagnostics_key = "esc", -- as keybars-pro light names keys: esc, top-right, r2c1...
	diagnostics_colour = "red",
	statusline = { focus = true, typing = true },
})

With lualine:

sections = {
	lualine_x = { function() return require("keybars").status() end, "filetype" },
},

:checkhealth keybars checks keybars-pro is there and the app answers.

development

make fmt     # stylua
make lint    # stylua --check + luacheck
make test    # busted (specs run under Neovim via nlua)
make check   # lint + test