Org mode

Table of Contents

1. Org-mode   project

1.1. Org mode key ideas

https://bzg.fr/en/org-mode-demo-notes/

  • You need a single tool for both notes and tasks.
  • Your TODO list application should not be too rigid. Ideally, it is a pedagogical tool, one that helps to be slightly better organized.
  • org-mode is both a format a la markdown and a set of tools around this format.

1.2. Requerimientos org-mode

1.2.1. Time management para todo

SPC mcpi / SPC mcpo → punch in / punch out
SPC mci / SPC mco → clock in / clock out
SPC mcG, SPC u SPC mci → Clock in last tasks
SPC mcl, SPC nc → clock last
SPC mcg, SPC no → go to current clock
SPC ii → Capture Inbox
SPC ik → Capture Inbox and Clock

1.2.1.2. Ideas random

http://doc.norang.ca/org-mode.html#Clocking → buen sitio para mirar la config
https://gitlab.com/-/snippets/2088974 → para sacar cosas del logbook (hay que cambiar las regex para que pillen cualquier cosa)
Tiene 3 partes:

  1. Diseño de time tracking

    Clock-out mueve el reloj a la tarea superior. Si la tarea superior es de nivel 1, entonces se va a la tarea de organización de ese proyecto, y si no existe la crea
    Me merece la pena tener una tarea de organización?
    org-clock-x11idle-program-name
    xprintidle, está en repos

    1. Si me compro un reloj inteligente

      Crear entradas por dictado con voz en Tiempo.org en estado REFILE que tienen un CREATED, para que luego un proceso las exporte a el journal al final del día
      Hay que integrar de manera fácil el clock-in clock-out para que sirva desde pulsera
      Los que sean estándar (hacer la cama, prepararme para salir) los trackeo en Tiempo.org sin REFILE ni nada

    2. Modificar las plantillas para que tengan un heading genérico de organización   project maybe_20230330

      Para trackear el tiempo cuando terminas una tarea pero sigues en el proyecto
      Quizás interesante que la propia tarea de mayor nivel sea la de organización?
      Es conveniente pero quizás no es muy claro

    3. https://github.com/akirak/counsel-org-clock
    4. CREATED/CLOSED, tiempo abierta vs tiempo dedicado

      Que las tareas cuando les pongo un TODO de cualquier tipo las cree un CREATED si no existe, para luego poder loguear el tiempo.
      En emacs está guardando CLOSED cuando pasa a DONE?
      Así puedo obtener tiempo logbook / tiempo abierta para una tarea
      Esta métrica asume que tu time tracking es perfecto. Puede compensarse laxitud en time tracking?
      Quizás un mejor enfoque es asumir que el nombre de la tarea no ha cambiado y ver los cambios que ha tenido esa tarea en el propio git. askgit para ir tirando está interesante

      1. ActivityWatch serviría(?) para “rellenar huecos” en time tracking?
      2. Que el tiempo en BLOCK no se loguee   idea

        Tiene todo el sentido del mundo que si una tarea está bloqueada no se cuente como parte del tiempo que lleva abierta

    5. Cadenas de tareas

      Definir una secuencia de eventos clockout → clockin siguiente
      Dormir → Desayunar → Ducharse → Prepararse para salir → Ir al trabajo → Trabajo
      Un buen formato es un headline (que tenga por ejemplo :TYPE: chain o chained routines o algo así) con una lista de links a tareas

      1. Hacer una interfaz en termux (quizás en emacs también(?))

        Posibilidad de:

        • Clock next task ⏩
        • Pause clock chain ⏸ (permite flexibilidad, meter tareas imprevistas en medio)
        • Stop clock chain ⏹
        • Clock previous task ⏪ Para hacer ⏩ ⏩ ⏪ y alterar el orden (Quitar logs de tiempo vacíos 0:00, con un proceso o algo)
        • Record chain ⏺ (si implemento Medir tiempo en NFC, entonces se podría crear una secuencia en base a NFCs)
    6. Medir tiempo en NFC

      NFC
      Cuando escaneo una etiqueta, empieza a contar el tiempo de X, Y, Z. Si escaneo otra, paro el reloj actual y empieza el nuevo

    7. Comandos org-clock
      1. org-clock-display
        • By default, show the total time for the range defined in org-clock-display-default-range.
        • With C-u prefix, show the total time for today instead.
        • With C-u C-u prefix, use a custom range, entered at prompt.
        • With C-u C-u C-u prefix, display the total time in the echo area.
        • Use M-x org-clock-remove-overlays to remove the subtree times.
        • In doom, C-u C-u means SPC u SPC u (not SPC u 2, or just 2)
      2. The clock table (The Org Manual)

        Hacer queries sumando el tiempo que cumpla las condiciones que sean

      3. OrgMode E04S05: Effort estimates - YouTube
    8. Medir el tiempo en journal por defecto?   project maybe_20230330
  2. Tiempo logeado (LOGBOOK)
    1. Hacer un script de python que exporte entradas de org-mode a svg   project maybe_20230330

      Con links al heading correspondiente

    2. Gantt from org-mode tree
      1. Ver “GANTT chart in Emacs” en YouTube
      2. https://plantuml.com/gantt-diagram
    3. Wrote a clockreport that groups by day and by project
  3. misc
    1. Planyway team calendar for effective collaboration
      1. Power-Ups | Trello
    2. Currently clocked task in i3
    3. Sincronizar ActivityWatch a un .org y/o a Nextcloud para time tracking   project maybe_20230330
    4. CANCELLED Gantt

      Gantt from org-mode tree → parece que no es suficiente, porque pilla o de un sólo archivo o pilla como intervalo de SCHEDULED a DEALINE y no usa logbook
      el-gantt parece que es customizable, elgantt-timestamps-to-display permite que sean distintas variables las que se muestran:

      • deadline
      • timestamp
      • timestamp-ia
      • scheduled
      • timestamp-range
      • timestamp-range-ia

1.2.2. Time blocking en org mode

1.2.2.1. Aprender/Instalar org-caldav   project learn hold_20230330

Cuando esté listo luego hay que ir cogiendo el hábito

  1. Hacer un fork de org-wild-notifier para que tenga opción de pillar SCHEDULED DEADLINE TIMESTAMP seleccionable   project learn hold_20230330 someday_20230330

    No funciona, pero abro PR aún así

  2. Por qué no me funciona el calendario?

    Si eliminas un calendario y lo vuelves a crear, no tiene el mismo nombre que el original porque el original está en la papelera y hay que vaciarla
    Si no, creas calendario, calendario-1, calendario-2, … y ninguno tiene el nombre que le pasas a org-caldav-calendar-id y falla todo

1.2.2.2. Sincronizar GCalendar con NextCloud   project hold_20230330

Para que las alertas de Google Keep o lo que sea también salgan

1.2.2.3. https://github.com/Fuco1/org-clock-budget

To plan your tasks you use effort estimates, to schedule them within weeks or months you use budget (sometimes called capacity or goal).

1.2.2.4. Integrar con nextcloud para calendario
GOAL: Tener una app de calendario en móvil y escritorio para ver qué tengo tal día


Para escritorio puede que haya alguna cosa Creo que nextcloud se puede poner como reemplazando a google o algo https://github.com/dengste/org-caldav
http://disq.us/p/2673iq2 → otra opción que no usa nextcloud

  1. Sync calendars to org-mode agenda
1.2.2.5. https://github.com/dmitrym0/org-hyperscheduler → te lo soluciona

1.2.3. Utilizar más xournalpp   project someday_20230330

1.2.3.1. Mirar xournalpp desde el móvil   project someday_20230330 maybe_20230330
  • Hay app de xournalppp para android
  • [ ] Poner un cronjob cada minuto, o un inotify cuando se modifique algo de la carpeta de xournalpp, para crear una img o un pdf del xopp
    • img es hoja a hoja
    • pdf es siempre la nota entera
  • [ ] Poner en orgzly-integrations una traducción de links de uno a otro
  • [ ] Esto se va a complicar porque , habría que guardar asociación sketch: → archivo para que lo pudiese acceder
1.2.3.3. Probar xournalpp
  • Procesar PPV (Muy gráfico)
  • Morning Pages
  1. Cómo tomar notas en pdf?
    1. Se pueden escribir anotaciones a mano alzada en pdf-tools? No
    2. Embeber Okular con Emacs Application Framework
    3. Hacer anotaciones en Okular aparte sobre el pdf
    4. Quizás mejor importarlo en xournalpp y tomar notas sobre eso

    -—
    Dividir:

    1. Tomar notas con Okular
    2. Procesarlas en org-mode? (exportando higlights, notes, etc)? Muy costoso dividir en 2, poco flexible okular para notas (no es org mode)

1.2.4. DONE Integrar LectureNotes con emacs   project hold_20230330

Lo ideal sería tomar todas las notas de una manera que estuviesen automáticamente disponibles en emacs

  • [X] Puedo poner un proceso en la RPi que me genere un org mode con estructura de árbol de las carpetas e imágenes de Lecture Notes
    • [X] Lo genera siempre desde cero y pisa el archivo que haya
      Puede estar bien para una primera versión
    • [X] Darle a cada heading un id y que sólamente añanda incrementalmente las páginas nuevas
      • Lo bueno es que puedo marcar como done las que ya estén procesadas
      • Calcular el id en base al path de la carpeta/archivo, así puedo asociar una con otra
1.2.4.1. DONE Añadir el texto

formato text[PAGE].txt para el texto de cada archivo, text[PAGE]_[NUMBER].txt para las cajas suplementarias de texto

  • No me está pillando bien el orden porque los ordena de manera extraña, no asocia bien cada archivo con la carpeta a la que le corresponde
1.2.4.2. Pesar en cómo gestionar el índice

No todo lo que añado en campos suplementarios o principales acaba como índice, sólo lo que pongo en cajas de texto que luego se pierden.
Meter un proceso que los sincronice?
Es complicado porque sólo se añadiría si no se encuentra ya

1.2.4.3. Sincronización bidireccional org-mode ⇔ LectureNotes

Con esto me salto lo que tenía pensado de hacer un join
LectureNotes tiene links en cuadernos. Hay una interfaz para meter links a un cuaderno pero no funciona a nivel de página
lecturenotes://Folder/Subfolder/Notebook, lecturenotes://Folder/Subfolder/Notebook/7/
Mejor con suplementary fields, idealmente se podría meter en LectureNotes.org con algún tipo de asociación entre <path>/text[…].txt (por ejemplo utilizandolo como ID) para poder hacer sincronización bidireccional.
Si quiero que lo que escriba se vea en el cuaderno, siempre puedo añadirlo al textN.txt que siempre existe (o lo cree si no existe)
Si utilizo como ID todo el path de lecturenotes, no funcionarán los links generados en org mode porque tienen [[]]
Se podría quitar con algún tipo de hook que si inserto un link de lecture notes se lo quita y además también habría que definirlo de alguna manera como link especial porque va a tener un id: al principio
https://orgmode.org/manual/Adding-Hyperlink-Types.html → puedes definir tu función custom para insertar este tipo de links
inotifytools + Python (mejor síncrono, o pensando en temas de concurrencia)
LectureNotes tiene también links de tipo file:, posibles links a pdfs
El textN.txt puede ser el texto que haya en el headline, o quizás mejor su propio nodo para poder añadir texto sin que se añada
Para que funcione bien tengo que ver cómo controlar el tamaño de las imágenes, o preguntar en la lista de org-mode
Si se puede editar la imagen, incluso se podría llegar a pintar cada bloque de texto sobre la imagen con un rectángulo, con su número y el número de página

