Notxor tiene un blog

Defenestrando la vida

org-roam en modo servidor

2020-10-29

Ya hablé en otro artículo sobre org-roam y hoy os lo traigo de nuevo. Desde aquél artículo inicial han pasado algunos meses y el continuo desarrollo que están poniendo en org-roam hace que haya evolucionado bastante, además de subsanar algunos problemas con los que me tropecé cuando empecé a utilizarlo hace algunos meses.

Como digo, el paquete ha madurado y han aparecido nuevas funcionalidades. Entre ellas tenemos un modo servidor que hace de org-roam una herramienta más visual y más moderna, si me permitís esa expresión. Hace tiempo que no me guío por el aspecto de las aplicaciones y todo lo he derivado hacia una existencia en texto plano que me permite trabajar hasta con el más mínimo dispositivo al que se le pueda enchufar un teclado decente. El aspecto moderno o gráfico no es una de mis prioridades, sin embargo, ¿qué pasa si trabajo con texto plano y tiene una interface gráfica agradable? Eso me está pasando con org-mode, con su modo de trabajo en texto plano, pero además proveen una asistencia gráfica mediante el paquete org-roam-server.

org-roam-server-completo.png

Las imágenes las he tomado de uno de los directorios de notas que utilizo para un proyecto que se va haciendo cada vez más complejo. Es un cajón de notas real. Así me aseguro de que los ejemplos visuales sean reales y no forzarlos inventando notas vacías. Como se puede apreciar en la imagen, casi no se pueden seguir las relaciones entre las distintas anotaciones en ese modo gráfico. Lo bueno es que pinchando y arrastrando cada nodo dibujado hace que los demás se muevan y cambien de posición. De esa manera podemos conseguir que el gráfico sea un poco más claro del que dibuja por defecto la herramienta. Pero vamos por partes.

Configuración

Estoy partiendo del hecho de que no tienes ya instalado org-roam. Si llevas un tiempo utilizándolo, seguro que ya encontraste este paquete adicional antes. También, quizá, debas enterarte un poco cómo va el asunto de la toma de notas con el método zettelkasten1. Si estás convencido de probarlo, primero tienes que instalar el paquete org-roam y después org-roam-server como es habitual:

M-x package-install RET org-roam-server RET

He hecho algunos cambios en la configuración de org-roam para ajustar este paquete. Por ejemplo he añadido una combinación de teclas para lanzar el servidor:

