ubuntuusers.de

7. Juli 2017

DNSCrypt ist ein Tool, das einen Sicherheitsgewinn durch Verhinderung von Man-In-The-Middle-Angriffen bei DNS-Abfragen verspricht. Dieser Artikel, wenn auch schon älter, umreißt das Thema ganz gut.

Installation

DNSCrypt lässt sich unter Debian folgendermaßen installieren und aktivieren:

# apt install dnscrypt-proxy
# systemctl enable dnscrypt-proxy.service
Konfiguration

Nun kann man sich einen der, in der Datei /usr/share/dnscrypt-proxy/dnscrypt-resolvers.csv gelisteten, Server aussuchen und in die Datei /etc/dnscrypt-proxy/dnscrypt-proxy.conf eintragen, z.B.:

ResolverName ns0.dnscrypt

Man kann auch random eintragen, dann wird ein zufälliger Resolver aus der Liste gewählt, der über IPv4 verfügbar ist, DNSSEC unterstützt und nicht loggt:

ResolverName random

Damit auch der installierte Proxy zur Auflösung von DNS-Anfragen genutzt wird muss die Datei /etc/resolv.conf editiert werden:

# Use dnscrypt-proxy
nameserver 127.0.2.1
DNSCrypt starten

Nun kann kann der DNSCrypt-Proxy gestartet werden:

# systemctl start dnscrypt-proxy.service
Resolvers updaten und überprüfen
dnscrypt-update-resolvers.sh

Leider sind bei Debian Stable nach einer Weile die Resolver in der Datei /usr/share/dnscrypt-proxy/dnscrypt-resolvers.csv nicht mehr sehr aktuell. Das lässt sich mit dem Script dnscrypt-update-resolvers.sh beheben:

# curl https://github.com/jedisct1/dnscrypt-proxy/raw/master/contrib/dnscrypt-update-resolvers.sh.in -o /usr/local/bin/dnscrypt-update-resolvers.sh
# chmod + x /usr/local/bin/dnscrypt-update-resolvers.sh

In dem Script muss noch PKG_DATA_DIR am Anfang angepasst werden und schon kann man über das Script die Resolverliste updaten:

PKG_DATA_DIR="/usr/share/dnscrypt-proxy/"
resolvers-check.sh

Mit dem Script resolvers-check.sh kann man überprüfen welche Resolver der aktuellen Liste funktionstüchtig sind.

# curl https://github.com/jedisct1/dnscrypt-proxy/raw/master/contrib/resolvers-check.sh -o /usr/local/bin/resolvers-check.sh
# chmod +x /usr/local/bin/resolvers-check.sh

In der Datei muss bei RESOLVERS_LIST der richtige Pfad eingetragen werden. Bei dnscrypt-proxy aus den Debianquellen ist das dieser:

RESOLVERS_LIST=/usr/share/dnscrypt-proxy/dnscrypt-resolvers.csv

Nun kann man die Resolver überprüfen (Ausgabe gekürzt):

# resolvers-check.sh
+ adguard-dns-family - OK
+ adguard-dns - OK
- adguard-dns-family-ipv6 - Failed
Troubleshooting

Da der NetworkManager diese Datei bei Nutzung von DHCP überschreibt muss, wie im Arch-Wiki beschrieben, in der Datei /etc/NetworkManager/NetworkManager.conf die Zeile dns=none im Bereich [main] eingetragen werden.

Bei mir war die Datei /etc/resolv.conf ein Link auf /var/run/NetworkManager/resolv.conf und ich musste den Link entfernen damit DNSCrypt funktionierte:

# ll /etc/resolv.conf      
lrwxrwxrwx 1 root root 35 Jul  7 02:04 /etc/resolv.conf -> /var/run/NetworkManager/resolv.conf
# rm /etc/resolv.conf

Danach habe ich die Datei neu angelegt, den oben beschriebenen Eintrag eingefügt und die Datei für alle Nutzer lesbar gemacht:

# nano /etc/resolv.conf
# chmod 644 /etc/resolv.conf
# ll /etc/resolv.conf
-rw-r--r-- 1 root root 42 Jul  7 15:07 /etc/resolv.conf

Nach einem Neustart des NetworkManagers funktioniert auch die Namensauflösung mit selbigem.

Im verlinkten Beitrag aus dem Arch-Wiki ist auch erklärt, wie man dhcpcd und netctl davon abhält die Datei resolv.conf zu überschreiben.

Erfolg testen

Man kann lokal testen ob die Anfragen auch vom DNSCrypt-Proxy beantwortet werden:

$ dig debian.org txt

; <<>> DiG 9.10.3-P4-Debian <<>> debian.org txt
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44884
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;debian.org.            IN  TXT

;; AUTHORITY SECTION:
debian.org.     600 IN  SOA denis.debian.org. hostmaster.debian.org. 2017070811 1800 600 1814400 600

;; Query time: 192 msec
;; SERVER: 127.0.2.1#53(127.0.2.1)
;; WHEN: Sat Jul 08 09:32:22 CEST 2017
;; MSG SIZE  rcvd: 92

Die Zeile ;; SERVER: 127.0.2.1#53(127.0.2.1) zeigt, dass Anfragen durch DNSCrypt beantwortet werden.

Es gibt auch einen DNS Leak Test online.

[Update 2017-07-07]

Aufgrund dieses Kommentares habe ich den Server im Beispiel durch einen Server aus Island ersetzt, der DNSSEC unterstützt, nicht loggt und nicht zensiert:

ns0.dnscrypt.is,"ns0.dnscrypt.is in Reykjavík, Iceland","DNSSEC enabled, non-logging, uncensored. Sponsored by 1984 Hosting.","Reykjavík, Iceland",,https://dnscrypt.is,1,yes,yes,no,93.95.228.87,2.dnscrypt-cert.ns0.dnscrypt.is,EE41:6A83:451C:218F:37B2:B736:78C4:999F:7DE6:89D1:31D2:7866:7C8E:A8BB:1C95:B402,pubkey.ns0.dnscrypt.is

Ich habe auch die Konfiguration von DNSCrypt mit dem NetworkManager erweitern müssen.

[Update 2017-07-08]

Abschnitt "Erfolg testen" hinzugefügt.

[Update 2017-11-18]

Hinweis auf random und die Scripte dnscrypt-update-resolvers.sh und resolvers-check.sh vorgestellt.

6. Juli 2017

Mozillas neue Schriftart Zilla Slab ist ab sofort verfügbar und kann entweder heruntergeladen oder via Google Fonts genutzt werden.

Im Januar hat Mozilla seine neue visuelle Identität inklusive neuem Logo vorgestellt. Für das neue Mozilla-Logo wird die Schriftart Zilla Slab verwendet. Diese wurde von Mozilla in Auftrag gegeben und von Typotheque in den Niederlanden erstellt. Die Schriftart ist, wie man es von Mozilla nicht anders erwartet, Open Source und kann von jedem frei verwendet werden.

Die Schriftart kann über GitHub heruntergeladen werden. Zilla Slab wird in den Formaten OTF, TTF, WOFF sowie WOFF2 bereitgestellt. Alternativ kann die Schrift für die Verwendung auf Webseiten auch über Google Fonts eingebunden werden.

Verfügbar sind die folgenden Schriftstile: Light, Light Italic, Regular, Regular Italic, Medium, Medium Italic, Semi-Bold, Semi-Bold Italic, Bold sowie Bold Italic.

Zilla Slab Font

Zilla Slab ist nicht die erste frei verfügbare Schriftart von Mozilla. Seit nun etwas mehr als drei Jahren gibt es mit Fira Sans eine Schriftart, welche von Mozilla ursprünglich für Firefox OS in Auftrag gegeben worden war und von Carrois Apostrophe in Deutschland erstellt wird. Neben der regulären Fira Sans gibt es auch noch Fira Sans Condensed und Fira Sans Extra Condensed (jeweils 18 Schriftstile) sowie die Monospace-Variante Fira Mono (drei Schrifstile).

Der Beitrag Zilla Slab – neue Schriftart von Mozilla ab sofort verfügbar erschien zuerst auf soeren-hentzschel.at.

5. Juli 2017

Normalerweise macht man sich als Linux Benutzer selten Gedanken um das Dateisystem
und auch Dinge wie Defragmentierung gehören nicht zu dem, was einen interessiert.
Aber das Prüfen des Dateisystems kann durchaus interessant sein.

Ich beschreibe hier kurz das ext4 Dateisystem da es unter Ubuntu seit 9.04 genutzt wird.

ext4 gehört zu den Journaling Dateisystemen, das bedeutet es wird ein Journal aller Aktivitäten
geführt und wenn zwischenzeitlich der PC oder Server abstürzt dann wird einfach das Journal
geprüft und die Aktionen darin abgeschlossen oder rückgängig gemacht.
Trotz des Journals wird in regelmäßigen Abständen, abhängig von der Anzahl der Mounts und Zeit zwischen den Reboots ein gründlicher Dateisystemcheck durchgeführt.

Aber es gibt durchaus 2 Situationen die eine genaue Betrachtung wert sind:

1. Der Rechner läuft als Server und ich möchte beim Neustart nicht, dass entweder Zeit oder Anzahl der Mounts überschritten wird und ein umfangreiches fsck läuft. Je nach Größe des Dateisystems kann es durchaus länger dauern bis das System zur Verfügung steht.

Die Anzahl der Mounts und die Zeit die zwischen einen fsck vergeht kann man ändern:
tune2fs -c0 -i0 /dev/sda1
Setzt die Zeit und die Mountzahl auf unendlich, kurz…. das Dateisystem wird nie geprüft.
Ich setzte diesen Wert auf allen Servern und Desktops so, damit ich den Zeitpunkt des fsck selbst bestimmen kann. (Siehe Punkt 2)
-i steht für die Zeit zwischen den fsck, zb. -i 28d für alle 28 Tage , -i 8w für alle 8 Wochen.
-c steht für die Mountzahl, z.b. -c10 für alle 10 mountvorgänge.

2. Ich möchte beim Neustart ein manuelles fsck erzwingen. Für normale Partitionen die nicht eingehängt sind reicht ein: fsck.extfs -f /dev/sda1 für eine Überprüfung.
Bei einer Root-Partition ist es nicht so leicht. Zwar kann ich sie als Single-User als Read-Only ein-mounten, aber das ist sehr unzuverlässig.

Einfacher geht es so: touch /forcefsck (als root)

Beim nächsten Neustart weden alle Dateisysteme in der fstab geprüft. Immer wenn ich mal Zeit und Lust habe, nutze ich diese Funktion um die Rechner zu prüfen. So kann ich genau steuern wann es durchläuft und mich eine längere Bootzeit nicht stört.

Passman Logo

Passman ist einer Nextcloud Erweiterung, die direkt vom Nextcloud Team entwickelt wird. Ich möchte in diesem Artikel kurz auf den Entwicklungsstand und die Einrichtung von der App eingehen. Zur Frage, ob dass der Passwortmanager ist, werde ich mich nicht äußern, und jeder muss das einfach für sich selbst entscheiden.

Installation

