Comme j'en avais parlé dans un article précédent, j'utilise des fichiers todo.txt pour gérer mes listes de tâches à faire sur mes projets. Afin d'avoir une meilleure vue d'ensemble de l'avancée de mes travaux, j'avais écrit un petit script python qui générait une page HTML affichant les entrées d'un fichier todo.txt sous forme de kanban. Je vous renvoie vers l'article correspondant.

Peut-être qu'à l'avenir j'utiliserai ce script pour générer des pages permettant aux lecteurs de suivre l'avancée de certains de mes projets mais au quotidien le processus pour visionner le kanban reste assez fastidieux. Chaque fois que je veux changer une carte de colonne je suis obligé d'éditer le fichier texte, générer à nouveau la page HTML et enfin l'ouvrir dans un navigateur. Ce serait bien plus simple si je pouvais directement éditer ma to do list depuis le kanban généré...

Je me suis dit qu'il pourrait être intéressant de convertir le format todo.txt en kanban mais au sein d'une interface qui permettrait d'éditer le fichier texte en mettant à jour l'affichage du kanban en temps réel. Dans l'idée, il fallait que ce soit un petit programme facile à installer et à déplacer si besoin et le programme ne devait pas me prendre trop de temps à développer. Ayant déjà une base de code en python j'ai décidé de continuer sur cette lancée.

Pour essayer de garder le programme portable, j'ai voulu d'essayer de le garder confiné dans un seul fichier de script et de ne pas y ajouter de dépendances. Il y a longtemps je m'étais penché sur tkinter pour réaliser une interface simple pour rendre un script utilitaire plus abordable à un utilisateur qui n'était pas habitué à la ligne de commande. Cette librairie étant intégrée à Python 3, elle n'ajoute aucune dépendance au script. Je me suis donc un peu renseigné sur le fonctionnement de tkinter et en peu de temps j'avais une version de KanbanTxt utilisable, capable de lire un fichier todo.txt situé dans le même répertoire que le script et d'afficher d'un côté un éditeur de texte pour modifier la to do list, et de l'autre une vue au format Kanban de la liste de tâches.

J'ai ensuite eu plein d'idées pour essayer de rendre le tout plus pratique et ergonomique et le fichier de script a considérablement grandi...

Utiliser KanbanTxt

L'icône de KanbanTxt

Lancer l'application

Pour lancer KanbanTxt il suffit de taper la ligne de commande suivante :

python KanbanTxt.py

L'interface de KanbanTxtL'interface de KanbanTxt

Il est possible d'ouvrir directement un fichier todo.txt existant avec le paramètre --file.

python KanbanTxt.py --file=chemin/vers/un/fichier.todo.txt

Sinon, depuis l'interface, cliquer sur le bouton "Open" ou utiliser le raccourcis ctrl + O permettra de choisir le fichier à ouvrir depuis une fenêtre de sélection. Il est aussi possible de n'ouvrir aucun fichier et de directement commencer à écrire sa liste de choses à faire dans l'éditeur de texte situé à gauche dans la fenêtre.

Ouvrir un fichier depuis l'interfaceOuvrir un fichier depuis l'interface

Ajouter, supprimer des tâches

L'éditeur de texte intégré permet de modifier la liste de tâchesL'éditeur de texte intégré

Supprimer ou ajouter des éléments dans la liste se fait au clavier depuis l'éditeur de texte. Il suffit de supprimer une ligne pour effacer une tâche et créer une nouvelle ligne en créera une nouvelle. En sauvegardant avec le bouton "Save" ou avec le raccourcis ctrl + S le fichier est sauvegardé. Si aucun fichier n'a été ouvert, le programme proposera d'en créer un nouveau dans le répertoire de son choix.

Sauvegarder le fichier en cours d'éditionSauvegarder le fichier en cours d'édition

Sélectionner une tâche depuis le kanban

Pour faciliter l'édition d'une tâche dans l'éditeur, il est possible de cliquer sur le texte de la carte que l'on souhaite modifier pour que le curseur se positionne directement au début de la ligne correspondante dans l'éditeur.

