Finally, Nvim + Pomodoro!
Yes, its another Pomodoro plugin for Nvim. Originally made to my own use and to learn the basics of plugin creation with Neovim.
I decided to leave this available for everyone that can find it useful also and please feel free to use, copy, comment or change anything you want.
- Setup your pomodoro sessions time
- Start and Stop sessions
- Show status realtime from other plugins
- Not just Pomodoro focused! Custom timer for any use
Using vim-plug
Plug 'dbinagi/nomodoro'
To load plugin with default configuration:
require('nomodoro').setup({})
require('nomodoro').setup({
work_time = 25,
short_break_time = 5,
long_break_time = 15,
break_cycle = 4,
menu_available = true,
texts = {
on_break_complete = "TIME IS UP!",
on_work_complete = "TIME IS UP!",
status_icon = "🍅 ",
timer_format = '!%0M:%0S' -- To include hours: '!%0H:%0M:%0S'
},
on_work_complete = function() end,
on_break_complete = function() end
})
Command | Description |
---|---|
NomoWork | Start work timer |
NomoBreak | Start break timer |
NomoStop | Stop all timers |
NomoStatus | Print time left manually |
NomoTimer N | Runs a timer for N minutes |
NomoPause | Pauses current timer |
NomoContinue | Resumes current timer |
By default, no shortcuts are provided, you could configure the following.
local map = vim.api.nvim_set_keymap
local opts = { noremap = true, silent = true }
map('n', '<leader>nw', '<cmd>NomoWork<cr>', opts)
map('n', '<leader>nb', '<cmd>NomoBreak<cr>', opts)
map('n', '<leader>ns', '<cmd>NomoStop<cr>', opts)
As an example, to integrate the status realtime with lualine use the following:
local lualine = require'lualine'
lualine.setup({
sections = {
lualine_x = {
require('nomodoro').status,
}
}
})
Integration with nui.menu
If you like menus, you can install the dependency nui.menu and you will have enable a command NomoMenu
to display options in a popup
Contributions are more than welcome! Thanks to:
@gaardhus @nfwyst