Die Installation, erfolgt einfach über den “App Store” von Nextcloud.
Die App Store Seite, ist entsprechend hier zu finden.

Nutzung

Nachdem “starten” der App, kann man einen neuen Safe anlegen bzw. einen bestehenden öffnen.
Jetzt kann man den Safe mit Passwörter füllen, durch das klicken auf das klein Plus oben.

Passman

Bei der Erstellung der Passwörter, hat man mehrere Möglichkeiten die Felder mit Informationen zu füllen. Wichtig die Browser Apps funktionieren nur richtig, wenn man die URL für die Passwörter angibt.
Auch kann man schön Tags für die Passwörter verteilen, und so eine kleine Kategorisierung der Passwörter vornehmen.
Das generieren neuer Passwörter ist genauso möglicht, wie das angeben eines Ablaufdatums.
Zusätzlich können Dateien hinterlegt werden, wie z.B. die Rechnung für eine Lizen etc.
Eins meiner persönlichen Highlights, ist der integriert OTP Generator. So kann man sich jedes OTP Programm auf dem Handy oder den Yubikey sparen und kann alles in einem Programm hinterlegen.

Sicherheit

Die Passwörter werden in Safes gespeichert, man kann unendlich viele Safes anlegen, und diese Safes sind mit AES 256 Bit verschlüsselt.
Die Daten werden auf dem Server und auf dem Client verschlüsselt.
Zusätzlich ist es möglich über eine API, die aktuell echt dürftige dokumentiert ist, diese Daten abrufen.

Oder um es kurz mit den Worten der Entwickler zu beschreiben:

Browser

Es gibt aktuell Erweiterungen für den Firefox und den Chrome Browser.

Android

Auch eine Android App gibt es, diese befindet sich aktuell im Alpha Status, und außer Anzeigen der Passwörter, ist noch nicht mehr implimentiert.
Zu finden ist die App hier.

Fazit

Ich nutze jetzt bereits seit 3 Wochen Passman produktiv, und es hat bei mir KeePassX komplett ersetzt.
Ich bin sehr zufrieden, weil einer der Vorteil für mich auch ist, ich brauche nur einen Browser und nicht noch irgendwelche dritt Software auf irgendwelchen Rechner.
Keine Datenbanken die zusätzlich aktuell gehalten werden müssen nichts. Und wieder keine Daten die irgendwo ausgelagert sind, sondern alles bei mir aus meiner Hand.

Passman Logo

Passman ist einer Nextcloud Erweiterung, die direkt vom Nextcloud Team entwickelt wird. Ich möchte in diesem Artikel kurz auf den Entwicklungsstand und die Einrichtung von der App eingehen. Zur Frage, ob dass der Passwortmanager ist, werde ich mich nicht äußern, und jeder muss das einfach für sich selbst entscheiden.

Installation

Die Installation, erfolgt einfach über den “App Store” von Nextcloud.
Die App Store Seite, ist entsprechend hier zu finden.

Nutzung

Nachdem “starten” der App, kann man einen neuen Safe anlegen bzw. einen bestehenden öffnen.
Jetzt kann man den Safe mit Passwörter füllen, durch das klicken auf das klein Plus oben.

Passman

Bei der Erstellung der Passwörter, hat man mehrere Möglichkeiten die Felder mit Informationen zu füllen. Wichtig die Browser Apps funktionieren nur richtig, wenn man die URL für die Passwörter angibt.
Auch kann man schön Tags für die Passwörter verteilen, und so eine kleine Kategorisierung der Passwörter vornehmen.
Das generieren neuer Passwörter ist genauso möglicht, wie das angeben eines Ablaufdatums.
Zusätzlich können Dateien hinterlegt werden, wie z.B. die Rechnung für eine Lizen etc.
Eins meiner persönlichen Highlights, ist der integriert OTP Generator. So kann man sich jedes OTP Programm auf dem Handy oder den Yubikey sparen und kann alles in einem Programm hinterlegen.

Sicherheit

Die Passwörter werden in Safes gespeichert, man kann unendlich viele Safes anlegen, und diese Safes sind mit AES 256 Bit verschlüsselt.
Die Daten werden auf dem Server und auf dem Client verschlüsselt.
Zusätzlich ist es möglich über eine API, die aktuell echt dürftige dokumentiert ist, diese Daten abrufen.

Oder um es kurz mit den Worten der Entwickler zu beschreiben:

Browser

Es gibt aktuell Erweiterungen für den Firefox und den Chrome Browser.

Android

Auch eine Android App gibt es, diese befindet sich aktuell im Alpha Status, und außer Anzeigen der Passwörter, ist noch nicht mehr implimentiert.
Zu finden ist die App hier.

Fazit

Ich nutze jetzt bereits seit 3 Wochen Passman produktiv, und es hat bei mir KeePassX komplett ersetzt.
Ich bin sehr zufrieden, weil einer der Vorteil für mich auch ist, ich brauche nur einen Browser und nicht noch irgendwelche dritt Software auf irgendwelchen Rechner.
Keine Datenbanken die zusätzlich aktuell gehalten werden müssen nichts. Und wieder keine Daten die irgendwo ausgelagert sind, sondern alles bei mir aus meiner Hand.

In meinem letzten Artikel habe ich die Datei index.twig meines Twig-Themes erklärt. Jetzt ist die Datei record.twig an der Reihe. Diese ist teilweise identisch mit der index.twig.

{% include '_header.twig' %}
<div class="header"><h1><a href="{{ paths.hosturl }}">Fryboyter</a></h1></div>
    <div class="container">
        <div class="row"> 
            <div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
                    <h2>{{ record.title }}</h2>
                    {% if record.taxonomy is defined %}
                        {% for type, values in record.taxonomy %}
                            <div class="article-info">Veröffentlicht am {{ record.datepublish|localdate("%d. %B %Y") }} unter:
                        {% for link, value in values %}
                            <a href="{{ link }}">{{ value }}</a>{% if not loop.last %} & {% endif %}
                        {% endfor %}
                            | <a href="{{ record.link }}#isso-thread">Comments</a>
                        {% if user.id is defined %}
                        {% if user.id == 'X' %}
                            | <a href="{{ paths.bolt }}editcontent/entries/{{ record.id }}">Bearbeiten</a>
                        {% endif %}
                        {% endif %} 
                        {% endfor %}
                    {% endif %}</div>
                    {{ record.body }}                        
                    <p>Diese Artikel könnten auch interessant sein</p>
                    <ul>{% setcontent records = "entries/random/5" allowpaging %}
                    {% for record in records %}
                    <li><a href="{{ record.link }}">{{ record.title }}</a></li>
                    {% endfor %}</ul>
                    <section>
                        <h3>Kommentare</h3>
                        <section id="isso-thread"></section>
                    </section>
        </div> 
    </div>   
</div>
<div class="footer">{% include '_footer.twig' %}</div>

Den ersten Unterschied findet man in Zeile 14 bis 18. Hier wird als erstes geprüft, ob die Variable user.id definiert ist. Wenn dies der Fall ist erfolgt die Prüfung, ob der Nutzer die Nutzer-ID X hat. Wenn ja, wird die Zeile in der das Datum der Veröffentlichung, die Kategorien sowie die Kommentare angezeigt wird um einen weiteren Link erweitert mit dem man den betreffenden Beitrag ändern kann.

Zeile 22 bis 26 erstellt eine Liste von 5 zufälligen Artikeln, die eventuell für den Leser auch interessant sein könnten und gibt deren Titel aus die auf die einzelnen Artikel verlinken. Hier werden aktuell noch Artikel kategorieübergreifend angezeigt. Geplant habe ich hier, dass nur Artikel angezeigt werden, die den gleichen Kategorien zugeordnet sind, wie der aufgerufene Artikel.

Zeile 27 bis 30 bindet die Kommentarfunktion von Isso Comment ein.

Passman Logo

Passman ist einer Nextcloud Erweiterung, die direkt vom Nextcloud Team entwickelt wird. Ich möchte in diesem Artikel kurz auf den Entwicklungsstand und die Einrichtung von der App eingehen. Zur Frage, ob dass der Passwortmanager ist, werde ich mich nicht äußern, und jeder muss das einfach für sich selbst entscheiden.

Installation

Die Installation, erfolgt einfach über den "App Store" von Nextcloud.
Die App Store Seite, ist entsprechend hier zu finden.

Nutzung

Nachdem "starten" der App, kann man einen neuen Safe anlegen bzw. einen bestehenden öffnen.
Jetzt kann man den Safe mit Passwörter füllen, durch das klicken auf das klein Plus oben.

Passman

Bei der Erstellung der Passwörter, hat man mehrere Möglichkeiten die Felder mit Informationen zu füllen. Wichtig die Browser Apps funktionieren nur richtig, wenn man die URL für die Passwörter angibt.
Auch kann man schön Tags für die Passwörter verteilen, und so eine kleine Kategorisierung der Passwörter vornehmen.
Das generieren neuer Passwörter ist genauso möglicht, wie das angeben eines Ablaufdatums.
Zusätzlich können Dateien hinterlegt werden, wie z.B. die Rechnung für eine Lizen etc.
Eins meiner persönlichen Highlights, ist der integriert OTP Generator. So kann man sich jedes OTP Programm auf dem Handy oder den Yubikey sparen und kann alles in einem Programm hinterlegen.

Sicherheit

Die Passwörter werden in Safes gespeichert, man kann unendlich viele Safes anlegen, und diese Safes sind mit AES 256 Bit verschlüsselt.
Die Daten werden auf dem Server und auf dem Client verschlüsselt.
Zusätzlich ist es möglich über eine API, die aktuell echt dürftige dokumentiert ist, diese Daten abrufen.

Oder um es kurz mit den Worten der Entwickler zu beschreiben:

Browser

Es gibt aktuell Erweiterungen für den Firefox und den Chrome Browser.

Android

Auch eine Android App gibt es, diese befindet sich aktuell im Alpha Status, und außer Anzeigen der Passwörter, ist noch nicht mehr implimentiert.
Zu finden ist die App hier.

Fazit

Ich nutze jetzt bereits seit 3 Wochen Passman produktiv, und es hat bei mir KeePassX komplett ersetzt.
Ich bin sehr zufrieden, weil einer der Vorteil für mich auch ist, ich brauche nur einen Browser und nicht noch irgendwelche dritt Software auf irgendwelchen Rechner.
Keine Datenbanken die zusätzlich aktuell gehalten werden müssen nichts. Und wieder keine Daten die irgendwo ausgelagert sind, sondern alles bei mir aus meiner Hand.

4. Juli 2017

Im zweiten Teil meiner persönlichen PIM Konfiguration geht es um das kleine Python Programm todoman. Es ist nach dem Prinzip von KISS entwickelt und kommt auch wieder nur mit einer einzigen Konfigurationsdatei aus. todoman übernimmt die Darstellung von Aufgaben die in CalDav Daten enthalten sind, in einer aufgearbeiteten Darstellung im Terminal.

Installation

todoman wird auch mit pip installiert. Falls pip noch nicht installiert ist, kann es wie folgt installiert werden:

apt install python3-pip

todoman wird dann wie folgt installiert

pip3 install todoman

Konfiguration