Déplacer les tâches d'une colonne à l'autre

Modifier la priorité d'une tâche permet de la changer de colonneModifier la priorité d'une tâche permet de la changer de colonne

Pour changer l'état d'une tâche et déplacer la carte correspondante il suffit de changer la priorité de la tâche dans l'éditeur. Pour cela, il faut ajouter un marqueur de priorité en début de ligne. Pour rappel :

  • (A) est une tâche à finaliser en premier. C'est donc une tâche de la colonne en cours ou In progress
  • (B) est une tâche à finaliser lorsque toutes les tâches de priorité (A) sont finies. Il s'agit des tâches de la colonne à faire ou To Do marquées comme importantes.
  • (C) est une tâche qui a été traitée et est donc moins prioritaire que les précédentes. Mais elle reste à valider. Elle se trouve dans la colonne Validation.
  • Les tâches sans marqueur de priorité sont des tâches qu'il reste à réaliser et sont rangées dans la colonne To Do.
  • Les tâches commençant par x sont terminées et par conséquent se trouvent dans la colonne Done

Cette opération peut aussi se faire à l'aide des 5 boutons en bas de l'éditeur. Chacun permet de déplacer la tâche sélectionnée dans la colonne de couleur correspondante. Les raccourcis clavier ctrl + 1 à 5 permettent aussi de déplacer les cartes de tâche d'une colonne à une autre.

Déplacer les tâches via l'interfaceDes boutons permettent de changer une tâche de colonne

Changer l'ordre des tâches dans l'éditeur de texte

Il est aussi possible d'ordonner les tâches dans l'éditeur de texte pour les ranger comme on le souhaite. Les boutons marqués d'une flèche vers le haut et d'une flèche vers le bas permetter de déplacer la ligne de l'éditeur où se situe le curseur d'un cran vers le haut ou d'un cran vers le bas. Les raccourcis clavier alt + ↑ et alt + ↓ ont le même effet.

Réorganiser l'ordre des tâchesRéorganiser l'ordre des tâches

Afficher le temps passé sur une tâche

Insérer la date du jourInsérer la date du jour en début de ligne

Le bouton "date" permet d'ajouter la date du jour en début de ligne, juste après le marqueur de priorité. Cela permet de définir la date à laquelle la tâche a été démarrée puis en ajoutant une nouvelle fois la date juste avant la date de début de définir la date à laquelle la tâche s'est terminée. KanbanTxt se sert de ces dates pour afficher le temps passé sur cette tâche. Si aucune date de fin n'a été définie, KanbanTxt calcule le temps écoulé depuis la date de début jusqu'à la date du jour.

Afficher la durée de travail sur une tâcheDéfinir une date de début et de fin permet de voir le temps passé sur une tâche

Changer le thème de l'application

Changer de thèmeL'interface peut aussi être affichée en mode sombre via ce switch

Le petit bouton en haut à droite de l'interface permet d'alterner entre thème clair et thème sombre. Pour le moment ce paramètre n'est pas enregistré et au lancement de l'application le thème clair est choisi par défaut. Mais un paramètre de la commande KanbanTxt permet d'ouvrir le logiciel en thème sombre.

python KanbanTxt.py --darkmode

Thème sombre de KanbanTxtLe thème sombre de KanbanTxt

Le support du format todo.txt

Pour le moment, KanbanTxt supporte les fonctionnalités suivantes du format todo.txt:

  • les priorités (qui servent à ranger les tâches dans les différentes colonnes)
  • les tags de projet +nom-du-projet. Personnellement, je les utilise pour définir la fonctionnalité à laquelle est rattachée la tâche. Pour ma part c'est aussi souvent le nom de la branche git (pour ceux qui connaissent) sur laquelle ce travail doit être effectué.
  • les tags de contexte @context. Pour ma part il me sert à définir le type de tâche dont il s'agit (une fonctionnalité, un bug à corriger, ...)
  • les dates de début et de fin de tâche

Le programme KanbanTxt est open source sous licence GPL et vous pouvez trouver le code sur GitHub.


Liens :