Cover Image

Ich haben ja schon das eine oder andere Mal über das Tool Trilium geschrieben oder auch bei Konferenzen erzählt. Was mir noch fehlt ist eine bessere Einbettung von Diagrammen. Dazu hatte ich vor einer Weile ein Github Issue1 angelegt. Das Thema ist aber nicht ganz so einfach. Inzwischen gibt es in Trilium die Möglichkeit Diagramme via Mermaid2 einzubetten. Das ist eine neue tolle Funktion. Bei komplizierteren Diagrammen ist das für mich aber nicht nutzbar da es zu lange dauert die Diagramme in der Text-Syntax zu erstellen. In Version 0.52 wird Trilium zusätzlich excalidraw über einen neuen Node-Typ unterstützen. Das ist auch super um einfache Diagramme oder Zeichnungen zu erstellen. Für komplizierte Diagramme wie z.B. Netzwerkdiagramme, ist mir das einfach zu rudimentär.

Heute kam mir die Idee es mal mit der Funktion Open Note externally zu probieren. Damit ist möglich ein Note direkt in einem externen Editor zu öffnen. Ein Note kann in Trilium auch eine Datei sein, die dann in der internen sqlite Datenbank abgelegt ist.

Die Idee die ich jetzt hatte war eigene Datei-Extensions in meinem Linux zu registrieren die dann über den auf meinem Rechner installierten Draw.IO Client (Diagrams.net) direkt behandelt werden sollten.

Als Datei-Endungen wollte ich gerne *.drawio.png und *.drawio.svg registrieren.

Mime Type registieren

Mime-Types können unter Linux direkt in der Datei ~/.config/mimeapps.list angelegt werden. Die Datei ist für Überschreibungen von Nutzern zuständig. Für installierte Paket sollten aber (IMHO) die Überschreibungen über einzelne Dateien unter ~/.local/share/mime/packages stattfinden.

Aus diesem Grund habe ich die Datei ~/.local/share/mime/packages/drawio.xml mit folgendem Inhalt angelegt:

<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
    <mime-type type="application/vnd.jgraph.mxfile">
        <comment>Drawio Diagram</comment>
        <glob pattern="*.drawio" case-sensitive="true"/>
        <glob pattern="*.drawio.svg" case-sensitive="true"/>
        <glob pattern="*.drawio.png" case-sensitive="true"/>
    </mime-type>
</mime-info>

Der Mime-Type application/vnd.jgraph.mxfile wird von Draw.io bereits so definiert. Zumindest auf meinem Arch Linux mit dem installierten drawio-desktop AUR Paket.

Nachdem die Datei angelegt wurde, muss die lokale Mime-Datenbank aktualisiert werden.

update-mime-database ~/.local/share/mime

Das sollte es jetzt gewesen sein. Wenn die xdg-utils3 installiert sind, dann kann man nun prüfen ob der Mime-Type korrekt erkannt wird.

Legt euch dazu in Draw.io eine Datei an und speichert diese dann z.B. als test.drawio.svg.

xdg-mime query filetype test.drawio.svg

Wenn alles passt, sollte als Ausgabe application/vnd.jgraph.mxfile erscheinen.

Test in Trilium

In Trilium importieren wir in eine bestehendes Note einfach die erstellte Datei.

Wenn die Dateiendung .svg lautet, sollte Trilium die Datei als Bilddatei direkt anzeigen.

Nun öffnen wir die Datei über Open note externally aus dem Menü.

Danach sollte sich die Datei im externen Editor öffnen. Trilium legt die Datei im Temp-Verzeichnis ab und prüft nun ob die Datei extern verändert wurde.

Sobald ihr die Datei in Draw.IO modifiziert und diese dann auch speichert, sollte Trilium die Änderung sehen und ihr könnt die Datei dann in der sqlite Datenbank von Trilium aktualisieren.

Dazu drück man dann in Trilium auf Upload modified file.