╔═════════════════════════════════════════════════════════════════════╗
║ Notitzzettel                                                        ║
║ Samstag,  9. April 2022, 23:28                               inkeso ║
╚═════════════════════════════════════════════════════════════════════╝

Vorwort: Die Evoultion meiner Notizzettelverwaltung


sticknot.c
Am Anfang war die Textdatei. Notizen.txt. Die wurde dann im Laufe der Zeit etwas groß, Struktur musste her!

Und aus der Textdatei wurde ein Ordner. Jetzt wollte ich mir die Navigation vereinfachen, eine GUI musste her!

sticknot.c

Die Jahre vergingen und mit der Zettelsammlung wuchs auch der Wunsch nach ein wenig bling-bling. Ich wollte ein wenig Formatierung, also musste eine bessere GUI her!

sticknot.py
sticknot.py

Nichts gegen eigene Süppchen, aber wenn ich darüber nachdenke, was ich noch gerne haben möchte (Syntax-highlighting, Tabellen, funktionierende Querverweise, ...), sollte ich mir langsam eingestehen, daß Andere das Problem längst besser gelöst haben als ich. Ein "richtiges" Notizprogramm musste her!

Davon gibt es zahlreiche. Ich habe damals™ ein wenig rumprobiert und fand zuerst einmal TiddlyWiki charmant.
Seinerzeit noch eine einzelne HTML-Datei, die alles enthielt, inkl. der Notizen.
Die Pflege der Notizen war aber schnell zur Bonusaufgabe geworden, weit weg von der Einfachheit von Textdateien. Außerdem entwickelten sich Browser weiter und es wurde immer lästiger, das in der Form noch weiterzuverwenden. Ein neues Tool musste her!

Davon gibt es zahlreiche. Ich habe damals™ ein wenig rumprobiert und fand als nächstes CherryTree charmant.
Es hatte alles, was ich wollte, sogar Bilder waren fortan kein Problem mehr. Die Performance rockt, das Interface ist angenehm kompakt.
Einige Jahre war Cherrytree mein Notizklotzbegleiter der Wahl.

www.giuspen.com/cherrytree
CherryTree

Es ist kompakt, bietet tolle Funktionen und ist sehr schnell. Aber eins hat mich immer gestört: Alles liegt in einer einzelnen Datenbankdatei.
Das ist kein besonders nachhaltiges Format und außerdem muss zum synchronisieren der Notizen die gesamte DB transferiert werden, selbst wenn ich nur ein Wort ändere.

Ich schaue mich also ein weiteres Mal auf dem freien Markt um. Und finde... Zim. Zim ist ein großartiges Program, es kann alles was es soll, sogar noch ein wenig mehr (zum Beispiel ein Inhaltsverzeichnis für einzelne Seiten).
Außerdem benutzt es wieder einfache Textdateien mit Wiki-Markup. Es performt super und noch dazu ist es python geschrieben, so kann ich Kleinigkeiten nach meinem Gutdünken einfach anpassen.

Bis heute ist Zim mein Notizkumpel der Wahl.

zim-wiki.org
ZimWiki

Frühlingsliebe


Und dann, rundum glücklich mit Zim, begegne ich plötzlich Obsidian.

O hai
Statt Wiki-Syntax verwendet es Markdown, der Editor ist großartig, das Interface sehr sexy und prima anpassbar (CSS, s.u.) und obwohl es auf Electron basiert, performt es sehr gut und fühlt sich stellenweise sogar flüssiger an als Zim (vor allem in Codeblocks).
Natürlich muss ich noch gründlicher testen, aber der erste Flirt war überraschend heiß!
Junge, Junge, was mach ich hier bloß?! Electron! Closed Source¹! Bloated!
Aber es ist auch kostenlos für privat, sehr crossplatform (Electron hat nicht nur Nachteile), und neben AppImage und Flatpak ist es auch in den arch-repos.

Ich glaube, ich lasse mich mal auf eine Affaire ein. Aber zuvor muss ich noch ein paar Furunkel entfernen:

  1. Ich mag es nicht, wenn Programme ihre eigene Titelleiste verwenden. Das ist und bleibt Aufgabe des Windowmanagers.

  2. Ich würde gerne `Esc` drücken können um es zu beenden oder noch besser² in den Systray zu minimieren.

  3. Außerdem soll es ein Icon haben. Schlimm, daß ich sowas nachrüsten muss!

  4. Den mitgelieferten Updater/Launcher benötige ich nicht. Den wegzulassen spart nochmal ne Viertelsekunde

Ich kann zwar ein bisschen JS aber electron ist mir neu. Na mal schauen. Ich werde das erstmal in situ hacken und falls möglich später daraus ein Plugin machen.

Also laden wir erstmal das Paket und entpacken es zum weiteren Sezieren:
wget "https://github.com/obsidianmd/obsidian-releases/releases/download/v0.14.2/obsidian-0.14.2.asar.gz"
gunzip "obsidian-0.14.2.asar.gz"
asar extract "obsidian-0.14.2.asar" "obsidian_asar"
cd "obsidian_asar"

# Haggedi-hack in der main.js...
patch --binary -p2 < "../my-patches.diff"

# Eine index.js erstellen, um den Starter zu umgehen
# Die benötigt noch @electron/remote 2.0.4
# also noch node_modules aus der app.asar kopieren 
# oder npm --install "@electron/remote"

cd ..

# zum testen:
electron17 obsidian_asar

# oder gepackt:
asar pack obsidian_asar obsidian-own.asar
electron17 obsidian-own.asar


Dazu ein schniekes Theme (Minimal), ein paar Plugins (Advanced Tables, Hider, Minimal Theme Settings)
und ein wenig custom CSS und schon sieht das doch nach was aus.
Jetzt noch fix ein kurzes Skript zum Konvertieren des Markups und schon kann ich damit arbeiten:

Obsidian, pimped

Und jetzt ab in den Praxistest. Mal sehen



1: Quasi. Welche Electron-App ist schon wirklich closed-source...
2: Die Startzeit ist unter 2s, was OK ist, aber instant ist immer besser.