Als erstes erstellen wir den benötigten Ordner für unsere Konfiguration:

mkdir -p ~/.config/todoman

Im nächsten Schritt legen wir die Konfiguration an:

vim ~/.config/todoman/todoman.config

Die Datei bekommt folgenden Inhalt:

[main]
path = ~/.calendars/*
date_format = %Y-%m-%d
default_list = Personal

Erläuterung

[main]
path = ~/.calendars/*
date_format = %Y-%m-%d
time_format = %H:%M
default_list = Personal
default_due = 48

path gibt den Ort aller Kalendar an, die für die ToDo Listen genutzt werden sollen. date_format gibt die Darstellung des Datums an, time_format gibt die Darstellung der Zeit an, default_list die Liste in der alle Aufgaben Standardmäßig zugewiesen werden und default_due gibt die Standard Stunden bis zu Erledigung an.

Weitere Einstellungen findet man hier.

1. Start

Das Programm wird über den Befehl todo in einem Terminal gestartet. Ohne Parameter werden alle Aufgaben in Form einer Liste ausgeben:

malte@DebPc:/$ todo
28  [ ]    2017-04-26 16:29  Aufgabe 3 @personal
27  [ ]    2017-04-26 16:29  Aufgabe 2 @personal
26  [ ]    2017-04-26 16:29  Aufgabe 1 @personal

Die erste Zahl gibt die eindeutige ID an, worüber die Aufgabe auch angesprochen wird, dann kommt die Datumszeitgruppe. Danach die Aufgabe und zum Schluss die Liste, in der die Aufgabe gelistet ist.

Eine neue Aufgabe kann wie folgt erstellt werden

todo new -l personal Aufgabe 3

Eine Aufgabe kann als erledigt markiert werden durch den Befehl:

todo done 28

Fazit

todoman ist ein wunderbares kleines Programm um im Terminal Aufgaben aufgearbeitet anzeigen zu lassen. Schnell sind neue Einträge erstellt und bearbeitet. Die Synchronisation der Daten erfoglt durch vdirsyncer.

Teil 5: Meine PIM Konfiguration (hier khard)

Im fünften Teil meiner persönlichen PIM Konfiguration geht es um das kleine Python Programm khard. Es ist nach dem Prinzip von KISS entwickelt und kommt auch wieder nur mit einer einzigen Konfigurationsdatei aus. khard übernimmt die Darstellung von Kontakten die in CardDav Daten enthalten sind, in einer aufgearbeiteten Darstellung im Terminal.

Installation

khard wird auch mit pip installiert. Falls pip noch nicht installiert ist, kann es wie folgt installiert werden:

apt install python3-pip

khard wird dann wie folgt installiert

pip3 install khard

Konfiguration

Als erstes erstellen wir den benötigten Ordner für unsere Konfiguration:

mkdir -p ~/.config/khard 

Im nächsten Schritt legen wir die Konfiguration an:

vim ~/.config/khard/khard.config

Die Datei bekommt folgenden Inhalt:

[addressbooks]
[[Book]]
path = ~/.contacts/

[general]
debug = no
default_action = list
editor = vim
merge_editor = vimdiff

[contact table]
display = last_name
group_by_addressbook = no
reverse = no
show_nicknames = no
show_uids = yes
sort = last_name

[vcard]
private_objects = Jabber, Skype, Twitter
preferred_version = 3.0
search_in_source_files = no
skip_unparsable = no

Erläuterung

[addressbooks]
[[Book]]
path = ~/.contacts/

Gibt an den Pfad in dem die vcf Dateien liegen.

[general]
debug = no
default_action = list
editor = vim
merge_editor = vimdiff

Gibt an mit welchem Editor die Kontakte bearbeitet werden sollen, welches Programm zum zusammenführen genutzt wird und was die Standardaktion beim Aufrufen vom Befehl khard ist.

[contact table]
display = last_name
group_by_addressbook = no
reverse = no
show_nicknames = no
show_uids = yes
sort = last_name

Weitere Einstellungsmöglichkeiten, zu denen ich glaube ich nicht viel sagen muss.

[vcard]
private_objects = Jabber, Skype, Twitter
preferred_version = 3.0
search_in_source_files = no
skip_unparsable = no

In diesem Teil werden wichtige Einstellungen zu den VCARDS festgelegt, die beim speichern erstellt werden. Version würde ich auf 3 lassen.

Nutzung

khard wird über den Befehl khard im Terminal aufgrufen, woraufhin die Kontakte in einer Liste ausgegeben werden. Mit khard –help kann man sich die verschiedenen Arten des Aufrufs anzeigen lassen:

usage: khard [-h] [-c CONFIG] [--debug] [--skip-unparsable] [-v]
             {list,ls,details,show,export,birthdays,bdays,email,phone,source,src,new,add,add-email,merge,modify,edit,ed,copy,cp,move,mv,remove,delete,del,rm,addressbooks,abooks}
             ...

positional arguments:
  {list,ls,details,show,export,birthdays,bdays,email,phone,source,src,new,add,add-email,merge,modify,edit,ed,copy,cp,move,mv,remove,delete,del,rm,addressbooks,abooks}
    list (ls)           list all (selected) contacts
    details (show)      display detailed information about one contact
    export              export a contact to the custom yaml format that is
                        also used for editing and creating contacts
    birthdays (bdays)   list birthdays (sorted by month and day)
    email               list email addresses
    phone               list phone numbers
    source (src)        edit the vcard file of a contact directly
    new (add)           create a new contact
    add-email           Extract email address from the "From:" field of an
                        email header and add to an existing contact or create
                        a new one
    merge               merge two contacts
    modify (edit, ed)   edit the data of a contact
    copy (cp)           copy a contact to a different addressbook
    move (mv)           move a contact to a different addressbook
    remove (delete, del, rm)
                        remove a contact
    addressbooks (abooks)
                        list addressbooks

optional arguments:
  -h, --help            show this help message and exit
  -c CONFIG, --config CONFIG
                        config file to use
  --debug               enable debug output
  --skip-unparsable     skip unparsable vcard files
  -v, --version         show program's version number and exit

Fazit

khard ist ein wunderbares kleines Programm um im Terminal Kontakte aufgearbeitet anzeigen zu lassen. Schnell sind neue Kontakte erstellt und bearbeitet. Die Synchronisation der Daten erfoglt durch vdirsyncer wie im zweiten Teil meiner PIM Reihe beschrieben wurde.

Teil 3: Meine PIM Konfiguration (hier khal)

Im zweiten Teil meiner persönlichen PIM Konfiguration geht es um das kleine Python Programm khal. Es ist nach dem Prinzip von KISS entwickelt und kommt auch wieder nur mit einer einzigen Konfigurationsdatei aus. khal übernimmt die Darstellung von CalDav Daten in einer aufgearbeiteten Darstellung im Terminal.

khal

Installation

khal wird auch mit pip installiert. Falls pip noch nicht installiert ist, kann es wie folgt installiert werden:

apt install python3-pip

khal wird dann wie folgt installiert

pip3 install khal

Konfiguration

Als erstes erstellen wir den benötigten Ordner für unsere Konfiguration:

mkdir -p ~/.config/khal

Im nächsten Schritt legen wir die Konfiguration an:

vim ~/.config/khal/config

Die Datei bekommt folgenden Inhalt:

[calendars]

 [[Privat]]
    path = ~/.calendars/personal/
    color = dark green

  [[Work]]
    path = ~/.calendars/work/
    color = dark magenta

[locale]
local_timezone= Europe/Berlin
default_timezone= Europe/Berlin
timeformat= %H:%M
dateformat= %d.%m.
longdateformat= %d.%m.%Y
datetimeformat= %d.%m. %H:%M
longdatetimeformat= %d.%m.%Y %H:%M

Erläuterung

[calendars]

  [[Privat]]
    path = ~/.calendars/personal/
    color = dark green

  [[Work]]
    path = ~/.calendars/work/
    color = dark magenta

In den doppeln Klammern wird der Name des Kalenders festgelegt. Der path gibt den Ordnernamen an, in dem die ics Dateien liegen für den entsprechenden Kalender. Zum Thema Farbe brauche ich glaube ich nicht viel zu sagen. So kann für jeden Kalender im Ordner ~/.calendars ein entsprechender Teil in der Konfiguration angelegt werden.

[locale]
local_timezone= Europe/Berlin
default_timezone= Europe/Berlin
timeformat= %H:%M
dateformat= %d.%m.
longdateformat= %d.%m.%Y
datetimeformat= %d.%m. %H:%M
longdatetimeformat= %d.%m.%Y %H:%M

Über den [locale] Tag gibt es die Möglichkeit, lokale Anpassung für Schreibweise und Darstellung von Zeit- und Datumsgruppen einzustellen.

1. Start

Das Programm wird über den Befehl khal in einem Terminal gestartet. Ohne Parameter wird khal einen Dreimonatskalender auf der linken Seite und die Termine für die nächsten 3 Tage auf der rechten Seite ausgeben.

khal besitzt mehere Parameter die das Startverhalten verändern. Eine der interessantesten ist khal interactive bzw. ikhal wo man mit den Pfeiltasten durch den Kalender navigieren kann und duch ein Klick auf die Termin, diesen auch bearbeiten kann.

Um ein neuen Eintrag anzlegen, muss man folgendes Schema einhalten:

khal new -a "Kalendername (siehe Config)" -l "Ort" 24.04.2017 10:00 24.04.2017 12:00 "Zusamenfassung" :: "Beschreibung"

Weitere Punkte sind der Hilfe zu entnehmen:

malte@DebPc:~/.config/khal$ khal new --help
Usage: khal new [OPTIONS] [START [END | DELTA] [TIMEZONE] [SUMMARY] [::
                DESCRIPTION]]

  Create a new event from arguments.

  START and END can be either dates, times or datetimes, please have a look
  at the man page for details. Everything that cannot be interpreted as a
  (date)time or a timezone is assumed to be the event's summary, if two
  colons (::) are present, everything behind them is taken as the event's
  description.

Options:
  -a, --calendar CAL
  -i, --interactive      Add event interactively
  -l, --location TEXT    The location of the new event.
  -g, --categories TEXT  The categories of the new event.
  -r, --repeat TEXT      Repeat event: daily, weekly, monthly or yearly.
  -u, --until TEXT       Stop an event repeating on this date.
  -f, --format TEXT      The format to print the event.
  -m, --alarms TEXT      Alarm times for the new event as DELTAs comma
                         separated
  --help                 Show this message and exit.

Fazit

khal ist ein wunderbares kleines Programm um im Terminal ClaDav Daten aufgearbeitet anzeigen zu lassen. Schnell sind neue Einträge erstellt und bearbeitet. Die Synchronisation der Daten erfoglt durch vdirsyncer.

Seit Freitag, dem 30. Juni ist metalhead.club online - meine eigene Mastodon-Instanz speziell (aber nicht nur!) für Metal-Fans. Zuvor hatte ich meinen Mastodon-Account auf dem Server von Milan. Aus einem spontanen Impuls heraus habe ich mich entschieden, zur Dezentralisierung des Netzwerks beizutragen und ab sofort eine eigene Instanz zu betreiben.

Wie erwartet war der Mastodon-Server schnell aufgesetzt: Domain bestellt, Mastodon via Docker installiert und konfiguriert, TLS-Zertifikate via Let’s Encrypt installiert, und der Server war fertig. Eine offizielle Installationsanleitung dazu findet ihr in der Mastodon-Dokumentation auf GitHub.

Für das Docker-Setup habe ich mich entschieden, weil ich Mastodon zunächst auf einem Server laufen lassen will, den ich sowieso schon in Betrieb habe. Bevor überhaupt klar ist, ob meine Instanz von weiteren Usern genutzt wird, investiere ich nur ungern in einen weiteren VPS. Sollte die Instanz mit der Zeit größer und ressourcenhungriger werden, werde ich den Mastodon-Server auf einen dedizierten, virtuellen Server verlegen. Der große Hype ist allerdings vorüber, sodass ich nicht davon ausgehe, dass meine Instanz stark wächst.

Wer Interesse an Mastodon hat oder seinen Account auf meine Instanz verlegen will, kann sich gerne einen Account auf metalhead.club anlegen. Außer einer E-Mail-Adresse müssen keine weiteren, persönlichen Daten angegeben werden.

Mich findet ihr übrigens als thomas@metalhead.club auf Mastodon und GNUSocial.

Mastodon Screenshot

Da ich gefragt wurde, wie ich das auf fryboyter.de verwendet Theme erstellt habe, habe ich mir gedacht ich mache mal eine Artikelreihe daraus in der ich die 9 Twig-Dateien erkläre.

Fangen wir mal mit der Datei index.twig an. Diese wird angezeigt, wenn man die Hauptseite aufruft.

{% include '_header.twig' %}
<div class="header"><h1><a href="{{ paths.hosturl }}">Fryboyter</a></h1></div>
<div class="container">
    <div class="row">
        <div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
            {% setcontent records = "entries/latest/5" allowpaging %}
                {% for record in records %}
                    <h2><a href="{{ record.link }}">{{ record.title }}</a></h2>
                        {% if record.taxonomy is defined %}
                            {% for type, values in record.taxonomy %}
                            <div class="article-info">Veröffentlicht am {{ record.datepublish|localdate("%d. %B %Y") }} unter:
                            {% for link, value in values %}
                            <a href="{{ link }}">{{ value }}</a>{% if not loop.last %} & {% endif %}
                            {% endfor %}
                            | <a href="{{ record.link }}#isso-thread">Comments</a> </div>
                            {% endfor %}
                        {% endif %}
                    {{ record.body }}
                    <hr/>
                {% endfor %}
            {{ pager('', 3, '_sub_mypager.twig') }}
        </div>
    </div>
</div>
<div class="footer">{% include '_footer.twig' %}</div>
</body>
</html>

Twig bietet die Möglichkeit bestimmte Bereich einer Seite in extra Dateien auszulagern. Mittels include kann man diese dann wie im Baukasten zusammensetzen. In diesem Fall wird in Zeile 1 somit die Datei _header.twig importiert.

In Zeile 2 wird mittels path.hosturl auf die Adresse der Seite verlinkt. In dem Fall also https://fryboyter.de/. Zieht man die Seite irgendwann man auf eine andere Domain um, braucht man hier die Adresse nicht händisch ändern.

In Zeile 6 werden die letzten 5 Einträge aus der Datenbank herausgefischt. Allowpaging ermöglicht es, dass man am Ende einer Seite auf weitere Seiten mit wiederrum 5 Artikeln wechseln kann.

Ab Zeile 7 wird definiert wie jeder einzelne Artikel angezeigt wird.

In Zeile 8 wird als erstes der Titel inkl. entsprechenden Link eines Artikels ausgegeben.

Zeile 9 bis 17 ist schon etwas aufwändiger. Hier wird erst einmal geprüft ob dem betreffende Artikel Taxonomien zugeordnet wurden. Auf dieser Seite wären das die Kategorieren wie osbn oder Allgemein. Wenn dem so ist, wird unter der Zeile der Artikelüberschrift das Datum der Veröffentlichung, gefolgt von den zugeordneten Kategorien angezeigt. Die Anzeige der Kategorien erfolgt hierbei in einer Schleife, so dass zwischen den Kategorien ein & angezeigt wird. Zum Schluss wird am Ende noch die Anzahl der vorhandenen Kommentare angezeigt und auf die Kommentarfunktion verlinkt (Zeile 18).

In Zeile 21 wird dann der Haupttext des Artikels angezeigt (ich arbeite nie mit Teasern).

Zeile 24 bindet die Datei _sub_mypager.twig ein. Hiermit wird am Ende einer Seite der Umschalter angezeigt mit dem man die Seiten wechseln kann.

Abschließend wird in Zeile 28 die Datei _footer.twig importiert.

Im vierten Teil meiner persönlichen PIM Konfiguration geht es um das kleine Python Programm todoman. Es ist nach dem Prinzip von KISS entwickelt und kommt auch wieder nur mit einer einzigen Konfigurationsdatei aus. todoman übernimmt die Darstellung von Aufgaben die in CalDav Daten enthalten sind, in einer aufgearbeiteten Darstellung im Terminal.

Installation

todoman wird auch mit pip installiert. Falls pip noch nicht installiert ist, kann es wie folgt installiert werden:

apt install python3-pip

todoman wird dann wie folgt installiert

pip3 install todoman

Konfiguration

Als erstes erstellen wir den benötigten Ordner für unsere Konfiguration:

mkdir -p ~/.config/todoman

Im nächsten Schritt legen wir die Konfiguration an:

vim ~/.config/todoman/todoman.conf

Die Datei bekommt folgenden Inhalt:

[main]
path = ~/.calendars/*
date_format = %Y-%m-%d
time_format = %H:%M
default_list = Personal
default_due = 48

Erläuterung

[main]
path = ~/.calendars/*
date_format = %Y-%m-%d
time_format = %H:%M
default_list = Personal
default_due = 48

path gibt den Ort aller Kalendar an, die für die ToDo Listen genutzt werden sollen. date_format gibt die Darstellung des Datums an, time_format gibt die Darstellung der Zeit an, default_list die Liste in der alle Aufgaben Standardmäßig zugewiesen werden und default_due gibt die Standard Stunden bis zu Erledigung an.

Weitere Einstellungen findet man hier.

1. Start

Das Programm wird über den Befehl todo in einem Terminal gestartet. Ohne Parameter werden alle Aufgaben in Form einer Liste ausgeben:

malte@DebPc:/$ todo
28  [ ]    2017-04-26 16:29  Aufgabe 3 @personal
27  [ ]    2017-04-26 16:29  Aufgabe 2 @personal
26  [ ]    2017-04-26 16:29  Aufgabe 1 @personal

Die erste Zahl gibt die eindeutige ID an, worüber die Aufgabe auch angesprochen wird, dann kommt die Datumszeitgruppe. Danach die Aufgabe und zum Schluss die Liste, in der die Aufgabe gelistet ist.

Eine neue Aufgabe kann wie folgt erstellt werden

todo new -l personal Aufgabe 3

Eine Aufgabe kann als erledigt markiert werden durch den Befehl:

todo done 28

Fazit

todoman ist ein wunderbares kleines Programm um im Terminal Aufgaben aufgearbeitet anzeigen zu lassen. Schnell sind neue Einträge erstellt und bearbeitet. Die Synchronisation der Daten erfoglt durch vdirsyncer.

Im fünften Teil meiner persönlichen PIM Konfiguration geht es um das kleine Python Programm khard. Es ist nach dem Prinzip von KISS entwickelt und kommt auch wieder nur mit einer einzigen Konfigurationsdatei aus. khard übernimmt die Darstellung von Kontakten die in CardDav Daten enthalten sind, in einer aufgearbeiteten Darstellung im Terminal.

Installation

khard wird auch mit pip installiert. Falls pip noch nicht installiert ist, kann es wie folgt installiert werden:

apt install python3-pip

khard wird dann wie folgt installiert

pip3 install khard

Konfiguration

Als erstes erstellen wir den benötigten Ordner für unsere Konfiguration:

mkdir -p ~/.config/khard 

Im nächsten Schritt legen wir die Konfiguration an:

vim ~/.config/khard/khard.conf

Die Datei bekommt folgenden Inhalt:

[addressbooks]
[[Book]]
path = ~/.contacts/

[general]
debug = no
default_action = list
editor = vim
merge_editor = vimdiff

[contact table]
display = last_name
group_by_addressbook = no
reverse = no
show_nicknames = no
show_uids = yes
sort = last_name

[vcard]
private_objects = Jabber, Skype, Twitter
preferred_version = 3.0
search_in_source_files = no
skip_unparsable = no

Erläuterung

[addressbooks]
[[Book]]
path = ~/.contacts/

Gibt an den Pfad in dem die vcf Dateien liegen.

[general]
debug = no
default_action = list
editor = vim
merge_editor = vimdiff

Gibt an mit welchem Editor die Kontakte bearbeitet werden sollen, welches Programm zum zusammenführen genutzt wird und was die Standardaktion beim Aufrufen vom Befehl khard ist.

[contact table]
display = last_name
group_by_addressbook = no
reverse = no
show_nicknames = no
show_uids = yes
sort = last_name

Weitere Einstellungsmöglichkeiten, zu denen ich glaube ich nicht viel sagen muss.

[vcard]
private_objects = Jabber, Skype, Twitter
preferred_version = 3.0
search_in_source_files = no
skip_unparsable = no

In diesem Teil werden wichtige Einstellungen zu den VCARDS festgelegt, die beim speichern erstellt werden. Version würde ich auf 3 lassen.

Nutzung

khard wird über den Befehl khard im Terminal aufgrufen, woraufhin die Kontakte in einer Liste ausgegeben werden. Mit khard –help kann man sich die verschiedenen Arten des Aufrufs anzeigen lassen:

usage: khard [-h] [-c CONFIG] [--debug] [--skip-unparsable] [-v]
             {list,ls,details,show,export,birthdays,bdays,email,phone,source,src,new,add,add-email,merge,modify,edit,ed,copy,cp,move,mv,remove,delete,del,rm,addressbooks,abooks}
             ...

positional arguments:
  {list,ls,details,show,export,birthdays,bdays,email,phone,source,src,new,add,add-email,merge,modify,edit,ed,copy,cp,move,mv,remove,delete,del,rm,addressbooks,abooks}
    list (ls)           list all (selected) contacts
    details (show)      display detailed information about one contact
    export              export a contact to the custom yaml format that is
                        also used for editing and creating contacts
    birthdays (bdays)   list birthdays (sorted by month and day)
    email               list email addresses
    phone               list phone numbers
    source (src)        edit the vcard file of a contact directly
    new (add)           create a new contact
    add-email           Extract email address from the "From:" field of an
                        email header and add to an existing contact or create
                        a new one
    merge               merge two contacts
    modify (edit, ed)   edit the data of a contact
    copy (cp)           copy a contact to a different addressbook
    move (mv)           move a contact to a different addressbook
    remove (delete, del, rm)
                        remove a contact
    addressbooks (abooks)
                        list addressbooks

optional arguments:
  -h, --help            show this help message and exit
  -c CONFIG, --config CONFIG
                        config file to use
  --debug               enable debug output
  --skip-unparsable     skip unparsable vcard files
  -v, --version         show program's version number and exit

Fazit

khard ist ein wunderbares kleines Programm um im Terminal Kontakte aufgearbeitet anzeigen zu lassen. Schnell sind neue Kontakte erstellt und bearbeitet. Die Synchronisation der Daten erfolgt durch vdirsyncer.

Im dritten Teil meiner persönlichen PIM Konfiguration geht es um das kleine Python Programm khal. Es ist nach dem Prinzip von KISS entwickelt und kommt auch wieder nur mit einer einzigen Konfigurationsdatei aus. khal übernimmt die Darstellung von CalDav Daten in einer aufgearbeiteten Darstellung im Terminal.

khal

Installation

khal wird auch mit pip installiert. Falls pip noch nicht installiert ist, kann es wie folgt installiert werden:

apt install python3-pip

khal wird dann wie folgt installiert

pip3 install khal

Konfiguration

Als erstes erstellen wir den benötigten Ordner für unsere Konfiguration:

mkdir -p ~/.config/khal

Im nächsten Schritt legen wir die Konfiguration an:

vim ~/.config/khal/config

Die Datei bekommt folgenden Inhalt:

[calendars]

 [[Privat]]
    path = ~/.calendars/personal/
    color = dark green

  [[Work]]
    path = ~/.calendars/work/
    color = dark magenta

[locale]
local_timezone= Europe/Berlin
default_timezone= Europe/Berlin
timeformat= %H:%M
dateformat= %d.%m.
longdateformat= %d.%m.%Y
datetimeformat= %d.%m. %H:%M
longdatetimeformat= %d.%m.%Y %H:%M

Erläuterung

[calendars]

  [[Privat]]
    path = ~/.calendars/personal/
    color = dark green

  [[Work]]
    path = ~/.calendars/work/
    color = dark magenta

In den doppeln Klammern wird der Name des Kalenders festgelegt. Der path gibt den Ordnernamen an, in dem die ics Dateien liegen für den entsprechenden Kalender. Zum Thema Farbe brauche ich glaube ich nicht viel zu sagen. So kann für jeden Kalender im Ordner ~/.calendars ein entsprechender Teil in der Konfiguration angelegt werden.

[locale]
local_timezone= Europe/Berlin
default_timezone= Europe/Berlin
timeformat= %H:%M
dateformat= %d.%m.
longdateformat= %d.%m.%Y
datetimeformat= %d.%m. %H:%M
longdatetimeformat= %d.%m.%Y %H:%M

Über den [locale] Tag gibt es die Möglichkeit, lokale Anpassung für Schreibweise und Darstellung von Zeit- und Datumsgruppen einzustellen.

1. Start

Das Programm wird über den Befehl khal in einem Terminal gestartet. Ohne Parameter wird khal einen Dreimonatskalender auf der linken Seite und die Termine für die nächsten 3 Tage auf der rechten Seite ausgeben.

khal besitzt mehere Parameter die das Startverhalten verändern. Eine der interessantesten ist khal interactive bzw. ikhal wo man mit den Pfeiltasten durch den Kalender navigieren kann und duch ein Klick auf die Termin, diesen auch bearbeiten kann.

Um ein neuen Eintrag anzlegen, muss man folgendes Schema einhalten:

khal new -a "Kalendername (siehe Config)" -l "Ort" 24.04.2017 10:00 24.04.2017 12:00 "Zusamenfassung" :: "Beschreibung"

Weitere Punkte sind der Hilfe zu entnehmen:

malte@DebPc:~/.config/khal$ khal new --help
Usage: khal new [OPTIONS] [START [END | DELTA] [TIMEZONE] [SUMMARY] [::
                DESCRIPTION]]

  Create a new event from arguments.

  START and END can be either dates, times or datetimes, please have a look
  at the man page for details. Everything that cannot be interpreted as a
  (date)time or a timezone is assumed to be the event's summary, if two
  colons (::) are present, everything behind them is taken as the event's
  description.

Options:
  -a, --calendar CAL
  -i, --interactive      Add event interactively
  -l, --location TEXT    The location of the new event.
  -g, --categories TEXT  The categories of the new event.
  -r, --repeat TEXT      Repeat event: daily, weekly, monthly or yearly.
  -u, --until TEXT       Stop an event repeating on this date.
  -f, --format TEXT      The format to print the event.
  -m, --alarms TEXT      Alarm times for the new event as DELTAs comma
                         separated
  --help                 Show this message and exit.

Fazit

khal ist ein wunderbares kleines Programm um im Terminal ClaDav Daten aufgearbeitet anzeigen zu lassen. Schnell sind neue Einträge erstellt und bearbeitet. Die Synchronisation der Daten erfoglt durch vdirsyncer.

Im dritten Teil meiner persönlichen PIM Konfiguration geht es um das kleine Python Programm khal. Es ist nach dem Prinzip von KISS entwickelt und kommt auch wieder nur mit einer einzigen Konfigurationsdatei aus. khal übernimmt die Darstellung von CalDav Daten in einer aufgearbeiteten Darstellung im Terminal.

khal

Installation

khal wird auch mit pip installiert. Falls pip noch nicht installiert ist, kann es wie folgt installiert werden:

apt install python3-pip

khal wird dann wie folgt installiert

pip3 install khal

Konfiguration

Als erstes erstellen wir den benötigten Ordner für unsere Konfiguration:

mkdir -p ~/.config/khal

Im nächsten Schritt legen wir die Konfiguration an:

vim ~/.config/khal/config

Die Datei bekommt folgenden Inhalt:

[calendars]

 [[Privat]]
    path = ~/.calendars/personal/
    color = dark green

  [[Work]]
    path = ~/.calendars/work/
    color = dark magenta

[locale]
local_timezone= Europe/Berlin
default_timezone= Europe/Berlin
timeformat= %H:%M
dateformat= %d.%m.
longdateformat= %d.%m.%Y
datetimeformat= %d.%m. %H:%M
longdatetimeformat= %d.%m.%Y %H:%M

Erläuterung

[calendars]

  [[Privat]]
    path = ~/.calendars/personal/
    color = dark green

  [[Work]]
    path = ~/.calendars/work/
    color = dark magenta

In den doppeln Klammern wird der Name des Kalenders festgelegt. Der path gibt den Ordnernamen an, in dem die ics Dateien liegen für den entsprechenden Kalender. Zum Thema Farbe brauche ich glaube ich nicht viel zu sagen. So kann für jeden Kalender im Ordner ~/.calendars ein entsprechender Teil in der Konfiguration angelegt werden.

[locale]
local_timezone= Europe/Berlin
default_timezone= Europe/Berlin
timeformat= %H:%M
dateformat= %d.%m.
longdateformat= %d.%m.%Y
datetimeformat= %d.%m. %H:%M
longdatetimeformat= %d.%m.%Y %H:%M

Über den [locale] Tag gibt es die Möglichkeit, lokale Anpassung für Schreibweise und Darstellung von Zeit- und Datumsgruppen einzustellen.

1. Start

Das Programm wird über den Befehl khal in einem Terminal gestartet. Ohne Parameter wird khal einen Dreimonatskalender auf der linken Seite und die Termine für die nächsten 3 Tage auf der rechten Seite ausgeben.

khal besitzt mehere Parameter die das Startverhalten verändern. Eine der interessantesten ist khal interactive bzw. ikhal wo man mit den Pfeiltasten durch den Kalender navigieren kann und duch ein Klick auf die Termin, diesen auch bearbeiten kann.

Um ein neuen Eintrag anzlegen, muss man folgendes Schema einhalten:

khal new -a "Kalendername (siehe Config)" -l "Ort" 24.04.2017 10:00 24.04.2017 12:00 "Zusamenfassung" :: "Beschreibung"

Weitere Punkte sind der Hilfe zu entnehmen:

malte@DebPc:~/.config/khal$ khal new --help
Usage: khal new [OPTIONS] [START [END | DELTA] [TIMEZONE] [SUMMARY] [::
                DESCRIPTION]]

  Create a new event from arguments.

  START and END can be either dates, times or datetimes, please have a look
  at the man page for details. Everything that cannot be interpreted as a
  (date)time or a timezone is assumed to be the event's summary, if two
  colons (::) are present, everything behind them is taken as the event's
  description.

Options:
  -a, --calendar CAL
  -i, --interactive      Add event interactively
  -l, --location TEXT    The location of the new event.
  -g, --categories TEXT  The categories of the new event.
  -r, --repeat TEXT      Repeat event: daily, weekly, monthly or yearly.
  -u, --until TEXT       Stop an event repeating on this date.
  -f, --format TEXT      The format to print the event.
  -m, --alarms TEXT      Alarm times for the new event as DELTAs comma
                         separated
  --help                 Show this message and exit.

Fazit

khal ist ein wunderbares kleines Programm um im Terminal ClaDav Daten aufgearbeitet anzeigen zu lassen. Schnell sind neue Einträge erstellt und bearbeitet. Die Synchronisation der Daten erfoglt durch vdirsyncer.

Im zweiten Teil meiner persönlichen PIM Konfiguration geht es um das kleine Python Programm vdirsyncer. Es ist nach dem Prinzip von KISS entwickelt und kommt auch wieder nur mit einer einzigen Konfigurationsdatei aus. vdirsyncer übernimmt die Synchronisation von CalDav und CardDav Daten, die wir für Teil 3 und Teil 4 meiner PIM Konfiguration benötigen.

Installation

Auch hier ist die Installation wieder ziemlich einfach, zuerst benötigen wir aber das PIP Python Paket, das wie folgt installiert wird:

apt install python3-pip

Nach der erfolgreichen Installation von PIP installieren wir jetzt vdirsyncer:

pip3 install vdirsyncer

PIP kümmert sich auch um die Abhänigkeiten.

Konfiguration

Als erstes erstellen wir die benötigten Ordner für unsere Konfiguration:

mkdir ~/.vdirsyncer
mkdir ~/.contacts
mkdir ~/.calendars

Im nächsten Schritt legen wir die Konfiguration an:

vim ~/.vdirsyncer/config

Die Datei bekommt folgenden Inhalt:

[general]
status_path = "~/.vdirsyncer/status/"

[pair my_contacts]
a = "my_contacts_local"
b = "my_contacts_remote"
collections = ["from a", "from b"]
conflict_resolution = "b wins"

[storage my_contacts_local]
type = "filesystem"
path = "~/.contacts/"
fileext = ".vcf"

[storage my_contacts_remote]
type = "carddav"

url = ""
username = ""
password = ""

[pair my_calendars]
a = "my_calendars_local"
b = "my_calendars_remote"
collections = ["from a", "from b"]
metadata = ["color"]

[storage my_calendars_local]
type = "filesystem"
path = "~/.calendars/"
fileext = ".ics"

[storage my_calendars_remote]
type = "caldav"

url = ""
username = ""
password = ""

Erläuterung

[general]
status_path = "~/.vdirsyncer/status/"

In diesem Pfad werden alle Statusmeldung von vdirsyncer abgelegt. Ohne Angabe dieses Pfads lässt sich das Programm nicht starten. Wichtig, der Ordner status darf nicht manuell erstellt werden


[pair my_contacts]
a = "my_contacts_local"
b = "my_contacts_remote"
collections = ["from a", "from b"]
conflict_resolution = "b wins"

---
[pair my_calendars]
a = "my_calendars_local"
b = "my_calendars_remote"
collections = ["from a", "from b"]
metadata = ["color"]

In diesem Teil der Konfiguration erstellen wir die zwei Speicher (a / b) für die Kontakte bzw. Kalender. Zusätzlich sagen wir vdirsyncer im Falle eine Konfilkts gewinnt der Server mit seinen Daten. Beim Kalender wollen wir zusätzlich noch die Farben mit herunterladen.


[storage my_contacts_local]
type = "filesystem"
path = "~/.contacts/"
fileext = ".vcf"

---

[storage my_calendars_local]
type = "filesystem"
path = "~/.calendars/"
fileext = ".ics"

Dieser Teil der Konfiguration legt fest in welchem Pfad und in welchem Format die Daten gespeichert werden.


[storage my_contacts_remote]
type = "carddav"

url = ""
username = ""
password = ""

---

[storage my_calendars_remote]
type = "caldav"

url = ""
username = ""
password = ""

Dieser Teil gibt den Typ der Synchronisation an sowie Pfad (Owncloud, Nextcloud) und Zugangsdaten fest.

1. Start

In einem Terminal führen wir als erstes den folgenden Befehlt aus:

vdirsyncer discover

Jetzt wird der Remote Pfad erkundet, alle Kontakte und Kalender erkannt. Im folgenden wird gefragt ob für die Kalender jeweils ein Ordner angelegt werden soll, alles mit y bestätigen. Nachdem erfolgreich abgeschloss wurden, starten wir die Synchronisation mit dem Befehl:

vdirsyncer sync

Cron Job

Damit unsere Daten regelmäßig synchronisiert werden, und wir nicht immer manuell den Synchronisationsprozess starten müssen, erstellen wir einen Cron Job:

crontab -e

Am Ende fügen wir folgende Zeile an:

*/30 * * * * /usr/local/bin/vdirsyncer sync > /dev/null