1.2.4.4. Se puede sustituir un png de LectureNotes por un png cualquiera!

Puedo hacer combinaciones de plantillas y/o transclusiones. Por ejemplo añado un texto y eso ocasiona que se transcluya el contenido que diga
Para hacer solos y demás podría tener transclusiones de temas individuales

1.2.4.5. DONE Arreglar el lock para watch4Org

Aunque sí que parece que funciona bien en watch4LectureNotes, watch4Org no está haciendo nada, así que en el commit lo estoy llamando directamente en vez de crear un nuevo proceso (cuando funcione, hay que llamar a los dos watch4 con un &)
Inotifywait está devolviendo 1 en vez de 0, así que hay que ver por qué, porque en teoría según el man 1 significa que ha salido por algún error en vez de 0 que significa que ha salido porque se ha detectado un cambio

1.2.4.6. Cómo hacer el join para que sea reutilizable?

Que el proceso en python exporte un org mode básico
Luego el procesamiento de join por id de los headlines lo hago por id
Así me vale también para Anotaciones incrementales de pdfs, y para Integrar TreeStyleTabs y YiNote con org-mode, y también para Transformar un archivo en transclusión para poder editarlo

  • [ ] TST y LectureNotes son los más sencillos porque los que vienen de TreeStyleTabs/LectureNotes no tienen contenido, y los de YiNote/pdf sí
  • [ ] El resto de casos (YiNote, pdf) hay que asumir que tienes contenido en ambos headlines
  • [ ] pdf lo uso mucho, pero YiNote si me limito a exportar sólo una vez no tengo que hacer join
  • [ ] Un buen punto es que si guardo en el nodo destino algún tipo de información (por ejemplo última fecha de actualización, el ID del nodo origen) entonces la actualización de información está mucho mejor definida, también lo puedo guardar en el nodo origen (nodos destino) y así ya tengo claro qué hacer en cada uno.
  1. Join de dos headlines

    https://www.gnu.org/software/emacs/manual/html_node/eintr/Point-and-mark.html Utilizar Point and Mark para recorrer los dos nodos
    Con Point el origen, pongo mark en el destino con el siguiente headline del mismo nivel

    • Headline1
      • 1.1
        • 1.1.2
      • 1.2
        • 1.2.1
          • 1.2.1.1
          • 1.2.1.2
        • 1.2.2
      • 1.3
    • Headline2
      • 2.1
        • 2.1.2
      • 2.2
        • 2.2.1
          • 2.2.1.1
          • 2.2.1.2
        • 2.2.2
      • 2.3
1.2.4.7. Refile de un nodo de LectureNotes

Hook en refile para que si tiene un id tipo LectureNotes te copie los archivos, pille la estructura y cambie el nombre de los archivos para que añada a la última página que hay
Idealmente con un argumento que por defecto es refile a notas de LectureNote sólamente y con C-u es refile normal
Puede que esto no me haga falta si pongo todo en un mismo archivo. Otra opción es utilizar org-attachment para que esté todo integrado con org

1.2.4.8. Problemas de orden

La primera versión saca todos los archivos pero no en ningún orden
Estaba funcionando make_index.py porque no había directorios que no tuviesen un .org (no distingue entre archivos y carpetas realmente, todo lo procesa como archivos)
https://stackoverflow.com/questions/3761473/python-not-recognising-directories-os-path-isdir (necesita que sea path absoluto)

If you don’t create an absolute path this way you will be testing against your current working directory instead

1.2.5. Integrar firefox con emacs   project

1.2.5.1. Integrar TreeStyleTabs y YiNote con org-mode (exportación bidireccional)   project someday_20230330

Tengo el mismo problema que con pdf y con LectureNotes
Quiero ser capaz de tomar notas, pasarlo a org mode, comentarlo en org mode y luego juntarlo con los nuevos comentarios
Exportación bidireccional incremental en ambos sentidos Cómo hacer el join para que sea reutilizable?
Hacer un script que convierte del formato que sea que usa TST a org mode y viceversa (si es posible guardando comentarios)
De paso resuelve tst exportar con la hora

  1. En vez de hacer un plugin de cero, puedo hacer una extensión de TST
  2. Where is Firefox bookmark file / how can I move it | Firefox Support Forum | Mozilla Support

    Sí lo que pasa que ahora se llama browser.bookmarks.defaultLocation la opción(?) o hay que poner las dos?
    Esto es sólo de lectura
    Quizás es mejor buscar una manera de exportar/importar sólamente una carpeta de pestañas, sin addons parece que imposible

  3. También se pueden crear carpetas, sin que tengan enlaces
1.2.5.2. Browser-based Productivity and PKM with emacs, org-mode, LogSeq and BrainTool -> Tiene arboles de org mode en base a pestañas?   project someday_20230330

https://www.reddit.com/r/orgmode/comments/sfniu3/browserbased_productivity_and_pkm_with_emacs/
https://braintool.org/2022/01/28/Browser-based-Productivity-and-pkm-with-emacs-org-mode-LogSeq-and-BrainTool.html

BrainTool is a free and open source browser bookmark tool that makes it easy to add notes to your bookmarks, organize them into a topic hierarchy and then use that hierarchy to open and close groups of tabs and thus control your browser. It is unique as a bookmark manager in that it is designed to interoperate as part of a larger system of personal knowledge management and productivity tools.
It achieves this interoperability by saving your data into an accessible plain text file written in the emacs standard org-mode format

1.2.5.3. DONE Spookfox: Manage firefox tabs using org-mode   ARCHIVE

Lo probé pero no me termina de convencer, no tiene jerarquía por ejemplo (sí que puedes reorganizarlas, pero los links que sigues desde una página no se representan como nodos hijos sino en la misma altura por defecto)
https://www.reddit.com/r/emacs/comments/taej05/spookfox_manage_firefox_tabs_using_orgmode/
I’m getting this error:

  1. Invalid file location: nil · Issue #18 · bitspook/spookfox
1.2.5.4. Probar https://braintool.org/   project someday_20230330

Sólo es para Chrome pero hay un issue para firefox
Si me paso a Chrome/Chromium/Navegador basado en Chromium esto ya no hace falta

  1. Portar BrainTool a Firefox   project hold_20230330

    https://github.com/mozilla/web-ext
    Para ejecutarla:

    npm install --global web-ext
    cd BrainTool/versions/0.9.9/extension
    web-ext run --verbose
    
    • Me da error en onBoundsChanged como menciona en el issue pero no es prioritario, así que lo comento y no pasa nada
    • Siguiente error
      https://bugzilla.mozilla.org/show_bug.cgi?id=1786667 → arreglado en la 106, ahora estoy en la 105 y ahí no está arreglado
      https://bugzilla.mozilla.org/show_bug.cgi?id=1548017 → esto es el segundo error, parece más complicado de solucionar

        [/home/julian/.npm/lib/node_modules/web-ext/lib/firefox/index.js][debug] Firefox stderr: Missing chrome or resource URL: resource://gre/modules/UpdateListener.sys.mjs
        [/home/julian/.npm/lib/node_modules/web-ext/lib/firefox/index.js][debug] Firefox stderr: JavaScript error: resource://gre/modules/XULStore.jsm, line 58: Error: Can't find profile directory.
      

1.2.7. Cómo funciona org-ids?   learn

Creo que me lo está gestionando todo org-roam, entonces todos los archivos que sean org-roam me funcionan

1.2.10. magit

1.2.10.1. Ver “The Magit Git Client Is The ”Killer Feature“ In Emacs” en YouTube

1.2.11. Grafos en emacs

https://plantuml.com/mindmap-diagram -> Org mode syntax supported out of the box

1.2.11.1. https://www.reddit.com/r/emacs/comments/jlpyej/recommendation_for_a_mind_map_package_that_works/

I think that plantuml now supports mind maps
That’s cool, it even supports an Org-like syntax: https://plantuml.com/mindmap-diagram
TIL about the Mindmaps. PUML Never stops to amaze me!
Sacha Chua has a mind-map she built using org-babel code -> link. You’ll probably have to look through her config files to figure out just how she made it work.
She uses graphviz. See also: https://github.com/alphapapa/org-graph-view

1.2.11.2. Habit Graphs

Form Tiago Forte → Design Your Work
NetworkX - Wikipedia → Python library to analyze

1.2.11.4. Diagrams

https://github.com/nmartin84/.doom.d (Ejemplo de config) Tiene mermaid? Lo que es seguro es plantUML
https://github.com/skuro/plantuml-mode → Para que se te actualizen mientras los editas

  @startuml
  ' this is a comment
  Alice -> Bob: Authentication Request
  Bob --> Alice: Authentication Response
  John --> Alice: another Authentication Request
  Alice --> John: another Authentication Response
  @enduml

sequence1.png

1.2.12. notificaciones en org-mode

  • org-alert avisa cada N minutos de deadlines que han vencido
  • Es muy pesada porque escanea de manera síncrona todos los archivos y bloquea emacs
  • org-notify sí que notifica bien
  • Sólo notifica deadline, no scheduled
  • org-wild-notifier notifica antes según una lista de tiempos de notificación previa
  • org-timed-alerts es muy parecido a org-wild-notifier, pero es más customizable y tiene dependencias de org-ql por ejemplo
1.2.12.1. EmacsTips - Hot to Show Reminder for Org Mode Tasks

https://www.youtube.com/watch?v=wKTKmE1wLyw

  • org-alert

different notifications frontends

1.2.12.2. Crear un sistema propio de notificaciones org-mode / extender org-wild-notifications   project maybe_20230330
  • https://wiki.ubuntu.com/NotificationDesignGuidelines
  • Usar org-agenda para coger las tareas
  • Más adelante quizás org-ql
  • Fijarse en orgzly, tener botones para disparar acciones:
  • Link a la tarea (abre emacs, quizás usando org-protocol)
  • Marcar como completo
  • Reschedule si tiene repetidor
  • Sumar X min a la fecha (modifica el .org)
  • Notificar X min más tarde (sin modificar el .org)
  • Quizás desarrollarlo a partir de org-wild-notifier, org-timed-alerts?
1.2.12.3. Usar la sincronización de Calendario   project maybe_20230330

Así las notificaciones se las delego al calendario calDAV o lo que sea

1.2.12.4. TODO Comprobar si funciona añadir herencia de tags en org-wild-notifier

Ya está hecho aquí junto con poder especificar de qué quieres que se te notifique (DEADLINE SCHEDULED TIMESTAMP):
https://github.com/lytex/org-wild-notifier.el
Puedo empezar a tirar de mi fork, pendiente de comprobar si funciona

  1. Investigación previa

    Es simplemente cambiar estas definiciones

    (org-entry-get marker "TAGS")  → acepta un argumento opcional que dice si utiiliza herencia o no → no funciona
    (org-get-tags) sí que funciona ya bien, combinando todo queda:
    (org-with-point-at marker (org-get-tags))
    (org-get-tags-at marker) más claro
    ;; Cambiarlo a esto de aquí abajo:
    (org-with-point-at marker  (org-entry-get-with-inheritance "TAGS"))
    
1.2.12.5. notificaciones en KDE

