A linha de comando é vida! É a interface definitiva!

Passado o momento fanboy quero apresentar outra ferramenta que venho usado e gostando bastante. Quem me indicou o todolist foi o Stamatios Stamou Jr, fundador e CEO da startup Pipz.

Trata-se de um aplicativo escrito em Go que pode ser usado em qualquer sistema operacional, graças a facilidade da linguagem em gerar binários para vários sistemas. Outra vantagem é que ele usa um simples arquivo no formato JSON para armazenar suas tarefas. Isso facilita o backup, compartilhamento entre ambientes (uso um diretório no Dropbox para isso) e processamento dos seus dados da forma como você quiser. É muito fácil processar um arquivo JSON, em qualquer linguagem de programação moderna.

Para instalar a ferramenta depende do sistema operacional, mas todas as alternativas são muito fáceis. No macOS basta um:

brew install todolist

O próximo passo é inicializar o arquivo que será usado para salvar suas tarefas com o comando:

todolist init

O arquivo .todos.json é criado no seu diretório home. Um passo extra que eu fiz foi mover o arquivo para um diretório do Dropbox e criar um link simbólico:

mkdir ~/Dropbox/todolist
mv ~/.todos.json ~/Dropbox/todolist/todos.json
ln -s ~/Dropbox/todolist/todos.json ~/.todos.json

O site oficial possui uma documentação bem completa, além do help da própria ferramenta ser muito útil. Digitando apenas todolist é possível ver os principais comandos cenários.

Fazendo um resumo rápido, segue alguns exemplos de comandos que eu uso diariamente.

todolist a +codenation fazer backup do servidor do mautic @devops due tom

O comando acima cria uma tarefa chamada fazer backup do servidor do mautic no projeto codenation com o contexto devops.

Posso listar as tarefas com o comando

17:21:47 in ~ ⇡94% ➜ todolist l

 all
 11	[ ]	 		configurar site @devandmusic
 4	[ ]	 		revisar finanças família
 6	[ ]	 		escrever @post sobre o todolist
 17	[ ]	 		escrever @post sobre organização do iphone
 16	[ ]	 		marcar oftalmologista
 31	[ ]	 		+coderockr  1-1 com Raony
 29	[ ]	 		+coderockr  1-1 com Renata
 32	[ ]	 		+coderockr  1-1 com Leandro
 26	[ ]	 		comprar passagens ccxp
 25	[ ]	 		comprar ingressos ccxp
 10	[ ]	Fri Apr 6	marcar dentista
 33	[ ]	tomorrow	+codenation fazer backup do servidor do mautic @devops

Eu prefiro agrupar as tarefas por contexto ou projeto, com os comandos:

17:22:46 in ~ ⇡94% ➜ todolist l by p

 No projects
 11	[ ]	 		configurar site @devandmusic
 4	[ ]	 		revisar finanças família
 6	[ ]	 		escrever @post sobre o todolist
 17	[ ]	 		escrever @post sobre organização do iphone
 16	[ ]	 		marcar oftalmologista
 26	[ ]	 		comprar passagens ccxp
 25	[ ]	 		comprar ingressos ccxp
 10	[ ]	Fri Apr 6	marcar dentista

 codenation
 33	[ ]	tomorrow	+codenation fazer backup do servidor do mautic @devops

 coderockr
 31	[ ]	 	+coderockr  1-1 com Raony
 29	[ ]	 	+coderockr  1-1 com Renata
 32	[ ]	 	+coderockr  1-1 com Leandro
 
17:25:07 in ~ ⇡95% ➜ todolist l by c

 No contexts
 4	[ ]	 		revisar finanças família
 16	[ ]	 		marcar oftalmologista
 31	[ ]	 		+coderockr  1-1 com Raony
 29	[ ]	 		+coderockr  1-1 com Renata
 32	[ ]	 		+coderockr  1-1 com Leandro
 26	[ ]	 		comprar passagens ccxp
 25	[ ]	 		comprar ingressos ccxp
 10	[ ]	Fri Apr 6	marcar dentista

 devandmusic
 11	[ ]	 	configurar site @devandmusic

 devops
 33	[ ]	tomorrow	+codenation fazer backup do servidor do mautic @devops

 post
 6	[ ]	 	escrever @post sobre o todolist
 17	[ ]	 	escrever @post sobre organização do iphone

Para completar uma das tarefas é só executar:

todolist c 6

E é possível arquivar as tarefas completas:

todolist ac

Existem outras opções como edição, quebrar uma tarefa em sub-tarefas, adicionar notas, listar as atrasadas, etc. Vale a pena ler a documentação e brincar com a ferramenta para aprender os seus truques.

Outra dica é criar alias para os comandos mais usados, como:

alias t="todolist"
alias ta="todolist a"
alias tl="todolist l by c"
alias tc="todolist c"

Estou gostando bastante da ferramenta e das possibilidades que ela adiciona ao meu dia a dia. Espero que seja útil para mais alguém.