Somit werden unsere Daten alle 30 Minuten aktualisiert.

Fazit

vdirsyncer ist ein wunderbares kleines Programm zum Synchronisieren von Kalendern und Kontakten. Durch die Bereitstellung der Daten in den entsprechenden Formaten, ics und vcf, können auch anderen Programme diese Daten nutzen, die keine Synchronisation von CalDav oder CardDav Quellen anbieten.

Jeder hat natürlich sein lieblings Setup, wenn es um die persönlichen Informationen geht. Ob es Thunderbird oder Outlook oder oder oder ist. Ich bin ein ziemlicher Freund von Anwendungen die in Konsolen laufen, weil sie wenige Abhänigkeiten haben und eigentlich auf allen Distributionen sauber laufen. Zusätzlich reicht das kopieren von einer Konfigurationsdatei und selbst auf entfernten Rechnern über SSH kann man wunderbar damit arbeiten.

So habe ich im folgenden beschloßen, auch auf Wunsch einger Leser, mein persönliches PIM Setup euch mal vorzuführen. Dazu wird es mehrere Teile geben, des 1. Teil wird sich mit meinem Jabber Programm, mcabber, beschäftigen.

Installation

Die Installation unter Debian/Ubuntu ist ziemlich einfach:

apt install mcabber

Konfiguration

