staging.inyokaproject.org

21. Februar 2021

Es geht bergauf!

Es geht bergauf und es ist nicht schön. Jetzt hatten wir wochenlang Teillockdown und die Diskussionen gingen gerade los, wer zuerst aufmachen darf, mit Frisören und Schulen in Reihe eins, und dann sowas!

Für Mo., Di., Mi. und Do. zeigt der Wochentagsgraph (basierend auf den Daten von worldometers) hinten einen kleinen Anstieg – allerdings nicht für Fr. (gestern).

Woher sind die Grapen? Nun, mit einem Script selbst generiert. Der schleichende Durchschnitt hat auch seine Berechtigung – zumindest der über 7 Tage, in dem über 3 Tage sehe ich keinen Sinn, und die Haifischzähne im Wochenverlauf scheinen ein globales Phänomen zu sein.

Ich fürchte, dass während die Zahlen maßnahmenbedingt zurückgingen stiegen gleichzeitig die Zahlen durch die Mutanten im Untergrund an, und jetzt haben sich die beiden Trends gekreuzt. Ich bin da aber natürlich Laie, wie viele andere auch.

Das Basteln der ersten Graphen war noch viel Handarbeit, aber dann wurde es von mir teilautomatisiert, so dass das Script die Daten jeden Tag neu runterlädt.

#!/bin/bash
# 
# Coronadaten von worldometers nach Wochentag getrennt anzeigen
#
# @DONE: Lines einfärben nach Wochentag
# @DONE: Automatisieren. 
#
# Lizenz: GPLv3  
#