(global-set-key (kbd "C-c r b") 'org-roam)
(global-set-key (kbd "C-c r c") 'org-roam-capture)
(global-set-key (kbd "C-c r d") 'org-roam-doctor)
(global-set-key (kbd "C-c r f") 'org-roam-find-file)
(global-set-key (kbd "C-c r g") 'org-roam-graph)
(global-set-key (kbd "C-c r i") 'org-roam-insert)
(global-set-key (kbd "C-c r m") 'org-roam-mode)
(global-set-key (kbd "C-c r r") 'org-roam-find-ref)
(global-set-key (kbd "C-c r s") 'org-roam-server-mode)
(global-set-key (kbd "C-c r t") 'org-roam-buffer-toggle-display)

En el listado puedes ver todas las combinaciones de teclas que utilizo para tomar notas, y sólo cabe destacar desde el anterior artículo, la aparición de C-c r s para lanzar el servidor. Si volvemos a pulsar esa combinación, veremos un mensaje de org-mode-server disabled.

emacs-org-roam-server.png

En la imagen se muestra, ─abajo en la lista de procesos─, org-roam-server lanzado como un proceso httpd. Como ya me ha pasado alguna vez, este proceso puede interferir con el habitual uso del servidor web local que utilizo para probar la buena visualización de los artículos del blog antes de publicarlos. Ambos procesos intentan utilizar el mismo puerto 8080. Para solucionarlo, he añadido una configuración adicional tal que:

(setq org-roam-server-port 8000)

De esta manera, es posible levantar los dos procesos httpd de forma simultánea, org-roam-server en el puerto 8000 y el web local en 8080.

Como se puede observar, se mantiene nuestra querida interfaz de texto y podemos consultar las notas por su contenido, tener referencia de los enlaces que apuntan a ella y de aquellas notas a las que ésta apunta. Cualquier modificación que hagamos en ellas se refleja también de manera automágica en el servidor: la información en ambos modos es la misma, pero se presenta de manera diferente.

Saturados de notas

A poco complejo que sea el tema que estés trabajando2 la información mostrada de forma gráfica hace que nos perdamos en las múltiples conexiones, pero podemos filtrarlo de dos maneras.

Filtrado por nodos

Comenzaré por la botonera de la esquina superior derecha. El modo más simple es pulsar el botón File Viewer. Veremos que a la izquierda nos aparece un selector para poder buscar la nota que queramos:

org-roam-server-file-viewer.png

Como veis, la información es la misma que obtenemos en modo texto: el espacio grande reservado para la anotación y a la derecha vemos una lista de notas que enlazan a esa. Vale, para eso tenemos ya el modo texto en Emacs. Además no he conseguido aún poder modificar una nota desde este modo gráfico, ─aunque tenga un botón Edit bien visible─, pero eso es otro asunto.

El siguiente apartado en la botonera superior derecha es Buffer Network que lo que hace es mostrar los enlaces de un determinado archivo que podemos seleccionar en la lista desplegable de abajo a la izquierda:

org-roam-server-visor-nodo.png

A poco que seamos observadores veremos un selector numérico. Ese selector lo que hace es limitar las conexiones entre nuestro nodo seleccionado y otros. Por ejemplo, si incrementamos el selector para ver las etiquetas enlazadas de segundo nivel obtendríamos las siguientes conexiones:

org-roam-server-visor-nodo-incremento.png

Como podéis apreciar también, hay dos estilos de visualización: Dark Mode y Light Mode. Se puede elegir el que más os guste simplemente pinchando en el enlace que aparece en el centro de la parte superior de la página.

Y también, a poco que observemos, podemos ver que el tamaño de los círculos cambia de un nodo a otro. Cuantos más enlaces recibe una nota, más grande es el círculo que la representa. También vemos que hay distintos colores según las etiquetas que hayamos empleado y esto nos lleva al siguiente apartado.

Filtrado por etiquetas

También vemos en la parte superior derecha el botón Database Network que es el modo que está activado por defecto cuando arrancamos el servidor. Este modo nos muestra toda la base de datos, por defecto, pero también podemos filtrar toda esa información.

org-roam-excluir-etiquetas.png

En ese modo vemos el selector de la esquina inferior izquierda, que mostrará el mensaje Filter, y al lado hay un botón de color rojo que muestra Exclude. Si pinchamos en el botón veremos que cambiará a color verde con el mensaje Include. Con él podemos crearnos un filtro que incluya sólo los nodos con unas determinadas etiquetas, pero además que excluya otras. Cada etiqueta nos la mostrará en color rojo o verde, según esté excluida o incluida en la búsqueda. Así podemos establecer complejos filtros de información hasta tener en pantalla sólo unas pocas notas o incluso una o ninguna. A veces es interesante llegar a un filtro y que arroje una pantalla en blanco porque te hace pensar: hay un vacío en todo este barullo de notas, ¿Qué esperaba encontrar? Quizá me falta algo. Así he encontrado alguna laguna en la información, pero supongo que cada cual tendrá su estilo.

Conclusiones

El paquete org-roam se ha convertido en mi preferido para tomar notas y además de su potente interface de texto, nos proporciona un magnífico servidor gráfico para que visualicemos la información de maneras muy atractivas.

El otro día, hablando con un colega de profesión sobre el trabajo que estamos haciendo en un grupo de trabajo (valga la rebuznancia) sobre abuso infantil del COPPA3, le mostré estas mismas notas. Como era sólo visualizarlas un poco por encima arranqué el servidor y lo estuve manejando mientras hablábamos. Su pregunta fue: ¿cuánto cuesta el programa este de notas? Y a ver... es gratis, al final es gratis, pero necesita un esfuerzo extra para la gente que no está acostumbrada al texto plano.

Una herramienta tan vistosa casi que descuadra nuestro austero mundo de texto y llama la atención a quien no lo conoce. Puede ser un acicate para que otras personas se metan en este mundo de independencia real de nuestros datos y de la información que nosotros mismos generamos, de conseguir que ninguna corporación se apropie de ellos y en un cambio de versión nos chantajee4 para que nos dejemos los dineros en programas más nuevos que no necesitamos.

Nota al pie de página:

1

Puedes leer el artículo que enlazo en el primer párrafo de este artículo o buscar información por Internet. También puedes leer el artículo https://medium.com/voces-en-espa%C3%B1ol/zettelkasten-c%C3%B3mo-un-erudito-alem%C3%A1n-fue-tan-incre%C3%ADblemente-productivo-b16643e170cc

2

En las imágenes podéis ver que estoy utilizando las notas que necesito para un proyecto sobre abuso infantil.

3

Colegio Oficial de Profesionales de la Psicología de Aragón.

4

No deja de ser una forma admitida legalmente de un ataque ramsonware.

Categoría: emacs org-mode org-roam

Comentarios

Debido a algunos ataques mailintencionados a través de la herramienta de comentarios, he decidido no proporcionar dicha opción en el Blog. Si alguien quiere comentar algo, me puede encontrar en Mastodon y en Diaspora con el nick de Notxor.

También se ha abierto un grupo en Telegram, para usuarios de esa red.

Disculpen las molestias.