Die Hauptkonfigurationsdatei von mcabber ist ~/.mcabber/muttrc dazu erstellen wir als erstes den Ordner ~/.mcabber und zusätzlich den Ordner otr für die OTR Fingerprint

mkdir -p ~/.mcabber/otr

Wir erstellen eine Konfigurationsdatei:

vim ~/.mcabber/mcabberrc

Die Datei bekommt folgenden Inhalt

set jid = 
set password = 

set resource = mcabber 
set priority = 3
set ignore_self_presence = 1
set tls = 1

set nickname = Nickname 
set muc_auto_whois = 1

#Rechtschreinkontrolle
set spell_enable = 1
set spell_lang = de_DE en_US
set spell_encoding = UTF-8

set cmdhistory_lines = 250
set logging_ignore_status = 1
set max_history_blocks = 8
set muc_print_status = 1 

set message_autoaway = Auto-away (idle)
set escdelay = 50
set color_timestamp: blue

#OTR aktivieren und 
set otr = 1
set otr_dir = "~/.mcabber/otr/"
otrpolicy default opportunistic 

#PGP (Ich empfehle es nur zu aktieren wenn OTR deaktiviert ist)
#set pgp = 1
#set pgp_private_key = "KEY ID"

#Shortcuts für den Chat
alias me = say /me
alias online   = status online
alias away     = status away
alias dnd      = status dnd
alias notavail = status notavail

