Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dan7h3x/lazydo
A little smart todo/task manager made for `neovim` enthusiasts.
https://github.com/dan7h3x/lazydo
neovim neovim-plugin nvim todo todolist
Last synced: about 8 hours ago
JSON representation
A little smart todo/task manager made for `neovim` enthusiasts.
- Host: GitHub
- URL: https://github.com/dan7h3x/lazydo
- Owner: Dan7h3x
- License: gpl-3.0
- Created: 2025-01-02T13:58:36.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2025-02-02T16:14:17.000Z (11 days ago)
- Last Synced: 2025-02-02T17:24:29.215Z (11 days ago)
- Topics: neovim, neovim-plugin, nvim, todo, todolist
- Language: Lua
- Homepage:
- Size: 198 KB
- Stars: 86
- Watchers: 1
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
LazyDo
A smart, feature-rich task/todo manager for neovim lovers
Screenshots •
Features •
Installation •
Usage •
Configuration
... made with love ...
## Screenshots
A demo video for `LazyDo`:
![LazyDo](https://github.com/user-attachments/assets/9fd079c8-52c3-45eb-81ef-e6cb315002fd)Screenshots for `LazyDo`:
![]()
main panel
![]()
`lualine` integration
![]()
pin window for having pending task everywhere
![]()
multi-line note editor## ✨ Features
- Intuitive task management with subtasks support
- Customizable themes and icons
- Due dates and reminders
- 🏷️ Task tagging and categorization
- 🔍 Advanced sorting
- Task relationships and dependencies
- (\*) Smart Storage
- 📊 Progress tracking and filtering (WIP)
- File attachments (WIP)## 📦 Installation
Using [lazy.nvim](https://github.com/folke/lazy.nvim):
```lua
return {
{
"Dan7h3x/LazyDo",
branch = "main",
cmd = {"LazyDoToggle","LazyDoPin","LazyDoToggleStorage"},
keys = { -- recommended keymap for easy toggle LazyDo in normal and insert modes (arbitrary)
{
"","LazyDoToggle",
mode = {"n","i"},
},
},
event = "VeryLazy",
opts = {
-- your config here
},
},
}
```and integration with `lualine.nvim`:
```lua
{
"nvim-lualine/lualine.nvim",
event = "VeryLazy",
opts = function(_, opts)
table.insert(opts.sections.lualine_x, {
function()
return require("lazydo").get_lualine_stats() -- status
end,
cond = function()
return require("lazydo")._initialized -- condition for lualine
end,
})
end,
}
```## Usage
> [!WARNING]
> For having `pin window` or `storage toggling` first spawn `LazyDoToggle` to load plugin up just
> once, when ever you enter `neovim`.- :`LazyDoToggle` - Toggle the task manager window
- `a` - Add new task
- `A` - Add subtask
- `a` - Quick Task
- `A` - Quick Subtask
- `d` - Delete task
- `e` - Edit task
- `D` - Set due date
- `K` - Move task up
- `J` - Move task down
- `i` - Toggle info
- `m` - Add metadata
- `M` - Edit metadata
- `n` - Add/edit note
- `p` - Toggle priority
- `t` - Add tags
- `T` - Edit tags
- `z` - Toggle fold
and more in help window using `?`.- :`LazyDoPin position`
- available positions are {default:`topright`,`topleft`,`bottomright`,`bottomleft`}.
- :`LazyDoToggleStorage mode`
- available modes are `project` and `global`### Valid dates
Example Dates:
- YYYY-MM-DD (like 2025-01-15)
- MM/DD (03/15)
- Nd (3d = 3 days)
- Nw (2w = 2 weeks)
- Nm (1m = 1 month)
- Ny (1y = 1 year)
- today
- tomorrow
- next week
- next month
- leave empty to clear## 🔧 Configuration
All available options:
```lua
{
title = " LazyDo Tasks ",
layout = {
width = 0.7, -- Percentage of screen width
height = 0.8, -- Percentage of screen height
spacing = 1, -- Lines between tasks
task_padding = 1, -- Padding around task content
},
pin_window = {
enabled = true,
width = 50,
max_height = 10,
position = "topright", -- "topright", "topleft", "bottomright", "bottomleft"
title = " LazyDo Tasks ",
auto_sync = true, -- Enable automatic synchronization with main window
colors = {
border = { fg = "#3b4261" },
title = { fg = "#7dcfff", bold = true },
},
},
storage = {
global_path = nil, -- Custom storage path (nil means use default)
project = {
enabled = false,
use_git_root = true,
path_pattern = "s/.lazydo/tasks.json",
},
auto_backup = true,
backup_count = 1,
compression = true,
encryption = false,
},
theme = {
border = "rounded",
colors = {
header = { fg = "#7aa2f7", bold = true },
title = { fg = "#7dcfff", bold = true },
task = {
pending = { fg = "#a9b1d6" },
done = { fg = "#56ff89", italic = true },
overdue = { fg = "#f7768e", bold = true },
blocked = { fg = "#f7768e", italic = true },
in_progress = { fg = "#7aa2f7", bold = true },
info = { fg = "#78ac99", italic = true },
},
priority = {
high = { fg = "#f7768e", bold = true },
medium = { fg = "#e0af68" },
low = { fg = "#9ece6a" },
urgent = { fg = "#db4b4b", bold = true, undercurl = true },
},
storage = { fg = "#a24db3", bold = true },
notes = {
header = {
fg = "#7dcfff",
bold = true,
},
body = {
fg = "#d9a637",
italic = true,
},
border = {
fg = "#3b4261",
},
icon = {
fg = "#fdcfff",
bold = true,
},
},
due_date = {
fg = "#bb9af7",
near = { fg = "#e0af68", bold = true },
overdue = { fg = "#f7768e", undercurl = true },
},
progress = {
complete = { fg = "#9ece6a" },
partial = { fg = "#e0af68" },
none = { fg = "#f7768e" },
},
separator = {
fg = "#3b4261",
vertical = { fg = "#3b4261" },
horizontal = { fg = "#3b4261" },
},
help = {
fg = "#c0caf5",
key = { fg = "#7dcfff", bold = true },
text = { fg = "#c0caf5", italic = true },
},
fold = {
expanded = { fg = "#7aa2f7", bold = true },
collapsed = { fg = "#7aa2f7" },
},
indent = {
line = { fg = "#3b4261" },
connector = { fg = "#3bf2f1" },
indicator = { fg = "#fb42f1", bold = true },
},
search = {
match = { fg = "#c0caf5", bold = true },
},
selection = { fg = "#c0caf5", bold = true },
cursor = { fg = "#c0caf5", bold = true },
},
progress_bar = {
width = 15,
filled = "█",
empty = "░",
enabled = true,
style = "modern", -- "classic", "modern", "minimal"
},
indent = {
connector = "├─",
last_connector = "└─",
},
task_separator = {
left = "",
right = "",
center = "░"
},
},
icons = {
task_pending = "",
task_done = "",
priority = {
low = "",
medium = "",
high = "",
urgent = "",
},
created = "",
updated = "",
note = "",
relations = " ",
due_date = "",
recurring = {
daily = "",
weekly = "",
monthly = "",
},
metadata = "",
important = "",
},
features = {
task_info = {
enabled = true,
},folding = {
enabled = true,
default_folded = false,
icons = {
folded = "▶",
unfolded = "▼",
},
},
tags = {
enabled = true,
colors = {
fg = "#7aa2f7",
},
prefix = " ",
},
relations = {
enabled = true,
},
metadata = {
enabled = true,
colors = {
key = { fg = "#f0caf5", bg = "#bb9af7", bold = true },
value = { fg = "#c0faf5", bg = "#7dcfff" },
section = { fg = "#00caf5", bg = "#bb9af7", bold = true, italic = true },
},
},
},
}
```## 🤝 Contributing
Contributors are welcome here and thank you btw.