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 page
h
help new

man, manual

Show full manual
man

?, k, keys

Show the keys from last search result
?
k

m, map

Show current mapping
map

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".