bind 17 = roster unread_next
bind 24 = roster alternate
bind 269 = roster toggle_offline
bind 276 = roster toggle
bind 521 = buffer up
bind 514 = buffer down

1. Start

Nachdem die Konfiguration erstellt wurde, kann man einfach mcabber mit dem Befehl mcabber starten. Wenn alles richtig eingestellt wurde, verbindet sich der Client mit dem Server. Benutzt der Server ein selbstsigniertes Zertifikat und es kommt zu SSL/TLS Problem, in der Konfiguration folgende Option setzen

set ssl_ignore_checks = 1

Mcabber_ChatFenster

Links seht ihr eure MUC bzw. Kontaktliste, rechts das Chatfenster. Zusätzlich findet ihr unten ein Loging Fenster das die wichtigsten Informationen anzeigt.

Mit dem Bild Up Bild Down Tasten könnt ihr in der Kontaktliste navgieren und durch das drücken von Enter in den entsprechenden Chat wechseln.

Jetzt einfach Nachricht eintippen, Enter drücken und schon habt ihr eure erste Nachricht mit Mcabber gesendet.

Bedienung

Die Bedienung von Mcabber findet mit Slash Befehlen statt, die alle in der Man Page zu finden sind, hier nur die wichtigsten:

Befehl Bedeutung
/help Hilfe
/roster show_offline Offline Kontakte anzeigen
/status aktuellen Status anzeigen bzw. setzen
/add jemand@jabber.server.com Jemand Jemand als Kontakt mit dem Nickname Jemand hinzufügen
/room join conf@confernce.jabber.de Muc betreten
/room names Konferenzteilnehmer anzeigen
/otr start OTR starten
/quit mcabber beenden

Omemo

Mcabber unterstützt zur Zeit kein Omemo. Es gibt ein aktuellen Issue dafür (hier) doch leider hat noch kein Entwickler sich zu diesem Punkt geäußert. Ich hoffe jedoch, dass das noch passieren wird.

Themes

mcabber unterstützt “Themes”, hierzu ist zu beachten, dass das Terminal in dem mcabber gestartet wird, diese Funktion auch unterstützt, was zum Beispiel der Fall bei rxvt ist.

solarized

Eine sehr schöne theme ist solarized: solarized_mcabber

Dazu einfach am Ende der Konfiguration folgendes einfügen:

set color_background   = 234 
set color_general      = 244
set color_info         = 240
set color_msgin        = 166
set color_msgout       = 64
set color_msghl        = 136
set color_bgstatus     = 235
set color_status       = 166
set color_roster       = 240
set color_bgrostersel  = 235
set color_rostersel    = 166
set color_rosterselmsg = 136
set color_rosternewmsg = 136

# vim:set ft=conf:

Fazit

Ich benutze den mcabber sehr gerne, natürlich kann das Programm noch viel mehr, wenn ihr noch fragt habt, dann added michdoch einfach in Jabber, maltekiefer@trashserver.net oder findet mich im MUC: bloggeflüster@conference.trashserver.net

Im zweiten Teil meiner persönlichen PIM Konfiguration geht es um das kleine Python Programm vdirsyncer. Es ist nach dem Prinzip von KISS entwickelt und kommt auch wieder nur mit einer einzigen Konfigurationsdatei aus. vdirsyncer übernimmt die Synchronisation von CalDav und CardDav Daten, die wir für Teil 3 und Teil 4 meiner PIM Konfiguration benötigen.

Installation

Auch hier ist die Installation wieder ziemlich einfach, zuerst benötigen wir aber das PIP Python Paket, das wie folgt installiert wird:

apt install python3-pip

Nach der erfolgreichen Installation von PIP installieren wir jetzt vdirsyncer:

pip3 install vdirsyncer

PIP kümmert sich auch um die Abhänigkeiten.

Konfiguration

Als erstes erstellen wir die benötigten Ordner für unsere Konfiguration:

mkdir ~/.vdirsyncer
mkdir ~/.contacts
mkdir ~/.calendars

Im nächsten Schritt legen wir die Konfiguration an:

vim ~/.vdirsyncer/config

Die Datei bekommt folgenden Inhalt:

[general]
status_path = "~/.vdirsyncer/status/"

[pair my_contacts]
a = "my_contacts_local"
b = "my_contacts_remote"
collections = ["from a", "from b"]
conflict_resolution = "b wins"

[storage my_contacts_local]
type = "filesystem"
path = "~/.contacts/"
fileext = ".vcf"

[storage my_contacts_remote]
type = "carddav"

url = ""
username = ""
password = ""

[pair my_calendars]
a = "my_calendars_local"
b = "my_calendars_remote"
collections = ["from a", "from b"]
metadata = ["color"]

[storage my_calendars_local]
type = "filesystem"
path = "~/.calendars/"
fileext = ".ics"

[storage my_calendars_remote]
type = "caldav"

url = ""
username = ""
password = ""

Erläuterung

[general]
status_path = "~/.vdirsyncer/status/"

In diesem Pfad werden alle Statusmeldung von vdirsyncer abgelegt. Ohne Angabe dieses Pfads lässt sich das Programm nicht starten. Wichtig, der Ordner status darf nicht manuell erstellt werden


[pair my_contacts]
a = "my_contacts_local"
b = "my_contacts_remote"
collections = ["from a", "from b"]
conflict_resolution = "b wins"

---
[pair my_calendars]
a = "my_calendars_local"
b = "my_calendars_remote"
collections = ["from a", "from b"]
metadata = ["color"]

In diesem Teil der Konfiguration erstellen wir die zwei Speicher (a / b) für die Kontakte bzw. Kalender. Zusätzlich sagen wir vdirsyncer im Falle eine Konfilkts gewinnt der Server mit seinen Daten. Beim Kalender wollen wir zusätzlich noch die Farben mit herunterladen.


[storage my_contacts_local]
type = "filesystem"
path = "~/.contacts/"
fileext = ".vcf"

---

[storage my_calendars_local]
type = "filesystem"
path = "~/.calendars/"
fileext = ".ics"

Dieser Teil der Konfiguration legt fest in welchem Pfad und in welchem Format die Daten gespeichert werden.


[storage my_contacts_remote]
type = "carddav"

url = ""
username = ""
password = ""

---

[storage my_calendars_remote]
type = "caldav"

