date: 10 Sep 2010 title: Gérer efficacement et rapidement ses todos avec devtodo tags: devtodo, planet-evolix, planet-libre Pour changer un peu de l'administration système, je vais vous présenter aujourd'hui… devtodo. [devtodo](http://swapoff.org/DevTodo) est un petit (mais puissant) utilitaire qui s'utilise en ligne de commande et qui va vous permettre de gérer votre (ou vos) todo list. Avant de vous le présenter, sachez qu'il m'a fallu pas mal de temps avant de trouver un todo list manager qui me convienne. Mon premier critère de sélection était une application en ligne de commande (éventuellement avec une interface ncurses). L'utilisation d'une interface graphique pour ce genre de tâche n'est vraiment pas adapté, je perdais trop de temps à clicouiller par-ci par-là pour saisir 3 mots que, finalement, je ne tenais plus à jour ma todo list et elle partait aux oubliettes. À partir de là j'ai testé différents utilitaires (doneyet, task, devtodo, w2do, todo.txt, et j'en passe). Mais seuls 2 répondaient à mon second critère : savoir gérer les sous taches : doneyet et devtodo. doneyet est une interface semi-graphique utilisant ncurses, mais ne me paraissait pas assez ergonomique (sans compter un segfault à chaque caractère UTF-8 de tapé, que je n'ai pas vraiment cherché à résoudre). J'ai donc choisi devtodo. [![screenshot devtodo](http://univers-libre.net/wp-content/uploads/2010/09/2010-09-10-000750_9 94x535_scrot2-500x269.png)](http://univers-libre.net/wp-content/uploads/2010/09/ 2010-09-10-000750_994x535_scrot2.png) ## Présentation rapide des fonctionnalités de devtodo * Gestion des taches sur plusieurs niveaux ; * Gestion de 5 niveaux de priorité ; * Stockage de la todo list dans un fichier xml, très facile à exploiter par la suite (une fonction d'export est quand même bien sûr prévue) ; * Gestion d'une todo list par répertoire (très pratique pour gérer plusieurs projets à la fois). Exemple : vous allez dans le répertoire mon-projet/, vous visualisez la todo list de ce projet : cd mon-projet todo # affichage des todos de "mon-projet" Vous voulez tout d'un coup travailler sur un autre projet : cd ../autre-projet todo # affichage des todo de "autre-projet" En fait, par défaut, devtodo lira le fichier xml .todo présent dans le répertoire courant, d'où ce fonctionnement. On peut bien sur forcer l'utilisation d'une todolist différente avec l'option -G ; * Filtrage et tri avancé de l'affichage des todos (suivant des critères comme terminé, priorité, date de création…) ; * Possibilité de redéfinir entièrement le formatage et la coloration de l'affichage de la todo list (en accédant au variables via %p, %d, etc…) ; * Je pense que ce sera tout, tout ça prenant un peu moins de 300Ko installé ! ## Utilisation basique Voici comment utiliser devtodo de manière "simple" : * Ajout d'un todo avec une priorité faible (la plus haute est 1) : tda -p 4 un premier todo * Voir sa liste de todo : todo * Ajout d'une sous tache à la précédente : tda -g 1 une sous tache du premier todo * Marquer la sous tache comme faite : tdd 1.1 * Édition d'une tache : tde 1 Bref, je vous laisse lire le man pour plus de détails (qui est d'ailleurs très clair, contrairement au site du projet). ## Utilisation avancée ### Filtrage devtodo permet de filtrer l'affichage des todos suivant plusieurs critères. Quelques exemples pratiques : * N'afficher que les todos finissant par la chaîne toto (on commence simple) : todo -f "/toto$" * Afficher les todos non fait et avec une priorité supérieure ou égale à high : todo -f "-done,+high" * Afficher les todos contenant foo ou Foo, en recherchant aussi dans les sous tâches : todo -f "/[fF]oo,+children" En bonus, vous pouvez définir un filtre par défaut, qui s'appliquera lorsque vous taperez simplement la commande todo. Cela ce fait dans le fichier .todorc : filter -done,children ### Tri De la même manière que vous pouvez filtrer la sortie, vous pouvez aussi la trier. Le principe est un peu le même que pour les filtres : * Trier par date de création : todo --sort created * Trier d'abord par priorité, puis par ordre alphabétique : todo --sort priority,text Le tri à appliquer par défaut est définit par la directive sort dans le fichier de conf. ### Formatage Le formatage de la sortie de todo ne vous convient pas ? eh bien vous pouvez la réécrire complètement. Avant tout sachez aussi que vous pouvez utiliser l'option -v pour un affichage plus complet. La définition des formats se passent (de préférence) dans le fichier de conf. Vous retrouvez les formats par défaut qui y sont décrits, puis vous pouvez écrire les votre en dessous, en utilisant la forme : format nomDuFormat=templateString templateString est la chaîne qui affichera le todo. Vous pouvez donc insérer des variables sur le même principe que la fonction C printf(). Un petit exemple : format display=%4>%i%[info]%f%2n.%[priority]%+1T Pour avoir plus d'information sur l'écriture de la chaîne (notamment la liste des variables),… cf. le man. Après avoir écrit votre nouveau format, 2 solutions : soit il déchire tout et vous voulez l'utiliser à la place de celui par défaut, soit il déchire aussi mais vous voulez l'utilisez que dans certains cas plus spécifiques. Dans le premier cas, rajoutez la ligne suivante dans votre conf : use-format display=nomDuFormat Remplacez display par verbose-display si le format doit être utilisé dans le cas de l'utilisation de l'option -v. Dans le second cas, vous pouvez bien sur spécifier le thème dans les options de la ligne de commande directement, via --use-format, en utilisant la même syntaxe que ci-dessus. Je pense avoir fait un tour global sur cet outil vraiment sympa, cependant il reste encore quelques astuces dont je n'ai pas parlé, mais bien décrite dans le man.