Widget de agenda con Emacs org-mode

Llevo ya casi año y medio utilizando emacs org-mode para organizar mi horario y mis tareas. Se me hace muy eficiente y sencillo su uso, muy minimalista también en comparación con todos los sistemas de “productividad” que hay ahora y me gustaría seguir usándolo.

Sin embargo, me he dado cuenta de que muy a menudo olvido anotar las tareas y muchas veces dejo la agenda sin revisar por unos 2 o 3 días, entre el corre-corre de todos los días. Me di cuenta de que me gustaría tener algo de más fácil acceso que siempre esté disponible y a la vista.

Yo sé que podría resolverse modificando el dashboard de emacs y que este comience desde el booteo, sin embargo, me ha obsesionado la idea de hacer un widget, ya que uso un WM, estaba pensando en usar eww.

El problema al que me enfrento ahora es: cómo interpretar mi archivo todo.org para poder presentarlo de manera más gráfica y organizada en el widget. De manera que, en principio, pueda obtener todas las tareas en un formato legible para después mostrarlas, y preferiblemente, tener la opción de cambiar el estado. (Más adelante podría incluso crear tareas desde allí como se hace en orgzly).

Aquí hay muchos que saben más de emacs y elisp, así que quiero saber cuál consideran que es la mejor manera de llevar esto a cabo o si existe alguna herramienta que pueda emplear en el proceso.


Entre otras cosas también me he obsesionado con los tableros Kanban, donde las tareas tienen diferentes estados (backlog, ready, in progress, waiting, done) y puedes ir moviéndolas como tarjetas a medida que avanzas en algo. También tienes la opción de elegir la prioridad, el proyecto al que pertenecen, el tamaño de la tarea, etc. Así que he adaptado mi configuración de emacs a esto (quizá más adelante haga un post de eso), y si logro mejorar lo de la agenda, lo siguiente que quiero hacer es una interfaz para interactuar con las tareas siguiendo la estructura de kanban.

Existe el proyecto org-kanban pero está algo obsoleto y es muy poco interactivo. Por eso quiero intentar llevarlo a cabo sin perder la facilidad de uso y todo lo que provee org-mode.

Interesante.
En org-mode existen los :TAGS: Tags (The Org Manual) , puedes usarlos para procesar tu archivo todo.org.

Por ejemplo:

#+TITLE: EJEMPLO DE TODO.ORG
#+SEQ_TODO: BACKLOG(b) READY(r) IN-PROGRESS(i) WAITING(w) | DONE(d)

* Proyecto: Ecuaciones Diferenciales :export:
** TODO Leer capítulo 3 (Transformada de Laplace)
** TODO Resolver ejercicios del Taller 2
** WAITING Esperar feedback del profesor Victor Vera

* Tareas Personales :export:
** IN-PROGRESS Configurar dashboard de EWW
** TODO Investigar alternativa a Python para scripting

* Notas de clase *(NO SE VAN A EXPORTAR)
** NOTA Recordar la fecha del parcial
** IDEA Implementar un script en Babashka para automatizar backups

* Tareas de Sistema :export:
** READY Refactorizar configuración de dwm
** TODO Limpiar caché de Artix

Luego escribes una funcion o un script en Emacs Lisp para procesar el archivo y extraer todos lo que este “tageado”

emacs --batch \
    --eval "(require 'org)" \
    --eval "(org-map-entries 
               (lambda () 
                 (princ (format \"%s: %s\n\" 
                                (or (org-get-todo-state) \"\") 
                                (org-get-heading t t t t)))) 
               \"export\" 
               (list \"~/org/todo.org\"))" 2>/dev/null

Por cierto --batch es una flag para ejecutar elisp en modo no interactivo, como si fuera un script ( Batch Mode (GNU Emacs Lisp Reference Manual) ).

La salida quedaría así:

Luego puedes seguir procesando el texto con bash y pasárselo a EWW.

3 Me gusta

Ya con los datos procesados es tan simple como hacer una aplicacion normal con cualquier lengiaje de programación.

Yo personalmente utilizaría Python algún gestor gráfico e integrar el widget es sencillo.

Me llama la atención el uso de emacs y el org-mode, pero tengo la duda si es posible llevar esta agenda de org-mode a un dispositivo movil e inclusive editar el archivo movil y despues sincronizar esos cambios con la pc.

1 me gusta

pues lo más común es usar orgzly en móvil que es especificamente para org-mode y lo sincronizas con syncthing

Se puede.

Yo uso Syncthing (syncthing.net) + Orgzly para ver los archivos en mi celular (Orgzly Revived en F-Droid).

PD: Considera usar alternativas a la Play Store como Obtainium (Obtainium - Get Android apps directly from the source) o F-Droid (f-droid.org).

3 Me gusta

Interesante, me anoto la combinación de syncthing mas Orgzly revived, de hecho ya tengo un tiempo usando fdroid, en este caso a través de Droid-ify

1 me gusta

Me interesa aprender algo de emacs, que es el editor que usa el del video al que le hice referencia en el “modo insano de crear imagenes”.

Busque algunos tutoriales, a ver si los veo poco a poco…

1 me gusta

Puedes revisar alguno de los temas que se han publicado. Si usas Neovim podrías usar Doom Emacs, que es un framework de configuración, con algunas configuraciones ya por defecto para hacer su uso más sencillo (entre ellas el uso de vim keys o lo que llaman “evil-mode”).

Para aprender te recomiendo mucho los videos de Distrotube, tiene muchos videos de Emacs y te sorprenderá tantas cosas que tiene.

Tampoco se usar neovim :upside_down_face:

Por el momento, le metí unos cuantos plugins a vim, y es lo que uso. Y, cuando quiero una gui code-oss (vscode, pero libre)

1 me gusta

No está nada mal, yo uso neovim para programar ya que lo tengo configurado con plugins para algunos lenguajes, siguiendo el paso a paso de este video, por ejemplo.

Te recomiendo mucho que sigas aprendiendo vim, el uso de solo teclado te hace incluso más productivo, y que sigas indagando sobre emacs también.

Teniendo en cuenta todo lo que me dijeron he estado trabajando en eso los últimos días.

Logré hacerla con eww y algunos scripts de bash y elisp. Aún falta muchas cosas que quiero poner pero así va


me faltó ponerle las convenciones pero verde significa que esta agendado y rojo que es una fecha límite.
Están los tags que me dicen de donde viene esa tarea, las que tengo aquí solo son de prueba, ya que no tienen mucho sentido. También está la prioridad de cada tarea y el estado en el que está. Arriba hay un recuento de tareas por prioridad y por estado.

2 Me gusta

Sin dudas que es muy útil, yo mismo utilizo algunas herramientas para agendar tareas, pero estéticamente es hermoso jajajaja

2 Me gusta