url = ""
username = ""
password = ""

Dieser Teil gibt den Typ der Synchronisation an sowie Pfad (Owncloud, Nextcloud) und Zugangsdaten fest.

1. Start

In einem Terminal führen wir als erstes den folgenden Befehlt aus:

vdirsyncer discover

Jetzt wird der Remote Pfad erkundet, alle Kontakte und Kalender erkannt. Im folgenden wird gefragt ob für die Kalender jeweils ein Ordner angelegt werden soll, alles mit y bestätigen. Nachdem erfolgreich abgeschloss wurden, starten wir die Synchronisation mit dem Befehl:

vdirsyncer sync

Cron Job

Damit unsere Daten regelmäßig synchronisiert werden, und wir nicht immer manuell den Synchronisationsprozess starten müssen, erstellen wir einen Cron Job:

crontab -e

Am Ende fügen wir folgende Zeile an:

*/30 * * * * /usr/local/bin/vdirsyncer sync > /dev/null

Somit werden unsere Daten alle 30 Minuten aktualisiert.

Fazit

vdirsyncer ist ein wunderbares kleines Programm zum Synchronisieren von Kalendern und Kontakten. Durch die Bereitstellung der Daten in den entsprechenden Formaten, ics und vcf, können auch anderen Programme diese Daten nutzen, die keine Synchronisation von CalDav oder CardDav Quellen anbieten.

Jeder hat natürlich sein lieblings Setup, wenn es um die persönlichen Informationen geht. Ob es Thunderbird oder Outlook oder oder oder ist. Ich bin ein ziemlicher Freund von Anwendungen die in Konsolen laufen, weil sie wenige Abhänigkeiten haben und eigentlich auf allen Distributionen sauber laufen. Zusätzlich reicht das kopieren von einer Konfigurationsdatei und selbst auf entfernten Rechnern über SSH kann man wunderbar damit arbeiten.

So habe ich im folgenden beschloßen, auch auf Wunsch einger Leser, mein persönliches PIM Setup euch mal vorzuführen. Dazu wird es mehrere Teile geben, des 1. Teil wird sich mit meinem Jabber Programm, mcabber, beschäftigen.

Installation

Die Installation unter Debian/Ubuntu ist ziemlich einfach:

apt install mcabber

Konfiguration

Die Hauptkonfigurationsdatei von mcabber ist ~/.mcabber/muttrc dazu erstellen wir als erstes den Ordner ~/.mcabber und zusätzlich den Ordner otr für die OTR Fingerprint

mkdir -p ~/.mcabber/otr

Wir erstellen eine Konfigurationsdatei:

vim ~/.mcabber/mcabberrc

Die Datei bekommt folgenden Inhalt

set jid =
set password =

set resource = mcabber
set priority = 3
set ignore_self_presence = 1
set tls = 1

set nickname = Nickname
set muc_auto_whois = 1

#Rechtschreinkontrolle
set spell_enable = 1
set spell_lang = de_DE en_US
set spell_encoding = UTF-8

set cmdhistory_lines = 250
set logging_ignore_status = 1
set max_history_blocks = 8
set muc_print_status = 1

set message_autoaway = Auto-away (idle)
set escdelay = 50
set color_timestamp: blue

#OTR aktivieren und
set otr = 1
set otr_dir = "~/.mcabber/otr/"
otrpolicy default opportunistic

#PGP (Ich empfehle es nur zu aktieren wenn OTR deaktiviert ist)
#set pgp = 1
#set pgp_private_key = "KEY ID"

#Shortcuts für den Chat
alias me = say /me
alias online   = status online
alias away     = status away
alias dnd      = status dnd
alias notavail = status notavail

bind 17 = roster unread_next
bind 24 = roster alternate
bind 269 = roster toggle_offline
bind 276 = roster toggle
bind 521 = buffer up
bind 514 = buffer down

1. Start

Nachdem die Konfiguration erstellt wurde, kann man einfach mcabber mit dem Befehl mcabber starten. Wenn alles richtig eingestellt wurde, verbindet sich der Client mit dem Server. Benutzt der Server ein selbstsigniertes Zertifikat und es kommt zu SSL/TLS Problem, in der Konfiguration folgende Option setzen

set ssl_ignore_checks = 1

Mcabber_ChatFenster

Links seht ihr eure MUC bzw. Kontaktliste, rechts das Chatfenster. Zusätzlich findet ihr unten ein Loging Fenster das die wichtigsten Informationen anzeigt.

Mit dem Bild Up Bild Down Tasten könnt ihr in der Kontaktliste navgieren und durch das drücken von Enter in den entsprechenden Chat wechseln.

Jetzt einfach Nachricht eintippen, Enter drücken und schon habt ihr eure erste Nachricht mit Mcabber gesendet.

Bedienung

Die Bedienung von Mcabber findet mit Slash Befehlen statt, die alle in der Man Page zu finden sind, hier nur die wichtigsten:

Befehl Bedeutung
/help Hilfe
/roster show_offline Offline Kontakte anzeigen
/status aktuellen Status anzeigen bzw. setzen
/add jemand@jabber.server.com Jemand Jemand als Kontakt mit dem Nickname Jemand hinzufügen
/room join conf@confernce.jabber.de Muc betreten
/room names Konferenzteilnehmer anzeigen
/otr start OTR starten
/quit mcabber beenden

Omemo

Mcabber unterstützt zur Zeit kein Omemo. Es gibt ein aktuellen Issue dafür (hier) doch leider hat noch kein Entwickler sich zu diesem Punkt geäußert. Ich hoffe jedoch, dass das noch passieren wird.

Themes

mcabber unterstützt “Themes”, hierzu ist zu beachten, dass das Terminal in dem mcabber gestartet wird, diese Funktion auch unterstützt, was zum Beispiel der Fall bei rxvt ist.

solarized

Eine sehr schöne theme ist solarized: solarized_mcabber

Dazu einfach am Ende der Konfiguration folgendes einfügen:

set color_background   = 234
set color_general      = 244
set color_info         = 240
set color_msgin        = 166
set color_msgout       = 64
set color_msghl        = 136
set color_bgstatus     = 235
set color_status       = 166
set color_roster       = 240
set color_bgrostersel  = 235
set color_rostersel    = 166
set color_rosterselmsg = 136
set color_rosternewmsg = 136

# vim:set ft=conf:

Fazit

Ich benutze den mcabber sehr gerne, natürlich kann das Programm noch viel mehr, wenn ihr noch fragt habt, dann added michdoch einfach in Jabber, maltekiefer@trashserver.net oder findet mich im MUC: bloggeflüster@conference.trashserver.net

Teil 2: Meine PIM Konfiguration (hier vdirsyncer)

Im zweiten Teil meiner persönlichen PIM Konfiguration geht es um das kleine Python Programm vdirsyncer. Es ist nach dem Prinzip von KISS entwickelt und kommt auch wieder nur mit einer einzigen Konfigurationsdatei aus. vdirsyncer übernimmt die Synchronisation von CalDav und CardDav Daten, die wir für Teil 3 und Teil 4 meiner PIM Konfiguration benötigen.

Installation

Auch hier ist die Installation wieder ziemlich einfach, zuerst benötigen wir aber das PIP Python Paket, das wie folgt installiert wird:

apt install python3-pip

Nach der erfolgreichen Installation von PIP installieren wir jetzt vdirsyncer:

pip install vdirsyncer

PIP kümmert sich auch um die Abhänigkeiten.

Konfiguration

Als erstes erstellen wir die benötigten Ordner für unsere Konfiguration:

mkdir ~/.vdirsyncer
mkdir ~/.contacts
mkdir ~/.calendars

Im nächsten Schritt legen wir die Konfiguration an:

vim ~/.vdirsyncer/config

Die Datei bekommt folgenden Inhalt:

[general]
status_path = "~/.vdirsyncer/status/"

[pair my_contacts]
a = "my_contacts_local"
b = "my_contacts_remote"
collections = ["from a", "from b"]
conflict_resolution = "b wins"

[storage my_contacts_local]
type = "filesystem"
path = "~/.contacts/"
fileext = ".vcf"

[storage my_contacts_remote]
type = "carddav"

url = ""
username = ""
password = ""

[pair my_calendars]
a = "my_calendars_local"
b = "my_calendars_remote"
collections = ["from a", "from b"]
metadata = ["color"]

[storage my_calendars_local]
type = "filesystem"
path = "~/.calendars/"
fileext = ".ics"

[storage my_calendars_remote]
type = "caldav"

url = ""
username = ""
password = ""

Erläuterung

[general]
status_path = "~/.vdirsyncer/status/"

In diesem Pfad werden alle Statusmeldung von vdirsyncer abgelegt. Ohne Angabe dieses Pfads lässt sich das Programm nicht starten. Wichtig, der Ordner status darf nicht manuell erstellt werden


[pair my_contacts]
a = "my_contacts_local"
b = "my_contacts_remote"
collections = ["from a", "from b"]
conflict_resolution = "b wins"

---
[pair my_calendars]
a = "my_calendars_local"
b = "my_calendars_remote"
collections = ["from a", "from b"]
metadata = ["color"]

In diesem Teil der Konfiguration erstellen wir die zwei Speicher (a / b) für die Kontakte bzw. Kalender. Zusätzlich sagen wir vdirsyncer im Falle eine Konfilkts gewinnt der Server mit seinen Daten. Beim Kalender wollen wir zusätzlich noch die Farben mit herunterladen.


[storage my_contacts_local]
type = "filesystem"
path = "~/.contacts/"
fileext = ".vcf"

---

[storage my_calendars_local]
type = "filesystem"
path = "~/.calendars/"
fileext = ".ics"

Dieser Teil der Konfiguration legt fest in welchem Pfad und in welchem Format die Daten gespeichert werden.


[storage my_contacts_remote]
type = "carddav"

url = ""
username = ""
password = ""

---

[storage my_calendars_remote]
type = "caldav"

url = ""
username = ""
password = ""

Dieser Teil gibt den Typ der Synchronisation an sowie Pfad (Owncloud, Nextcloud) und Zugangsdaten fest.

1. Start

In einem Terminal führen wir als erstes den folgenden Befehlt aus:

vdirsyncer discover

Jetzt wird der Remote Pfad erkundet, alle Kontakte und Kalender erkannt. Im folgenden wird gefragt ob für die Kalender jeweils ein Ordner angelegt werden soll, alles mit y bestätigen. Nachdem erfolgreich abgeschloss wurden, starten wir die Synchronisation mit dem Befehl:

vdirsyncer sync

Cron Job

Damit unsere Daten regelmäßig synchronisiert werden, und wir nicht immer manuell den Synchronisationsprozess starten müssen, erstellen wir einen Cron Job:

crontab -e

Am Ende fügen wir folgende Zeile an:

*/30 * * * * /usr/local/bin/vdirsyncer sync > /dev/null

Somit werden unsere Daten alle 30 Minuten aktualisiert.

Fazit

vdirsyncer ist ein wunderbares kleines Programm zum Synchronisieren von Kalendern und Kontakten. Durch die Bereitstellung der Daten in den entsprechenden Formaten, ics und vcf, können auch anderen Programme diese Daten nutzen, die keine Synchronisation von CalDav oder CardDav Quellen anbieten.

