org-mode, org-roam et org-journal, le workflow

Définir un workflow pour suivre les activités et ce qu'il reste à faire

La génèse

Insatisfait de ma gestion de suivi de mon activité, j’ai cherché des solutions. La méthode GTD ? Org-mode autre ? Après quelques tentatives, je me suis mis à emacs et org-mode avec l’espoir de trouver une solution “simple” et efficace de noter régulièrement mon activité, d’avoir une base de connaissance mise à jour régulièrement et une trace de ce qu’il me reste à faire.

Au début, fut org-mode

org-mode est un mode majeur d’emacs. Il fait parti des modules intégrés. Sa syntaxe est simple, sans être des plus agréable. Mais les automatismes et les modules qui gravitent autour, en font un indispensable.

org-mode permet d’écrire des notes des listes de choses à faire ( les fameux todo), de visualiser dans un agenda les taches/projets etc…

Puis vient org-roam

org-roam est une application de la méthode zettelkasten basée sur org-mode. Cette méthode vous pousse à écrire des notes et de les lier entre elles. org-roam utilise une base sqlite. Dans cette base sont enregistrer, entre autre, les liens entre les fiches, la liste des fiches, les tags des fiches. L’utilisation de tags permet de faire des catégories de fiches.

Le troisième larron org-journal

Cette troisième pièce du puzzle vous permet de maintenir un journal de votre activité journalière et d’exploiter la puissance des TODO list avec celle du calendrier.

org-journal à une fonctionnalité incontournable à mon sens : ce module va récupérer les TODO encore présent dans le journal pour les remettre dans la journée active. Chaque journée fait l’objet d’un fichier.

Comment tout cela va s’articuler ?

On va utiliserorg-mode pour sa syntaxe et son ecosystème. J’ai 1 fichier org par entreprise. Ce fichier sera la fiche de niveau supérieur. Pour chaque entreprise j’ai des fiches de niveau inférieurs qui vont être des fiches prospect, client ou idées produits. Pour chaque prospect, projet ou client, je vais avoir des fiches devis/réunion etc.. La création des fiches, la mise en place des liens et la visualisation/recherche se font via org-roam.

Tout au long de ma journée, j’enregistre ce que je fais dans un journal via or-journal. Depuis le journal je fais des liens vers les fiches. Par exemple, on m’appel, j’ouvre le journal pour enregistrer l’appel. Lorsque je sais de quoi il veux parler, j’ouvre une note ou j’en crée une. Je mets les éléments de notre conversation dans la note, et si derrière j’ai une action je rajoute TODO dans le titre de la sous section.

exemple :

* appel david
** point_certification
** TODO devis_client1
** prepa_reunion_prospect

J’ai ainsi un suivi de mon activité de la journée, et j’ai les marqueurs permettant de retrouver ce que j’ai à faire.

Les status des taches

J’utilise :

  • TODO : tache à faire
  • DONE : tache terminée
  • WAIT : tache mise en attente (en attente d’un livrable, d’un rdv etc..)

J’ai très peu de WAIT.

Les tags

J’utilise les tags pour classifier les taches.

  • DEVIS : pour les devis à faire
  • PROJET : concerne les projets clients
  • INTERNE : concerne les projets internes
  • CLIENT : fiche spécifique à un client
  • PROSPECT : fiche spécifique à un prospect

J’ai différencié les projets internes et clients car mes projets internes sont un fil rouge et se déroule généralement sur des périodes plus longues que les projets clients.

Fonctionnement de la journée

Le matin au commancement de la journée, je lance emacs :

emacsclient -nw

Je lance l’agenda et j’affiche l’ensemble des TODO :

C-ca
t

TAB permet d’aller directement sur l’entrée du journal correspondant à la ligne TOTO

Si au lieu de t je choisi m je peux filtrer par tag. C’est à dire que je peux choisir d’afficher les devis à faire pour la journée ou les projets

Une fois que j’ai fais le point sur ce qui est prévu, j’ouvre le journal du jour et j’ajoute ma première activité :

C-cnj

