todo.sh でタスク管理
年度も新しくなったということでタスク管理を見直したくなり、諸々と調査。OmniPlan とか Things とか色々とプロダクトはあるものの、OmniPlan で挫折した身としてはどれも気後れする。
そんな折、Todo.txt を見つけた。使ってみたら、なかなか良き使い心地。CLIサイコー!
インストール
$ brew install todo-txt
$ mkdir ~/.todo
$ cp -n /opt/homebrew/opt/todo-txt/todo.cfg ~/.todo/config
設定
素のconfigだと、todo.txt が /usr/local/bin 以下に作られてしまってアレなので、設定を変えておく
export TODO_DIR=$HOME/.todo
あと、コマンドが todo.sh
だと長いので、alias t='todo.sh'
した。
使い方
基本的な使い方
add
で追加し、ls
で確認して、done
で完了にする。これが一連のサイクルになる
$ t add "todo.shの説明を書く" # 追加
$ t ls # 確認
1 todo.shの説明を書く
--
TODO: 1 of 1 tasks shown
$ t done 1 # 完了
$ t ls
--
TODO: 0 of 0 tasks shown
優先度
t pri
で、優先度を設定できる
$ t pri 1 a
1 (A) 散歩に行く +home
TODO: 1 prioritized (A).
優先度を削除するときは t depri 1
。
優先度はAからZ (caseinsensitive) まで使えるけど、実際にはAとBの2つくらいで十分だと思う。今日やらなければならないタスク=A, 今週中には終わらせたいタスク=Bみたく。
設定した優先度はリスト表示したときに表示されるほか、t lsp A
のように絞り込みもできる
alias today='todo.sh lsp a'
としておくことにした
project と context
+
と @
を使って、タスク毎にプロジェクトとコンテキストを設定できる。まさにGTDじゃん。
t add "レンガを買う +花壇 @komeri"
t add "セメントを買う +花壇 @komeri"
t add "木材を買う +犬小屋 @komeri"
t add "牛乳を買う @aeon"
プロジェクトとコンテキストは ls する際に絞り込みで使える。
$ t ls @komeri
2 セメントを買う +花壇 @komeri
1 レンガを買う +花壇 @komeri
3 木材を買う +犬小屋 @komeri
--
TODO: 3 of 4 tasks shown
$ t ls @komeri +犬小屋
3 木材を買う +犬小屋 @komeri
--
TODO: 1 of 4 tasks shown
また、append
で末尾に文字列を追加できる。既存タスクをプロジェクトに追加するのに便利。
$ t ls
1 散歩に行く
--
TODO: 1 of 1 tasks shown
$ t append 1 +home
1 散歩に行く +home
プロジェクトとコンテキストの一覧はそれぞれ t lsprj
と t lsc
で参照できる。
その他のよく使いそうなコマンド
-
t del NUM
: タスクを削除する -
t replace NUM <new text>
: タスクを修正する -
t help
: ヘルプ
zsh completions
zsh-5.8 (これを書いている時点で最新のリリース版) に含まれる todo.sh の completions はいくつかのコマンドが不足している。HEAD では直っているので上書きしてしまおう。
curl -fsSL https://raw.githubusercontent.com/zsh-users/zsh/master/Completion/Unix/Command/_todo.sh > _todo.sh \
&& cat _todo.sh > /opt/homebrew/share/zsh/functions/_todo.sh \
&& rm _todo.sh
むすびに
OmniPlan みたいにしゃちほこばらずに始められるのがいいですね。
というかこれ、チームメンバーの todo.txt を編集・参照できるようにすれば、タスクの割り振りとか進捗確認とかできてめっちゃハッピーなのでは。
Discussion