1. Juli 2017

Mozilla hat ein außerplanmäßiges Update für Firefox 54 veröffentlicht. Firefox 54.0.1 behebt diverse Probleme der Versionsreihe 54.

Download Mozilla Firefox 54.0.1 für Microsoft Windows, Apple macOS und Linux

Mozilla hat ein erstes außerplanmäßiges Update für die Desktop-Version von Firefox 54 veröffentlicht. Mit Firefox 54.0.1 behebt Mozilla mehrere Anzeigeprobleme, die unter bestimmten Umständen in Zusammenhang mit den Tab-Beschriftungen auftreten konnten.

Wenn ein Download das Öffnen eines neuen Tabs auslöste, konnte es passieren, dass Firefox den falschen Tab automatisch geschlossen hat. Dieses Problem wurde in Firefox 54.0.1 genauso behoben wie ein Problem, welches unter Apple macOS verursachen konnte, dass PDF-Dateien nicht korrekt ausgedruckt werden konnten. Außerdem wurde ein Problem behoben, welches unter Linux die Wiedergabe von Netflix-Inhalten verhinderte.

Der Beitrag Mozilla veröffentlicht Firefox 54.0.1 erschien zuerst auf soeren-hentzschel.at.

Ich nutze ja sehr gerne den Suspend bzw. Standby Modus meines gebrauchten (und daher vor allem akkutechnisch nicht mehr optimalen) ThinkPads. Suspend ist derjenige Modus, welcher das System schlafen legt, aber nicht komplett abschaltet. Für kurze Arbeitspausen ganz praktisch, aber wenn ich das Laptop so herumliegen lasse ist auch hier irgendwann der Akku leer, und meine geöffneten Programme wieder alle weg. Man könnte jetzt auch den Hibernation Modus bzw. Ruhezustand benutzen, aber das Problem hierbei ist, dass dieser langsamer ist. Schnell mal Laptop zuklappen, vom Tisch auf die Couch wechseln und wieder aufklappen ist trotz schneller SSD nicht möglich (vielleicht sollte ich auch einfach langsamer zur Couch gehen).

Als Zwischenlösung benutzt man mittlerweile den sogenannten Hybrid Sleep. Hierbei wird sowohl der Suspend als auch der Hibernation Modus aktiviert. Ist der Akku voll genug, wacht das Laptop aus dem Suspend Modus innehralb kürzester Zeit auf, lässt man es zu lange liegen und der Akku ist leer erwacht es aus dem Hibernation Modus. Bloß auch hier dauert das wechseln in den Hybrid Modus zu lange, ich klappe das Laptop oft schon wieder auf bevor es überhaupt angefangen hat sich schlafen zu legen.

Weiteres Problem: Suspend und Hibernation werden so gut wie immer unterstützt, wohingegen der Hybrid Sleep nicht immer verfügbar ist (beispielsweise bietet die von mir eingesetzte Desktopumgebung Hybrid Sleep gar nicht an).

Die Lösung des ganzen nennt sich nun Suspend to Hinbernate oder auch Delayed Hibernation. Hierbei wird immer zuerst in den Suspend Modus gewechselt (was schnell geht, und woraus es schnell aufwachen kann), und nach einer gewissen Zeit wechselt das Laptop dann automatisch in den Hibernation Modus, sodass es, wenn es längere Zeit herumliegt trotzdem nicht den Akku belastet. Für mich persönlich ist das der nächste logische Schritt nach dem Hybrid Sleep.

Wer Archlinux oder eine darauf basierende Distribution nutzt und weiß, dass sowohl Suspend als auch Hibernation auf dem gewünschten Gerät funktionieren kann nun mittels einem AUR-Paket diese Funktion ebenfalls ganz einfach erhalten. Der manuelle Weg ist hier beschrieben, wer's einfacher haben will muss nur das Paket suspend2hibernation installieren und den entsprechenden Service dazu aktivieren:

$ pacaur -S suspend2hibernation
# systemctl enable suspend2hibernation.service

Danach das Gerät neustarten und fertig. Zukünftig geht das Gerät nach 20 Minuten im Suspend Modus automatisch in den Hibernation Modus über, man kann also die Vorteile beider Technologien nutzen.

Auf der Seite secitem wurde heute der Kommentar 1,5 Jahre XMPP und warum ich es nicht mehr nutze veröffentlicht, zu dem ich gerne einen Kommentar abgegeben hätte. Leider gibt es auf der Seite keine Kommentarfunktion weshalb ich hier antworte.

Jeder weiß, dass Messenger wie Whatsapp oder Signal sehr einfach zu nutzen sind, da das Telefonbuch durchforstet wird und Kontakte, die den jeweiligen Messenger auch nutzen, automatisch zur Kontaktliste hinzugefügt werden. Es entfällt also das Austauschen von Kontaktdaten, da man ja bereits die Mobilnummern von Freunden im Adressbuch hat.

Bei XMPP muss man sich bei einem Server registrieren, eine Anwendung installieren, die Anmeldedaten eingeben, Freunde nach dem Nick bzw. der XMPP-Adresse fragen und diese hinzufügen.

Am Ende des Tages schrecken genau diese Hürden viele potenzielle Nutzer ab und XMPP handelt sich den Ruf ein, „altmodisch” oder „kompliziert” zu sein.

Das mag ich so nicht gelten lassen, denn die Leute, die sich darüber beschweren, dass XMPP kompliziert sei schaffen es in der Regel sich bei Facebook zu registrieren, die Facebook App zu installieren und die Anmeldedaten einzugeben. Komplizierter ist XMPP auch nicht. Warum wird da mit zweierlei Maß gemessen?

Im Gegensatz zu geschlossenen Messengern wie Whatsapp, Signal, Threema oder Telegram gibt es bei XMPP Föderation, d.h. es gibt viele Server bei denen man sich registrieren kann und diese bauen untereinander Verbindungen auf, so dass man auch mit Nutzern anderer Server kommunizieren kann. Das ist vergleichbar mit Email, da kann man auch von yahoo Emails an web.de senden.

Tatsache ist aber, dass dieses Föderationskonzept bei XMPP unzureichend zum Einsatz kommt. Genau wie im Diaspora-Netzwerk konzentrieren sich die meisten Nutzer auf wenige Server. Gleichzeitig gibt es sehr viele Server, die verhältnismäßig kaum Nutzer haben.

Ich verstehe nicht, wie man gleichzeitig aussagen kann, dass die meisten Nutzer auf wenigen großen Servern registriert sind und gleichzeitig kritisieren kann, dass es viele Server mit wenigen Nutzern gibt. Ersteres ist wirklich nicht im Sinne von Föderation aber Letzteres ist ein gute Umsetzung der Dezentralität. Wenn es viele kleine Server gibt, die von technisch interessierten für ihre Freunde und Familie aufgesetzt werden ist das doch wünschenswert.

XMPP-Clients – viel Masse, wenig Klasse

Auf der anderen Seite sieht es bei den Clients wenig besser aus. Conversations ist unbestreitbar ein sehr guter Messenger. Allerdings ist es derzeit nur auf Android-Geräten lauffähig. Wer alleine schon XEP-0384 OMEMO einsetzen will, kann derzeit nur zwischen vier Messengern wählen.

Mit Conversations gibt es einen hervorragenden Mobilclient und mit Gajim einen sehr guten Desktopclient. Damit ist man den großen Messengern schon mindestens ebenbürtig. Da viele der großen Messenger keinen ordentlichen Desktopclient anbieten ist man diesen sogar schon ein Stück voraus.

Zusätzlich gibt es noch weitere Clients, die zwar (noch) nicht alle Features unterstützen, die man sich evtl. wünscht, aber diese mit der Zeit auch noch implementieren werden. Dass es im Gegensatz zu den geschlossenen Messengern Alternativen in der App-Auswahl gibt sehe ich weiterhin als Vorteil auch wenn einige noch Entwicklungspotenzial haben.

Ich bin jetzt nicht auf alle Punkte aus den Original-Post eingegangen, aber ich wollte auch nicht den ganzen Artikel kommentieren. Hätte die Seite eine Kommentarfunktion hätte ich stattdesen dort einen kurzen Kommentar hinterlassen.

Ich nutze ja sehr gerne den Suspend bzw. Standby Modus meines gebrauchten (und daher vor allem akkutechnisch nicht mehr optimalen) ThinkPads. Suspend ist derjenige Modus, welcher das System schlafen legt, aber nicht komplett abschaltet. Für kurze Arbeitspausen ganz praktisch, aber wenn ich das Laptop so herumliegen lasse ist auch hier irgendwann der Akku leer, und meine geöffneten Programme wieder alle weg. Man könnte jetzt auch den Hibernation Modus bzw. Ruhezustand benutzen, aber das Problem hierbei ist, dass dieser langsamer ist. Schnell mal Laptop zuklappen, vom Tisch auf die Couch wechseln und wieder aufklappen ist trotz schneller SSD nicht möglich (vielleicht sollte ich auch einfach langsamer zur Couch gehen).

Als Zwischenlösung benutzt man mittlerweile den sogenannten Hybrid Sleep. Hierbei wird sowohl der Suspend als auch der Hibernation Modus aktiviert. Ist der Akku voll genug, wacht das Laptop aus dem Suspend Modus innehralb kürzester Zeit auf, lässt man es zu lange liegen und der Akku ist leer erwacht es aus dem Hibernation Modus. Bloß auch hier dauert das wechseln in den Hybrid Modus zu lange, ich klappe das Laptop oft schon wieder auf bevor es überhaupt angefangen hat sich schlafen zu legen.

Weiteres Problem: Suspend und Hibernation werden so gut wie immer unterstützt, wohingegen der Hybrid Sleep nicht immer verfügbar ist (beispielsweise bietet die von mir eingesetzte Desktopumgebung Hybrid Sleep gar nicht an).

Die Lösung des ganzen nennt sich nun Suspend to Hinbernate oder auch Delayed Hibernation. Hierbei wird immer zuerst in den Suspend Modus gewechselt (was schnell geht, und woraus es schnell aufwachen kann), und nach einer gewissen Zeit wechselt das Laptop dann automatisch in den Hibernation Modus, sodass es, wenn es längere Zeit herumliegt trotzdem nicht den Akku belastet. Für mich persönlich ist das der nächste logische Schritt nach dem Hybrid Sleep.

Wer Archlinux oder eine darauf basierende Distribution nutzt und weiß, dass sowohl Suspend als auch Hibernation auf dem gewünschten Gerät funktionieren kann nun mittels einem AUR-Paket diese Funktion ebenfalls ganz einfach erhalten. Der manuelle Weg ist hier beschrieben, wer's einfacher haben will muss nur das Paket suspend2hibernation installieren und den entsprechenden Service dazu aktivieren:

$ pacaur -S suspend2hibernation
# systemctl enable suspend2hibernation.service
Danach das Gerät neustarten und fertig. Zukünftig geht das Gerät nach 20 Minuten im Suspend Modus automatisch in den Hibernation Modus über, man kann also die Vorteile beider Technologien nutzen.