bullet journal vim cal-bash-utils

Yendo del texto plano al papel

Hace años que pruebo diferentes metodologías para registrar tareas, si bien existen diferentes aplicaciones y probé varias, siempre me resultó más fácil recordarlas y tener una visión global al manejarlas en papel.

Si bien durante varios años usé org-mode ^1[1], hace tiempo que estoy registrando los eventos y tareas que tienen fecha en un archivo de texto plano ~/.calendar ^2[2] y luego mediante algunos scripts y el uso de pcal los puedo convertir a papel para usar en esos momentos offline mientras disfruto de un café y despejo mi mente.

Bullet Journal

Tuve varios intentos de implementar Bullet Journal ^3[3] en papel, creo que se debe a que no tengo tanto tiempo libre para garabatear, un poco de inconstancia y que en parte me cuesta despegar del teclado.

Hace unos días descubrí Plain Text Journaling ^4[4], una implementación en texto plano usando vim ^5[5] y quedé maravillado.

PoC

Mirando un poco el post vi que podía aprovechar la estructura de directorio que ya uso en mi jrnl ^6[6] journal

# tree -L 1 -d ~/.jrnl
/home/osiris/.jrnl
├── 2017
├── 2018
├── 2019
├── 2020
├── 2021
├── 2022
└── 2023

8 directories

Para probar el concepto, abrí el archivo de este mes, vi ~/.jrnl/2023/06.jrnl y e ingresé el calendario mediante el comando r! cal

     June 2023
Su Mo Tu We Th Fr Sa
             1  2  3
 4  5  6  7  8  9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30


WEEK 1 ---------------

× done test
· todo test
→ move test
∘ event test
‐ note test

highlight syntax

El siguiente paso era contar con resaltado de sintaxis, definiendo en ~/.vimrc la siguiente configuración:

augroup JournalSyntax
  autocmd!
  autocmd BufReadPost *.jrnl set filetype=journal
  autocmd BufReadPost *.jrnl syntax match JournalAll /.*/
  autocmd BufReadPost *.jrnl syntax match JournalDone /^× .*/
  autocmd BufReadPost *.jrnl syntax match JournalTodo /^· .*/
  autocmd BufReadPost *.jrnl syntax match JournalEvent /^∘ .*/
  autocmd BufReadPost *.jrnl syntax match JournalNote /^‐ .*/
  autocmd BufReadPost *.jrnl syntax match JournalMoved /^> .*/
  autocmd BufReadPost *.jrnl syntax match JournalHeader /^\<\u\+\>.*/
  autocmd BufReadPost *.jrnl highlight JournalAll    ctermfg=7
  autocmd BufReadPost *.jrnl highlight JournalTodo   ctermfg=1
  autocmd BufReadPost *.jrnl highlight JournalHeader ctermfg=2
  autocmd BufReadPost *.jrnl highlight JournalDone   ctermfg=8
  autocmd BufReadPost *.jrnl highlight JournalEvent  ctermfg=3
  autocmd BufReadPost *.jrnl highlight JournalMoved  ctermfg=5
  autocmd BufReadPost *.jrnl highlight JournalNote   ctermfg=5
  autocmd BufReadPost *.jrnl highlight VertSplit     ctermfg=0 ctermbg=0
augroup END

snippet to bullets

Y para agilizar el ingreso de los diferentes bullets adapté mis snippets agregand a ~/.vim/snippets/_.snippets

snippet todo
    ·
snippet done
    ×
snippet note
    ‐
snippet event
    ∘
snippet move
    →

Entonces basta con tipear done y presionar TAB para obtener × :) Ahora al editar con vim un archivo *.jrnl tiene toda la onda!

=> [IMG]

[7]

automate bullet journal from calendar

Se me ocurrió aprovechar que ya tengo registradas las tareas y eventos en ~/.calendar, solo debía agregar los bullets y escribir algún script que se ocupe de automatizar la escritura de cada mes en formato Bullet Journal ;)

month

El primer script fue caljmonth ^7[8] que se ocupa de obtener las tareas y eventos del mes actual y también acepta el número de cualquier otro mes guardando un archivo ~/.jrnl/YYYY/MM.jrnl y para visualizar este archivo el comando es calvmonth ^8[9].

=> [IMG]

[10]

months

En muchas ocasiones conviene visualizar más de un mes, es decir el actual y algunos más y para esto esta el comando calvmonths.

=> [IMG]

[11]

year

Finalmente si necesito visualizar el mes actual hasta que termine el año, el comando que se ocupa de generar los archivos de cada mes es caljyear ^9[12] y para visualizar usar calvyear ^10[13]

=> [IMG]

[14]

texto plano

Una vez más, utilizar archivos de texto plano es una gran solución, ya que es fácil de integrar y convertir, rápido de adaptar a cualquier situación, me tomó menos de 1 día crear los scripts y ya estoy disfrutando la solución y seguramente con el tiempo iré incorporando mejoras en cal-bash-utils ^11[15]

ChangeLog

=> 1: https://orgmode.gmi/ | 2: file:2023-02-16-terminal-calendar-versus-paper-calendar.gmi | 3: https://bulletjournal.com/ | 4: https://peppe.rs/posts/plain_text_journaling/ | 5: https://www.vim.gmi/ | 6: https://gitlab.com/osiux/txt-bash-jrnl/ | 7: file:img/cal2jrnl/cal2jrnl-highlight.png | 8: https://gitlab.com/osiux/cal-bash-utils/-/raw/develop/caljmonth | 9: https://gitlab.com/osiux/cal-bash-utils/-/raw/develop/calvmonth | 10: file:img/cal2jrnl/cal2jrnl-calvmonth.png | 11: file:img/cal2jrnl/cal2jrnl-calvmonths.png | 12: https://gitlab.com/osiux/cal-bash-utils/-/raw/develop/caljyear | 13: https://gitlab.com/osiux/cal-bash-utils/-/raw/develop/calvyear | 14: file:img/cal2jrnl/cal2jrnl-calvyear.png | 15: https://gitlab.com/osiux/cal-bash-utils/ | 16: 2023-02-16-terminal-calendar-versus-paper-calendar.gmi | 17: 2018-01-01-reemplazando-orgmode-por-txt-bash-jrnl.gmi | 18: capturar-ideas-en-papel-de-moleskine-hispterpda-pocketmod-y-libreta-artesanal.gmi | 19: https://gitlab.com/osiux/osiux.gitlab.io/-/commit/1a587e60462eaecdc5efb0405b944235e93fd208 | 20: https://gitlab.com/osiux/osiux.gitlab.io/-/commit/6e127b03c988bf86062ab77e41899bd9d7dcee03

Proxy Information
Original URL
gemini://gmi.osiux.com/2023-06-21-bullet-journal-vim-cal-bash-utils.gmi
Status Code
Success (20)
Meta
text/gemini;lang=es_AR
Capsule Response Time
1026.406305 milliseconds
Gemini-to-HTML Time
5.668498 milliseconds

This content has been proxied by September (3851b).