The CLI To-Do List / Task Manager for Geeks
Finally! A full featured task manager for YOU!
๐ฎ Highlights
- For ninjas - do things faster with keyboard shortcuts
- Markdown lovers, feel at ๐ ! You'll see markdown everywhere.
- Full featured (almost) - Projects, Tasks, due-dates, task notes...
- A <4MB app that takes <1% CPU and ~7MB memory 1 - how much lighter you can think?
- Task note editor with markdown syntax highlighting2
- Full mouse support
๐ฏ Roadmap
- Create Project
- Delete Project
- Edit Project
- Create Task (under project)
- Set Task due date (as
yyyy-mm-dd
) with shortcut - Set Task due date with quick input buttons (today, +1 day, -1 day)
- Update Task Title
- Tasklist items should indicate status (done, pending, overdue) using colors
- Export Tasks (Copy title, dueDate and description to clipboard as Markdown)
- Pin Tasks
- Shortcut for Adding new Project and Task
- Global shortcuts for jumping to Projects or Tasks panel anytime
- Cleanup all completed tasks of project
- Task note editor should syntax highlight (markdown) and line numbers
- Status bar for common shortcuts
- Status bar should display success/error message of actions
- Status bar may display quick tips based on focused element
- Dynamic lists
- Today - Due Today and overdue
- Tomorrow
- Upcoming - Due in next 7 days
- Unscheduled - tasks without due date
- Integrations
- todo.txt (coming soon...)
- Google Tasks
- (Share your ideas)
- Time tracking
๐ Ready for action (installing and running)
It's just a single binary file, no external dependencies.
Just download the appropriate version of executable from latest release for your OS.
Then rename and give it permission to execute.
For example:
mv geek-life_linux-amd64 geek-life
sudo chmod +x geek-life
./geek-life
I recommend installing it globally (to run from any directory of your system). It's easy, just put it in your systems $PATH directory.
sudo mv geek-life /usr/local/bin/geek-life
geek-life
Done! Manage your tasks your way!
โจ๏ธ Keyboard shortcuts
Shortcut key for a pane/element will be marked with underline.
Some shortcuts are global, some are contextual.
Contextual shortcuts will be applied according to focused pane/element.
You'll see a currently focused pane bordered with double line.
In case writing in a text input (e,g, new project/task, due date), you have to Enter
to submit/save.
Context | Shortcut | Action |
---|---|---|
Global | p |
Go to Project list |
Global | t |
Go to Task list |
Projects | n |
New Project |
Projects | โ /k /Shift+Tab |
Go up in project list |
Projects | โ /j /Tab |
Go down in project list |
Tasks | n |
New Task |
Tasks | Esc /h |
Go back to Projects Pane |
Tasks | โ /k /Shift+Tab |
Go up in task list |
Tasks | โ /j /Tab |
Go down in task list |
Tasks | c |
Clear completed tasks |
Tasks | d |
Delete Project |
Task Detail | Esc /h |
Go back to Tasks Pane |
Task Detail | Space |
Toggle task as done/pending |
Task Detail | d |
Set Due date |
Task Detail | o |
Set Due date to today |
Task Detail | + |
Due date plus 1 |
Task Detail | - |
Due date minus 1 |
Task Detail | โ /โ |
Scroll Up/Down the note editor |
Task Detail | e |
Activate note editor for modification |
Task Detail | v |
Edit task details in external editor (default vim ) |
Task Detail | r |
Rename Task Title |
Task Detail | x |
Export Task to clipboard |
Active Note Editor | Esc |
Deactivate note editor and save content |
Tips about using shortcuts efficiently:
The interface has 3 primary panels
- [P]rojects/Task lists
- [T]asks of selected project or Tasklist
- [D]etails/actions of selected Project or Task
The following diagram shows navigation shortcuts between the panels.
+------+----------------------+-----------------------+
| P | T | D |
| | | |
| Entr=> โ โ Entr=> |
| | / / | |
| <=Esc j k <=Esc |
| | | |
+------+----------------------+-----------------------+
So, what it's trying to visualize is -
- Selecting an item with
Enter
will move you to right panel. That means -- Selecting a Project will load it's tasks and move to Tasks panel
- Selecting a Task will load task detail and move to Detail panel
- Use
Esc
to move back to left panel. From Details to Tasks to Projects. - To navigate a list (Project list or Task list),
- Use
โ
orj
orTab
to go down - Use
โ
ork
orShift+Tab
to go up
- Use
Some More hints:
- If you are a vim user, think like -
j
/k
for up/down list andh
for go left - Think
Esc
as a "step back" - to previous pane in most cases. - When you're in a list (Projects or Tasks),
Enter
will load currently selected item. - After creating new Project, focus will automatically move to Tasks. Start adding tasks immediately by pressing
n
. - After creating new Task, focus will stay in "new task" input. So that you can add tasks quickly one after another.
- After creating new Task, Press
Esc
when you're done creating tasks.
๐ ๏ธ Building blocks
- Made with โค๏ธ and golang 1.14 (you don't need golang to run it)
- Designed with tview - interactive widgets for terminal-based UI
- Task Note editor made with femto
- Datastore is storm - a powerful toolkit for BoltDB
Contribute
If you fix a bug or want to add/improve a feature, and it's aligned with the focus (merging with ease) of this app, I will be glad to accept your PR. :)
๐ก You may ask...
โ Where is the data stored? Can I change the location?
By default, it will try to create a db file in you home directory.
But as a geek, you may try to put it different location (e,g, in your dropbox for syncing).
In that case, just mention DB_FILE
as an environment variable.
DB_FILE=~/dropbox/geek-life/default.db geek-life
UPDATE: For Windows users, setting ENV variable is not so straight forward.
So, added a flag --db-file
or -d
to specify DB file path from command line easily.
geek-life --db-file=D:\a-writable-dir\tasks.db
โ How can I suggest a feature?
Just post an issue describing your desired feature/enhancement
and select feature
label.
Also, incomplete features in the current roadmap will be found in issue list.
You may
Developed with GoLand.
Thanks to JetBrains for sponsoring Licenses for Open Source Development.
Footnotes
- In my Macbook Air, 1.6 GHz Dual-Core Intel Core i5, RAM: 8 GB 1600 MHz DDR3
- Using monakai color scheme for markdown syntax
"This is the Book about which there is no doubt, a guidance for those conscious of Allah" - Al-Quran