Se hacen permanentes con Notifications>Right click>Configure Event Notifications
and Actions>

  • Low priority notifications > show in history
  • Applications>Configure>Other Applications>Show in history

1.2.13. org embedded latex

1.2.15. Best of org mode + this project + Things I use daily (requirements after using it for a while) + Feature Parity with Obsidian Logseq with Plugins

1.2.15.1. org-sparse-tree to filter TODO items / tags while mantaining hierarchy

allows you to mix resources and tasks → literate tasks

1.2.15.2. org-sort to keep TODO items at the top
1.2.15.3. org-narrow-to-subtree / widen

Focus on one task, while on divergent mode (Zoom in Obsidian)

1.2.15.4. org-toggle item & heading to:

allow your items to organically grow - [ ], - [X] → TODO, DONE and viceversa

  • MAYBE, - SOMEDAY
1.2.15.5. org-refile
  • my/org-link-and-refile
  • my/org-refile-to-capture
  • my/org-link-and-refile-to-capture

allows your notes to organically grow (Note composer in Obsidian, which also merges two notes)

1.2.15.6. org-agenda

Calendar support added via CalDAV, I have yet to find a calendar view using time blocks inside emacs

1.2.15.8. src code blocks
1.2.15.10. quote, example blocks

Obsidian has admonitions

1.2.15.11. links by id

you can refile and rename a heading and keep the links working

1.2.15.12. plain text
  • you can do backlinks manually for example
  • leverage unix tools for text editing (grep, sed)
1.2.15.13. any level of indentation

10 seems enough for most uses

# Since when does this repository exist?
git --no-pager log --pretty=format:'%cr%n' | tail -n 1
# How many headlines I got of each level?
rg "^\*+"  --only-matching --no-filename ~/org | awk '{arr[$1]++}END{for (a in arr) print a, arr[a]}' | tr '*' 'a' | sort | tr 'a' '*'
2 years, 5 months ago
* 2313      
** 4757      
* 6071      
** 8098      
* 3793      
** 1579      
* 537      
** 61      
* 22      
** 2      
1.2.15.14. Quick capture
  • org-roam-capture
  • org-web-tools to capture the content of a web as text
1.2.15.15. orgzly → great android integration
1.2.15.16. org-noter to:
  • extract toc and annotations
    Obsidian: plugin + + http://zotfile.com/
  • scroll sync between notes and pdf
1.2.15.17. org-pdftools to:
  • make annotations and highlight text
1.2.15.18. org-re-reveal to:
1.2.15.19. org-wild-notifier to
  • notify
  • link to the heading (TODO)
1.2.15.20. make 3 journals

journal, introspection and work

1.2.15.22. Things to do
  • Better integration with graphics
  • Handwritten notes
1.2.15.24. Missing things
  • Annotation extended to all resources
  • Structurizr-like graphs: the formal description is in the org-mode file, the position of the elements is saved separatedly
  • Handwritten notes support and bidirectional integration
  • Better web integration
  • Self-modifying capabilities (like lisp itself)
  • Built-in synchronization
  • bidirectional sync with the DAG (pick from premade blocks and conect them)

1.2.16. Annotation

1.2.17. Spaced repetition en org mode   project someday_20230330

1.2.17.1. Tickler file as Spaced Repetition

You don’t have to thing when exactly to schedule a task/thing you’re tracking, and as a bonus, repetition is tailored to when you think you should be viewing it based on how much do you remember it
https://github.com/yantar92/emacs-config/blob/master/config.org#project-management

Instead or reviewing all the ideas together, it would be better to make sure that ideas are reminded to me from time to time without a need for me to think when is the next time I want to be reminded. This is similar to tickler list in GTD managed using org-drill, so that spaced repetition method is used to find out when to remind about the idea next time.END

1.2.17.2. Image Occlusion with Excalidraw in Obsidian (Como Anki pero con imágenes)
1.2.17.3. Announcing dyncloze, an app for language learning practice in emacs

1.2.19. Ideas   idea

GOAL: Aplicar Data Science/ML/Visualización de datos a mis notas
1.2.19.2. Contar el tamaño que tiene la inbox para ver si se atasca

Tanto como para Inbox virtuales como para inbox físicas (por ejemplo el número de hojas de sin procesar del todo es muy interesante)

1.2.19.3. Ver si me salto algún hábito para ver si estoy más cansado

Por ejemplo si no me logeo en RPi y en Servidores, entonces ha sido una semana cansada

1.2.19.4. Contar el número de links y backlinks que tiene cada nota ( o cada heading incluso ) e irlo ploteando

Hay que hacerlo en python, sería un poco curro

1.2.19.5. Diagrama de sankey con headlines de org-mode

La idea es ir viendo cuáles han surgido nuevos, cuales se han borrado, cuáles se
han movido Se puede coger el diff si es un git, y luego tendríamos que ir un
poco a nivel de headline viendo qué ha pasado Match exacto no es muy
recomendable porque muchas veces cambia el nombre del headline

  1. https://github.com/google/diff-match-patch

    Crea diferencias entre archivos de texto

1.2.19.6. Porcentaje de tiempo dedicado

Balance de tiempo: en un intervalo dado, tengo que pasar X% de mi tiempo en Y, y si no el sistema te sugiere hacer ciertas cosas más
Agrupar los datos de tiempo en un dataframe por tag o parecido
Según :

  • Estado deseado (pasar X% del tiempo haciendo Y) para cosas complicadas
  • Dirección (quiero hacer más de Y) para cosas complejas,
1.2.19.7. # headlines TODO / # headlines totales

Da una idea de la “accionabilidad” de un proyecto

1.2.19.8. Ways to show hierarchical org mode data
  1. Data Flow Diagram
  2. Hyperbolic Trees
  3. Voronoi diagrams to show hierarchical data
1.2.19.9. Grafos proporcionales a cada peso

Estadísticas estilo “El X% de los links/backlinks de la nota A van a la nota B”
Podría ser el tamaño de una conexión en el grafo, probablemente la

1.2.19.10. Emacs as a Service

Conectarme por tunel ssh a la rpi desde cualquier ordenador para editar mis
archivos (tendré que llevar la clave) usando emacs desde la terminal, o
directamente gui Para qué querría yo esto?

1.2.19.11. Hacer el sistema de archivos con org mode

Integrarlo con dolphin con tags (los tags de cada nodo org-mode son los tags de cada archivo/carpeta)
Puedo hacer los mismas queries org-ql sobre el árbol org-mode
En función de la tag puedo hacer por ejemplo si es un repo que lo abra en vscodium/nvim

1.2.19.12. Hacer org mode más visual
  1. Kanban Org Mode
  2. Agrupar las tareas por tipo, estilo tablero

    Hacer una tabla agrupando las tareas por distintos tipos

    work jardin car
    projecto super importante comprar herramientas renovar itv
    projecto no tan importante cortar la hierba  
    esto ni idea de qué es    

1.3. org-mode

1.3.4. org-almanac

blogging en emacs, recopilación de recursos

1.3.5. Tricks

1.3.5.1. org-babel / org-tangle tricks
  • :results verbatim no te lo saca en tabla
  • :exports both te exporta el código y el resultado (por defecto sólo el código)
  • :eval no
  • :results value html te exporta eso a html (exclusivamente, por ejemplo a latex no)
  • #+PROPERTY: header-args :comments link :tangle-mode (identity #o444) → atributos de acceso al archivo que exportes
  • :shebang "#!/bin/bash"
  • Tangle a single block with C-u C-c C-v t
  • Tangle all blocks with C-v C-c t
  • Tangle by default

      # Local Variables:
      # org-confirm-babel-evaluate: nil
      # eval: (setq org-babel-default-header-args (cons '(:tangle . "yes") (assq-delete-all :tangle org-babel-default-header-args)))
      # End:
    
  • Evaluate all code blocks with C-c C-v b
  1. Cambiar entorno virtual de python
    (setq org-babel-python-command "/home/julian/.virtualenvs/science/bin/python3")
    

    Lo puedes hacer con

    Pero org-export-allow-bind-keywords tiene que ser non-nil

    Non-nil means BIND keywords can define local variable values.
    This is a potential security risk, which is why the default value
    is nil. You can also allow them through local buffer variables.

1.3.5.2. Local variables

https://www.gnu.org/software/emacs/manual/html_node/emacs/Specifying-File-Variables.html

# -*- org-use-tag-inheritance: nil; -*-
# Local Variables:
# org-confirm-babel-evaluate: nil
# eval: (progn (defun my/run-blocks () (when  (string= "my_org_mode_setup.org" (buffer-name)) (org-babel-goto-named-src-block "config") (org-babel-execute-src-block) (outline-hide-sublevels 1))) (my/run-blocks) (add-hook 'after-save-hook #'my/run-blocks ))
# End:
1.3.5.3. Start list from any number

http://pragmaticemacs.com/emacs/org-mode-start-a-numbered-list-from-any-number/
Reset list number

  1. Hola
  2. Hey
  3. Desde cero tambien
  4. Si pones el mismo número, te crea el siguiente elemento arriba en vez de abajo
1.3.5.4. Open multiple links

lytex/visit-all-http-links
https://stackoverflow.com/questions/61621608/how-to-open-multiple-urls-at-the-same-time-in-an-emacs-buffer
C-c C-o → org-open-at-point
When is pressed on a heading, then all URL’s beneath that heading are opened

1.3.5.5. Negrita cursiva

Texto de antes . negrita-cursiva; sigo en cursiva Texto normal
Texto de antes Negrita negrita cursiva sigo en cursiva Texto normal

1.3.5.6. Imágenes en org mode