Je rentre donc le titre de mon activité, puis j’ouvre une note avec :

C-cni

Avec TAB je peux sélectionner une fiche existante, ou entrer le nom d’une nouvelle fiche.

Lorsque l’édition de la fiche est terminée (même temporairement) on ferme la fiche et on crée un lien dans le journal via un simple

C-c C-c

Pour ouvrir le lien vers la note : C-c C-o et pour revenir au journal (ou revenir en arrière : C-c & Enfin pour terminer, lorsque je crée une note, je la nomme avec la convention suivante :

  • PROJET_xxxx
  • AO_xxx
  • CLIENT_codeclient
  • PROSPECT_nomprospect
  • INTERNE_xxx

Les notes principale recevront en fin de journée le lien vers les notes créées ce jour. Ainsi les notes restent liées, conformément à la méthode zettelkasten.

La configuration : init.el

Maintenant que nous avons vu les principes de base, nous allons passer en revue la configuration de l’ensemble.

org-mode

La configuration de org-mode se résume à :

(require 'org)
(require 'org-mouse)                                         
(setq org-startup-folded t
      org-pretty-entities t
      org-hide-emphasis-markers t
      org-startup-with-inline-images t
      org-image-actual-width '(300))
  • on charge org et org-mouse

  • lorsqu’un fichier org est ouvert le contenu est “replié”

  • il est possible d’utiliser les entities d’org-mode. Il s’agit d’une suite de caractère équivalent à un caractère. Par exemple \Agrave sera automatiquement remplacé par À

  • les symboles utilisés pour mettre en gras, italiques etc.. ne sont pas visible, les mots apparaissent immédiatement en gras etc..

  • on affiche les images plutot que le lien vers l’image

  • taille des images

    (add-to-list ‘auto-mode-alist ‘("\.org$" . org-mode))

  • chargement du mode org-mode pour tous les fichiers finissant en .org

    (setq org-agenda-files ‘("~/Nextcloud/PRIVE/13_Org/journal"))

  • On précise que les fichiers à utiliser pour générer l’agenda sont dans le dossier journal

org-roam

(setq org-directory (concat (getenv "HOME") "/Nextcloud/PRIVE/13_Org/notes"))
(use-package org-roam
  :after org
  :init (setq org-roam-v2-ack t) ;; Acknowledge V2 upgrade      
  :custom
  (org-roam-directory (file-truename org-directory))
  :config
  (org-roam-setup)
  :bind (("C-c n f" . org-roam-node-find)
         ("C-c n r" . org-roam-node-random)               
         (:map org-mode-map
               (("C-c n i" . org-roam-node-insert)
                ("C-c n o" . org-id-get-create)
                ("C-c n t" . org-roam-tag-add)
                ("C-c n a" . org-roam-alias-add)                
                ("C-c n l" . org-roam-buffer-toggle)
                ("C-c n o" . org-open-at-point)
                ("C-M-i" . completion-at-point))))
(org-roam-db-autosync-mode))

* On définit le dossier qui contiendra l'ensemble des fiches créées par org-roam
* On crée quelques raccourcis claviers, globaux et propre à org-roam
* la dernière ligne force la synchro de la base sqlite à chaque enregistrement

org-journal

(setq org-journal-date-prefix "#+TITLE: ")                
(setq org-journal-time-prefix "* ")
(setq org-journal-date-format "%a, %Y-%m-%d")
(setq org-journal-file-format "%Y-%m-%d-journal.org")
(setq org-journal-dir "~/Nextcloud/PRIVE/13_Org/journal/")
(global-set-key "\C-cnj" 'org-journal-new-entry)
(require 'org-journal)
  • Les 3 premières lignes correspondent au modèle de fiches que l’on souhaite au niveau du journal
  • on précise ou les journaux doivent être
  • création d’un raccourci clavier
  • chargement du module

The end

On a vu ici les principaux éléments de configuration. La partie Tag étant très standard, pas besoins d’enfaire une explication. Le fichier de configuration est disponible dans le git

Généré avec Hugo
Thème Stack conçu par Jimmy