Xtended Memory - Xemy
Menü
Einleitung
Hintergrund
Man kann sich einfach nicht alles merken. Es geht schlichtweg nicht. Befehlszeilen, Abläufe, Texte, ... Teils hat man lange recherchiert um endlich das gewünschte Ergebnis zu erhalten ... und dann? Wohin mit den Informationen? Manches braucht man relativ oft, manches vielleicht nie mehr ... oder doch?
So sammelten sich bei mir anfangs viele Textdateien, später setzte ich auf MoinWiki, dann DokuWiki, schlussendlich schrieb ich mein eigenes Tool. Dieses ist mittlerweile in der zweiten Generation und definitiv eines meiner wichtigsten Werkzeuge.
Kurzbeschreibung
Xemy speichert Texte, welche mit einer vereinfachten Creole-Wiki-Syntax erstellt werden. Diese Einträge werden dann in einem oder mehreren "Stores" gespeichert. Ein Store kann z.B. eine SQLite3-Datenbank, eine MariaDB-Datenbank oder auch ein Verzeichnis mit Textdateien sein. Die Verwaltung erfolgt hauptsächlich über ein Command-Line-Interface. Zum Bearbeiten können unterschiedliche Editoren verwendet werden, zur Ausgabe werden mehrere Styles und verschiedene Programme unterstützt.
Installation
Installation (als Root)
Xemy kann über mein privates Repository installiert werden. Dazu muss zuerst der GPG-Schlüssel heruntergeladen werden:
cd /etc/apt/trusted.gpg.d/
wget http://deb.mn77.de/mn77.archive.key.2022.gpg
Danach noch das Repository hinzufügen:
echo "deb http://deb.mn77.de/stable ./" >> /etc/apt/sources.list
Nun das Paketsystem aktualisieren und Xemy installieren:
apt update
apt install xemy
Starten
Als normaler Benutzer kann Xemy nun gestartet werden:
xemy
Dabei wird bereits alles initialisiert und Xemy ist sofort einsatzbereit.
Wer es noch einfacher möchte, kann sich z.B. ein Alias oder einen Link von 'x' zu 'xemy' anlegen (als Root):
ln -s /usr/bin/xemy /usr/local/bin/x
Danach sollte xemy mit einem einfachen 'x' aufgerufen werden können.
Einführung
Eintrag erstellen
Wenn Xemy läuft, können wir nun den ersten Eintrag anlegen. Dazu tippen wir kurz ein "n" oder "new" und schicken den Befehl mit 'Enter' ab.
new
Nun landen wir im Standard-Text-Editor und können dort den Eintrag verfassen. Zu beachten ist das "= " in der ersten Zeile, hinter dem der Seitentitel angefügt wird.
= Mein erster Eintrag
Hallo Xemy!
Der Rest kann frei bearbeitet werden. Die Formatierung ist dabei:
= Erste Überschrift
== Zweite Überschrift
=== Dritte Überschrift
==== Vierte Überschrift
' ' Zwei Leerzeichen am Anfang erzeugen einen Code-Block
**fett**
//kursiv//
__unterstrichen__
--durchgestrichen--
---- Horizontale Linie
Nach Bearbeiten und Beenden des Editors fragt Xemy noch, welche Tags wir dem neuen Eintrag geben wollen. Hier können mehrere Schlagwörter mit Leerzeichen getrennt eingegeben werden. Ggf. kann die Eingabe mit 'Enter' einfach beendet werden.
Suchen und Finden
Mit dem Befehl "a" oder "all" lassen sich nun alle Einträge auflisten.
all
Der Befehl "s" oder "search" durchsucht Titel und Inhalt nach den genannten Wörtern.
search foo bar
Der Befehl "f" oder "find" durchsucht nur den Titel und zeigt einen gefundenen Artigel gleich an.
find foo
Mit "t" oder "tag" lassen sich alle Einträge mit diesem Tag auflisten:
tag foo
Anzeigen
Für die einfachere Handhabung wird jedem Eintrag im Suchergebnis eine temporäre Nummer zugewiesen. So steht im Suchergebnis der jeweilige Schlüssel und daneben der Titel. Dieser Schlüssel besteht aus der Nummer des Stores (1-9) und einer fortlaufenden Nummer.
Zum Anzeigen eines Eintrags geben wir den entsprechende Schlüssel ein.
10
Dabei öffnet sich der Standard-Pager (z.B. less) mit der entsprechenden Seite.
Der Prompt
Der Prompt von Xemy hat 3 mögliche Zustände:
Kein Mapping
- >
Suchergebnis/Mapping vorhanden
? >
Eintrag eingemerkt
10>
Mit "?" kann jederzeit das letzte Suchergebnis angezeigt werden. Ist ein Eintrag eingemerkt, so kann die Nummer bei Befehlen entfallen.
Bearbeiten
Um einen Eintrag zu bearbeiten, verwenden wir "e" oder "edit". Hierzu muss die entsprechende Nummer angegeben werden:
? > edit 10
Ist der Eintrag im Prompt eingemerkt, reicht ein einfaches "edit":
10> edit
Hier landen wir wieder im Editor und können den Eintrag bearbeiten.
Beenden
Xemy kann mit folgenden Befehlen beendet werden:
q, quit, exit
STRG + d
Konfiguration
Zum Schluss werfen wir noch einen kurzen Blick in die Config-Datei. Diese finden wir unter "~/.config/xemy/default.conf" und sollte mehr oder weniger selbsterklärend sein.
editor ~/.config/xemy/default.conf
Ohne weitere Konfiguration werden eine SQLite3-Datenbank angelegt, sowie der Standard Pager und Editor verwendet.
Unter "[Stores]" lassen sich die jeweiligen Stores definieren. Hier 3 Beispiele dafür:
1 = SQLite3( "/home/foobar/.config/xemy/store.sqlite3" )
2 = MariaDB( "192.168.0.100", "user", "secretpass", "xemydb" )
3 = WikiDir( "/home/foobar/xemy" )
Abschluss
Dieses Tool ist bei mir mittlerweile nicht mehr wegzudenken. Ich hoffe dass alles so funktioniert wie es soll, Xemy gefällt und auch anderen die Arbeit am PC erleichtert.
Befehlsübersicht
Search
a, all [STORE]
List all pages. If an argument is given, show only the pages of this store.a
a 2
f, find [STORE] <...>
Find titles which matching all keywords.f foo bar
f 2 foo
F, Find [STORE] <...>
Find titles which matching any keywords.F foo bar
F 2 foo
last [STORE]
Search the last changed pages.
late 10
late 8 10
newest [STORE]
Search the newest created pages.
newest 10
newest 8 10
s, search [STORE] <...>
Search with matching all keywords.s foo bar
s 2 foo
S, Search [STORE] <...>
Search with matching any keywords.S foo bar
S 2 foo
top [STORE]
Search the most used pages.
top 10
top 8 10
x, trash [STORE]
Show trash. If an argument is given, show only the trash of this store.x
x 2
Tags
c, class <[+|-]TAG ...>
Classify page with these tags. Tags with leading '-' will be
removed, tags with optional '+' will be added.
c 8003 8009 foo bar
C, Class [[+|-]TAG ...]
Remove tags for this page. Tags with optional leading '-' will be
removed, tags with leading '+' will be added.
C 8003 foo bar
l, link
Link first tag to the second tag.
link foo bar
L, unlink
Remove the link from first tag to the second tag.
unlink foo bar
list
List all known and used tags.list
t, tag [STORE]
Search pages which are linked to all these tags.
t foo bar
T, Tag [STORE]
Search pages which are linked to one of these tags.
T foo bar
Page info
, show
Show page
8003
show 8003
changed
Show the last change time
changed 8003
created
Show the create time
created 8003
describe
Describe page (this is for debugging)
describe 8003
e, edit
Edit page
e 8003
E, Edit
Edit page with GUI-Editor
E 8003
hits
Show the amount of hits for this page
hits 8003
meta, info
Show the meta information of a page
info 8003
tags
Show the linked tags of this page
tags 8003
title
Show the title of the page
title 8003
Page admin
clone
Duplicate a page to the default write store.
clone 8003
combine
Combine two pages.
combine 8003 9014
cp, copy
Copy one or all pages to another store
copy 8003 2
copy 8 2
d, del
Delete single pages or all pages from a store. Single pages will
be moved to trash first. A second 'delete' will delete it finally.
d 8003
diff
Show the difference between to pages.
diff 8003 9014
Diff
Show the difference between to pages with GUI.
Diff 8003 9014
export [Directory]
Export pages or a complete store to the current or a selected
directory
export 8003
export 4 /tmp/store4
export 8003 8005 9
import [STORE]
Import one or more files to default or given store. Wildcards can
be used.
import foo.txt
import *.txt
import 3 A*.txt
mv, move
Move one or all pages to another store
move 8003 2
move 8 2
n, new [STORE]
Create new page. If an argument is given, the new page will be created in this store.n
n 2
N, New [STORE]
Create new page with GUI-Editor.N
N 2
u, undel
Undelete page(s) from trash.
u 8003
General
-
Clear mapping-
h, help [...]
Show command overview or command help pageh
help new
man, manual
Show full manualman
?, k, keys
Show the keys from last search result?
k
m, map
Show current mappingmap
q, quit, exit
Exit command line interface.q
exit
stores
Print a table with all configured stores.stores
v, version
Show version.version
X, clean [STORE]
Empty the trash of all stores or a single one.clean
X 2
Quellcode
Der Quellcode ist gehostet auf: https://www.gitlab.com/MN77/xemy
Lizenz
Xemy is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
by the Free Software Foundation, either version 3 of the License,
or (at your option) any later version.
Xemy is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty
of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Xemy. If not, see
On Debian systems, the complete text of the GNU General
Public License version 3 can be found in "/usr/share/common-licenses/GPL-3".