2019-07-23T19:00:00+02:00

Nextcloud Notes im Org mode editieren

Der Two-way Sync des kleinen Mannes

Eine der Apps, die im Lieferumfang von Nextcloud enthalten sind, ist Notes. Sie bietet nicht viel mehr als der Name sagt. man kann eine Notiz öffnen, Text eingeben und grundlegende Formatierungen in Markdown-Syntax ausführen. Wer mag, kann jeder Notiz einen Tag zuweisen, wodurch sich ein Ordner ergibt, in dem diese Notiz abgelegt wird. Diese Notizen werden als normale * .txt-Dateien im Dateisystem in einem Ordner namens Notes synchronisiert, einschließlich der Tag-Unterordner. Es ist ganz einfach, aber nützlich, wie ich in meinem Blogeintrag über das erstellen einer Einkaufsliste mit Org mode beschrieben habe .

Natürlich könnte man auch einfach eine dieser Notizen in Emacs öffnen, bearbeiten und wieder speichern. Aber manchmal möchte man einige Ihrer Gedanken in einer Handvoll dieser Notizen sortieren, Dann wäre es nützlich, alle diese Notizen in einer einzigen Org-Datei zu haben, mit einer Überschrift für jede Notiz und Unterbäumen für jedes Tag. Dafür habe ich dieses (sehr kleine) Skript gemacht.

#!/usr/bin/env python3
# coding: utf-8
from os import walk
f=[]
for (dirpath, dirnames, filenames) in walk("~/cloud/Notes"):
    print('* ' + dirpath.split('/')[-1].upper())
    for filename in filenames:
        if not filename[0]=='.':
            with open(dirpath + "/" + filename, 'r', encoding='UTF8') as f:
                text = f.readlines()
                if text:
                    print('** ' + text[0].rstrip() + '  [[file://' + dirpath + "/"
                        + filename + '][link]]')
                    print("#+BEGIN_SRC markdown :tangle " + dirpath + "/" + filename) 
                    for line in text:
                        print(line, end = '')
                    print()    
                    print("#+END_SRC") 

Es nimmt alle Dateien im Notes-Ordner und erstellt eine solche Org-Datei. Notizen ohne Tag stehen an erster Stelle, gefolgt von Teilbäumen für jedes Tag. Das Skript schreibt diesen Baum einfach nach stdout, sodass Sie ihn an jede gewünschte Datei pipen können. Der Einfachheit halber mache ich es stündlich aus der crontab, aber ich werde versuchen, es in systemd zu integrieren, damit sie jedes Mal neu erstellt wird, wenn sich eines der Notefiles ändert.

Die Magie findet in jeder Notiz statt. Anstatt nur den Inhalt jeder Notiz mit dem Text aus der Notizdatei zu füllen, habe ich ihn in einen Quellblock eingeschlossen:

* PERSONAL
** Bucket List
#+BEGIN_SRC markdown :tangle ~/cloud/Notes/personal/Bucket List.txt
Bucket List
===========

ToDo
----
Glasbodenboot fahren
Fallschirmsimulator fliegen
Zero-G Flug
Seeed auf der Waldbühne Berlin

Done
----
Atomium besichtigen

#+END_SRC

Da der Quellblock vom Typ Markdown ist, wird er mit dem Markdown-Renderer angezeigt, sodass Überschriften hervorgehoben, Links anklickbar usw. sind. Der Dateiname im Attribut : tangle ist der ursprüngliche Dateiname der Datei, in der die Notiz gespeichert ist. Mit dieser Funktion können alle diese Notizen mit einem einzigen org-tangle-file (Cc Cv t) Befehl im Org-Modus gespeichert werden. Ich habe sogar diesen Befehl an den after-save-hook gebunden, Jedes Mal, wenn ich meine Org Datei speichere, werden auch alle Notizen aktualisiert.

Ich nenne es gerne die Zwei-Wege-Synchronisation des kleinen Mannes.