<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>Univers Libre - devtodo</title>
    <subtitle>Yet another sysadmin&#39;s personal blog</subtitle>
    <link rel="self" type="application/atom+xml" href="https://univers-libre.net/tags/devtodo/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://univers-libre.net"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2010-09-10T00:00:00+00:00</updated>
    <id>https://univers-libre.net/tags/devtodo/atom.xml</id>
    <entry xml:lang="en">
        <title>Gérer efficacement et rapidement ses todos avec devtodo</title>
        <published>2010-09-10T00:00:00+00:00</published>
        <updated>2010-09-10T00:00:00+00:00</updated>
        
        <author>
          <name>Romain</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://univers-libre.net/posts/devtodo/"/>
        <id>https://univers-libre.net/posts/devtodo/</id>
        
        <content type="html" xml:base="https://univers-libre.net/posts/devtodo/">&lt;p&gt;Pour changer un peu de l’administration système, je vais vous présenter
aujourd’hui… devtodo.&lt;/p&gt;
&lt;p&gt;&lt;a class=&quot;external-link&quot; rel=&quot;external&quot; href=&quot;https://swapoff.org/DevTodo&quot;&gt;devtodo&lt;/a&gt; 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.&lt;/p&gt;
&lt;p&gt;À 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.&lt;/p&gt;
&lt;h2 id=&quot;presentation-rapide-des-fonctionnalites-de-devtodo&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#presentation-rapide-des-fonctionnalites-de-devtodo&quot; aria-label=&quot;Anchor link for: presentation-rapide-des-fonctionnalites-de-devtodo&quot;&gt;Présentation rapide des fonctionnalités de devtodo&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;gestion des taches sur plusieurs niveaux ;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;gestion de 5 niveaux de priorité ;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;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) ;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;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 :&lt;/p&gt;
&lt;pre class=&quot;giallo z-code&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;cd mon-projet&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;todo&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;# affichage des todos de &amp;quot;mon-projet&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Vous voulez tout d’un coup travailler sur un autre projet :&lt;/p&gt;
&lt;pre class=&quot;giallo z-code&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;cd ../autre-projet&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;todo&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;# affichage des todo de &amp;quot;autre-projet&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;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 &lt;code&gt;-G&lt;/code&gt; ;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;filtrage et tri avancé de l’affichage des todos (suivant des critères
comme terminé, priorité, date de création…) ;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;possibilité de redéfinir entièrement le formatage et la coloration de
l’affichage de la todo list (en accédant au variables via &lt;code&gt;%p&lt;/code&gt;, &lt;code&gt;%d&lt;/code&gt;, etc…) ;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;je pense que ce sera tout, tout ça prenant un peu moins de 300Ko installé !&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;utilisation-basique&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#utilisation-basique&quot; aria-label=&quot;Anchor link for: utilisation-basique&quot;&gt;Utilisation basique&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Voici comment utiliser devtodo de manière “simple” :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Ajout d’un todo avec une priorité faible (la plus haute est 1) :&lt;/p&gt;
&lt;pre class=&quot;giallo z-code&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;tda -p 4 un premier todo&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Voir sa liste de todo :&lt;/p&gt;
&lt;pre class=&quot;giallo z-code&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;todo&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ajout d’une sous tache à la précédente :&lt;/p&gt;
&lt;pre class=&quot;giallo z-code&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;tda -g 1 une sous tache du premier todo&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Marquer la sous tache comme faite :&lt;/p&gt;
&lt;pre class=&quot;giallo z-code&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;tdd 1.1&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Édition d’une tache :&lt;/p&gt;
&lt;pre class=&quot;giallo z-code&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;tde 1&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bref, je vous laisse lire le man pour plus de détails (qui est d’ailleurs
très clair, contrairement au site du projet).&lt;/p&gt;
&lt;h2 id=&quot;utilisation-avancee&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#utilisation-avancee&quot; aria-label=&quot;Anchor link for: utilisation-avancee&quot;&gt;Utilisation avancée&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&quot;filtrage&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#filtrage&quot; aria-label=&quot;Anchor link for: filtrage&quot;&gt;Filtrage&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;devtodo permet de filtrer l’affichage des todos suivant plusieurs critères.
Quelques exemples pratiques :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;N’afficher que les todos finissant par la chaîne toto (on commence simple)
:&lt;/p&gt;
&lt;pre class=&quot;giallo z-code&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;todo -f &amp;quot;/toto$&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Afficher les todos non fait et avec une priorité supérieure ou égale à
high :&lt;/p&gt;
&lt;pre class=&quot;giallo z-code&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;todo -f &amp;quot;-done,+high&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Afficher les todos contenant foo ou Foo, en recherchant aussi dans les sous
tâches :&lt;/p&gt;
&lt;pre class=&quot;giallo z-code&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;todo -f &amp;quot;/[fF]oo,+children&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;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 :&lt;/p&gt;
&lt;pre class=&quot;giallo z-code&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;filter -done,children&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&quot;tri&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#tri&quot; aria-label=&quot;Anchor link for: tri&quot;&gt;Tri&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;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 :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Trier par date de création :&lt;/p&gt;
&lt;pre class=&quot;giallo z-code&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;todo --sort created&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Trier d’abord par priorité, puis par ordre alphabétique :&lt;/p&gt;
&lt;pre class=&quot;giallo z-code&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;todo --sort priority,text&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Le tri à appliquer par défaut est définit par la directive sort dans le
fichier de conf.&lt;/p&gt;
&lt;h3 id=&quot;formatage&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#formatage&quot; aria-label=&quot;Anchor link for: formatage&quot;&gt;Formatage&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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 :&lt;/p&gt;
&lt;pre class=&quot;giallo z-code&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;format nomDuFormat=templateString&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;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 &lt;code&gt;printf()&lt;/code&gt;. Un petit
exemple :&lt;/p&gt;
&lt;pre class=&quot;giallo z-code&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;format display=%4&amp;gt;%i%[info]%f%2n.%[priority]%+1T&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Pour avoir plus d’information sur l’écriture de la chaîne (notamment la liste
des variables),… cf. le man.&lt;/p&gt;
&lt;p&gt;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 :&lt;/p&gt;
&lt;pre class=&quot;giallo z-code&quot; &gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;use-format display=nomDuFormat&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
</content>
        
    </entry>
</feed>