(display-pixel-width) → te dice la anchura en píxeles
https://www.mail-archive.com/search?l=emacs-orgmode@gnu.org&q=subject:%22%5C%5BO%5C%5D+Use+Emacs+support+for+image+resizing+when+using+org%5C-image%5C-actual%5C-width%22&o=newest&f=1
Funciona mejor hacer (setq org-image-actual-width 100) y luego tienes que pulsar enter en las imágenes para que se hagan pequeñas y enter para volver a ponerlas
Con +/- puedo cambiar el tamaño de la imagen (image-increase-size, image-decrease-size), pero no funciona si la imagen es online. Con suerte la web sirve la imagen con una resolución parametrizable y lo puedes cambiar (https://miro.medium.com/max/1400/0*yax8nJhn63NHPxJt)

  1. Scroll a nivel de línea
  2. emacs evil smooth scroll
  3. Org mode: is it possible to display ONLINE images? - Emacs Stack Exchange

    No need for custom packages:
    https://miro.medium.com/max/1400/0*yax8nJhn63NHPxJt
    Sometimes the url does not end with .jpg, add a ?file=.jpeg so that org recognizes it as an image

    1. Release notes | Org mode | Display remote inline images

      https://www.orgmode.org/Changes.html
      Display remote inline images

    2. Error de certificados

      https://emacs.stackexchange.com/questions/27554/gnutls-negotiate-certificate-validation-failed-for-hostname-verification-code
      gnutls-negotiate: Certificate validation failed cd.epic.epd.gov.hk, verification code 42
      sudo apt-get install gnutls-bin
      gnutls-cli --save-cert=cd-epic-epd-gov-hk.pem cd.epic.epd.gov.hk --insecure
      (add-to-list 'gnutls-trustfiles "cd-epic-epd-gov-hk.pem")

  4. Is there a good guide for using images inside .org files? : orgmode
1.3.5.7. Paste image from clipboard to org mode   project someday_20230330
  1. https://stackoverflow.com/questions/17435995/paste-an-image-on-clipboard-to-emacs-org-mode-file-without-saving-it/31868530#31868530

    es lo mismo pero desde orgzly en vez del ordenador

  2. https://github.com/LionyxML/ros
    1. ros (my org-mode screenshot tool) is now org-ros and available from MELPA : emacs
1.3.5.8. org mode log repeat

lognoterepeat
log-repeat ⇒ Crear una nota al marcar un hábito como hecho, para decir cómo te sientes, qué tal te ha parecido…
Útil para pillar el hábito de escribir al acabar de hacer algo
https://orgmode.org/manual/In_002dbuffer-Settings.html#index-org_002dlog_002drepeat-1

Logging the closing and reopening of TODO items and clock intervals can be configured using these options (see variables org-log-done, org-log-note-clock-out, and org-log-repeat).
‘logdone’	Record a timestamp when an item is marked as done.
‘lognotedone’	Record timestamp and a note when DONE.
‘nologdone’	Do not record when items are marked as done.
‘logrepeat’	Record a time when reinstating a repeating item.
‘lognoterepeat’	Record a note when reinstating a repeating item.
‘nologrepeat’	Do not record when reinstating repeating item.
‘lognoteclock-out’	Record a note when clocking out.
‘nolognoteclock-out’	Do not record a note when clocking out.
‘logreschedule’	Record a timestamp when scheduling time changes.
‘lognotereschedule’	Record a note when scheduling time changes.
‘nologreschedule’	Do not record when a scheduling date changes.
‘logredeadline’	Record a timestamp when deadline changes.
‘lognoteredeadline’	Record a note when deadline changes.
‘nologredeadline’	Do not record when a deadline date changes.
‘logrefile’	Record a timestamp when refiling.
‘lognoterefile’	Record a note when refiling.
‘nologrefile’	Do not record when refiling.

[no]log[note][done|repeat|clock-out|reschedule|redeadline|refile]

1.3.5.9. Mirar la cache de las imágenes

Me suena que en algún momento lo miré pero no lo encuentro
Así no se intenta bajar todo todas las veces
Lo mismo es más general

1.3.5.11. org-cycle-list-bullet
  • Funciona con Shift + Left, Shift + Right
1.3.5.12. org-export-babel-evaluate (ejecutar código al exportar)
1.3.5.13. No se ve el resaltado de sintaxis

Con «a» “a”
Juntar con la línea anterior (J) y bajarlo (r RET) lo arregla

1.3.5.14. Exportar una nota privada
  • [ ] Borrar etiquetas private
  • [ ] SPC m e
  • [ ] Primero hay que quitar exportación asíncrona con C-a
  • [ ] Después exportar a buffer (no a archivo)
  • [ ] Volver a poner private
1.3.5.15. Copiar org mode a un correo

Si copias de una exportación de HTML a un correo web, te preserva todos los atributos (los headlines se transforman en headlines) y los bullet points te salen indentados y demás

1.3.5.16. inline src blocks
1.3.5.18. org embedded latex

Latex inline -> con dólar y hacer org-latex-preview
https://orgmode.org/manual/Embedded-LaTeX.html

  1. Perfect Emacs Org Mode Exports to LaTeX, easy and extensible
1.3.5.19. org table
  1. atajos de teclado / trucos

    C-c ^ → Ordenar por columna
    Fórmulas separadas por ::
    \#+TBLFM: $14=$3/$5/$9::$15=$3/$4/$9

  2. https://github.com/tbanel/orgaggregate

    Aggregating a table is creating a new table by computing sums, averages, and so on, out of material from the first table.
    Optimization lead to significant speedups.

  3. Recursos
  4. Utilizar tablas de pandas junto con org-table   build

    Justo antes de pasarlo como variable hay que convertirlo a diccionario y se pasa como string.
    Luego ejecutas ese string y le pones un pd.DataFrame delante
    Se puede utilizar org-babel-default-header-args:python (existe la variable realmente o sólo cuando se define??) para hacer esto automáticamente

    import pandas as pd
    df = pd.DataFrame({'a': [1,2,3], 'b': [4,5,6]})
    return df.to_dict()
    
    {'a': {0: 1, 1: 2, 2: 3}, 'b': {0: 4, 1: 5, 2: 6}}
    
    import pandas as pd
    return pd.DataFrame(eval(table1))
    
       a  b
    0  1  4
    1  2  5
    2  3  6
    
  5. https://github.com/fritzgrabo/ob-dsq   try

    Más sencillo que utilizar pandas parece

  6. org-table vs table.el

    https://emacs.stackexchange.com/questions/38135/wrap-cell-content-in-an-org-mode-table

    • C-c ~ → funciona de org-table a table.el pero de table.el a org-table te crea filas extra
    • C-c ' → editar una tabla de table.el
      • table-narrow-cell → se llama la primera vez
      • C-c C-c < → funciona la segunda vez, se puede prefijar con 10, 20, 30, …
      • C-c ' de nuevo para guardar porque C-c C-c no funciona
  7. Otras opciones
    • Tablas en LaTeX
    • Tablas HTML

1.3.6. org-refile

1.3.6.1. Org-mode: how might I leave a note behind when refiling?

1.3.7. habits

1.3.7.1. Probar org-habits
Blue
The task was to be done on that day.
Green
The task could have been done on that day.
Yellow
The task will be overdue the next day.
Red
The task is overdue on that day.
  1. Condiciones de uso
    • Tiene que ser con org agenda normal
    • Lo más sencillo es ponerse en un buffer y buscar dentro de ese buffer sólamente (SPC o A < a)
    • Parece que la hora tiene que ser un día entero, pero entonces me va a aparecer en org-caldav el día entero → he puesto “habit” en org-caldav-exclude-tags
  2. DONE Arreglar org-habits que no funciona

    Esto de aquí abajo siempre se ve, seguir investigando, unos funciona, otros no, …
    Funciona sólo cuando restringo a subtree
    https://cpbotha.net/2019/11/02/forming-and-maintaining-habits-using-orgmode/
    org-habit-insert-consistency-graphs es la función que inserta el gráfico, pero no me funciona → org-habit-build-graph

    1. Investigar el código fuente para ver qué necesita

      Esto sólo me crea los ! → hace falta algo como org-habit-get-faces, pero se llama dentro de org-habit-build-graph
      Resulta que al ponerlo en un buffer de org mode no se ve, pero en un scratch buffer por ejemplo sí que tiene colores

      (setq moment (time-subtract (current-time)
                                     (list 0 (* 3600 org-extend-today-until) 0)))
      (setq habit
      '(737366 2 737368 4
              (737345 737348 737350 737350 737352 737354 737356 737358 737362 737364)
              ".+"))
      
      (insert-before-markers (org-habit-build-graph
                    habit
                    (time-subtract moment (days-to-time org-habit-preceding-days))
                    moment
                    (time-add moment (days-to-time org-habit-following-days))))
      
      ;;
      
      1. org-habit-p

        file:///home/julian/.emacs.d/.local/straight/repos/org/lisp/org-agenda.el#orgafe4c90
        el es el parámetro de una lambda → org-element-cache-map

        (org-element-cache-map
         (lambda
           (el)
           (org-habit-parse-todo
            (org-element-property :begin el))))
        

        Si lo ejecuto desde el elemento de org mode: org-habit-parse-todo: Assertion failed: (org-is-habit-p (point))
        file:///home/julian/.emacs.d/.local/straight/repos/org/lisp/org-habit.el#org77edfe7
        Si lo ejecuto desde org-agenda: org-element-cache-map: Cache must be active.
        file:///home/julian/.emacs.d/.local/straight/repos/org/lisp/org-element.el#orgb15e5fa
        (org-habit-parse-todo) sobre el propio heading ya funciona

        (737366 2 737368 4
                (737345 737348 737350 737350 737352 737354 737356 737358 737362 737364)
                ".+")
        
    2. https://emacs.stackexchange.com/questions/13360/org-habit-graph-on-todo-list-agenda-view

      To explain further, it appears that every agenda function calls org-agenda-finalize once the agenda buffer has been mostly constructed, and this is the function which adds the habit graphs. Moreover, it just adds the graph to every item which has the org-habit-p text property (which encodes the details the graph will display). So all we need to do is go through and tag the habits with this information at some point prior to that.

    3. Investigar cómo configurarlo con org-super-agenda

1.3.8. mejoras pequeñas

1.3.8.1. Poner helm con org-roam   project maybe_20230330
1.3.8.2. Detectar si un link ya está capturado   project someday_20230330

Es como un ROAM_KEY pero en headline (esto con v2 ya está)
Hacer como org-roam pero en Inbox, o incluso con una regex: si matchea, ir a ese headline (para cualquier tipo de captura desde web)
Quizás incluso match parcial (si eso que sea incremental, parseando el link y quitando query string, #header y demás de manera estructurada e interactiva)

1.3.8.3. Poner async org-babel-tangle (org-auto-tangle)   project someday_20230330

https://github.com/yilkalargaw/org-auto-tangle/
No me funciona lo de remplazar comentarios con blank

1.3.8.4. Hacer un capture to org-roam file (refile not inbox)   project someday_20230330

1.3.9. Templates

1.3.9.1. Crear una nota BLOCK/NEXT

Rápidamente crear una nota TODO, que saque el id, ponerla en BLOCK/NEXT de la
tarea padre y mover el cursor al TODO

1.3.9.2. Usar las notas como trampolín   project someday_20230330

Automáticamente que te meta en el drawer de RELATED la nota de la que saltas

1.3.10. Cosas en headings

Roam realmente va a nivel de archivo, nunca va a nivel de heading. Lo que hace
si hay un link es:

  • [X] Abrir en el lateral la página de un link, haciendo click te muestra los backlinks y unlinked refs de esa página
  • Abrir en el mismo buffer el link y mostrar backlinks (y unlinked refs más complicado porque te lo saca en el buffer del que partes)
  • Si no existe te crea esa nota

Link a heading va contra la filosofía de org-roam:
https://github.com/org-roam/org-roam/issues/548 Lo que creo que es mejor es usar
org-roam normalmente con files pero de vez en cuando usar headings para alguna
cosa puntual (además ahora como tengo refile manteniendo links y demás ya puedo
hacer todas esas cosas sin problema)

1.3.10.1. DONE org-roam backlinks y unlinked refs desde heading

Unlinked references en principio fácil, sería sustituir org-roam–extract-titles
por (nth 4 (org-heading-components)) en la función org-roam-unlinked-references
y de hecho
ya
lo hice
Si el heading tiene espacios, no tiene mucho sentido un match exacto,
habría que integrarlo con org-rifle? Las unlinked refs se pueden falsear si se
abre una nueva nota y se pone como title el nombre de la nota Lo más sencillo
parece hacer notes narrowing by
current subheading
si se quiere hacer backlinks desde headings específicamente
Deja de funcionar a veces? No entiendo nada

1.3.10.2. DONE Arreglar notes narrowing by current subheading

Cuando estoy en un heading, que org-roam sólo me saque los links de ese heading
Más fácil hacer un org-sparse-tree filtrando por el link del heading actual (id
casi siempre) desde el que abres org-roam y parece mucho más directo que otros
intentos que hice!

1.3.10.3. org-roam-capture con id

Al final bastante complicado, y no aporta mucho hacerlo porque org-roam te
sustituye el link al heading con un link a un archivo y blablabla Hacer un
capture que genere un link con id y abra un nuevo heading en roam/ con la id que
se acaba de crear Este tipo de workflow favorece
Cosas en headings porque vas a
mover el heading de aquí para allá y te interesa el backlink de ese heading

  1. Link que no existe

    Cuando haces un link que no existe [ [ #new-thoughts ] ] org-roam usa capture
    para crear un nuevo archivo, pero lo linka por file: en vez de por id: Hay
    alguna manera de hacerlo por id?? A lo mejor es más fácil escribir una
    combinación de comandos para sustituir el link original

1.3.10.4. Make a PR with my new refile functions   project someday_20230330

Maybe better to submit it to vulpea

  • [ ] Create a long gif for nobiot
  • [ ] Create a reddit post

The narrative would be something like: Since org-roam is file-based instead of heading-based, we should provide our users some frictionless way to convert from heading-based to file-based I have been using org for one year and I already have a problem, much worse if you have been using org for many years

  1. DONE Clean some things
    • [X] heading-unlinked creates a file which is unecessary, then when quitting, emacs asks to save all these files
    • [X] heading-unlinked uses evil-w-up, use setq old-buffer like heading-backlings
1.3.10.5. DONE Autocompletion by id

org-roam autocompletes by file, there is some way to do it by id?
http://pragmaticemacs.com/emacs/insert-internal-org-mode-links-the-ivy-way/

1.3.13. Roam insert cómo pilla los nombres de los links que insertas?   ARCHIVE

Se podría hacer por heading en vez de archivo? (probablemente no, ver
Cosas en headings) Lo pilla por
nombre de archivo, por el primer heading o por #+TITLE Para org-roam-insert usa
#+TITLE, y si no tiene nada no autocompleta

1.3.14. transclusion   ARCHIVE

1.3.14.1. Quizás puedo usar uno de estos modos para que muestre una preview en ventana emergente
1.3.14.2. DONE org-sparse-tree with transclusion

It would be great if you could make a sparse tree out of current notes +
tranclusion of linked notes, to give a more complete overview (now some TODOs
may be hidden behind links) → by default, org-sparse-tree shows also translcuded headings!!

1.3.17. Proponer tipos de links en org-roam   project someday_20230330

1.3.18. I split my brain

https://www.reddit.com/r/emacs/comments/pvrv0u/i_split_my_brain/
Añade contexto a headings de org roam como work/personal por ejemplo
Dividir org-roam en base a las áreas de tu vida
https://www.badykov.com/emacs/2021/09/27/split/

1.3.19. In buffer settings / Headline subtree settings

https://orgmode.org/manual/In_002dbuffer-Settings.html
Todas estas cosas a veces tienen equivalentes en :PROPERTIES: que se aplican al subárbol

1.3.23. Learn org-mode syntaxis   learn indepth

1.3.24. workflow

1.3.24.1. http://www.howardism.org/Technical/Emacs/getting-more-boxes-done.html

incluye orgzly y junta gtd y zettelkasten con cosas como diarios y tal

1.3.24.3. skx/org-worklog: A template for maintaining a work-log, via org-mode
1.3.24.6. Gestión de dependencias de tareas   idea

Aclarar depedencias para construir hooks. Por ejemplo cosas que dependen de
dónde vivo (calendario, impuestos), de dónde trabajo, de la tarjeta de
crédito…

  • Las dependencias son backlinks
    Es mucho más fácil listar las dependencias en un drawer y luego ver los

backlinks que hacerlo al revés
Añadir un drawer DEPENDS
Si los contextos son cambiantes, entonces son una nota + link en vez de tags, un inventario donde pones qué hay en cada sitio y un plan de dónde esperas que esté tal o cual objeto, idealmente guardando toda esta info con NFC (es posible que no compense hacer algo tan complicado aunque la idea está bien)
Everything is a hook

  1. Mirar si org mode tiene algo ya integrado para calendarios con fiestas y demás   project idea research someday_20230330

    https://elblogdelazaro.gitlab.io/2019-12-16-org-mode-mi-fichero-de-configuracion/#festivos → festivos de Madrid
    Para gestionar irregularidades de calendarios, fiestás y demás.
    Como esto depende de dónde vivo, me puedo bajar una lista de fiestas para los próximos X años y ponerme un recordatorio un día antes para que revise si algo depende de esto (por ejemplo si es fiesta el lunes entonces no interesa hacer XYZ)

1.3.24.9. Directory Structure for my Org Instance // Take on Rules

A little bit strange, fleeting, permanent and projects are all folders
https://takeonrules.com/2020/12/18/directory-structure-for-my-org-instance/

1.3.25. Woof! Watch Over Our Folders

1.3.26. https://karl-voit.at/2017/09/23/orgmode-as-markup-only/

virtues of org-mode as a markup language, compared to markdown

1.3.27. TICKLER [ANN] Experimental org-mode branch improving performance on large files   track

1.3.28. alphapapa

1.3.28.1. alphapapa/org-clones: Prototype for method of cloning orgmore headers
1.3.28.2. alphapapa/org-timed-alerts: Orgmode notification warnings of upcoming events
1.3.28.3. alphapapa/org-worklog: A template for maintaining a work-log, via org-mode.

1.3.29. A search engine like command line tool for org-mode and markdown

https://www.reddit.com/r/orgmode/comments/kdxq9m/a_search_engine_like_command_line_tool_for/
FYI, it’s relatively trivial to use org-ql from the command line: https://www.reddit.com/r/orgmode/comments/kdc4o2/getting_org_data_agendas_searchetc_from_the/gfwleec/

Anyway, this looks very interesting. A few years ago I looked for a command line tool, like grep or ripgrep, that could be used as a backend for org-rifle, but none of them supported multi-line matching, or not in a way that would work (you can see some of the notes I made at the time). Since then, ripgrep has gained multi-line match support, so it might work now, but I haven’t tried it again yet.

In the long term, I’d like org-ql to have additional backends, like a SQL-indexed one, and/or an external search tool for files that aren’t yet loaded into Emacs. Hopefully ripgrep can be used for this, but if not, your new tool might be a good candidate as well.

1.3.30. CANCELLED Queries estándar de org-agenda

1.3.31. Random scattering across calendar in org-agenda

https://orgmode.org/manual/Agenda-Commands.html → Reschedule randomly, en emacs27 no me ha funcionado
:idea: → lytex/org-agenda-deadline-scatter → poner fecha random entre ahora y scheduled y seguirla a rajatabla

1.3.32. org sparse tree escondiendo todo lo que no sea negrita, o resaltado   project someday_20230330

Por contenido en vez de por jerarquía
org-emphasis-regexp-components para pillar bien la expresión regular, utilizando overlays porque con text-properties parece que no funciona
Haces una lista de texto que no es negrita (o una lista de texto que sí que lo es alternativamente) por ejemplo dentro de los párrafos y p(porque por ejemplo un headline, propiedades y demás lo sigues queriendo ver)

1.3.33. Colores arbitrarios en org-mode   project someday_20230330

Utilizar para los colores más comunes los colores de una letra de Matplotlib (quizás con algún añadido que ellos no pueden hacer como o para orange)
Incluso estaría chulo que sea
Luego todo eso tiene que ser compatible de algunar manera con exportación html
Puedes ponerle color html para cosas más custom

1.3.34. Poner por defecto que org mode muestre hasta el segundo nivel   project someday_20230330

O que limite hasta el segundo nivel
Como tengo todos los org mode con nivel mínimo 2

1.3.35. Distinta exportación basado en el color del resaltado del pdf   project someday_20230330

Exportación normal, resaltado, en negrita, citas textuales, código, … que se corresponden con propiedades de org mode

1.3.36. Gamificación de Hábitos y tareas   project someday_20230330

1.3.36.1. Echa un vistazo a Habitica: Gamify your Tasks
1.3.36.2. Emacs y OrgMode + Habitica

1.3.37. Atajos de teclado items   project someday_20230330

Configurar los atajos de teclado para que cicle las listas de objetos
advice con org-shiftright a M-→ y a >> (esto último sólo si es un item de org-mode)

1.3.38. Poner un lint de archivos de org mode   project someday_20230330

https://emacs.stackexchange.com/questions/42196/how-to-call-org-lint-against-org-mode-file-from-command-line
Para pillar ejemplos de que por ejemplo no me funciona org-caldav

find . -iname "*.org" | xargs emacs --batch -f package-initialize --eval "(add-hook 'org-mode-hook
      (lambda ()
          (let* ((file-name (current-buffer))
            (Col1 'Line)
            (Col2 'Trust)
            (Col3 'Warning)
            (lint-report (org-lint))
            )
          (princ (format \"file: %s\n%6s%6s%8s\n\" file-name Col1 Col2 Col3))
          (dolist (element lint-report)
           (setq report (car (cdr element)))
           (princ (format \"%6s%6s %7s\n\" (seq-elt report 0) (seq-elt report 1) (seq-elt report 2)))
          )
      )))"

1.3.39. music and org-mode

1.3.39.1. Jazz zettelkasten
  • Linkar a archivos .mid siempre (funciona desde móvil y desde ordenador), que sean las unidades mínimas de significado musical a partir de las cuales puedo construir ideas, links a segundos específicos de canciones…
  • Luego hay elementos musicales que tienen significado propio como blues menor, blues mayor, hit the road jack bass, licks específicos que conozca…
  • Tendría un Inbox de ideas musicales (notas de voz, partituras, canciones) que paso luego a un .mid
  • Esto no es tanto para improvisar como para crear canciones
  • Necesito notas de voz para incluirlas en orgzly (captura rápida)
  • Juntar cachos de ideas melódicas (ideas para intros, outros, … de otros demas) armónicas y rítmicas para ver cómo suena. Cada nodo tiene un link a un .mid o a un .mp3 (o canción de spotify) con el sonido correspondiente
  • Moods para tocar, frameworks, ejercicios, ideas clave que llenan un solo… También mezclar con extractos
  1. Mejor representación para las frases

    Tablet → para poder llevarlo a todos los sitios, en Lecture Notes
    Si hago una imagen = un patrón los puedo reordenar como quiera (son nodos de org mode), me da máxima flexibilidad
    Es un poco extraño de usar, sobre todo si quieres juntar patrones entre sí (quizás se podría añadir algún tipo de texto acompañando el patrón y hacer una query agrupando de determinada manera, en base a tags de la página o bloques de texto o lo que sea, o que los acordes sean bloques de texto y así se identifica la tonalidad o algo)

1.3.39.2. Convertir notas de voz en archivos midi

1.3.40. Notas de clase en org mode

1.3.40.1. Best way to insert drawings in org-mode for school notes?
1.3.40.3. Long-Time Emacs User Looking to Level-Up (note-taking for classes)
1.3.40.4. Taking notes in org mode has made me popular with my classmates

1.3.43. org-mode (viene de emacs.org)

1.3.43.1. New Package: Zetteldesk.el - A tool for revision and outlining built on top of Org-Roam   project someday_20230330
1.3.43.2. Exportar contactos a vcf personales   project someday_20230330

Se pueden tener todos en un org mode, existe CarDAV (como caldav, en nextloud lo soportan)
Cada mes o cada X tiempo, actualizar la base de datos haciendo un diff y actualizándolo manualmente, tanto en trabajo como en personal
Apuntar en qué compañía están como tag

  1. Managing your contacts in org-mode and syncing them to your phone (Android, iOS, whatever) : orgmode
1.3.43.4. org-expiry

https://stackoverflow.com/questions/12262220/add-created-date-property-to-todos-in-org-mode
org-expiry, archiva tareas que sean más antiguas que X y añade un CREATED

  1. Integrar org-recent-headings con org-expiry

    https://github.com/alphapapa/org-recent-headings Llevar control de cuándo se modifica un heading (ya lo lleva org-recent-headings)
    https://emacs.stackexchange.com/questions/39348/org-auto-add-update-date-of-last-modification-of-heading-and-or-its-body-to
    También valdría para org-expiry
    (porque por defecto lo guarda org-recent-headings)

1.3.43.6. Presentaciones
  1. Emacs Tips - How to Give Presentations with Org Mode
    • org-tree-slide → org-tree-slide-mode
      • C-S-> para navegar (next-tree, previous-tree)
    • Las presentaciones tienen un modo para ocultar
    • Las presentaciones tienen un modo para esconder las slides que no tienen un TODO por si estás trabajando en ellas
    • Se puede poner código en las presentaciones y se puede ejecutar
    • Si pones la etiqueta commentary entonces se salta esa página
    • Si pones org-comment-string delante de un headline, se lo salta (C-c ;)
    • Puedes poner TODO para centrarte sólo en las diapositivas que te quedan por hacer
    • También tiene efectos de transición
    • Text scaling mode
    • Face remapping alist para hacer una correspondencia entre fuentes y tamaños
    • Se puede se puede exportar a beamer
  2. https://github.com/yjwen/org-reveal/
    • Es compatible con los COMMENT como estado de TODO (org-tree-slide) sólo cuando te bajas el js en local
    • No parsea tags sino que las incluye como parte del título de la slide
    • Utiliza org-export-exclude-tags, y también añade la suya propia “noexport_reveal”, y además incluye también esto para filtrar a nivel de headline:

      Esto no se exporta en reveal

    • Reveal.js supports a multiplexing plugin, which allows your audience to view the slides of the presentation you are controlling
    • Reveal también tiene una interfaz web
    • https://revealjs.azurewebsites.net/#/
    • https://github.com/hakimel/reveal.js/wiki/Plugins,-Tools-and-Hardware
    1. https://stackoverflow.com/questions/20426821/jump-to-slide-n
  3. Show presentation using Org Mode
1.3.43.7. Recopilación de plugins org mode
  1. https://www.reddit.com/r/orgmode/comments/6t7ufq/what_are_the_best_packages_plugins_for_org_mode/
  2. https://www.reddit.com/r/emacs/comments/8nvnlu/extending_orgmode/
  3. https://www.reddit.com/r/emacs/comments/8jy7p1/orgmode_extensions_workflows/

    Un poco más disperso, no tan interesante

  4. https://www.reddit.com/r/emacs/comments/k9040b/improving_org_mode_with_extentions/

    I also use:

    • org-super-agenda to make my agenda more readable and informative
    • calfw-org for those few times I want a calendar layout
    • org-download if I ever need to include an image, which is not so often but it’s super handy when I need that
  5. Advanced org-mode resources
1.3.43.8. org-rich-yank

https://github.com/unhammer/org-rich-yank/
Mismo concepto que Rich copy
Copiar y añadir un link de donde viene (si viene de correo, o de código fuente le añade el #+begin_src)

1.3.43.9. org-inline-anim - MELPA

Inline playback of animated GIF/PNG for Org

1.3.43.11. Sistema global para gestión de información (Linux/Android, pdfs, anotaciones etc)
1.3.43.14. Org Visibility

https://www.reddit.com/r/emacs/comments/t2q4xf/org_visibility/
It persists your visibility state (i.e. which sections are visibly cycled on and off) of your org file buffers and restores that state when you next load them

1.3.44. Caracteres extraños/especiales en org-mode

  es el valor, subraya las cosas en azul, pero sólo cuando tienes un wrap. Es un non-breaking space.
https://www.fileformat.info/info/unicode/char/00a0/index.htm
https://www.fileformat.info/info/unicode/char/200b/index.htm → esto lo tengo cuando inserto con M-SPC M-SPC, viene de tecosaur

1.4. org-babel / org tangle

1.4.1. Org Babel reference card

  • * means value by default
  • evaluation command and input
    :cache [yes|no]
    Avoids re-evaluating unchanged code blocks.
    :cmdline <str>
    Pass some command line arguments
    :dir <str>
    Directory to execute the code
    :epilogue <str>
    Appends text to code block body.
    :eval [query|query-export|no|no-export]
    Specifies permissions for every execution of code blocks. Also never is an alias for no
    :mkdirp
    Whether to use mkdir -p to create directories if they don’t exist
    :prologue <str>
    Preppends text to code block body.
    :session <str>
    Shares data and persists state between (evaluation of) different code blocks. It is always evaluated regardless of :export settings
  • evaluation results
    :file <str>
    Which file to write the results (:results graphics for graphics)
    :wrap <block type>
    the name of the block (#+begin/end_<block type>) with which to wrap the results.
  • tangling
    :comments: [no|link|noweb|org|both]
    In tangled file, do not insert comments, or insert “tangled from X” with links to org file, or also treat noweb as comments “tangled from X” and link, or include org mode text as comment, or do both link and org
    :no-expand
    Turns off the code blocks expansion during tangling.
    :padline [yes*|no]
    inserts padline when tangling, or not, at the top of the file. It is always inserted between blocks
    :shebang <str>
    Preamble for tangled files
    :tangle [no*|yes|<str>]
    Do not tangle, tangle with automatic filename.ext, or provide a name
    :tangle-mode (identity #o775)
  • export
    :exports [none|code|results|both]
    What to export
  • noweb
    :noweb [no*|yes|no-export|strip-export|tangle|eval]
    Do not expand, or expand when evaluating, tangling and exporting, or do not expand when exporting (left literally {{ reference }} ), or strip from exporting (disappears altogether), or expands only during tangling, or expands only during evaluation
    Then insert literal code: {{ code-block-name }}, Insert results of code (optional args), {{ code-block-name([arg=value,...]) }}
  • Name all child unmamed src blocks using this name

      * org-mode-header
      :PROPERTIES:
      :header-args: :noweb-ref <str>
      :END:
    
  • Separator between consecutive noweb-ref concatenations

      * org-mode-header
      :PROPERTIES:
      :header-args: :noweb-str <str>
      :END:
    
  • tables
    :colnames [no*|yes|’(a b c …)|’()]
    hlines [yes|no]
    Handles horizontal lines in input tables.
    :rownames[no*|yes]
    interpret first column as row names
    :sep <str>
    delimiter for reading or writing tabular results
  • Multiple options
  • Collection
    :results [value|output]
    wraps your code as a function call or executes in script mode
  • Type (mutually exclusive)
    • table|vector
    • list
    • scalar|verbatim
    • file
  • Format
    code
    drawer
    html|latex: wrap in a begin_export {either}
    link|graphics
    org: wrap in a begin_src org
    pp: pretty print source code
    raw: insert literally in the buffer
  • Handling
    • replace*|silent|none|append|prepend
  • post
    :post
    Post-processes the results of a code block using a call to another code-block
  • pass comma separated variables to code blocks
    Compressed quote:

    • a literal value: string between double quotes, or number
    • a reference to named data, such as:
      • literal example block
      • (part of) a #+name:’d table
      • (level-1) list «I’m not sure…»
      • the results of a named code block
        When a reference is made to another code block, the referenced block will be evaluated whenever needed. If the referenced block is cached, its value will be reused if possible, instead of being re-calculated. If the referring code block is cached, its hash value will depend on the value of all the code blocks it references.
    • Emacs Lisp code
      Look in the manual at the description of what causes header arguments to be interpreted as Emacs Lisp.
      Note -- Eric means about ’(…) or (…)
      Arbitrary Emacs Lisp can be placed inside of header arguments, and the org-sbe take the name of a code block and returns its results.
    • a subset of a table, given a [row,column] index (python-like syntaxis)
    • a variable in an external file, use the syntax :var data=<FILE>:<VAR>.
      Note that, in order to work, the files must be in the same directory.

1.4.6. Self-modifying org

Automatizar/editar los archivos/directorios con org-babel
BEGIN_SRC para que ejecute cosas que afectan a la estructura de directorios o incluso los propios archivos org
https://twitter.com/junkw/status/932541194130808833
http://eschulte.github.io/org-scraps/ -> Ejemplos de scripts Lo único es que no es dinámico (no sucede mientras cambias los archivos, sino sólo mientras le das a un botón)
Poder ejecutar código en org mode https://orgmode.org/worg/org-contrib/babel/
https://github.com/dfeich/org-babel-examples ejemplos de uso en varios lenguajes

1.4.7. Evaluate elisp code at startup in an org-mode file

https://emacs.stackexchange.com/questions/12938/how-can-i-evaluate-elisp-in-an-orgmode-file-when-it-is-opened
Add a src-block somewhere in your file:

\#+NAME: startup
\#+BEGIN_SRC emacs-lisp
\(your-code-here)
\#+END_SRC

Then, put this at the end of your orgmode-file:

\# Local Variables:
\# org-confirm-babel-evaluate: nil
\# eval: (progn (org-babel-goto-named-src-block "startup") (org-babel-execute-src-block) (outline-hide-sublevels 1))
\# End:

org-confirm-babel-evaluate: nil → emacs will prompt only once for permission to execute all src-blocks in that file

1.4.8. Control de espacio en blanco (whitespace)

1.4.8.1. Local Variables

Replace all ocurrences of “;; blank” with blank space
There is no way to control blank space AFAIK:
https://emacs.stackexchange.com/questions/31738/org-mode-babel-ensure-more-than-one-empty-line-between-tangled-code-blocks-fo

1.4.10. Ejemplo de queries org mode

1.4.11. May 2021 emacs async src blocks org babel

1.4.12. Literate programming in a productive environment and team

1.5. org-roam

1.6. org-journal

1.6.1. DONE integrate org-journal-carryover

The TODO states have to be the same in that the org-todo-keywords

1.6.2. Meter en los atajos de teclado un cambio a org-journal-mode en doom.d   project someday_20230330

SPC js (journal surround)
Para todos los atajos que uso:

  1. org-journal-mode
  2. ejecutar el comando que me interesa
  3. org-mode

1.6.3. Establecer un flujo de archivar las entradas antiguas de org-journal   project someday_20230330

# Archivar todas las notas de cada día en uno:
ls . | rg "\d{4}-\d{2}-\d{2}W?" | xargs -I _ /bin/bash -c 'echo -e "\n\n* _" && cat _' >> archive.org
# Esto sólo vale para el comando global de emacs:
:g/#\+title/delete
:g/caldav :work:private/delete
:g/#\+filetags/delete
:g/#\+setupfile/delete

Se puden configurar en org-journal distintos tipos de archivos en función del nivel de detalle que quiero tener?
Menos nivel de detalle para los más antiguos (por ejemplo todos los más antiguos que el último año juntos)

1.7. org-ql

1.7.1. aprender org-ql   learn

1.7.1.1. org-ql y derivados
  1. org-ql -> Queries on .org files
    1. mappings
    2. Combinar prioridad y deadline

      En task warrior lo hacen, de manera que tareas con deadline más alto pueden aparecer antes que tareas más prioritarias
      sort = Prioridad / horas hasta deadline (por ejemplo, ni idea de cómo lo hacen)

    3. How do you get feedback from your systems? (Queries, org-ql performance, sqlite)
  2. org-super-agenda -> Group agenda items with org-ql
  3. org-sidebar org-ql/org-super-agenda window setups

    Poner una query en una distintas ventanas con un split

  4. org-now sidebar tracking current TODO items
  5. origami.el fold org-super-agenda groups
  6. Hacer un org-mode con origami   project learn maybe_20230330

    Hacer unas agrupaciones estilo origami y pasarlo a un org-mode,para que se puedan abrir desde orgzly

  7. DONE Configurar origami con org-super-agenda
1.7.1.2. alphapapa/org-ql-config

1.7.2. Hacer Plantillas de las propias queries   project someday_20230330

Lo puedo poner con org-capture con la letra “q”, para separar de t
Por ejemplo queries que pertenecen a un mismo proyecto, hacer una plantilla genérica de lo que tengo ahora
También cuando tienes muchos proyectos que son parecidos como cuando empiezas a estudiar una canción

1.7.3. Hacer funciones parciales con lytex/insert-query-links/transclusion   project someday_20230330

Hacer una función que acepte los parámetros que org-ql-query fijando el :select, que es más complicado, y poniendo valores por defecto a :where (por ejemplo si ya conoces los archivos porque pertenecen todos a un mismo proyecto)
https://github.com/magnars/dash.el#-cut-rest-params

1.7.4. Utilizar tags del sistema de archivos para agrupar archivos de org   project someday_20230330

Crear un grupo de org-super-agenda para que agrupe por esta tag

  • Tenerlo todo declarado en un script de bash para poder regenerar las tags cuando sea necesario (sobre todo en otro nuevo ordenador, porque las tags no se sincronizan)
  • Idealmente incluso hacer un script que genere un script de bash que genera esas tags (que coja la información del sistema de archivos y la vuelque en un propio script de bash)
(split-string (shell-command-to-string "getfattr --absolute-names -n user.xdg.tags \"/home/julian/org\" | grep 'user.xdg.tags' | sed -E 's/user.xdg.tags=\"([^\"]+)\"/\\1/' | tr -d '\\n'") ",")

(split-string (shell-command-to-string (concat "getfattr --absolute-names -n user.xdg.tags 2&>/dev/null \"" (buffer-file-name) "\" | grep 'user.xdg.tags' | sed -E 's/user.xdg.tags=\"([^\"]+)\"/\\1/' | tr -d '\\n'")) ",")
  • Quizás para más adelante para proyectos y demás se podría hacer que fuese subiendo de directorio hasta que encuentre la carpeta que tiene .git y aplique al archivo la tag del repo

1.7.5. Hacer Custom predicates de Scheduled/Deadline vs event   project maybe_20230330

Por defecto oculta los event, así que no es ya tan prioritario

  • [ ] Si no es dinámico, que parece muy complicado, se pueden duplicar las queries y ya está, o definir una variable de org-babel

https://github.com/alphapapa/org-ql/blob/master/examples/defpred.org
Está muy interesante, se puede utilizar para definir un predicado con los TODOs salvo MAYBE,SOMEDAY y similar
Es mejor si es dinámico completamente, de manera que te puedes poner en modo “Trabajo” y que las queries sean sólo de trabajo y viceversa
Como GTD trata el , hacer versiones igual que se hace work/resto con scheduled/deadline

1.7.6. TICKLER Ver si org-ql dynamic blocks ya soporta múltiples archivos   track

1.7.7. org-ql y tags, dividir entre las que están en el repo doom.d y las privadas   project someday_20230330

Hacer una lista básica de tags genéricas y queries org-ql en .doom.d (try, research, idea, actionable, more-actionable, …)
Estas son las cosas propias del método
Añadir a esa lista con cosas concretas mías en un .org personal en ~/org
Transcluir las cosas de la config en las personales para tener todo en un mismo sitio

1.7.7.1. Mover Meta.org al repo de doom.d   project someday_20230330 someday_20230330
1.7.7.2. Autocompletar etiquetas locales y etiquetas globales   project someday_20230330 someday_20230330

Esto parece que todavía no lo tiene doom

  1. [PATCH] [C-c C-q] completing tags from both buffer-local and global alist of tags

1.7.8. Hacer un PARA Manual   project hold_20230330

1.7.9. Hacer un PARA Automático   project hold_20230330

Habrá que cambiar las capturas para que me añadan a el archivo relevante

1.7.10. Diseñar un dashboard   project someday_20230330

Inicialmente lo pensé para el trabajo
https://www.reddit.com/r/emacs/comments/jtydiy/who_needs_github_to_manage_a_project_when_you/
Diseñar un dashboard (se lanzará en un src_block de elisp) y ponerlo en Trabajo.org, diviendo en proyectos la pantalla.
También es posible que me haga falta en 0rganización.org, o en 0PARA Index.org

  • Asimétrico, configurable
  • Un archivo por proyecto, linkado en Trabajo.org
  • También hay que tener más visibilidad temporal de qué voy a hacer (Time Blocking) y empezar a meter estimaciones y trackeo de tiempo
  • Pensar el flujo (utilizar VERFIFY mucho más) y ordenarlos de algún modo

    con links
  • :idea: MAYBE SOMEDAY TICKLER TODO ONGOING ↳BLOCK NEXT↲ VERIFY DONE CANCELLED
  • GTD con sus 6 niveles, capítulo 7 para saber cómo organizarlo, capítulo 8 para saber qué tengo que ver
  • Mirar cosas de Agustin Bradley + PARA para el diseño
1.7.10.1. A Dashboard for your Life - a minimal goal tracker using org-mode, go and git · The Helpful Hacker
1.7.10.2. Show HN: Flow Dashboard – open-source habit tracker and personal analytics app | Hacker News
1.7.10.3. Links org-mode a búsquedas por tags con Dolphin/baloo   project someday_20230330 someday_20230330
1.7.10.4. Links a proyectos y libros   project someday_20230330 someday_20230330
  • Que te abra con un link .desktop el proyecto en el que estás trabajando
  • Que te abra con un link .desktop el pdf en la página en la que estás actualmente, idealmente
1.7.10.5. Org Agenda on your phone   project someday_20230330 someday_20230330
  1. Org Agenda As My New Tab Page (export org-agenda to html) → Exportar org-agenda a html para verlo en el móvil

    https://www.reddit.com/r/orgmode/comments/kxj2vp/org_agenda_as_my_new_tab_page/
    Estaría bien exportar la agenda para que me saque todas las cosas del trabajo
    The heart of this system is a small set of scripts I wrote called agenda-html, which let you export a fully fontified view of the org agenda to HTML without having to open Emacs in a terminal. This means it can be easily scripted.
    Los resultados podrían tener dos links: uno a la propia página web y otro a un intent (con el servidor ejecutándose, busca la nota en orgzly)

    1. Getting org data (agendas, search,etc) from the command line

      https://www.reddit.com/r/orgmode/comments/kdc4o2/getting_org_data_agendas_searchetc_from_the/gfwleec/

      function org-search -d "send a search string to org-mode"
          set -l output (/usr/bin/emacsclient -a "" -e "(message \"%s\" (mapconcat #'substring-no-properties \
              (mapcar #'org-link-display-format \
              (org-ql-query \
              :select #'org-get-heading \
              :from  (org-agenda-files) \
              :where (org-ql--query-string-to-sexp \"$argv\"))) \
              \"
          \"))")
          printf $output
      end
      
  2. Agenda with customized org-habit graph, on my phone : emacs
1.7.10.6. Hacer un dashboard
  1. Grafana and Org mode : orgmode
  2. ag91/moldable-emacs: Adapting Emacs for moldable development
  3. Reportes de tiempo
    • Porcentaje de tiempo agrupando por tarea/tags (diagrama de barras y de tarta) desde fecha inicio hasta fecha final
    • Bloques de tiempo exacto que le has dedicado a algo (fecha inicio, fecha fin) con toda la cronología
    • Diagrama de tiempo por día dedicado a cada tarea/tags
    • En todas las agrupaciones por tags que haya un filtro de tags. Así puedes filtrar por tags de un tipo (pej personas) y ver tiempo dedicado a cada persona
    • En todas las agrupaciones por tag tiene que haber una jerarquía de tags para que si agrupamos y tenemos dos tags dentro de una misma rama, se puedan ordenar. Así definimos los tipos de cada tag
    • Esto es por ejemplo cuando tenemos una tarea que corresponde a trabajo y a un proyecto personal. A la hora de contarlo, aunque valga para las dos cosas por ejemplo prevalece la de trabajo
    • En todas las agrupaciones por tags habrá 2 maneras de hacerlo:
    • Siguiendo la jerarquía, no se repiten tags de cada tipo. Sólo se considera la de mayor importancia. Los porcentajes suman 100%
    • Se repiten tags, de tal manera que hay tareas que se cuentan varias veces, una por cada tag de cada tipo. Los porcentajes puede que sumen más de 100%
    • Tiempo dedicado a una tarea dividido por el tiempo que lleva abierta ⇒ nos da un ranking empírico de la prioridad/urgencia que le damos a las tareas.

    Es un nuevo campo (agrupable como el resto). Para medir el tiempo en el trabajo habría que tener en cuenta los días laborables

    • Que sea el tiempo que le dedicas a una tarea la que te dé la prioridad en vez de apuntar la prioridad que crees que le das, o la que deberías/te gustaría darle.
  4. Grafos de hábitos

    Como en Habit Graph Habit Graph Habit Graph, diseñar un grafo de tus hábitos que sea vivo.
    Para sacar los pesos, quizás hacer alguna correlación de las series del tiempo que le dedicas a cada hábito a lo largo del tiempo (con más matices que simplemente hacer/no hacer)
    Los hábitos conectados suelen ir y venir de la mano

1.7.10.7. Añadir tiempo meteorológico por terminal
curl wttr.in/Collado+Villalba

1.7.11. Configurar la agenda de trabajo para que sólo saque cosas de trabajo   project hold_20230330

Sobre todo cosas de Mantenimiento por ejemplo
Esto sólo tiene sentido cuando esté lo de org-ql
Lo ideal es que utiliza WORK_ENV para no tener que hacer dos veces la misma query (y así puedes cambiar de una a otra al vuelo)
Algo así se puede hacer con xor, porque es como darle la vuelta a la condición en función de si está puesto WORK_ENV o no
Funciona si reinicio emacs, cómo hacerlo sin reiniciar??

1.7.11.1. Hacer custom predicate para cosas de trabajo
(org-ql-defpred maybe-work ()
  "Search for properties with tag work if and only if WORK_ENV is activated"
  :body (xor (not WORK_ENV) (tags "work")))

Cómo recargar un módulo?
https://github.com/hlissner/doom-emacs/issues/1743

(progn
  (load-library "org-ql")
  (load-library "org-ql.elc")
  (load-library "org-ql-view")
  (load-library "org-ql-view.elc")
  (load-library "org-ql-autoloads")
  (load-library "org-ql-search")
  (load-library "org-ql-search.elc")
  (load-library "org-ql.info"))

He conseguido que funcione alguna vez, pero no es estable

1.7.12. Coming soonish: taxy-org-ql-search (sort of like an org-super-agenda 2.0)   track

1.8. org-transclusion

1.8.1. Errores antiguos   project someday_20230330

1.8.1.1. Arreglar guardar con transclusion
  • Si está desactivada la transclusion, para que me haga bien el transclude cuando tengo un link a un archivo como en , entonces guardar, desactivar transclusión y revertir con SPC bo. Así no me rompe la transclusión los links
  • Hacer esto sólo si no está activada la transclusión cuando se empieza
  • Puedo hacer un match exacto contra el buffer actual de
    #+transcludee
    [folder/loquesea.html] [loquesea.html]
    para decidir si hacer SPC bo o no
1.8.1.2. Probar en una VM las transclusiones sin salto de línea

Si no hay un salto de línea después de la transclusión se une a la línea de después

1.8.1.3. Arreglar colores de transclusión

No se diferencia una cosa de otra, es muy confuso
En la terminal funciona bien curiosamente → Parece que sólo funciona cuando guardo, y funciona de vez en cuando
Lo que sí que funciona siempre es la franja que indica que un elemento está transcluido en otra parte

1.8.1.4. Arreglar indentación (2) de transclusión

Esto puede ser la doble indentación que tengo?

1.8.1.5. Probar en una VM los duplicados

Genera duplicados, así que corro una regex antes de guardar para que me lo quite
Probar si en la VM con sólo doom instalado hace lo mismo

1.8.1.6. Arreglar org mode no exporta a html con transclusión

Me pasa sólo en el ordenador personal, en emacs únicamente

1.8.1.7. Arreglar mapeado en transclusion

No funciona <TAB> cuando estoy en una transclusión, pero sí funciona si me salgo fuera de ella
Hacer que funcione también dentro

1.8.2. Proponer transclusion recursiva   project someday_20230330

Puedo hacerlo encima de org-transclusion
Hacer la transclusión recursiva, para exportar cosas como emacs.org.
Pillar los transclude (por regex debería de valer) y resolver el link (asumir que es por id, ahora que org roam va por id) y activar transclusión recursivamente en cada archivo
Esto se podría hacer con un TTL como el de los paquetes IP
Una opción interesante es ir hasta el nivel X como opción de usuario (es lo mismo)
También está interesante detectar los ciclos con un algoritmo

1.8.3. Transitividad

Es transitivo, pero no por defecto. Si C ← B ← A, entonces tienes que activar la transclusión en B primero para que la transclusión en A tenga los contenidos de C
Si no, por defecto A sólo transclude literalmente lo que hay en B

1.8.4. Link para refile con transclusion   project someday_20230330

Si lo empiezo a usar también puede estar interesante implementar
pero con transclusión en vez de con links
https://github.com/nobiot/org-transclusion/issues/14

1.8.5. Transcluir bloques de código con treesitter   project someday_20230330

Ahora creo que lo puedes hacer por rango de líneas, pero lo ideal sería por query de tree sitter
https://sr.ht/~wintershadows/tsquery/

1.8.6. Transformar un archivo en transclusión para poder editarlo

from orgparse import load
# El archivo tiene que tener antes el árbol completo copiado que quieres transcluir
file = "mlops_reasonable_scale.org"
root = load(file)
result = str(root[0]) + "\n" + "\n".join([ f"{'*'*a.level} {a.heading}\n#+transclude: [[id:{a.properties.get('ID')}]] :exclude-elements \"headline\" :only-contents :level {a.level}" for a in root[1:]])
with open(file, "w") as f:
    print(result, file=f)

También tengo el mismo problema de sincronización que en otros casos

1.8.7. Quitar el contenido del primer link

  • Hay una opción para hacer:

\****** [ [ idd:sdfasdf][Heading ] ]

[ [ idd:sdfasdf][Heading ] ]
No funciona porque filtrar el heading con org-transclusion-exclude-elements filtra todos los headings hijos.
De todas maneras es una buena estructura y se puede usar (más adelante tocar el código de org-transclusion)
Incluso para índices donde no hay ningún headline real viene bien para colapsar en orgzly
con :exclude-elements “headline” :only-contents :level 1 parece que funciona pero sólo para el primero

1.8.9. [New Package] roam-block: An all-purpose block-ref and block-embed implement in emacs.: emacs

https://www.reddit.com/r/emacs/comments/kltc3y/new_package_roamblock_an_allpurpose_blockref_and/
Parece que usa ids que no serían compatibles con orgzly estilo (asdfas-asdf-asdfasdf)

1.9. org-remark

1.9.1. CANCELLED Hacer un fork de org-remark para que se integre mejor con org-roam v1

Parece más simple el workaround y de todas maneras sólo afecta a org-roam v1
La función org-remark-highlight-save se llama siempre con argumento (buffer-file-name), pero eso hace que con org-roam v1 si tienes una nota fff y creas un xxx-notes, se confunde entre las dos
Se puede hacer algo de manera similar a lo que hace con los archivos, que pueda ser una función y una string, para que llame a ese heading fff-notes
También tiene otra cosa rara que es que pilla el nombre del archivo del heading, hay una asociación rara

1.9.2. Workarounds org-remark con org-roam

Por defecto para un archivo de roam fff te crea un archivo fff-notes.org con un headline fff. Hay que editarle el título para que los distinga org-roam → el título tiene que ser fff notes por ejemplo

1.10. Jupyter notebook con org mode

1.10.1. Replacing Jupyter Notebook with Org Mode

1.10.2. Replacing Jupyter with Orgmode :: Rohit Goswami — Reflections

1.10.3. Utilizar Jupytext

Exportarlos a un markdown, y luego sincronizar de alguna manera esos markdown con org mode (paso extra) con un pre-commit hook con pandoc o algo similar

1.11. org-reveal (Presentaciones)

1.11.1. Configurar bien org-reveal

1.11.1.1. Plugins

tiene la tira. Algunos necesitan lanzarlo desde node lo que explica por qué no me funcionan
https://github.com/christer79/reveal_countdown → este no me ha funcionado
https://github.com/stanleynguyen/reveal-run-in-terminal → este no lo he probado. Se puede editar código en la propia presentación?
En teoría ya está añadido en org-reveal: https://github.com/yjwen/org-reveal#executable-source-blocks

Estoy hay que quitarlo para que no interfiera con el css/js de reveal: #+SETUPFILE: home/julian.doom.d/org-html-themes/org/theme-readtheorg-local.setup
Esto se puede hacer así o por emacs nativo, probablemente soprte más cosas: #+REVEAL_PLUGINS: (highlight)

Esto se lo he tenido que poner para que me quepan muchas cosas por slide: #+REVEAL_INIT_OPTIONS: margin: 0.1, minScale:0.0, maxScale:2.5
Lo que puedes hacer es Ctrl+- en slides en las que tienes muchas cosas y funciona

(setq org-reveal-root "https://cdn.jsdelivr.net/npm/reveal.js")

;; Funciona infinitamente mejor con archivo local, le tienes que pasar la carpeta donde lo clones: #+REVEAL_ROOT: file:///home/julian/.local/share/reveal.js/
;; git clone https://github.com/hakimel/reveal.js ~/.local/share/reveal.js

(add-to-list 'org-structure-template-alist '("n" . "notes" )) ;; → esto no he conseguido que tire, en teoría es así?? En teoría expande <n[TAB] a un #+begin_notes #+end_notes, pero no sé si está utilizando yasnippet, pero ahí no sé meter nuevos snippets
1.11.1.2. Links
  • org-reveal
    Los links externos funcionan (a otros archivos org-mode)
    Los links internos hay que editarlos un poco y ya funcionan:
    20230811131106-data_science_standard.html#/slide-ID-7318483c-3eeb-4beb-a969-00f41f8b5c30 → este no funciona
    20230811131106-data_science_standard.html#ID-7318483c-3eeb-4beb-a969-00f41f8b5c30 → este ya sí
  • org-re-reveal
    Los links externos me dan error
    (wrong-type-argument number-or-marker-p nil) porque lo intenta interpretar como interno

1.13. pdf con js como medio dinámico? org mode y latex

https://github.com/cornerpirate/JS2PDFInjector
Por ejemplo se me ocurre para hacer diagramas en vez de hacerlos en python, que creo que latex tiene algo de eso
Puedes por ejemplo editar imágenes para recortarlas que viene bien, pero no puedes ejecutar código como sí que puedes con org mode
https://tug.ctan.org/macros/latex/contrib/animate/animate.pdf
https://gitlab.com/agrahn/animate

1.14. Should Notion Be Your Second Brain? | Notetaking App Ratings (ft. Thomas Frank) - YouTube

https://www.youtube.com/watch?v=50hWDN21ZC0

  1. Search
  2. Duplicate
    DRY applied to notes (transclusion, queries, templates)
    Org mode transclusion is lacking in speed and depth (nested transclusion doesn’t work)
  3. Access
    Access anywhere (mobile)
  4. Share
    Read only sharing (export to HTML)
    Permisions, see only a certain subtree per user
  5. Edit
    Creating your own text layouts (split vertically, horizontally) is hard in org, maybe with tables?
  6. Upgrade
    Scaling from first usage to advanced stuff, Notion is pretty generic so that it scales well
  7. Transfer
    No vendor lock-in, good way to export to share also
  8. Link
  9. Media
    Images, videos, handwriting
  10. Metadata
    When it was created, who created it, search
  11. Automation
    Sync highlights

1.14.1. https://fortelabs.co/blog/the-essential-requirements-for-choosing-a-notes-app-as-your-second-brain/

  1. Searchability: type in a few characters and see everything that matches, regardless of where it’s located
  2. Duplication: duplicate your files, either to back them up, or create a new version while retaining the original
  3. Access anywhere: keep files synchronized across devices, so you can access your files anywhere
  4. Shareability: share a file with a friend or collaborator without losing your own copy
  5. Editable: edit or change the content of your files, including the text, the formatting, the structure, and other elements
  6. Upgradability: add or enhance functionality to your notes over time, as new features come out
  7. Transferable: content can be moved from one place to another, through copy-and-paste for example
  8. Linking: you can add clickable links, either to other files, or to external websites
  9. Multimedia: save a wide variety of kinds of media, including text, images, videos, links, PDFs, and others
  10. Meta-data: many pieces of data about your notes, such as location, date, device, and size, can be recorded automatically by software
  11. Automation: certain kinds of content can be captured automatically, such as social media posts, emails, and web bookmarks

1.16. Anyone knows of an emacs package that provides the functionality of codetour?

Extensión en VSCode → puede servir para hacer cosas de organización en vez de código??
https://www.reddit.com/r/emacs/comments/m8q0r7/anyone_knows_of_an_emacs_package_that_provides/

1.16.1. DONE Gestión de contraseñas con pass

1.16.1.1. Tutorial pass
gpg --list-secret-keys --keyid-format=long
# sec   algorithm_or_number/61690A4ABCDFE59C
pass init <id de pgp>
pass insert secret_name
pass secret_name # decrypt with pass
gpg -d ~/.password_store/secret_name.gpg # decrypt with gpg

Author: Julian Lopez Carballal

Created: 2024-09-15 Sun 04:51