yvals=($(wget -O - https://www.worldometers.info/coronavirus/country/germany/ 2>/dev/null | sed -ne "s/,/ /g; /name: 'Daily Cases'/,/]/ {s/data: \[null//; s/].*}//p}"))

ny=${#yvals[@]}

for i in $(seq 0 $((ny-1)))
do
	echo -e "$i\t${yvals[$i]}"
done > xy.dat

tag=(dummy Sa So Mo Di Mi Do Fr)
farbe=(dummy black blue olive red dark-grey grey web-green)

max () {
	echo $@ | tr " " "\n" | sort -n | tail -n 1
}

maxy=$(max ${yvals[@]})

zeros=${maxy//[0-9]/0}
top=$((${maxy:0:2}+1))${maxy:3:-0}${zeros:2}
echo top $top

# leeren
echo >  plot7.plt

# In 7-Tagesschritten von Sa. bis Fr. (weil Sa. 1. Meßpunkt ist, Sa:=1) durchlaufen, getrennte Dateien erzeugen
for i in {1..7}; do sed -n "$i~7p" xy.dat > wotag-$i-${tag[$i]}.csv ; done
# Gnuplot-Datei erzeugen
for i in {1..7}; do
	echo "
	set term qt
	set xrange [0:$((ny*105/100))]
	set yrange [0:$top]
	set title \"${tag[$i]}\"
	plot \"wotag-$i-${tag[$i]}.csv\" using 1:2 with linespoint lc \"${farbe[$i]}\"
	set output  \"wotag-$i-${tag[$i]}.png\"
	set term png
	replot"
done >> plot7.plt
gnuplot -p plot7.plt
# eog: Eye-of-Gnome Bildbetrachter.
eog wotag-[1-7]-*.png

(Update 22.2.’21 Das Ausgabeformat habe ich nachträglich auf png geändert (set term png; set output ….png) und den Bildbetrachteraufruf eog am Ende angefügt.)

Anfangs speicherte ich die Seite vom Browser aus im Modus „Seitenquelltext anzeigen“. Er liefert keine fertige Bilddatei aus, sondern die Daten und generiert aus diesen die Grafik on the fly. So kommt man also einfach an die Daten.

Zu Beginn zeigt das Script einen Shebang, der dem Kernel sagt, wie das Programm auszuführen ist. Es folgen Kommentare mit der Gnu-Public-Lizence.

Dann der Code, um das HTML als Datei runterzuladen, dafür nimmt man wget.

yvals=($(wget -O - https://www.worldometers.info/coronavirus/country/germany/ 2>/dev/null | sed -ne "s/,/ /g; /name: 'Daily Cases'/,/]/ {s/data: [null//; s/].*}//p}"))

Mit -O gibt man den Outputort an, meist einen Dateinamen, aber wie viele Shellwerkzeuge, kann auch wget ein isoliertes Minuszeichen übergeben werden, dann wird die Ausgabe auf Stdout, den Bildschirm, ausgegeben.

Aber wget ist geschwätzig und zeigt mit großem Brimborium an, wieviel Prozent schon runtergeladen wurden, Datum, Uhrzeit, Url, IP-Adresse und weiß der Teufel – den Müll kann man mit 2>/dev/null ins Nirwana umleiten.

Der restliche Output wird mit einer Pipe an Sed geleitet, den Stream-Editor, spezialisiert für solche Jobs und mit einer konzentrierten Syntax ausgestattet, um die Ausgabe zu schneiden, umzuformen, zu ergänzen, zu manipulieren.

Mit sed wandel ich alle Kommas in Leerzeichen um. Ich will alles in ein großes Array schreiben, und die Syntax sieht so aus:

yvals=(3 4 2 1 9)

Aber die Quelle liefert

data: [3,4,2,1,9]

Auch interessiert mich nur der Abschnitt „Daily Cases“ und darin nur die Zeile „data“. Die nächste, kryptisch wirkende Zeile, ermittelt die Arraygröße.

Die folgende Forschleife läuft durch alle Werte, und gibt Zeilenweise die Indexnummer und die Anzahl bestätigter Neuinfektionen aus. Die Umlenkung hinter der Schleife lenkt all das in eine Datei xy.dat.

ny=${#yvals[@]}

for i in $(seq 0 $((ny-1)))
do
	echo -e "$i\t${yvals[$i]}"
done > xy.dat

Die Beispieldaten oben sähen damit etwa so aus:

0	3
1	4
2	2
3	1
4	9

Dann folgen zwei Arrays mit Namen für die Wochentage – da die Shell ab 0 zählt, aber ich ab 1, habe ich einen dummy für die 0 eingefügt. Ähnlich für die Farben des Graphen.

tag=(dummy Sa So Mo Di Mi Do Fr)
farbe=(dummy black blue olive red dark-grey grey web-green)

max () {
	echo $@ | tr " " "\n" | sort -n | tail -n 1
}

Dann sehen wir eine max-Funktion. Sie übergibt alle Argumente des Arrays, die mit Leerzeichen getrennt sind, und ersetzt die Leerzeichen mit tr, dem Zeichentranslator, mit Zeilenumbrüchen. Die Zeilen werden mit sort sortiert und tail -n1 nimmt vom Ende eine Zeile, da steht nach Adam Riese das Maximum drin.

Die nächste Zeile ruft die max-Funktion mit unserem Array auf.

maxy=$(max ${yvals[@]})

zeros=${maxy//[0-9]/0}
top=$((${maxy:0:2}+1))${maxy:3:-0}${zeros:2}
echo top $top

Dann folgt eine komplexe Häßlichkeit, die einen Wert wie 31554 nimmt, die 31 vorne abschneidet, zu 32 hochrechnet, und 000 hinten anhängt aber auch mit Werten zwischen 100 und 99999999 zurechtkommen sollte.

Sie dient dazu dem Plotprogramm zu sagen, wie groß der y-Wert werden darf, aber einen aufgerundeten Wert zu verwenden mit etwas Luft nach oben. Da die Werte je nach Wochentag gehörig schwanken führt die automatische Range-auswertung von gnuplot sonst dazu, dass der Achsenmaßstab von Tag zu Tag schwankt.

# leeren
echo >  plot7.plt

Dies löscht die plot7.plt-Datei von gestern oder neulich. Dann schreibe ich, wieder mit sed, das ein Kommando dafür hat, jede 7. Zeile in eine Datei, und das für 7 unterschiedliche Startwerte, sprich Wochentage, in 7 unterschiedliche Zieldateien (.csv).

for i in {1..7}
do
  sed -n "$i~7p" xy.dat > wotag-$i-${tag[$i]}.csv
done

Dann werden je Wochentag ca. 8 Befehle in die Plotdatei geschrieben.

# Gnuplot-Datei erzeugen
for i in {1..7}; do
	echo "
	set term qt
	set xrange [0:$((ny*105/100))]
	set yrange [0:$top]
	set title \"${tag[$i]}\"
	plot \"wotag-$i-${tag[$i]}.csv\" using 1:2 with linespoint lc \"${farbe[$i]}\"
	set output  \"wotag-$i-${tag[$i]}.png\"
	set term png
	replot"
done >> plot7.plt

Das set term qt setzt die Ausgabe auf den Grafikfenstermodus. QT ist eine Firma, QT-Trolltech o.ä., die eine bekannte, plattformübergreifende Grafikbibliothek für C++ geschrieben hat, ähnlich wie GTK (C) oder Swing (Java).

Mit set xrange [von:bis]` legt man die x-Achse fest. Auch hier lasse ich etwas Luft.

Das `set title XY` bringt die Wochentage von oben ins Bild. Man will nicht im Kopf behalten müssen, dass die Datenerfassung an einem Freitag begann – oder war es Samstag?

Dann wird verklausuliert gesagt, dass die Daten von – Beispielsweise wotag-3-Mo.csv zu plotten sind. Dann ist So=2 und Sa=1, also doch Sa! Using 1:2 sind die Spalten der Datei, mehr gibt’s eh nicht, und linespoint verbindet die Datenpunkte, hebt sie aber auch vor. `lc N` setzt die linecolor, falls das wer manipulieren will. Für jeden Tag gebe ich dann einen Dateinamen an, in den das Ergebnis geschieben werden soll. Man könnte auch png, jpg, pdf usw. wählen.

Mit set term png sage ich dem Programm, dass das Format png sein soll; das extrapoliert gnuplot nicht aus dem Namen.

Oben wurde schon mal plot aufgerufen. Hier reicht ein `replot`, wenn man keinen Parameter ändern will. Das eine zeigt am Schirm in einem Fenster an, das andere schreibt in eine Datei.

Die Befehle werden aber nicht unmittelbar ausgeführt, sondern in eine Datei geschrieben und am Ende wird gnuplot aufgerufen, um die Aktionen durchzuführen.

Dabei wird die Bildschirmausgabe aber so schnell durchlaufen, dass man außer dem letzten Bild nichts sieht. Zur Kontrolle, ob nichts schiefläuft, sollte das reichen.

Alle Dateien landen im aktuellen Verzeichnis, also empfiehlt es sich dafür ein neues Verzeichnis anzulegen.

Zusammengefügt habe ich ursprünglich 7 svg-Dateien von Hand.

Das habe nun zu PNG geändert, denn die lassen sich mit einem Betrachter wie eog leicht alle ansehen, oder als Referenzen in ein SVG laden, das sich dann automatisch aktualisiert, wenn die Dateien mit altem Namen und neuen Daten überschrieben werden.

Die CSV-Dateien sind z.Zt. kl. als 500 Bytes, die PNGs < 6kb, je.

Das Datum aus den xValues zu extrahieren ist möglich, aber eine lesbare Ausgabe daraus zu bauen ist mir zu viel Gefummel.

So sieht die fertige Plotdatei aus (hier noch mit SVGs):

	set term qt
	set xrange [0:388]
	set yrange [0:32000]
	set title "Sa"
	plot "wotag-1-Sa.csv" using 1:2 with linespoint lc "black"
	set output  "wotag-1-Sa.svg"
	set term svg
	replot

	set term qt
	set xrange [0:388]
	set yrange [0:32000]
	set title "So"
	plot "wotag-2-So.csv" using 1:2 with linespoint lc "blue"
	set output  "wotag-2-So.svg"
	set term svg
	replot

	set term qt
	set xrange [0:388]
	set yrange [0:32000]
	set title "Mo"
	plot "wotag-3-Mo.csv" using 1:2 with linespoint lc "olive"
	set output  "wotag-3-Mo.svg"
	set term svg
	replot

	set term qt
	set xrange [0:388]
	set yrange [0:32000]
	set title "Di"
	plot "wotag-4-Di.csv" using 1:2 with linespoint lc "red"
	set output  "wotag-4-Di.svg"
	set term svg
	replot

	set term qt
	set xrange [0:388]
	set yrange [0:32000]
	set title "Mi"
	plot "wotag-5-Mi.csv" using 1:2 with linespoint lc "dark-grey"
	set output  "wotag-5-Mi.svg"
	set term svg
	replot

	set term qt
	set xrange [0:388]
	set yrange [0:32000]
	set title "Do"
	plot "wotag-6-Do.csv" using 1:2 with linespoint lc "grey"
	set output  "wotag-6-Do.svg"
	set term svg
	replot

	set term qt
	set xrange [0:388]
	set yrange [0:32000]
	set title "Fr"
	plot "wotag-7-Fr.csv" using 1:2 with linespoint lc "web-green"
	set output  "wotag-7-Fr.svg"
	set term svg
	replot

Diese Ranges könnte man vor den Rest rausziehen, aber das ist mehr Arbeit als Nutzen. Fragen zum Script beantworte ich gerne.

Man benötigt Linux, bei dem die meisten Tools mit an Bord sind (tr, bash, sed, sort, tail) oder leicht nachinstalliert werden können (gnuplot, wget). Unter Windows ist es für jemanden, der nicht schon Erfahrungen mit Scripten hat, mühsam, alles zu installieren und einzurichten, aber möglich. Macs haben ja ein Open-BSD als Basis, inklusive Bash, da sollte es fast so leicht sein wie unter Linux.

20. Februar 2021

Es gibt Bereiche, da gibt es keine Kompromisse. Entweder man bewegt sich Anonym im Internet oder nicht. Es gibt keine halbe Anonymität. Die Fallstricke hier sind zahlreich.

Der erste Fallstrick besteht schon darin, es irgendwie praktisch zu haben zu wollen. Immer mal weder kommen Dienste auf, die einem irgendwas abnehmen wollen und behaupten, einen mit ein, zwei Klicks abzusichern. Die größten Scharlatane sind sicherlich die Anbieter der heftig beworbenen VPN-Dienste, die irgendwas von Anonymität behaupten. Nicht besser sind aber Angebote wie Brave Browser, wie man heute lesen konnte. Versehentlich hat man über den integrierten Tor-Dienst aufgerufene URLs an den DNS-Server geleakt. Abgesehen davon natürlich, dass die Tor-Funktion im Brave Browser sowieso nur einen Bruchteil der Funktionen des Tor-Browsers umsetzt und eine Wiedererkennung nicht effizient verhindert.

Tails und der Tor-Browser sind unbequem. Sie leiden an digitaler Amnesie, haben nicht die passenden Addons und das Browserfenster hat immer so eine nervige Größe. Außerdem lassen sie sich nicht fest installieren und sind langsam. Das machen die Entwickler nicht, weil sie die Anwender ärgern wollen, sondern um den Zweck zu erreichen.

Wenn ihr Anonymität braucht, lasst die Finger von diesen vermeintlich leichten Lösungen. Wenn irgendjemand etwas leichter umsetzen kann, was die Originalentwickler kompliziert machen, dann sollte das erst einmal Argwohn wecken. Wenn ihr schon keine Lust habt, euch technisch zu beschränkten, dann werdet ihr beim sozialen Aspekt sowieso scheitern. Denn neben technisch schlecht umgesetzten Lösungen besteht die größte Gefahr in Fehlern des Anwenders. Mal nicht aufgepasst und mit dem falschen Login angemeldet, mal mit dem Klarnamen unterschrieben, mal das Tab im falschen Browser geöffnet und schon ist die sorgsam aufgebaute Identität unrettbar kompromittiert.

Der Artikel Kommentar: Keine Kompromisse bei der Anonymität erschien zuerst auf [Mer]Curius

KDE hat KIO, GNOME hat GVFS – soweit der übliche Dualismus. Angeblich soll Wettbewerb ja förderlich für die Entwicklung sein. KIO konnte leider praktisch nie mit GVFS mithalten, weil nur KDE Programme damit arbeiten konnten.

Das ist schon immer ärgerlich gewesen, denn ein einfach zu nutzendes System von Netzwerkfreigaben ist eine Grundvoraussetzung, um erfolgreich mit einem NAS arbeiten zu können. Ich fand es in diesem Kontext auch immer bedauerlich, wenn sogar in Anfängerforen immer aus der Not heraus auf eine Einbindung in die fstab verwiesen wurde. Linux ist in vielen Bereichen sonst schon sehr viel weiter. Wenn das nicht klappt, ohne Netzwerke über mehrere Semester zu studieren, wandern eben doch wieder alle in Cloud und synchronisieren via Dropbox und sichern bei Google Drive. Kosten sind damit schließlich kaum noch verbunden und die Hürden viel niedriger. Datenschutz und Privatsphäre fallen dann meist hinten runter.

Diese Lücke wurde angeblich in den letzten Monaten geschlossen, denn KIO-FUSE sollte nun entfernte Verzeichnisse mittels FUSE einbinden und damit auch für Programme nutzbar machen, die nicht mit KIO umgehen können. Eine ärgerliche Lücke und um so froher war ich, als diese nun endlich geschlossen sein sollte.

Jedenfalls konnte man das die letzten Monate überall lesen:

Schon damals klappte das hier nicht, aber ich ließ das erst mal ruhen und wollte abwarten, was es so für Berichte gibt.

Einige Distributionen haben das jetzt auch paketiert. Wenn man aber nach einer Dokumentation sucht oder einer Manpage, findet sich nichts. Die Funktion klappt auch nicht „out of the Box„. Jedenfalls nicht mit openSUSE Tumbleweed und Arch Linux.

Das wirft bei mir zwei Fragen auf:

  1. Hat das überhaupt mal jemand erfolgreich zum Laufen bekommen?
  2. Gibt es dafür eine Dokumentation?

Ich finde es sehr befremdlich, wenn mit einer solchen Funktion basierend auf einer so dünnen Informationslage, hausieren gegangen wird.

Update 20.02.21

Man muss kio-fuse ggf. direkt im entsprechenden Installationsverzeichnis starten und anschließend über sftp:// in Dolphin mounten. Normal eingebundene Freigaben werden nicht automatisch umgestellt. Der Komfortgewinn ist somit nahezu nicht vorhanden und die großspurige Ankündigung der Funktion maßlos übertrieben. KIO kommt auch mit kio-fuse nicht in die Nähe von einer praktischen Verwaltung entfernter Dateisysteme wie GVFS sie für Gtk-basierte Umgebungen bietet.

Der Artikel KIO-FUSE – Ankündigungs-Fata Morgana? erschien zuerst auf [Mer]Curius

19. Februar 2021

Was ist das und warum ausgerechnet ich

Obsidian ist eine ziemlich intelligent gebaute Software rund um die Themen: Notizzettel, Knowledgebase, Wiki, Ideensammlung. Also alles was man so aufschreibt und sammelt, aber nie so genau weiß: soll ich das jetzt in meiner Textverarbeitung schreiben, oder als reine Textdatei, oder in meiner speziellen Software für z.B. Rezepte oder auf dem Smartphone oder nur auf dem Rechner, oder oder oder … einfach zu viele Frage, zuviele Möglichkeiten und die allermeisten dieser Möglichkeiten sind einfach zu begrenzt, weil “geht nur als APP” , “Hat ein eigenes Dateiformat", “kann nicht exportiert werden", “kann nicht synchronisiert werden", als dass es auf Dauer gut gehen würde.

 

Update 10.03.2010: Eine App für Android & iOS ist jetzt für VIPs in einer “public” Beta.

Update 19.02.2021: Ich habe zu Obsidian ein Tutorial mit einer grundsätzlichen Einführung produziert. Weiter unten sind auch noch weitere Quellen hinzugefügt

 

Am einfachsten wäre eine Textdatei, denn die kann man unter Linux, Windows, Mac, Android, iOS oder wasweissichdennschon öffnen und bearbeiten. Aber es bleibt ja nicht nur bei einer Textdatei, sondern das summiert sich ja. Also hat man irgendwann eine Menge Textdateien. Nächstes Problem: wenn man die Textdateien öffnet, sehen die schnöde aus. Oder sehr merkwürdig, weil man versucht mit Sonderzeichen irgendwelche Layouts zu kreieren, die auch nicht wirklich befriedigen. Fett, Kursiv und Überschriften wären echt hilfreich.
Dann kommen weitere Problem: Wie finde ich bei vielen Textdateien das was ich suche? Wie sieht das irgendwann in Zukunft aus,wenn ich das System wechsle? Wie mache ich mich abhängig von einer Software? Was mache ich, wenn ich diese Software nicht mehr bekommen kann?

 

Auf all diese Fragen gibt es zwei Antworten: Obsidian und Markdown

 

Markdown

Fangen wir von hinten an. Markdown ist eine “Sprache” zur Formatierung und Gliederung von Texten. Also Fett, Kursiv, Durchgestrichen, Überschriften, Tabellen, Aufzählungen und so weiter. Die Sprache ist so gehalten, dass man sie in einen normalen Text mit integrieren kann. Ein wenig wie HTML, nur einfacher und lesbarer.

Beispiele

  • Eine Überschrift würde man so schreiben # Kapitel 2
  • Eine untergeordnete Überschrift wäre dann ## Kapitel 2.1 und so weiter
  • Einen kursiven Text würde man *kursiv* schreiben, einen fett gedruckten Text würde man **fett** schreiben und fett+kursiv so ***fett kursiv***
  • Todos

    •  Einkaufen
    •  chillen und Pizza

Und von diesen Formatierungen gibt es noch richtig viel mehr https://www.markdownguide.org/basic-syntax/

Alles wirklich immer noch gut lesbar in einer normalen Textdatei. Aber schön? Nun, es gibt richtig viele Markdown Editoren für alle möglichen Betriebssysteme inklusive Smartphones. Diese stellen diese Formatierungen im Text gleich richtig dar und viele davon haben auch noch einen “Preview Modus", in dem der Text ohne die Formatierungszeichen, aber mit dem gewünschten Layout dargestellt wird. Also in Schön.

 

Obsidian

Damit kommt Obsidian ins Spiel. Was ist Obsidian eigentlich genau?
Obsidian ist ein

  • Markdown Preview & Editor
  • Dateiverwaltung
  • Suchmaschine
  • Voll integrierte Markdown Suite mit zusätzlich integrierten Funktionen, die auch vollständig nur mit der Tastatur bedienbar ist, wenn man das möchte

Obsidian verwaltet einfach nur das was da ist. Hat man also eine Struktur mit Unterverzeichnissen und den entsprechenden Dateien schon erstellt, dann “stülpt” man Obsidian einfach nur darüber und fertig. Hat man sowas noch nicht, dann startet man mit Obsidian einfach einen eigenen “Vault". Ein Vault ist sowas wie eine Instanz oder Knowledgedatenbank. Man kann verschiedene Vaults anlegen und zwischen ihnen wechseln. Neue Markdown Dateien fügt man einfach per Import oder per Copy’n'Paste hinzu. Wenn man erstmal verstanden hat, was man damit eigentlich machen kann und vor allem wie uneingeschränkt über alle Systeme und sehr zukunftssicher, dann will man diese Art der Wissenssammlung nicht mehr missen.

 

Achja, als kleines Info-Schmankerl: Es gibt viele Anwendung, die als Input Markdown verwenden. So kann man auch aus seinen Texten schöne PDF Dateien erzeugen. Oder wenn man seine Sammlung über verschiedene Geräte synchronisieren möchte, kann man das Verzeichnis mit all den Unterverzeichnissen und Textdateien einfach mit z.B. einer Nextcloud automatisch synchronisieren lassen. Dadurch, dass es nur kleine Textdateien sind, geht die Synchronisation super schnell, auch wenn die Leitung extrem schmal ist. UND Ihr könnt Markdown Dateien auch direkt in der Nextcloud editieren. Es gibt dort nämlich auch einen Markdown Editor. Probiert es einfach aus!

 

Obsidian ist aktuell in der Version 0.6.4 0.7.3 0.11 für Linux, Windows und Mac hier https://obsidian.md frei und kostenlos runterladbar. Es sind weitere Features geplant, die die Eingabe und Verwaltung noch komfortabler machen soll, als sie jetzt schon ist.

 

Weitere Quellen

  1. Markdown in Obsidian https://publish.obsidian.md/help/How+to/Basic+note+taking
  2. Markdown Wikipedia https://de.wikipedia.org/wiki/Markdown

Weitere Artikel

  1. Obsidian - Error file watchers

 

IceWM ist einer der Klassiker unter den Linux-Fenstermanagern – 1997 entstand die erste Version. Schon damals wirkte er ein wenig retro – und blieb in den folgenden Jahren doch immer auf der Höhe der Zeit. Aktuell zählt er zu den wenigen aktiv weiterentwickelten Projekten aus alten Zeiten.

Fluxbox macht neuerdings Schwierigkeiten mit dem Multimonitorsetup, auch Openbox scheint ausentwickelt, JWM beherrscht keine Fensterlisten – was nimmt man da also am besten, wenn man einen einfachen Nicht-Tiling-Fenstermanager benötigt? Moment, da gab es doch noch was: Na klar: IceWM!

IceWM war einst mein persönlicher Einstieg in die Welt der minimalistischen Linuxoberflächen – das war, als KDE 2, Gnome 1.4 und Windows ME aktuell waren. Die Vorteile damals waren eine niedrige Einstiegshürde bei der Konfiguration und ein Windows-ähnliches Grundaussehen. Mit IceWM ließ sich auch als Linux-Anfänger schnell ein sehr individueller Desktop zusammenzimmern, da er schon eine gut vorkonfigurierte Taskbar mitbrachte und man sich von dort gut durch die selbsterklärenden Configdateien hangeln konnte. Daran hat sich bis heute eigentlich nichts geändert.

Kontinuität

Eine alte Konfigurationsdatei von damals war noch aufzutreiben – und funktioniert anstandslos mit der aktuellen Version. Nach knapp 20 Jahren hat man wieder seine Arbeitsumgebung von einst vor Augen. Erstaunlich. Die Faszination für eine schlichte Oberfläche ist dabei ungebrochen: Die Möglichkeit, in Menüs alles genau so anzuordnen, wie man es benötigt, sticht allen Komfort von Gnome, KDE & Co. immer wieder aus, gerade wenn man für ein System keine ausgewachsene Desktopumgebung benötigt. Der Geschwindigkeitsgewinn kommt obendrauf. Und – ein kleiner Seitenhieb auf die Gnome-Shell muss sein – seit selbst die Desktops auf Desktopsymbole verzichten, werden die Unterschiede zu Nur-Fenstermanagern sogar wieder geringer.

Die Rechner sind heute so flott, dass es eigentlich keinen Unterschied mehr macht, ob man Gnome, KDE oder einen Fenstermanager laufen lässt. Auf Animationen und graphischen Komfort will man auch kaum mehr verzichten. Doch IceWM findet offenbar trotzdem weiterhin seine Fans – und wird seit einiger Zeit sogar wieder aktiv weiterentwickelt, nachdem die Entwickler mehrmals wechselten. Distributionen wie Fedora liefern bereits die neuen Versionen aus.

Eine Schwachstelle von IceWM war damals die Optik: Wirklich gute Themes und Dekorationen gab es nicht, nur Windows- und OS/2-Imitationen und sonst sehr viele sehr bunte, verspielte „Raumschiffkommandozentralen“. Aus Ermangelung an schlichten, unaufdringlichen Themes begann ich damals einfach selbst, ein paar für den Eigengebrauch zu entwerfen, um die Funktionalität und das Handling von IceWM zu nutzen, aber das Ganze etwas ästhetischer aussehen zu lassen.

Ein Wiedersehen mit der eigenen Arbeit

Umso erstaunter war ich, als IceWM nun wieder auf der Platte landete – und mit ihm ein paar neue Standardthemes. die wirklich gut benutzbar sind. Noch erstaunter war ich, als sie mir sehr bekannt vorkamen. Jemand hat tatsächlich das Theme „NiceKristall“, eine Weiterentwicklung meines Themes „N-Icedesert“, benutzt, um für die AntiX-Distribution einen Satz Standardthemes unter dem Namen „Clearview“ zu entwerfen. Über diesen Umweg ist es auch in andere Distributionen gelangt, die IceWM paketieren – und somit zurück auf den eigenen Rechner. Ein wirklich nettes Wiedersehen. Open Source funktioniert. ;-)

Und wie nutzt sich IceWM nun im Jahre 2021? Immer noch genauso wie damals. Es gibt inzwischen auch noch andere schöne schlichte Themes, mit z. B. „win8“ oder „Shades of Grey“ oder „IceMint“ lässt sich IceWM in eine sehr modern wirkende, flotte Arbeitsumgebung verwandeln. In Kombination mit z. B. Compton bekommt man auch transparente Menüeffekte. Nur auf manuelles Tiling, eine Snap-Funktion, muss man verzichten, wie auch auf alle anderen graphischen Spielereien. Dafür fällt die Konfiguration und Bedienung so umfangreich aus wie eh und je. Während die Grundkonfiguration in einer zentralen Textdatei erledigt wird, lassen sich davon abweichend während des Betriebs Änderungen graphisch über das Hauptmenü vornehmen – beim nächsten Start werden wieder die Einstellungen aus der Textdatei verwendet. Anpassungen des Menüs, das nicht nur über den „Startbutton“, sondern auch über einen Kontextklick auf den freien Desktop erreicht wird, sowie die Bestückung der Taskleiste werden über separate Textdateien bewerkstelligt.

18. Februar 2021

Für Gtk-basierte Desktopumgebungen gibt es vermutlich eine Million Themes, für KDE gibt es fast nur den Standard Breeze und den vorherigen Standard Oxygen. Nun gibt es mit Lightly einen modernisierten Fork von Breeze.

Ich mochte Breeze immer, sowohl das Widgetdesign als auch die Icons sind hübsch und funktional. Die Veröffentlichung von KDE Plasma 5 liegt nun aber schon ein wenig zurück und Designtrends ändern sich. Bei macOS 11 kann man beobachten, dass das Pendel wieder etwas von der absoluten Reduktion in Richtung mehr grafische Darstellung zurück schwingt.

Ich persönlich finde außerdem vieles bei Breeze „gequetsch“. Ich habe FullHD auf einem 14″ Monitor, da darf ruhig ein wenig Platz um die Bedienelemente sein. Außerdem kann man auch jenseits von wabbelnden Fenstern grafische Effekte sinnvoll einsetzen.

Die Installation erfolgt bei openSUSE und Fedora aus einem Zusatz-Repositorium. Arch-Nutzer können das AUR bemühen.

Ich beobachte das Projekt schon länger aber mit Version 0.4 nähert man sich einem benutzbaren Zustand an. Es gibt noch Ecken und Kanten im neuen Design, aber ich finde es so ausgereift, dass ich gerne damit arbeite.

Lightly erfindet das Rad nicht neu, sondern ist meiner Meinung nach die notwendige Modernisierung, die Breeze nie erfahren hat.


Aktualisierung vom 22.02.21

Aus gegebenem Anlass möchte ich hier noch auf einen aktuellen Blogpost verweisen, der das KDE-Theming erläutert.

Der Artikel Lightly – Modernes Design für KDE erschien zuerst auf [Mer]Curius

Sowohl Launchpad als auch Github sind Webanwendungen auf denen man seine Projekte verwalten kann. Außerdem gibt es noch andere Anwendungen wie zum Beispiel Gitlab etc.

Disclaimer

ACHTUNG!!!

Es besteht die Möglichkeit, dass dieser Post eigene Meinung enthält.

Github

Github hat den großen Vorteil, dass es von enorm vielen Menschen benutzt wird. Dadurch hat man automatisch sehr viele potentielle Mithelfer an seinem Open Source-Projekt. Der wahrscheinlich größte Nachteil Githubs ist, dass es Closed Source ist (und dass es zu M$ gehört ]:-) ) Allerdings ist es nicht mehr so wie früher, dass man bei GitHub sehr zur Kasse gebeten wird. Eigentlich kann man alles, was man normalerweise braucht auch kostenlos erledigen.

Launchpad

Launchpad wurde von Canonical, also der Firma hinter Ubuntu, entwickelt.

Launchpad unterstützt im Gegensatz zu GitHub nicht nur Git als Versionskontrollsystem, sondern auch Bazaar nativ und kann fremde Repos z.B. von Github importieren.

Launchpad selber unterstützt Git und Bazaar, aber man kann auch Subversion- oder CVS-Repos importieren. Launchpad ist viel mehr als eine reine Code-Hosting-Plattform. Es ist genauso wie auf Github möglich, die Plattform als Bugtracker zu nutzen. Gleichzeitig bietet Launchpad aber zusätzlich noch ein wirklich wunderbares Web-Interface für Übersetzungen auf Basis gettexts und eine Frage-Antwort-Abteilung, die bei Github in die Issues-Abteilung integriert ist. Was aber wahrscheinlich die bekannteste Funktion Launchpad ist, ist die Möglichkeit mit den PPAs (Personal Package Archiv) anderen Leuten seine Programme als DEB-Paket zur Verfügung zu stellen.

Fazit

Eigentlich braucht es weder Github noch Launchpad. Theoretisch könnte man einfach einen Webserver benutzen und darauf seine Git-Repos hosten (oder man macht das mit NFS-Freigaben, dann kann man sogar den Webserver wegsparen), aber Github und Launchpad, machen einem das Leben aber deutlich einfacher. Wer allerdings unbedingt Bazaar als VCS haben möchte, sollte sich Launchpad unbedingt mal ansehen.

Meine Verwendung

Ich hoste meine meisten Projekte aktuell auf Github. Zum einen finde ich die Oberfläche intuitiever. Zum Anderen hat Github aber auch so viele Nutzer (und macht es diesen im Webinterface einfacher, sich an Projekten zu beteiligen), dass es wahrscheinlicher ist, dass sich mehr Leute an meinen Projekten beteiligen. Launchpad hat mit den PPAs allerdings auch einen Riesenvorteil.

Beispiel MyBrowse

Bei MyBrowse mache ich das folgendermaßen:

Der Quellcode liegt auf Github und dort wird auch entwickelt (da MyBrowse keine Lokalisierung braucht, brauche ich dieses wirklich tolle Feature Launchpads hier nicht). Launchpad importiert dann in regelmäßigen Abständen (5 Stunden) den Quellcode und baut täglich in mein testing-PPA die Pakete. Von dort kopiere ich dann die Pakete in das normale PPA.

17. Februar 2021

PulseAudio ist ein mächtiger Soundserver und Sonos bietet tolle WLAN Boxen. Mit ein paar Tricks kann man über PulseAudio auch die Sonos Boxen ansteuern.

Die Linux-Community ist manchmal einfach toll. Da klage ich ein wenig über Grenzen und Schwierigkeiten bei der Migration und sofort bekomme ich E-Mails mit hilfreichen Tipps. Die Lösung liegt manchmal so nahe.

Kleiner Hinweis vorweg. Man kann Sonos Boxen auch mit Noson ansteuern, aber ich mag diese dezidierten Apps nicht, sondern möchte die von mir präferierten Programme für das Abspielen nutzen.

Das kann man mit PulseAudio erreichen. Ein kleines Kommentar kann ich mir nicht verkneifen: Was haben damals die Ewiggestrigen gegen PulseAudio gegiftet. Braucht niemand, nicht ausgereift. Aus heutiger Sicht war das ein Vorgeschmack auf jenes, was danach mit systemd & Co kam. Heute gehört es zum festen Bestandteil jeder ernst zu nehmenden Distribution und wird sukzessive durch die weiter entwickelte Lösung pipewire abgelöst. Mal gucken, wann sich da der Hass der „Unix-Wutbürger“ entlädt.

Zurück zum Thema. Es gibt grundsätzlich wohl die Möglichkeit, mit PulseAudio auch Airplay 2 anzusteuern, ich konnte diese Lösung aber nicht zum Laufen bekommen. Die Boxen waren zwar sichtbar, aber blieben stumm. Eine weitere Möglichkeit besteht in der Nutzung von DLNA. Sonos unterstützt diesen Standard nicht offiziell, aber die Boxen können darüber angesteuert werden.

PulseAudio-DLNA installieren und einrichten

PulseAudio-DLNA ist eine Erweiterung, die leider nicht bei allen Distributionen zum Standardbaukasten gehört. Bei Ubuntu ist es für 18.04 noch in den Paketquellen, bei Debian steht es für alle Ausgaben zur Verfügung. Arch-Nutzer müssen leider zum AUR greifen und openSUSE-Anwender zum OBS.

Ist das entsprechende Paket installiert, ist es mit Benutzerrechten in der Konsole zu starten. Sollte eine Firewall wie ufw oder firewalld aktiviert sein, so muss man diese vorher deaktivieren. Ich konnte keine Portfreigabe ermitteln, die über die Session hinaus gültig und funktionsfähig bleibt.

$ pulseaudio-dlna

Danach läuft eine lange Ausgabe durch, in der man sieht, wann die Boxen erkannt werden.

[gerrit@GH-Elite ~]$ pulseaudio-dlna  
02-17 19:42:42 pulseaudio_dlna.application                    INFO     Using version: 0.6.0 
02-17 19:42:42 pulseaudio_dlna.application                    INFO     Binding to *:8080 
02-17 19:42:42 pulseaudio_dlna.application                    INFO     Encoder settings: 
02-17 19:42:42 pulseaudio_dlna.application                    INFO       <AVConvAacEncoder available="False" bit-rate="192"> 
02-17 19:42:42 pulseaudio_dlna.application                    INFO       <AVConvFlacEncoder available="False"> 
02-17 19:42:42 pulseaudio_dlna.application                    INFO       <AVConvL16Encoder available="False" sample-rate="44100" channels="2"> 
02-17 19:42:42 pulseaudio_dlna.application                    INFO       <AVConvMp3Encoder available="False" bit-rate="192"> 
02-17 19:42:42 pulseaudio_dlna.application                    INFO       <AVConvOggEncoder available="False" bit-rate="192"> 
02-17 19:42:42 pulseaudio_dlna.application                    INFO       <AVConvOpusEncoder available="False" bit-rate="192"> 
02-17 19:42:42 pulseaudio_dlna.application                    INFO       <AVConvWavEncoder available="False"> 
02-17 19:42:42 pulseaudio_dlna.application                    INFO       <FFMpegAacEncoder available="True" bit-rate="192"> 
02-17 19:42:42 pulseaudio_dlna.application                    INFO       <FFMpegFlacEncoder available="True"> 
02-17 19:42:42 pulseaudio_dlna.application                    INFO       <FFMpegL16Encoder available="True" sample-rate="44100" channels="2"> 
02-17 19:42:42 pulseaudio_dlna.application                    INFO       <FFMpegMp3Encoder available="True" bit-rate="192"> 
02-17 19:42:42 pulseaudio_dlna.application                    INFO       <FFMpegOggEncoder available="True" bit-rate="192"> 
02-17 19:42:42 pulseaudio_dlna.application                    INFO       <FFMpegOpusEncoder available="True" bit-rate="192"> 
02-17 19:42:42 pulseaudio_dlna.application                    INFO       <FFMpegWavEncoder available="True"> 
02-17 19:42:42 pulseaudio_dlna.application                    INFO       <FaacAacEncoder available="True" bit-rate="192"> 
02-17 19:42:42 pulseaudio_dlna.application                    INFO       <FlacFlacEncoder available="True"> 
02-17 19:42:42 pulseaudio_dlna.application                    INFO       <LameMp3Encoder available="True" bit-rate="192"> 
02-17 19:42:42 pulseaudio_dlna.application                    INFO       <NullEncoder available="True"> 
02-17 19:42:42 pulseaudio_dlna.application                    INFO       <OggencOggEncoder available="False" bit-rate="192"> 
02-17 19:42:42 pulseaudio_dlna.application                    INFO       <OpusencOpusEncoder available="False" bit-rate="192"> 
02-17 19:42:42 pulseaudio_dlna.application                    INFO       <SoxL16Encoder available="False" sample-rate="44100" channels="2"> 
02-17 19:42:42 pulseaudio_dlna.application                    INFO       <SoxWavEncoder available="False"> 
02-17 19:42:42 pulseaudio_dlna.application                    INFO     Codec settings: 
02-17 19:42:42 pulseaudio_dlna.application                    INFO       <AacCodec enabled="True" priority="12" mime_type="audio/aac" backend="generic"> 
02-17 19:42:42 pulseaudio_dlna.application                    INFO       <FlacCodec enabled="True" priority="9" mime_type="audio/flac" backend="generic"> 
02-17 19:42:42 pulseaudio_dlna.application                    INFO       <L16Codec enabled="True" priority="1" mime_type="audio/L16" backend="generic"> 
02-17 19:42:42 pulseaudio_dlna.application                    INFO       <Mp3Codec enabled="True" priority="18" mime_type="audio/mp3" backend="generic"> 
02-17 19:42:42 pulseaudio_dlna.application                    INFO       <OggCodec enabled="True" priority="6" mime_type="audio/ogg" backend="generic"> 
02-17 19:42:42 pulseaudio_dlna.application                    INFO       <OpusCodec enabled="True" priority="3" mime_type="audio/opus" backend="generic"> 
02-17 19:42:42 pulseaudio_dlna.application                    INFO       <WavCodec enabled="True" priority="15" mime_type="audio/wav" backend="generic"> 
02-17 19:42:42 pulseaudio_dlna.plugins.chromecast             INFO     ChromecastPlugin.discover() 
02-17 19:42:42 pulseaudio_dlna.pulseaudio                     INFO     Module "module-dbus-protocol" already loaded. 
02-17 19:42:42 pulseaudio_dlna.pulseaudio                     INFO     Probing for $PULSE_DBUS_SERVER unsuccessful. 
02-17 19:42:42 pulseaudio_dlna.pulseaudio                     INFO     Probing for /run/pulse/dbus-socket unsuccessful. 
02-17 19:42:42 pulseaudio_dlna.pulseaudio                     INFO     Probing for $XDG_RUNTIME_DIR successful (unix:path=/run/user/1000/pulse/dbus-socket). 
02-17 19:42:42 pulseaudio_dlna.pulseaudio                     INFO     Probing for org.PulseAudio.ServerLookup1 successful (unix:path=/run/user/1000/pulse/dbus-soc
ket). 
02-17 19:42:42 pulseaudio_dlna.pulseaudio                     INFO     Found the following pulseaudio server addresses: unix:path=/run/user/1000/pulse/dbus-socket 
02-17 19:42:42 pulseaudio_dlna.pulseaudio                     INFO     Connecting to pulseaudio on "unix:path=/run/user/1000/pulse/dbus-socket" ... 
02-17 19:42:43 pulseaudio_dlna.pulseaudio                     INFO     Added the device "Küche - Sonos One SL Media Renderer (DLNA)".
 

Ganz unten sieht man wie mein Sonos ONE SL in der Küche erkannt wird. Diesen kann ich nun im Plasma Audioapplet als Ziel auswählen.

Danach kann ich mit einem beliebigen Programm wie Elisa Musik abspielen. Zu beachten ist die erhebliche Latenz, weshalb die Methode nur für Musik oder Podcasts funktioniert.

Das ist kein gleichwertiger Ersatz für Airplay aber definitiv viel besser als alle anderen getesten Lösungen.

Der Artikel Sonos Boxen mit PulseAudio verbinden erschien zuerst auf [Mer]Curius

Die meisten Anwender wären wohl schon froh, hätten sie Android 10 bereits auf ihren Geräten, geschweige den das aktuelle 11. So langsam sickern aber die ersten Funktionen der turnusgemäß dieses Jahr zu erwartenden Version 12 durch.

Herzlich lachen musste ich bei der Ankündigung neuer „Privacy-Funktionen“, die von der Berichterstattung gleich mal in die Nähe der Funktionen von iOS gerückt wurden. Konkret geht es wohl um Indikatoren, die anzeigen, ob eine App gerade auf Kamera oder Mikrofont zugreift.

Es war klar. Nachdem Apple letztes Jahr mit einem umfassenden Tracking-Einwilligungssystem vorgelegt hat, musste Google dringend PR-technisch nachziehen.

Aber natürlich nichts, was dem Umsatz von Alphabet schadet – also nichts, was wirklich gegen Personalisierung, Tracking und Datensammlung mit dem Zweck der Werbungsauslieferung hilft. Nicht umsonst hat Google im Herbst seine iOS-Apps längere Zeit nicht aktualisiert. Vermutlich musste die Rechtsabteilung erst prüfen, wie wenig Transparenz noch erlaubt ist.

Bei dem System, dessen Entwicklung man bestimmt, macht man so etwas natürlich nicht. Aber auch bei Google weiß man: PR ist wichtig. Also macht man etwas, das sich ganz nett in den Ankündigungen liest und Googles Geschäftsmodell überhaupt nicht tangiert. Anders gesagt: Indikatoren für Kamera und Mikrofon-Nutzung. Da fühlen sich die Kunden ganz sicher und es stört niemanden.

Mit Google wird es niemals ein wirklich sicheres (im Sinne von Datenschutz und Privatsphäre) Android geben. Natürlich kann man versuchen, ohne Google zu arbeiten oder ein Custom ROM einzusetzen, aber selbst danach baut das Gerät noch Verbindungen zu Google auf. Jede einzelne tief verankerte Verbindung zu Google zu kappen kostet enorm viel Aufwand und kann durch ein Update der ROM auch gleich wieder konterkariert werden. Und wehe, ihr braucht nur eine proprietäre App: Dann seid ihr nahe dran am Vorhof zur Hölle.

Das gilt ebenso für Programme wie Chrome/Chromium oder das in den USA zunehmend populäre Chrome OS. Der Konzern will eure Daten, weil Werbung und Daten inzwischen untrennbar verwoben sind. Alles andere ist nur Mittel zum Zweck. Open Soure darf da freundlicherweise noch den Open Core beisteuern.

Letztlich bleibt da nur die Hoffnung auf wirkliche freie Systeme oder der Griff zu einem iPhone. Natürlich fließen auch da Daten ab und natürlich ist Apple keine Hilfsorganisation mit hehren Zielen. Aber wenigstens eine Firma mit einem Geschäftsmodell jenseits der Personalisierung von Werbung.

Wirklich bedauerlich ist aber nicht die Art, wie Alphabet sein Geld verdient oder wie Android entwickelt wird. Wir leben in einer kapitalistischen Weltordnung und was legal ist, darf gemacht werden. Wirklich bedauerlich ist, wie sehr die Medien immer wieder PR-Meldungen abschreiben. Dazu kann ganz hilfreich sein, sich mal die vielen Abhängigkeiten anzusehen.

Der Artikel Kommentar: Android – Privacywashing durch Google erschien zuerst auf [Mer]Curius

16. Februar 2021

Schon 8 Jahre nach der Erstveröffentlichung gibt es eine neue Version von fcd, dem schnellen Verzeichniswechsler für die Shell.

(Anm.: Mithilfe der Kommentare habe ich einen Bug gefunden, und in den Kommentaren wird auch erklärt, wie man ihn beseitigt. Ein Update des Artikels folgt daher in Kürze).

Die neue Version kommt mit Leerzeichen in Verzeichnisnamen zurecht – eine Funktion, die ich nicht direkt selbst brauche, da ich keine Verzeichnisse mit Leerzeichen mache, aber immer mehr Programme legen solche Verzeichnisnamen an (z.B. ‚VirtualBox VMs‘, Zoom: ‚Unknown Organization‘, …) und diese tauchen störend in den Auswahllisten auf.

Der Fix war überraschend einfach, nachdem ich mich erst mal zu der v.a. kosmetisch gedachten Verbesserung aufgerafft hatte.

Hier der neue Code:

#!/bin/bash
#
# fcd.sh: Fast change directory.
#
# Source it from your .bashrc-file, to use it as a function.
#
# Update Ver.1.0, 2021-02-07
# changed from locate/egrep to mapfile, see code. Handles blanks in paths now flawlessly
# Update Ver.0.9, 2013-08-21, comments, publication
# Prototyp 2010
#
# Copyright GPLv3
# fcd () { # list=$(locate $1 | egrep "/$1$")
mapfile -d '' list < <(locate -b -0 -r "$1$") count=$(echo $list | wc -w ) case $count in 0) echo "unknown directory: "$1 && return # could search for partial matches Doc => Documentation ;; 1) if [[ -d "$list" ]]; then echo "1) match: $list" cd "$list" else echo "not a directory: $1" fi ;; *) select directory in "${list[@]}" "/exit/"; do if [[ "$directory" = "/exit/" ]]; then
break;
fi if [[ -d "$directory" ]]; then echo "multi) $directory" cd "$directory" break else echo "not a directory: "$1 fi done ;; esac }

15. Februar 2021

Standardmäßig zeigt Hugo nur den Anfang eines Artikels in den Feeds an.

Will man dies ändern kann man wie folgt vorgehen:

Normalerweise sollte man nicht die Themes direkt unter themes/ bearbeiten. Stattdessen sollte man die Vorlagen nach layouts kopieren und dort bearbeiten beziehungsweise aus dem Git-Repo dorthin herunterladen. Also folgende Befehle ausgehend von dem Pfad des Blogs:

cd layouts/_default
wget https://raw.githubusercontent.com/gohugoio/hugo/master/tpl/tplimpl/embedded/templates/_default/rss.xml

Jetzt kann man die Datei rss.xml editieren und die Zeile

{{ .Summary | html }}

durch

{{- .Content | html -}}

Danach muss man die Seite neu bauen.

Gefunden hatte ich die Lösung hier.

Xfconf, also Xfces Konfigurationsmanager, bietet die Möglichkeit die Konfiguration nicht nur über die grafische Oberfläche sondern auch über die Kommandozeile zu nutzen. Dies ist zum Beispiel in Skripten nützlich.

Das Theme lässt sich folgender Maßen anpassen:

xfconf-query -c xsettings -p /Net/ThemeName -s 

Und der Iconsatz lässt sich folgendermaßen anpassen:

xfconf-query -c xsettings -p /Net/IconThemeName -s 

So lässt sich bspw. ein Skript erstellen. Ich habe mir also zwei Skripte erstellt, die zwischen einem hellen und einem dunklen Theme wechseln.

Theoretisch könnte man dies auch in einem Skript z.B. wie folgt zusammenfassen.

#!/bin/bash
if [ "$1" == "light" ]
    then
	    xfconf-query -c xsettings -p /Net/ThemeName -s Adapta
	    xfconf-query -c xsettings -p /Net/IconThemeName -s Papirus-Adapta
	    notify-send "Theme" "Helles Theme aktiviert"
    elif [ "$1" == "dark" ]
    	then
    		xfconf-query -c xsettings -p /Net/ThemeName -s Adapta-Nokto
    		xfconf-query -c xsettings -p /Net/IconThemeName -s Papirus-Adapta-Nokto
    		notify-send "Theme" "Dunkles Theme aktiviert"
    else
    	echo "Fehlendes oder falsches Argument. Beende..."
    	exit 1
fi

Wenn man das Skript jetzt also mit dem Argument “light” aufruft, würden ein helles Theme und ein helles Icontheme aktiviert und mit dem Argument “dark” mit einem entsprechenden dunklen Design. Die Themen müsste man natürlich entsprechend den eigenen Vorlieben anpassen

14. Februar 2021

Was ist das


Sonobus ist eine Software, die entweder eigenständig, oder als VST3 Plugin benutzt werden kann, um mit anderen Menschen live Peer to Peer zu musizieren. Die Software läuft auf allen gängigen Betriebsystemen wie Linux, Windows,Mac, Android und IOS.

 

Natürlich ist eine schnelle Internetanbindung eines jeden Teilnehmers wichtig. Und mit Schnell ist nicht nur der Down- und Upload 100Mbit/20Mbit) gemeint, sondern die Latenz. Also wie lange ein Netzwerkpaket von dir zu deinen Mitmusikern braucht. Und der ganze Weg wieder zurück. Das wird oft auch als Ping bezeichnet (so heisst das Programm), der als Wert Milisekunden zurück gibt. Je niedriger dieser Wert in Millisekunden ist, desto besser. Wenn der Wert z.B. über 50ms geht, könnte es etwas abenteuerlich werden und man sollte vielleicht lieber auf sehr langsame Musik, bzw sehr unrhythmische Musik ausweichen, oder die Jamsession als hochexperimentell verstehen ;)

 

Für Debian basierte Linux Distributionen wie Ubuntu/Kubuntu gibt es mittlerweile fertige Pakete oder auch Snap-Packages zum Installieren.

Für einige dieser Betriebsysteme gibt es bereits fertige Versionen zum installieren als Download. Für andere Betriebsysteme, wie Linux muss die Software selbst erstellt (compiliert) werden. Das ist zwar etwas aufwändiger, aber sehr einfach zu machen und dafür auch wesentlich angepasster an das eigene System.

 

Auf der Entwicklerseite sind die paar einfachen Schritte gut erklärt dokumentiert, die ich hier etwas angepasst wiederhole, um zu zeigen, dass es wirklich sehr einfach ist. Ich compiliere die Software auf einem Notebook mit Kubuntu 20.04 LTS und dem KXStudio Repository, auf dem ich Musik mit Bitwig produziere.

 

Das Videotutorial zum Blog

YoutubePeerTube

 

Neue Installationsanleitung

Die Installation aus den Quellen hat sich in der letzten Version geändert und dadurch einfacher geworden. Wer noch die alten Quellen und Installation von meiner letzten Beschreibung auf der Festplatte hat, kann das aber trotzdem weiter benutzen. Ich belasse die alte Beschreibung weiter unten, damit man sich dort ein wenig orientieren kann, wie das zuvor ging und in welchen Pfaden das auf der Festplatte .

Anmerkung: Es gibt zwar eine fertige .DEB installationsdatei für Ubuntum, allerdings halte ich diesen Weg für den sichereren, da durch das selber kompilieren die Software exakt auf das eigene System angepasst wird. Ander sähe es aus, wenn das Paket über die öffentlichen Ubuntuserver verfügbar wären. Desweiteren benutze ich eine 20.04 LTS Version. Hier könnten auch noch ein paar unabsichtliche Fallen bei der Runterladbaren Version enthalten sein, wenn diese auf neuere Programmbibliotheken zugreifen will.

Also wieder im entsprechenden Verzeichnis (siehe alte Beschreibung) angekommen ~/Programme/Sonobus/sonobus gleich mal den Quellcode aktualisieren mit

git pull

mit diesem Befehl werden alle Dateien des Quellcodes auf den aktuellen Stand abgeglichen und sämtliche Neuerungen von dem sogenannten Software-Repository, also dem zentralen Speichertort im Internet runtergeladen. Das Programm git weiss noch von der alten Installation, wo sich dieses Repository befindet (auf github.com) und legt mit dem Download los.

Nachdem das alles erledigt und alle Dateien aktualisiert sind, geht es daran die neue Version von SonoBus zu kompilieren. Dazu muss man in ein weiteres Unterverzeichnis “linux” wechseln

cd linux

In diesem Verzeichnis befindet sich eine Datei namens “BUILDING.md” in der genau beschrieben wird, wie man die Software für Fedora und für Ubuntu (Debian basierte Distributionen) kompiliert (erstellt). Dazu ruft man zuerst deb\_get\_prereqs.sh mit root Rechten auf, um sicher zu stellen, dass auch alles auf dem System installiert ist, um das Programm zu kompilieren.

sudo ./deb_get_prereqs.sh

Wenn das alles sauber durchgelaufen ist, dann ruft man das Script build.sh auch wieder mit root Rechten auf

sudo ./build.sh

Das dauert ein wenig und wenn hier alles sauber durchgelaufen ist, kann man SonoBus im System installieren mit

sudo ./install.sh

Und schon hat man die aktuelle Version kompiliert und installiert.

 

******* ALT *******

Vorbereitung

Damit die Software erstellt (compiliert) werden kann, müssen bestimmte Pakete installiert sein (wie z.B. den Compiler und die Bibliotheken, deren Funktionen im Programmcode aufgerufen werden und das Programm mit dem der Programmcode/Quellcode auf den eigenen Computer kopiert wird). Genug der Erklärungen, legen wir los.

Die Konsole öffnen und mit folgendem Befehl **alle notwendigen Programme (Compiler, Bibliotheken, usw) installieren**. Hier finden sich mehr Pakete, als auf der Entwicklerseite, weil diese davon ausgehen, dass der Compiler und Git schon auf deinem System installiert ist.

Pakete installieren

sudo apt install libopus-dev libopus0 libjack-jackd2-dev libasound2-dev libx11-dev libxext-dev libxinerama-dev libxrandr-dev libxcursor-dev libgl-dev libfreetype6-dev opus-tools git build-essential

Verzeichnisse erstellen
In meinem Fall habe ich in meinem Home-Verzeichnis ein Verzeichnis, das “Programme” heisst und in diesem Verzeichnis erstelle ich ein Unterverzeichnis “Sonobus". Wenn du das genauso machen willst und das Verzeichnis “Programme” noch nicht hast, dann gehe folgendermaßen in der Konsole vor

Wechsel zuerst in dein Homeverzeichnis /home/deinBenutzerName/ entspricht der Tilde ~

cd ~

Erstelle das Verzeichnis “Programme” und wechlse in das Verzeichnis

mkdir Programme
cd Programme

Erstelle das Verzeichnis “Sonobus” und wechsle in das Verzeichnis

mkdir Sonobus
cd Sonobus

 

Den Quellcode Downloaden
Jetzt “downloade” bzw klone den Quellcode (das dauert 1-2 Minuten)

git clone https://github.com/essej/sonobus.git

Wechlse in das Unterunterverzeichnis “Builds/LinuxMakefile”

cd Builds/LinuxMakefile

Auf einem U/Kubuntu System rufst du zur Sicherheit, dass auch alles installiert ist, dieses Script mit root (Superuser) Rechten auf

sudo bash ubuntu\_get\_prereqs.sh

 

Sonobus erstellen und installieren
Und jetzt erstellst (compilierst) du das Programm

./build.sh

Das dauert jetzt eine Weile (10 Minuten+) Je nachdem wie schnell dein Computer ist. Wenn alles fertig ist, dann sieht du wieder die Eingabezeile und die letzten Ausgaben dürften ungefähr so aussehen

Linking SonoBus - Shared Code
Linking SonoBus - Standalone Plugin
Linking SonoBus - VST3

Jetzt kannst du Sonobus installieren mit (root Rechten)

sudo ./install.sh

 

Zum Deinstallieren gibt es in diesem Unterverzeichnis auch noch ein Script

sudo ~/Programme/Sonobus/sonobus/Builds/LinuxMakefile/uninstall.sh

Der lange Pfad mit der Tilde stellt nur sicher, dass auch das richtige Skript im richtigen Verzeichnis aufgerufen wird und ihr könnt diesen Befehl aus jedem Verzeichnis aus aufrufen.

 

Sonobus aufrufen

  1. Jetzt kannst du mit deinem normalen Benutzer das Programm aus der Konsole aufrufen. indem du einfach Folgendes eingibst und Enter drückst
    SonoBus
  2. Oder unter Kubuntu kannst du das Programm über das Menü in der Kategorie “Multimedia” finden und dort anklicken.
  3. Oder lade in deiner DAW das VST Plugin Sonobus.

 

Ich wünsche dir und deinen Freunden viel Spaß beim online Musizieren !

 

Quellen

  1. Sonobus Webseite https://sonobus.net/
  2. Sonobus Handbuch https://sonobus.net/sonobus_userguide.html
  3. Sonobus git Repository (Quellcode) https://github.com/essej/sonobus
  4. Kubuntu https://kubuntu.org/
  5. KX Studio https://kx.studio/
  6. Bitwig https://www.bitwig.com/

 

 

 

 

 

Unter dem Namen Proton arbeitet Mozilla an einem neuen Design für Firefox. Dieser Artikel gibt ein Update zum aktuellen Stand der Entwicklung.

Proton ist das neue Firefox-Design

Unter dem internen Projektnamen Proton arbeitet Mozilla an einem neuen Design seines Desktop-Browsers, welches mit Firefox 89 das Licht der Welt erblicken soll. Über Proton wurde auf diesem Blog weltweit als erstes berichtet.

Die Veröffentlichung von Firefox 89 ist derzeit für den 18. Mai 2021 geplant.

Ein Fokus liegt auf Vereinfachung

Menüs (Hauptmenü, Kontextmenüs)

Ein Fokus mit dem kommenden Proton-Design liegt auf der Vereinfachung für den Anwender. Erreicht wird dies, indem Menüs wie das Hauptmenü und die Kontextmenüs aufgeräumt werden. Überflüssige Menüeinträge werden entfernt oder an Bedingungen geknüpft, wie Kopieren und Ausschneiden in Textfeldern nur, wenn auch Text markiert ist, Barrierefreiheit-Eigenschaften untersuchen nur, wenn die Entwicklerwerkzeuge mindestens einmal benutzt worden sind, und Seite an Gerät senden nur, wenn der Nutzer in Firefox Sync angemeldet ist und mit mindestens einem weiteren Gerät synchronisiert. Teilweise finden auch Umbenennungen und eine Umsortierung von Menüeinträgen statt. Die Umstrukturierungen der Menüs (dies schließt Design-Änderungen nicht ein) werden bereits vorab ab Firefox 87 ausgeliefert werden.

Navigations-Symbolleiste

Eine Reduzierung gibt es auch bei den Schaltflächen in der Navigations-Symbolleiste. So wird beispielsweise der Startseiten-Button für Nutzer, welche die Standard-Startseite von Firefox nutzen und diese Schaltfläche bisher nicht genutzt haben, aus der Oberfläche entfernt. Für alle anderen Nutzer bleibt die Schaltfläche bestehen, auch ein manuelles Hinzufügen, falls automatisch entfernt, wird weiterhin möglich sein. Für Nutzer, welche ihre Startseite ändern, soll der Startseiten-Button automatisch hinzugefügt werden (sofern nicht manuell entfernt).

Auch der Sidebar-Button soll standardmäßig aus der Oberfläche entfernt werden, falls vom Anwender nicht benutzt. Gleiches gilt für die Bibliotheks-Schaltfläche, über welche man auf die Lesezeichen, Chronik sowie Downloads zugreifen kann. Eben jene drei Menüpunkte werden im neuen Hauptmenü von der zweiten auf die erste Ebene verschoben und sind damit über das Hauptmenü genauso schnell zugänglich wie über das Bibliotheks-Menü.

Proton-Hauptmenü Firefox

Die Schaltfläche für das Firefox-Konto soll in Zukunft nur noch angezeigt werden, wenn der Nutzer in Firefox Sync angemeldet ist.

Der Button, welcher Neuerungen nach einem Firefox-Update anzeigt, wird vollständig entfernt.

Adressleiste

Das Menü mit den drei Punkten in der Adressleiste wird entfernt. Dieses wurde von nur sehr wenigen Menschen überhaupt genutzt. Funktionen, die sich bislang darin befinden, sind entweder sowieso auf einem anderen Weg erreichbar oder werden mit Proton auf andere Weise erreichbar gemacht. So erhält beispielsweise die Screenshot-Funktion eine Schaltfläche, welche wie viele andere Schaltflächen auch in die Navigations-Symbolleiste oder deren Überhangsmenü geschoben werden kann. Die Funktion zum Hinzufügen sogenannter OpenSearch-Suchmaschinen wird in das Adressleisten-Dropdown integriert.

Kontextbezogene Feature-Empfehlungen in der Adressleiste wird es nicht länger geben.

Tabs zeigen Medien-Status deutlicher an

Die Tabs kommen nicht nur mit einer neuen Form, sie zeigen in Zukunft auch den Status wie „Wird abgespielt“, „Stumm“, „Automatische Wiedergabe blockiert“ oder „Bild-im-Bild“ in einer zweiten Zeile an.

Proton-Tabs Firefox

Neue Kontextmenüs mit Dark Mode-Unterstützung

Ein großer Bereich sind, auch abseits der strukturellen Änderungen, die Kontextmenüs. Nutzer von Windows 10 erhalten hier, passend zu Windows 10, ein moderneres Erscheinungsbild, welches außerdem den Dark Mode von Windows unterstützt. Nutzer von Windows 7 sowie Windows 8 erhalten weiterhin die alte Optik.

Proton-Kontextmenü Firefox

Auf Apple macOS ist der Umbau bedeutend größer, denn hier wechselt Mozilla von seiner „Fake-Kontextmenü-Implementierung“ zu nativen Kontextmenüs – einem der ältesten noch offenen Nutzer-Wünsche auf Bugzilla mit einem Ticket-Alter von mittlerweile 21 Jahren. Dies sorgt nicht nur für eine bessere System-Integration und schönere Optik, sondern bringt auch hier die Unterstützung für den Dark Mode des Betriebssystems.

Weitere Verbesserungen der User Experience?

Im ersten Artikel über Proton wurde davon gesprochen, dass weitere Verbesserungen der User Experience evaluiert werden, darunter ein Modus für seitlich platzierte Tabs oder die Gruppierung sogenannter Tab-Umgebungen. Diese Features könnten vielleicht irgendwann in der Zukunft kommen, sind aber in jedem Fall zu umfangreich für Firefox 89 und werden nicht Teil von Proton sein.

Proton in Firefox Nightly aktivieren

Eines direkt vorab: Es gibt keinen magischen Schalter, welcher das neue Design zu diesem Zeitpunkt in seiner finalen Form aktiviert. Die Arbeiten sind derzeit noch in vollem Gange, vieles ist noch unvollständig. Wer aber neugierig ist und die Entwicklung etwas direkter verfolgen möchte, kann dies tun. Voraussetzung hierfür ist die Verwendung einer Nightly-Version von Firefox.

Update 05.03.2021: An dieser Stelle gab es eine Übersicht über alle Optionen. Stattdessen sei hier nun auf einen aktualisierten Artikel hingewiesen, welcher alle Optionen nach heutigem Stand beinhaltet.

Feedback an Mozilla geben

Natürlich darf an dieser Stelle nicht der obligatorische Hinweis fehlen: Der aktuelle Stand repräsentiert noch lange nicht das fertige Design. In den nächsten Wochen und Monaten wird sich hinter den genannten (und möglicherweise noch weiteren neuen Schaltern) eine Menge tun. Und dass die meisten Schalter nicht nur standardmäßig deaktiviert sind, sondern vom Nutzer sogar selbst erst angelegt werden müssen, unterstreicht das frühe Stadium der Entwicklung.

Wer dennoch Feedback an Mozilla geben möchte, hat dazu mehrere Möglichkeiten wie den Raum #Proton auf chat.mozilla.org oder ein Thema im offiziellen Nightly-Forum von Mozilla zu eröffnen. In beiden Fällen erfolgt die Kommunikation natürlich in englischer Sprache.

Der Beitrag Proton: Update zum kommenden Firefox-Design erschien zuerst auf soeren-hentzschel.at.

Ich frage mich, warum ich hier eigentlich gar nicht über MyBrowse berichte. Viel mehr Infos darüber findet man tatsächlich im entsprechenden Thread auf ubuntuusers. Das will ich hiermit ändern und vor allem meine Ambition und meine Ziele dahinter klarmachen.

Warum?

Computer sind viel zu schnell zu alt. Ich selber bin stolzer Nutzer eines ca. 10 Jahre alten Notebookes und muss demzufolge mit Restriktionen rechnen. Die meisten Browser wie Firefox (und auch der oftmals als viel schneller und ressourcenschonender dargestellte Chrom{e/ium} frisst Ressourcen)

Firefox ist ein toller Browser! Wirklich! Aber er ist halt sicher nicht der ressourcenschonenste.

Viele Browser vergessen, wofür ein Webbrowser da ist. Man vergisst, dass ein Webbrowser Internetseiten darstellen soll und nicht noch zwei dutzend andere Dinge machen soll, auch wenn für mich ein bisschen Komfort beim Surfen dazugehört. Aber eben alles in Maßen.

Es gibt für mich aktuell genau einen Browser, der alle diese Bedingungen erfüllt und das ist meiner Meinung nach Lariza. Da ich aber nicht so hohe Anforderungen an einen Browser habe, habe ich also beschlossen, einen eigenen Browser zu programmieren, auch auf Basis WebKits sowie in Python.

Was mich auch gestört hat, ist das viele Browser meinen, dass man einen eigenen Stil festlegen soll. Warum lege ich denn GTK-Themes fest, wenn jedes Programm dann doch eigene Farben definiert.

Ein anderer Hintergrundgedanke für mich war, dass meine Pythonkenntnisse im Moment eher als rudimentär zu bezeichnen sind und ich diese so ausbauen will.

So entstand innerhalb eines Tages die erste laufende Version von MyBrowse, die ich auch kurz darauf im o.g. Thread bekanntgab.

Quo vadis?

MyBrowse ist mein Webbrowser. Ich habe ihn als Ersatz für Firefox auf meinem Notebook geschrieben und habe meine eigenen Anforderungen an einen Browser.

Von daher versteht es sich denke ich von selbst, dass ich gerne Ideen und Gedanken anderer Nutzer aufgreife, aber nicht alles umsetze. Ich möchte einen Browser, der auf mich zugeschnitten ist und der meine Anforderungen trifft. Auf keinen Fall möchte ich, dass daraus so ein wunderbarer, aber aufgeblähter, Browser wie Firefox entsteht, sondern dass es endlich einen Browser gibt, der auch für Systeme älteren Semesters funktioniert.

Ich hoffe, dass ich hier während der Entwicklung noch mehr über MyBrowse schreiben werde.

  1. YubiKey Teil I – Einleitende Bemerkungen
  2. YubiKey Teil II – LUKS Verschlüsselungen mit 2FA
  3. YubiKey Teil III – Zwei-Faktor-Authentifizierung mit U2F
  4. YubiKey Teil IV – KeePassXC absichern
  5. Exkurs: YubiKey-Software

Passwörter sind ein gescheitertes Konzept. Nur leider haben wir immer noch kein Besseres für den flächendeckenden Einsatz. Die sogenannte Zwei-Faktor-Authentifizierung via SMS oder TOTP soll hier mehr Sicherheit bringen. Eine weitere Möglichkeit ist ein Security Key wie der YubiKey. Damit lassen sich hardwarebasierte Codes erzeugen.

Die Möglichkeit, mit einem YubiKey sichere Codes für eine Zwei-Faktor-Authentizierung zu generieren, gehört sicherlich zu den bekanntesten Möglichkeiten des YubiKeys. Trotz aller Bemühungen prominenter Mitglieder in der FIDO-Allianz und der Unterstützung durch alle verbreiteten Browser ist dieser Mechanismus leider immer noch ein Nischenphänomen.

Wer sich mit den Details von U2F beschäftigen möchte, kann dies hier nachlesen. Stark vereinfacht funktioniert U2F nach folgendem Muster: Jede Webseite oder Anwendung bekommt ein eigenes Geheimnis „Secret“. Dieses Geheimnis wird direkt auf dem YubiKey generiert und kann nicht kopiert werden. Dem Dienst wird ein öffentlicher Schlüssel mitgeteilt, über den der YubiKey authentifiziert wird. (Wir kennen das Verfahren von der E-Mail Verschlüsselung).

Im Gegensatz zu TOTP ist U2F leider kaum verbreitet. Ich persönlich kann damit lediglich GitHub, Twitter und diese Seite hier absichern. WordPress unterstützt zwar von Haus aus kein 2FA, aber das Open Source-Plugin Two Factor bietet dies an.

Der Gebrauch ist dann denkbar einfach. Nach Eingabe der Login-Daten erscheint ein Hinweis in Firefox und der YubiKey blinkt. Durch physische Betätigung des YubiKeys erfolgt die Anmeldung.

Im Alltag schwäche ich die Absicherung leider ab, indem ich grundsätzlich noch ein zweites Verfahren aktiviere. Man weiß ja nie, wann man an einem PC sitzt, der entweder keinen USB-C Anschluss hat, die Benutzung von USB-Geräten durch Verklebung oder Policy verbietet oder kein geeignetes Betriebssystem nutzt (wobei das immer seltener wird). Meistens kann ich mich also auch alternativ mit einem App-generierten TOTP Code anmelden.

Ich bezweifle leider auch, dass sich diese Methode wirklich flächendeckend durchsetzt. Alleine die Notwendigkeit, ein zusätzliches Stück Hardware anzuschaffen und mit sich zu führen, dürfte viele abschrecken. Trotzdem freue ich mich über jeden Dienst, der diese Möglichkeit zur Authentifizierung unterstützt.

Der Artikel YubiKey Teil III – Zwei-Faktor-Authentifizierung mit U2F erschien zuerst auf [Mer]Curius

13. Februar 2021

MariaDB Galera Cluster wiederherstellen

Ich spiele zur Zeit mit einem MariaDB-Cluster herum der mit Galera läuft. Bisher bin ich damit auch sehr zufrieden. Ein Malheur, was mir allerdings gerade zu Beginn passiert ist, ist dass man am besten nicht alle Server auf einmal herunterfährt. In diesem Fall kommt der Cluster nämlich nach einem Neustart von selbst nicht mehr hoch.

Dies liegt daran, dass die jeweilige Node im Cluster, die im wsrep_cluster_address aufgeführten weiteren Nodes versucht zu erreichen, da allerdings auf keiner MariaDB gestartet ist, schlägt dieser Versuch fehl.  In diesem Moment hat man den Cluster quasi zerstört. Ein Neustart des Galera Clusters ist aber, wenn man erst mal weiß wie, recht trivial.

Lasst euch auf allen Nodes die grastate.dat ausgeben. Diese beinhaltet den aktuellen Stand der jeweiligen Node:

root@fe02:~# cat /var/lib/mysql/grastate.dat
# GALERA saved state
version: 2.1
uuid:    a4675eb2-6ab8-11eb-910e-8e8084de41df
seqno:   22355
safe_to_bootstrap: 0

Dies sieht z.B. bei mir so aus. Die Node mit der höchsten seqno ist am weitesten und somit auf dem neuesten Stand. Dort wird nun ein einfaches galera_recovery ausgeführt. Dadurch sollte safe_to_bootstrap auf 1 springen.

Nun reicht ein einfaches galera_new_cluster. Anders als der Befehl vermuten lässt, erstellt der Befehl in diesem Sinn keinen neuen Cluster, sondern erkennt die Daten des vorhandenen Clusters und startet mit diesen einen neuen.

Anschließend lassen sich ganz normal per systemctl start mariadb die vorhanden Nodes wie gewohnt starten.

MariaDB Galera Cluster wiederherstellen

Ich spiele zur Zeit mit einem MariaDB-Cluster herum der mit Galera läuft. Bisher bin ich damit auch sehr zufrieden. Ein Malheur, was mir allerdings gerade zu Beginn passiert ist, ist dass man am besten nicht alle Server auf einmal herunterfährt. In diesem Fall kommt der Cluster nämlich nach einem Neustart von selbst nicht mehr hoch.

Dies liegt daran, dass die jeweilige Node im Cluster, die im wsrep_cluster_address aufgeführten weiteren Nodes versucht zu erreichen, da allerdings auf keiner MariaDB gestartet ist, schlägt dieser Versuch fehl.  In diesem Moment hat man den Cluster quasi zerstört. Ein Neustart des Galera Clusters ist aber, wenn man erst mal weiß wie, recht trivial.

Lasst euch auf allen Nodes die grastate.dat ausgeben. Diese beinhaltet den aktuellen Stand der jeweiligen Node:

root@fe02:~# cat /var/lib/mysql/grastate.dat
# GALERA saved state
version: 2.1
uuid:    a4675eb2-6ab8-11eb-910e-8e8084de41df
seqno:   22355
safe_to_bootstrap: 0

Dies sieht z.B. bei mir so aus. Die Node mit der höchsten seqno ist am weitesten und somit auf dem neuesten Stand. Dort wird nun ein einfaches galera_recovery ausgeführt. Dadurch sollte safe_to_bootstrap auf 1 springen.

Nun reicht ein einfaches galera_new_cluster. Anders als der Befehl vermuten lässt, erstellt der Befehl in diesem Sinn keinen neuen Cluster, sondern erkennt die Daten des vorhandenen Clusters und startet mit diesen einen neuen.

Anschließend lassen sich ganz normal per systemctl start mariadb die vorhanden Nodes wie gewohnt starten.

MariaDB Galera Cluster wiederherstellen

Ich spiele zur Zeit mit einem MariaDB-Cluster herum der mit Galera läuft. Bisher bin ich damit auch sehr zufrieden. Ein Malheur, was mir allerdings gerade zu Beginn passiert ist, ist dass man am besten nicht alle Server auf einmal herunterfährt. In diesem Fall kommt der Cluster nämlich nach einem Neustart von selbst nicht mehr hoch.

Dies liegt daran, dass die jeweilige Node im Cluster, die im wsrep_cluster_address aufgeführten weiteren Nodes versucht zu erreichen, da allerdings auf keiner MariaDB gestartet ist, schlägt dieser Versuch fehl.  In diesem Moment hat man den Cluster quasi zerstört. Ein Neustart des Galera Clusters ist aber, wenn man erst mal weiß wie, recht trivial.

Lasst euch auf allen Nodes die grastate.dat ausgeben. Diese beinhaltet den aktuellen Stand der jeweiligen Node:

root@fe02:~# cat /var/lib/mysql/grastate.dat
# GALERA saved state
version: 2.1
uuid:    a4675eb2-6ab8-11eb-910e-8e8084de41df
seqno:   22355
safe_to_bootstrap: 0

Dies sieht z.B. bei mir so aus. Die Node mit der höchsten seqno ist am weitesten und somit auf dem neuesten Stand. Dort wird nun ein einfaches galera_recovery ausgeführt. Dadurch sollte safe_to_bootstrap auf 1 springen.

Nun reicht ein einfaches galera_new_cluster. Anders als der Befehl vermuten lässt, erstellt der Befehl in diesem Sinn keinen neuen Cluster, sondern erkennt die Daten des vorhandenen Clusters und startet mit diesen einen neuen.

Anschließend lassen sich ganz normal per systemctl start mariadb die vorhanden Nodes wie gewohnt starten.

MariaDB Galera Cluster wiederherstellen

Ich spiele zur Zeit mit einem MariaDB-Cluster herum der mit Galera läuft. Bisher bin ich damit auch sehr zufrieden. Ein Malheur, was mir allerdings gerade zu Beginn passiert ist, ist dass man am besten nicht alle Server auf einmal herunterfährt. In diesem Fall kommt der Cluster nämlich nach einem Neustart von selbst nicht mehr hoch.

Dies liegt daran, dass die jeweilige Node im Cluster, die im wsrep_cluster_address aufgeführten weiteren Nodes versucht zu erreichen, da allerdings auf keiner MariaDB gestartet ist, schlägt dieser Versuch fehl.  In diesem Moment hat man den Cluster quasi zerstört. Ein Neustart des Galera Clusters ist aber, wenn man erst mal weiß wie, recht trivial.

Lasst euch auf allen Nodes die grastate.dat ausgeben. Diese beinhaltet den aktuellen Stand der jeweiligen Node:

root@fe02:~# cat /var/lib/mysql/grastate.dat
# GALERA saved state
version: 2.1
uuid:    a4675eb2-6ab8-11eb-910e-8e8084de41df
seqno:   22355
safe_to_bootstrap: 0

Dies sieht z.B. bei mir so aus. Die Node mit der höchsten seqno ist am weitesten und somit auf dem neuesten Stand. Dort wird nun ein einfaches galera_recovery ausgeführt. Dadurch sollte safe_to_bootstrap auf 1 springen.

Nun reicht ein einfaches galera_new_cluster. Anders als der Befehl vermuten lässt, erstellt der Befehl in diesem Sinn keinen neuen Cluster, sondern erkennt die Daten des vorhandenen Clusters und startet mit diesen einen neuen.

Anschließend lassen sich ganz normal per systemctl start mariadb die vorhanden Nodes wie gewohnt starten.

MariaDB Galera Cluster wiederherstellen

Ich spiele zur Zeit mit einem MariaDB-Cluster herum der mit Galera läuft. Bisher bin ich damit auch sehr zufrieden. Ein Malheur, was mir allerdings gerade zu Beginn passiert ist, ist dass man am besten nicht alle Server auf einmal herunterfährt. In diesem Fall kommt der Cluster nämlich nach einem Neustart von selbst nicht mehr hoch.

Dies liegt daran, dass die jeweilige Node im Cluster, die im wsrep_cluster_address aufgeführten weiteren Nodes versucht zu erreichen, da allerdings auf keiner MariaDB gestartet ist, schlägt dieser Versuch fehl.  In diesem Moment hat man den Cluster quasi zerstört. Ein Neustart des Galera Clusters ist aber, wenn man erst mal weiß wie, recht trivial.

Lasst euch auf allen Nodes die grastate.dat ausgeben. Diese beinhaltet den aktuellen Stand der jeweiligen Node:

root@fe02:~# cat /var/lib/mysql/grastate.dat
# GALERA saved state
version: 2.1
uuid:    a4675eb2-6ab8-11eb-910e-8e8084de41df
seqno:   22355
safe_to_bootstrap: 0

Dies sieht z.B. bei mir so aus. Die Node mit der höchsten seqno ist am weitesten und somit auf dem neuesten Stand. Dort wird nun ein einfaches galera_recovery ausgeführt. Dadurch sollte safe_to_bootstrap auf 1 springen.

Nun reicht ein einfaches galera_new_cluster. Anders als der Befehl vermuten lässt, erstellt der Befehl in diesem Sinn keinen neuen Cluster, sondern erkennt die Daten des vorhandenen Clusters und startet mit diesen einen neuen.

Anschließend lassen sich ganz normal per systemctl start mariadb die vorhanden Nodes wie gewohnt starten.

MariaDB Galera Cluster wiederherstellen

Ich spiele zur Zeit mit einem MariaDB-Cluster herum der mit Galera läuft. Bisher bin ich damit auch sehr zufrieden. Ein Malheur, was mir allerdings gerade zu Beginn passiert ist, ist dass man am besten nicht alle Server auf einmal herunterfährt. In diesem Fall kommt der Cluster nämlich nach einem Neustart von selbst nicht mehr hoch.

Dies liegt daran, dass die jeweilige Node im Cluster, die im wsrep_cluster_address aufgeführten weiteren Nodes versucht zu erreichen, da allerdings auf keiner MariaDB gestartet ist, schlägt dieser Versuch fehl.  In diesem Moment hat man den Cluster quasi zerstört. Ein Neustart des Galera Clusters ist aber, wenn man erst mal weiß wie, recht trivial.

Lasst euch auf allen Nodes die grastate.dat ausgeben. Diese beinhaltet den aktuellen Stand der jeweiligen Node:

root@fe02:~# cat /var/lib/mysql/grastate.dat
# GALERA saved state
version: 2.1
uuid:    a4675eb2-6ab8-11eb-910e-8e8084de41df
seqno:   22355
safe_to_bootstrap: 0

Dies sieht z.B. bei mir so aus. Die Node mit der höchsten seqno ist am weitesten und somit auf dem neuesten Stand. Dort wird nun ein einfaches galera_recovery ausgeführt. Dadurch sollte safe_to_bootstrap auf 1 springen.

Nun reicht ein einfaches galera_new_cluster. Anders als der Befehl vermuten lässt, erstellt der Befehl in diesem Sinn keinen neuen Cluster, sondern erkennt die Daten des vorhandenen Clusters und startet mit diesen einen neuen.

Anschließend lassen sich ganz normal per systemctl start mariadb die vorhanden Nodes wie gewohnt starten.

MariaDB Galera Cluster wiederherstellen

Ich spiele zur Zeit mit einem MariaDB-Cluster herum der mit Galera läuft. Bisher bin ich damit auch sehr zufrieden. Ein Malheur, was mir allerdings gerade zu Beginn passiert ist, ist dass man am besten nicht alle Server auf einmal herunterfährt. In diesem Fall kommt der Cluster nämlich nach einem Neustart von selbst nicht mehr hoch.

Dies liegt daran, dass die jeweilige Node im Cluster, die im wsrep_cluster_address aufgeführten weiteren Nodes versucht zu erreichen, da allerdings auf keiner MariaDB gestartet ist, schlägt dieser Versuch fehl.  In diesem Moment hat man den Cluster quasi zerstört. Ein Neustart des Galera Clusters ist aber, wenn man erst mal weiß wie, recht trivial.

Lasst euch auf allen Nodes die grastate.dat ausgeben. Diese beinhaltet den aktuellen Stand der jeweiligen Node:

root@fe02:~# cat /var/lib/mysql/grastate.dat
# GALERA saved state
version: 2.1
uuid:    a4675eb2-6ab8-11eb-910e-8e8084de41df
seqno:   22355
safe_to_bootstrap: 0

Dies sieht z.B. bei mir so aus. Die Node mit der höchsten seqno ist am weitesten und somit auf dem neuesten Stand. Dort wird nun ein einfaches galera_recovery ausgeführt. Dadurch sollte safe_to_bootstrap auf 1 springen.

Nun reicht ein einfaches galera_new_cluster. Anders als der Befehl vermuten lässt, erstellt der Befehl in diesem Sinn keinen neuen Cluster, sondern erkennt die Daten des vorhandenen Clusters und startet mit diesen einen neuen.

Anschließend lassen sich ganz normal per systemctl start mariadb die vorhanden Nodes wie gewohnt starten.

MariaDB Galera Cluster wiederherstellen

Ich spiele zur Zeit mit einem MariaDB-Cluster herum der mit Galera läuft. Bisher bin ich damit auch sehr zufrieden. Ein Malheur, was mir allerdings gerade zu Beginn passiert ist, ist dass man am besten nicht alle Server auf einmal herunterfährt. In diesem Fall kommt der Cluster nämlich nach einem Neustart von selbst nicht mehr hoch.

Dies liegt daran, dass die jeweilige Node im Cluster, die im wsrep_cluster_address aufgeführten weiteren Nodes versucht zu erreichen, da allerdings auf keiner MariaDB gestartet ist, schlägt dieser Versuch fehl.  In diesem Moment hat man den Cluster quasi zerstört. Ein Neustart des Galera Clusters ist aber, wenn man erst mal weiß wie, recht trivial.

Lasst euch auf allen Nodes die grastate.dat ausgeben. Diese beinhaltet den aktuellen Stand der jeweiligen Node:

root@fe02:~# cat /var/lib/mysql/grastate.dat
# GALERA saved state
version: 2.1
uuid:    a4675eb2-6ab8-11eb-910e-8e8084de41df
seqno:   22355
safe_to_bootstrap: 0

Dies sieht z.B. bei mir so aus. Die Node mit der höchsten seqno ist am weitesten und somit auf dem neuesten Stand. Dort wird nun ein einfaches galera_recovery ausgeführt. Dadurch sollte safe_to_bootstrap auf 1 springen.

Nun reicht ein einfaches galera_new_cluster. Anders als der Befehl vermuten lässt, erstellt der Befehl in diesem Sinn keinen neuen Cluster, sondern erkennt die Daten des vorhandenen Clusters und startet mit diesen einen neuen.

Anschließend lassen sich ganz normal per systemctl start mariadb die vorhanden Nodes wie gewohnt starten.

MariaDB Galera Cluster wiederherstellen

Ich spiele zur Zeit mit einem MariaDB-Cluster herum der mit Galera läuft. Bisher bin ich damit auch sehr zufrieden. Ein Malheur, was mir allerdings gerade zu Beginn passiert ist, ist dass man am besten nicht alle Server auf einmal herunterfährt. In diesem Fall kommt der Cluster nämlich nach einem Neustart von selbst nicht mehr hoch.

Dies liegt daran, dass die jeweilige Node im Cluster, die im wsrep_cluster_address aufgeführten weiteren Nodes versucht zu erreichen, da allerdings auf keiner MariaDB gestartet ist, schlägt dieser Versuch fehl.  In diesem Moment hat man den Cluster quasi zerstört. Ein Neustart des Galera Clusters ist aber, wenn man erst mal weiß wie, recht trivial.

Lasst euch auf allen Nodes die grastate.dat ausgeben. Diese beinhaltet den aktuellen Stand der jeweiligen Node:

root@fe02:~# cat /var/lib/mysql/grastate.dat
# GALERA saved state
version: 2.1
uuid:    a4675eb2-6ab8-11eb-910e-8e8084de41df
seqno:   22355
safe_to_bootstrap: 0

Dies sieht z.B. bei mir so aus. Die Node mit der höchsten seqno ist am weitesten und somit auf dem neuesten Stand. Dort wird nun ein einfaches galera_recovery ausgeführt. Dadurch sollte safe_to_bootstrap auf 1 springen.

Nun reicht ein einfaches galera_new_cluster. Anders als der Befehl vermuten lässt, erstellt der Befehl in diesem Sinn keinen neuen Cluster, sondern erkennt die Daten des vorhandenen Clusters und startet mit diesen einen neuen.

Anschließend lassen sich ganz normal per systemctl start mariadb die vorhanden Nodes wie gewohnt starten.