Zetdo
Overview
Zetdo is a small TODO
list shell utility written on top
of zet, the Zettelkasten
utility in weewiki.
The source code can be found on sourcehut.
Prerequisites
sqlite3
(the sqlite3 CLI utility).
weewiki
(get the source code on sourcehut.)
Basic Usage Example
Create a new TODO database with
$ ./zetdo create
Add some tasks:
$ ./zetdo add
say: make a task in zetdo.
$ ./zetdo add
say: make another task in zetdo.
List tasks that still need to be done. This will list the UUID, date, and message.
$ ./zetdo tasks
0fa78ac6 2021-01-16 14:59:30 make a task in zetdo.
7ef73f6d 2021-01-16 15:01:33 make another task in zetdo.
Add some comments to the task with UUID 0fa78ac6. Partial UUIDs can be accepted.
$ ./zetdo comment 0fa78
comment: Commenting on my first task.
$ ./zetdo comment 0fa78
comment: Adding another comment.
Get the comment history of task 0fa78ac6:
$ ./zetdo history 0fa78
2021-01-16 15:05:36 Commenting on my first task.
2021-01-16 15:06:08 Adding another comment.
Set task 0fa78ac6 to be done.
$ ./zetdo done 0fa78
Now it won't show up on when ./zetdo tasks
is run:
$ ./zetdo tasks
7ef73f6d 2021-01-16 15:01:33 make another task in zetdo.
The zetdo database can be exported to a TSV where it can managed in source control.
$ ./zetdo export > zetdo.tsv
The database can then be rebuilt with
$ ./zetdo rebuild zetdo.tsv
Aliases File
In practice, it is best to include a local version of the zetdo shell script in the project, and to use it with an aliases file included with the zetdo project.
Zetdo can then be used by going into the directory where the script and aliases have been copied to and running:
source aliases
This creates an alias zetdo
, among other things. More
information can be found in the zetdo commands page.
Agenda
Zetdo has a feature very loosely inspired by org-agenda
that allows tasks to be ordered in a priority queue with
and upvote/downvote system. That way, the most important
tasks float to the top.
The priority queue is a SQLite table. Create it explicitely
with create_list
:
zetdo create_list
To add a task to the list, use lstadd
:
zetdo lstadd UUID
Where UUID
is the task UUID.
Removing a task is done with lstdel
:
zetdo lstdel UUID
From there, tasks can be upvoted or downvoted using uv
and dv
:
weewiki zet uv UUID [amt]
weewiki zet dv UUID [amt]
Where UUID
is the UUID, and amt
is an optional integer
amount to vote by.
Upvoted/downvoted tasks get displayed with their characters
and the first characters 8 characters of their
ergo UUID using the agenda
command:
$ ./zetdo agenda
4: [gloplfpk] Do that very important thing today
1: [gasdfjkl] Do that other thing you were going to do
0: [gpiqejiq] Forage for food
Zetdo Commands
A reference page for all available zetdo commands can be found at the page zetdo_commands.
Subtasks
Zetdo has very limited support for subtasks, or tasks belonging to tasks. A task with subtasks will indicate how many are done in the agenda view.
Known limitations: subtasks should only use TODO or DONE states. There's no blocking mechanism. Subtasks may or may not be able to have subtasks.
Linking task B to task A will make B a subtask, using vanilla zet
zet link TASKB_UUID TASKA_UUID
When task A is added to the agenda list, it will display how many subtasks there are, and how many are done.
To make a subtask done, set the task's state to be DONE.
Updates
Page updates from the wiki zet.
2021-07-19 10:09:03: added some initial stopwatch functionality to (zetdo) after adding the 'var create' command in (zet). If this ends up working, I'll have most of what I used org-agenda for. #org #timekeeping
2021-07-05 11:48:15: created a commands reference page for (zetdo), mainly because I keep forgetting about them: (zetdo_commands).
2021-02-14 17:00:38: this new 'subtasks' command I made today feels like it is going to be helpful. looking forward to scoping something using them in the (TODO) pages.
2021-02-07 12:22:59: initial work adding a priority queue and agenda view to (zetdo). should be immediately useful.
2021-02-01 19:45:48: added a TODO page for zetdo: (zetdo_TODO).
2021-01-19 16:32:20: this TODO app (zetdo) is proving to be an interesting application for (zet). It's making me think a lot more practically about item presentation and organization. Self-organizing structures like priority cues and trees seem to be structures that I want but do not have.
2021-01-16 21:34:42: If I could figure out ways to immitate hierarchy, I could have something very org-like up and running.
2021-01-16 21:33:47: thinking about integrating this into my wiki, as a kind of public TODO list? roadmaps and the like for various tools.