Ubuntu 22: Die Schwierigkeiten, Firefox zu betreiben

Kurzer Sprung zum Favoriten —>


Seit kurzem nutze ich Ubuntu 22 auf einer neuen schnellen Maschine und ich war gleich sehr zufrieden. Bis ich merkte, dass ich mit dem ebenfalls neuen Firefox 102 überhaupt nicht vernünftig arbeiten konnte. Wie sich herausstellte, war der Grund, dass Firefox neuerdings als Snap installiert wird. Das liefert zwar sicher einiges an Sicherheit, da der Browser nun vollständig in einer Sandbox läuft, aber das ist auch der Grund für einiges Übel. Zwei Probleme ließen sich damit nicht lösen:

1.) Ich bin es gewohnt, Bilder von Webseiten mal eben mit der Maus auf den Desktop zu ziehen. Das geht nicht mehr, denn der Zugriff ist gesperrt. Über Copy/Paste geht es, aber das ist mir mit der Maus zu umständlich.

2.) Ich habe einige Anpassungen in der Optik des Browsers, zum Beispiel bestimmte Trennlinien. An das Profil kommt man aber nicht ran, nicht mal als Root.

Außerdem habe ich gelesen, dass durch den Snap-Mechanismus einige Plugins nicht gehen, was sicher ebenfalls an irgendwelchen Zugriffrechten scheitert.

Flatpak statt Snap

Das erste Problem lässt sich damit umgehen, dass der Firefox als Snap gelöscht und als Flatpak installiert und aufgerufen wird:

snap remove firefox
flatpak install flathub org.mozilla.firefox

Um das dann aufzurufen, habe ich das Knöpfchen im Starter des Panels mit folgendem belegt:

flatpak run org.mozilla.firefox

Rechte von Flatpak-Anwendungen verwalten

Jetzt scheitert aber immer noch der Wunsch, zum Beispiel die userChrome.css im Profilordner zu bearbeiten, einfach weil man den Profilordner nicht findet – denn der ist verborgen. Auch Flatpack arbeitet als Sandbox. Aber immerhin gibt es ein Werkzeug, das solche Einschränkungen gezielt beheben kann: Flatseal. Das ist eine grafische Oberfläche mit allerlei Admin-Tools für jedes installierte Flatpak. Installiert wird es mit

flatpak install flathub com.github.tchx84.Flatseal

denn es ist selbst ein flatpak-Programm. Hier [1] ist (allerdings nur in englisch) sehr detailliert beschrieben, was sich damit alles machen lässt. Konkret für meine Aufgabe, an die Konfiguration heranzukommen, musste ich Firefox auswählen und in der Rubrik „Filesystem“ die Option „All user files / filesystem=home“ anschalten, und darunter bei „Other files“ habe ich noch /home/rollo/Downloads eingetragen. Ich hoffe, dass das genügt und werde es hier ergänzen, wenn noch etwas fehlt.

Firefox über Umwege als .deb

Wie ich heute gefunden habe, gibt es doch auch Wege, Firefox ganz normal wie „früher“ als DEB zu installieren, sogar über ein PPA des Mozilla-Teams. Damit habe ich die Eigenschaften der Sandbox (Snap, Flatpak) nicht mehr, dafür geht alles andere wieder wie gewohnt. Hier [2] ist es ausführlich beschrieben (englisch), dazu [3], und hier kommt die Kurzfassung:

# Zunächst das Snap entfernen
sudo snap remove firefox
# oder das Flatpak
sudo flatpak remove org.mozilla.firefox

Hinweis 1: Gerade wurde auf Version 112 aufgebohrt – und prompt war FF wieder ein Snap! Nun liegt meine mühsam installierte .deb-Version verwaist da. Die muss erstmal weg. Also:
sudo apt autoremove –purge firefox


Hinweis 2: Nein, diese FF-Installation muss nicht weg! Was ist passiert? Snap wurde durch ein Update wieder installiert und hat FF mitgebracht – Ubuntu will das unbedingt durchdrücken! Aber wenn man das gesamt snapd-System entfernt, sollte es auch wegbleiben [4]:

sudo apt autoremove --purge snapd
sudo rm -rf /var/cache/snapd/
rm -rf ~/snap

# Nun das PPA von Mozilla installieren:
sudo add-apt-repository ppa:mozillateam/ppa
# und damit Firefox installieren:
# (Die Optionen sind essentiell, sonst kommt snap wieder!)
sudo apt install -t 'o=LP-PPA-mozillateam' firefox

# Eine Datei zur Steuerung der Priorität anlegen und speichern
sudo gedit /etc/apt/preferences.d/mozillateamppa
# Inhalt:
Package: firefox*
Pin: release o=LP-PPA-mozillateam
Pin-Priority: 501

sudo apt update
sudo apt install firefox firefox-locale-de

Das war’s. Danke „J Im“!

Festlegung als Standardbrowser

In Ubuntu gibt es festlegungen von Standardanwendungen, unter anderem des Webbrowsers. Ich vermute mal, das ist ohne weiteres Zutun diese unsägliche snap-Installation von Firefox. Da wir die nun gerade ausgebaut haben, hängen einige Aufrufe nun in der Luft. Zum Beispiel lässt im Client von Nextcloud nichts mehr aufrufen, da dort nicht der Standardbrowser hinterlegt ist, sondern ein Aufruf von „default-web-browser“. Also muss der letzte Schritt unserer Reparatur die neue Zuweisung der Firefox-Installation von eben sein. Das geschieht entweder in der Shell mit

xdg-settings set default-web-browser firefox.desktop

was nicht immer klappt, weil es das Vorhandensein von firefox.desktop voraussetzt, oder „grafisch“ über „Einstellungen / Standardanwendungen“ und folgender Auswahl:

Standardbrowser

„Firefox Web Browser“ wäre die nun nicht mehr vorhandene snap-Installation, was wahrscheinlich das gleiche ist wie der oberste Menüpunkt (kann ich jetzt nicht mehr testen).


Links zum Thema:

[1] www.debugpoint.com/manage-flatpak-permission-flatseal/
[2] ubuntuhandbook.org/index.php/2022/04/install-firefox-deb-ubuntu-22-04/
[3] curius.de/2022/04/ubuntu-wie-du-firefox-als-ppa-anstelle-von-snap-einbindest-und-wann-du-es-tun-solltest/
[4] onlinux.systems/guides/20220524_how-to-disable-and-remove-snap-on-ubuntu-2204

VirtualBox: Zeigegeräte und VBoxGuestAdditions

Ich habe unter Xubuntu 22.04 die VirtualBox 7.0 (im Folgenden VB genannt) installiert, darin als Gast. Windows 10. Die notwendige Extension und die Gastweiterung (s. u.) ist vorhanden. Nebenbei: Die VB ist leider heute erst in der Version 6.1 im Repo verfügbar, daher habe ich sie direkt von Oracle geholt und manuell installiert.

Der Grund dafür waren eigentlich zwei Probleme, die ich auf die zu alte Version geschoben hatte, die vorher installiert war (was sich als sich als falsch gedacht herausstellte). Meine Ausrede ist: Man sollte immer das neueste geprüfte Release verwenden 🙂 !

Aber im Ernst: Das im Repository von Xubuntu enthaltene Release der Virtualbox ist durchaus zu gebrauchen und enthält alles, was benötigt wird – und es bekommt irgendwann ein ordentliche Update ohne eigenes Gefummel.

[1] www.oracle.com/virtualization/technologies/vm/downloads/virtualbox-downloads.html

Maus ist in der Box nicht benutzbar

Zunächst zeigte sich, dass weder die Maus noch das in der Tastatur (Logitech TK820) integrierte Touchpad mit dem Windows-Gast zusammenarbeitete und auch nicht außerhalb der VB benutzbar war. Eine schwierige Sache, Windows in Linux nur mit der Tastatur wenigstens grundlegend zu bedienen! Die Lösung wurde in einem älteren Forumsbeitrag [2] beschrieben:

Tastatur und Maus muss bzw. darf man nicht als USB-Geräte in den Filtern freigeben, im Gegenteil führt das sogar zum Fehler! Beides wird auf einem anderem mir nicht bekannten Weg vom Host (hier Linux) an den Gast weitergereicht. Der Grund ist, dass es ja sonst nicht möglich wäre, die Maus im Gast zu fangen oder auch außerhalb zu benutzen. Das muss also die VB managen, unabhängig vom Gastsystem. Hier ist die zugehörige Einstellung für eine konkrete virtuelle Maschine – die Maus bekommt kein Häkchen, andere Geräte schon:

Es ist ein Neustart zumindest der VB nötig.

[2] forums.virtualbox.org/viewtopic.php?t=96867

Verwendung der Gasterweiterung

Bevor es losgeht, muss die entsprechende Gasterweiterung für (in meinem Fall) Windows bereitgestellt und einmalig installiert werden. Dazu macht man beim Anlegen des Gastes ein Häkchen an der unten gezeigten Stelle bei „Gasterweiterung einlegen“:

Ein weit verbreiteter Irrtum ist, dass man die CD, auf der mittels dem von Oracle heruntergeladenen ISO die Gasterweiterungen gespeichert wurden, einfach nur einlegen muss und fertig. Aber nichts da! Man muss die Erweiterung natürlich auch im Gast (!) installieren, das heißt im Fall von Windows die Datei GuestAdditions.exe (genau so geschrieben!) installieren und danach Windows neu starten. Die CD kann dann wieder raus, sie wird nicht mehr gebraucht. Dieser Weg ist aber notwendig, da man ohne die Gasterweiterung keinen Zugriff auf Verzeichnisse des Hosts hat, wohl aber auf das CD-Laufwerk.

Ich hatte mein Windows schon vorher installiert, daher hatte ich schon den Zugriff auf ein gemeinsames Verzeichnis in Linux. Somit brauchte ich de CD nicht, sondern konnte meine Dateien für die Gasterweiterung in dieses Verzeichnis legen und von dort aus installieren. Das genannte Kreuzchen musste ich nicht setzen.

Ubuntu: Ersatz für gksu

Bis Ubuntu 18.04 gab es das Hilfsprogramm gksu, mit dessen Hilfe man – zum Beispiel innerhalb eines Scriptes – ein anderes Programm als Root starten konnte, indem man „zwischendurch“ das nötige Passwort eingab. Ab dieser Version wurde das aus den Paketquellen entfernt, weil es als Sicherheitsrisiko eingestuft wurde. Damit funktionierten dann plötzlich alle Scripte und (bei mir) Shortcuts nicht mehr, die darauf angewiesen waren (siehe hier bei mir Upgrade Ubuntu 16 nach 18: einige Hürden).

Es gibt Anleitungen im Netz, wie das Problem behoben werden kann, indem man Pakete aus alten Ubuntu-Quellen (Archiv) installiert. Das ist sicher etwas fragwürdig und kann auch kein Update bekommen.

Viel besser ist da der reguläre Weg, der mit dem Befehl sudo arbeitet:

sudo -A <programm>

Das -A bewirkt die Einbindung eines als Askpass bezeichneten Hilfsprogramm, dass das Passwort grafisch (!) abfragt und über sein stdout an den Aufrufer zurückgibt. Allerdings muss dazu etwas getan werden, sonst gibt es eine Fehlermeldung. Zunächst wird der Helfer installiert, der eigentlich für den SSH-Zugriff gedacht ist:

sudo apt install ssh-askpass-gnome

Dann öffnet man als Root die Datei /etc/sudo.conf und fügt eine Zeile zu:

# Use the OpenSSH askpass
#Path askpass /usr/X11R6/bin/ssh-askpass
Path askpass /usr/lib/openssh/gnome-ssh-askpass

Es ist kein Neustart nötig – der nächste Aufruf von „sudo -A“ funktioniert!

Linux: Thunderbird im SysTray starten und halten

Thunderbird beherrscht es von allein nicht, in den SysTray verkleinert zu werden un damit praktisch im Hintergrund zu laufen. Dazu ist eine Hilfsanwendung nötig, bei mir bisher Birdtray. Dieses gefällt mir nicht – es sieht altbacken aus und ist eben eine extra zu pflegende und noch dazu recht alte Anwendung (2020). Als ich das Problem erstmalig in Angriff genommen habe, fand ich aber nichts anderes und habe bis jetzt damit gelebt. Zumindest das Hauptanliegen – das Laufen im Hintergrund – wird damit ja erfüllt.

Eben habe ich nochmal nach Lösungen gesucht und dabei SysTray-X gefunden und eben ausprobiert. Und siehe da: Es sieht wesentlich eleganter aus und ist eine echte Erweiterung für Thunderbird, kein extra Programm. Es wird über ein eigenes Repository installiert und damit automatische gepflegt. Einiger „Nachteil gegenüber Birdtray ist, dass die Darstellung der Anzahl neuer Mails nicht vom Konto abhängig gemacht werden kann – was aber m. E. sowieso nie wirklich funktioniert hat.

Die Installation ist einfach und wird hier [1] für viele Linux-Systeme ausführlich dokumentiert (englisch). So wird das am Beispiel von Xubuntu 20.04 gemacht (Achtung: die erste und dritte Zeile sind jeweils EINE Zeile in der Shell!):

wget -q https://download.opensuse.org/repositories/home:/Ximi1970/xUbuntu_20.04/Release.key

sudo apt-key add Release.key

sudo bash -c 'echo "deb https://download.opensuse.org/repositories/home:    /Ximi1970:/Mozilla:/Add-ons/xUbuntu_20.04 ./" > /etc/apt/sources.list.d/systray-x.list'

sudo apt update

sudo apt install systray-x

Beim nächsten Neustart von Thunderbird ist die Erweiterung SysTray-X vorhanden und sofort lauffähig. Mit einer Reihe von Optionen kann sie nun noch optimiert werden.

Achtung: Nach Ubuntu 22.04 wird apt-key nicht mehr unterstützt. Deswegen ist das in [1] beschriebene Verfahren für Ubuntu 22.04 etwas anders:

wget -q https://download.opensuse.org/repositories/home:/Ximi1970/xUbuntu_22.04/Release.key

sudo mv -f  Release.key  /etc/apt/trusted.gpg.d/Systray-x.Ximi1970.asc

sudo bash -c 'echo "deb https://download.opensuse.org/repositories/home:/Ximi1970:/Mozilla:/Add-ons/xUbuntu_22.04 ./" > /etc/apt/sources.list.d/systray-x.list'

sudo apt update

sudo apt install systray-x

Auch die Quellen zum selber Kompilieren sind verfügbar.

Hinweis: Zumiondest bei mir (Xfce 4) ist das Symbol von Systray-x im Systray zunächst nicht sichtbar! Dazu muss ein Panel-Reload gemacht werden. Beim Booten mache ich das, indem ich mit einer möglichst kleinen Zeitverzögerung (hier 2 Sekunden, das kann je nach Startverhalten beliebig erhöht werden) folgendes auslöse:

sleep 2 && xfce4-panel -r

[1] https://github.com/Ximi1970/systray-x#binaries-system

Android: Wahl des Filemanagers

Zur Grundausrüstung meines Xiaomi Redmi Note 9 gehört ein simpler Dateimanager, der zwei für mich wichtige Dinge nicht kann: Die Änderung der Standard-App zum Öffnen einer Datei (das ging früher immer!) und das Platzieren einer Datei oder eines Verzeichnisses auf einem der Desktops. Eigentlich gehört das zum Standard von Android – dachte ich…

Ich habe nun viele Dateimanager aus dem Play Store ausprobiert, die alle mehr oder weniger für mich passten. Natürlich gehen solche Boliden wie der von Windows bekannte Total Commander, aber ich will auf einem Mobiltelefon keine umfangreiche Dateiverwaltung machen – nur mal löschen, umbenennen, verschieben und eben die beiden oben genannten Aufgaben müssen gehen.

Ich dachte auch nicht, dass die Einstellung einer Standard-App zum Öffnen vom System geliefert wird. In allen Beschreibungen für Anfänger steht sinngemäß: Man tippe etwas länger auf einen Dateinamen, wähle dann „öffnen mit“, wünsche sich aus einer Liste die gewünschte App aus und hat dann die Wahl zwischen „einmal“ und „immer“. So kenne ich das auch von früher. Aber nein! Für dieses Verhalten sorgt der installierte Dateimanager, das System sorgt nur für die Möglichkeit. Kann es der Dateimanager nicht, dann gibt es die Auswahl „immer“ nicht. So ging es mir und ich suchte ewig nach dem Fehler.

Lange Rede, kurzer Sinn. Ich kam nicht umhin, sich einen Dateimanager zu suchen, der für mich eben die beiden Wünsche erfüllt. Ich habe nun eine App mit dem schönen passenden Namen „Dateimanager“ gefunden, mit der ich zufrieden bin und die ich hiermit empfehlen kann:

https://play.google.com/store/apps/details?id=files.fileexplorer.filemanager&hl=de

Nebenn der eigentliche Arbeit ist dazu noch ein Player bzw. Betrachter für Musik, Videos und Bilder sowie ein Auspacker (nicht ausprobiert, ZIP?) integriert.

Die heute letzte Version ist vom 10.1.2023, die App wird also wohl gut gepflegt.

LibreOffice: Lücken im Wort nach PDF-Export

Ich benutze LibreOffice (LO) Version: 7.4.2.3 für Linux und schreibe gerade einen langen Text, ein Buch mit etwa 250 Seiten. Es wird viel ergänzt, eingeschoben oder gekürzt. Automatisch gesetzte Trennstellen der Silbentrennung in Worten rutschen über die Zeilenenden hin und her, dabei verschwinden sie und erscheinen neu. Am Textbild bemerkt man fast nichts ungewohntes. Als Optionen für die Ansicht habe ich die Formatierungszeichen nicht angeschaltet (die würden hier auch nicht helfen) und die Feldhinterlegungen zunächst auch nicht.

Nach dem Export als PDF erscheinen aber an sehr vielen Stellen plötzlich kurze Lücken mitten im Wort, kleiner als normale Leerzeichen – offenbar genau an solchen Trennstellen, die nun keine Silbentrennung mehr darstellen. Je länger ich am Text gearbeitet habe, um so mehr werden es. Bei genauem Hinsehen erkennt man die Stellen auch im Text in LO als ganz schmale Lücke. Überfährt man sie mit der Tastatur, muss man mit der Cursortaste dort zweimal drücken – da ist also „irgendwas“! Man kann „es“ aber nicht einzeln markieren.

Ich habe mir Hilfe im deutschsprachigen LibreOffice-Forum gesucht und einen Thread eröffnet. Einen Tag später hatte ich genug Hinweise und eine praktikable Lösung [1], die ich hier kurz beschreiben möchte. Nach meiner Meinung ist es ein Fehler in LibreOffice beim Export eines Textes (nur bei ODT?) nach PDF, den ich mit dem Workaround nicht beheben, aber umgehen kann.

Also: Im PDF sieht man im fraglichen Wort eine ganz schmale Lücke, die man beim flüchtigen Lesen übersieht. Man schaltet in LO die Ansicht / Feldhinterlegungen ein und öffnet das Dokument. In dem Wort sieht man nun grau hinterlegt einen kurzen Bindestrich ohne Lücken an den Seiten. Das ist eine Stelle, an der die Silbentrennung schon mal gewirkt hat, bevor sie durch Umformatierungen wieder zurückgenommen wurde – das erspart LO anscheinend den erneuten Blick in sein Regelwerk beim nächsten Einlesen und damit Ladezeit. Das hat Sinn.

Keinen Sinn hat es, dass diese unsichtbaren Stellen im PDF als Lücke dargestellt werden – das ist ein Fehler von LO beim PDF-Export! Getestet habe ich das mit Adobe Reader und Evince, es ist also kein Fehler der PDF-Reader. Das fragliche Zeichen ist hexadezimales 0xAD, wie ich mit einem Programmier-Editor gefunden habe, und das müsste beim Export einfach übergangen werden.

Wie umgeht man nun den Fehler? Eigentlich ist es ja keiner im Dokument, denn das sollte die sinnvollen Steuerzeichen ruhig enthalten dürfen.

Da man das Zeichen 0xAD nicht eingeben kann, muss man es in einem Wort isolieren und dann im gesamten Dokument gegen „nichts“ ersetzen. Man muss also eine Fundstelle im PDF finden und diese dann auch im ODT suchen. Nehmen wir an, man findet das Wort „Dampf=walze“ – das = soll hier die beschriebene Trennstelle darstellen. Man kopiert das ganze Wort mit Strg-C in die Zwischenablage, ruft „Bearbeiten / Suchen und Ersetzen“ auf und kopiert mit Strg-V das Wort mitsamt der Trennstelle in das „Suchen“-Feld. Die Trennstelle ist hier wirklich unsichtbar – nicht beirren lassen! Jetzt wird es ernst:

Man löscht in diesem Wort von links mit ENTF die Buchstaben bis zu genau dem Zeichen vor der unsichtbaren Trennstelle („Dampf“), von rechts mit <– (löschen) bis zum Zeichen genau nach der Trennstelle („walze“). In diesem Feld steht nun nichts sichtbares mehr, man kann auch den Cursor nicht bewegen – aber alles ist gut, da ist noch was! Im Ersetzen-Feld trägt man nichts ein, wirklich leer, kein Leerzeichen, und startet „alle ersetzen“. Schwupps, sind alle 1027 Fundstellen bereinigt! Das heißt, man möge VORHER eine Kopie anlegen, falls etwas schiefgeht…

Zur Kontrolle kann man nun wieder ein PDF mit neuem Namen (um vergleichen zu können) exportieren, darin dürften alle diese Fehler verschwunden sein.

Ich würde mich sehr über Kommentare freuen, vielleicht hat noch jemand Erklärungen oder andere Hinweise zur Lösung des Problems?


[1] https://www.libreoffice-forum.de/viewtopic.php?f=5&t=38316
Vielen Dank an die Freunde im Forum, die mir so toll geholfen haben!

Abmahn-Falle reCaptcha

Wer freut sich nicht darüber, auf Websites mit Formularen immer wieder Bilderrätsel lösen zu müssen, die oft kaum erkennbar sind oder falsch ausgewertet werden, oder seine Lese- und Rechenkünste der 1. Klasse unter Beweis stellen zu müssen. Die Rede ist von sogenannten Captchas [1]. Sie dienen dazu, Maschinen – also Programmen – das automatische Ausfüllen von Formularen zumindest so zu erschweren, dass davon abgesehen wird. Damit soll in der Regel die Flut von Spam-Kommentaren verhindert werden.

Besonders bekannt sind die Captchas von Google. So ausgeklügelt die heute auch sind und wie gut sie auch ihren Zweck erfüllen, so haben si doch einen entscheidenden Nachteil. Neben ihrer Hauptaufgabe aus Nutzersicht schicken sie jedoch im Hintergrund eine Menge zwar anonyme, aber persönliche Daten zu Google. Neben den technisch notwendigen wie den IP-Adressen, werden Orte, Browser, Plugins, Mausbewegungen… gesammelt und statistisch ausgewertet. Das ist der eigentliche Gewinn für Google, alles andere ist nur Werkzeug. Eigentlich eine Win-Win-Situation, aber eben ein Dorn im Auge der Datenschützer.

Worum es hierbei im Detail geht und warum das aus Sicht der Datenschützer problematisch ist, wird hier [2] gut beschrieben, das muss ich hier nicht nochmal machen.

Um das Problem generell zu umgehen, bietet sich die Nutzung grundsätzlich anderer Konzepte als die diversen Captcha-Lösungen, insbesondere der von Google, an. Mein Favorit ist der „Honigtopf“, ein altbekanntes Mittel, um Fliegen und andere schädliche Insekten anzulocken und unschädlich zu machen. Für unsere Zwecke heißt das tatsächlich „Honeypot“ und beschreibt eine Programmiertechnik innerhalb einer Website, lüsterne Bots (spezielle Suchmaschinen) auf die falsche Fährte zu locken und damit unschädlich zu machen.

Für WordPress gibt es eine Reihe von Plugins, die das realisieren. Welches geeignet ist, hängt ab von anderen verwendeten Techniken, z. B. von benutzten Formular-Plugins wie CF7 oder WPForms. Manches kann man gut kombinieren, z. B. „Honeypot for CF7“ und „Blackhole for Bad Bots“. Man suche einfach mal Plugins mit „Honeypot“ und es finden sich einige, die man probieren kann.

Hat man das erledigt, kann in der Datenschutz-Erklärung der Abschnitt zu Captchas ersatzlos gestrichen werden, der sonst wegen der ungewollten Datenübertragung nach Übersee nicht fehlen dürfte.


[1] https://de.wikipedia.org/wiki/Captcha
[2] https://www.dr-datenschutz.de/google-recaptcha-und-der-datenschutz/

Abmahn-Falle Google Fonts

Es scheint wieder eine neue Abmahnwelle anzurollen. Sie ist nicht neu, aber besonders hinterhältig. Der Hintergrund ist, dass Google eine riesige Menge Schriften (Fonts) zur kostenlosen Verwendung anbietet, indem sie einfach in der eigenen Website verlinkt und beim Laden der Seiten online bezogen werden. Dabei werden – so funktioniert eben das Internet! – neben der eigenen IP-Adresse auch einige anonyme Daten des Browsers zu Google übertragen. Das stößt den Anwälten unter den Datenschützern (Stichwort: DSGVO, Datenschutz-Grundverordnung) auf und sie wittern Profit. Denn dieser Datenübertragung stimmt der Nutzer in der Regel nicht bewusst zu. Was für ein Irrsinn! Es werden dann Abmahnungen im niedrigen dreistelligen Bereich verschickt, die meist schnell bezahlt werden, weil sich ein Rechtsstreit deswegen nicht lohnt. Das bei 1000 „Klienten“ ergibt ein hübsches Sümmchen.

Insbesondere bei Websites mit WordPress, bei deren verwendetem Theme die verwendete Schrift (Font) von Google oft fest einprogrammiert ist, ist das unter Umständen schwer zu beheben. Es gibt Plugins, die sowas beheben sollen, was aber aus meiner Erfahrung nicht geht und sogar in einer „weißen Seite“ enden kann.

Ist die Website vorhanden – egal ob konventionell oder z.B. WordPress -, muss man zunächst herausfinden, welche Google-Fonts verwendet und tatsächlich online bezogen werden. Nur um diese geht es in diesem Zusammenhang, alle anderen Techniken werden jetzt nicht betrachtet. Das lässt sich zum Beispiel mit diesem Tool machen:

[1] https://fonts-check.de/

Gibt es „schädliche“ Fonts, werden die aufgelistet. Oft erscheinen dort mehrere Versionen, also Dateiformate – entscheidend ist nur der darinsteckende Name, z.B. „Roboto“. Erscheint nichts, ist alles gut.

Konventionelle Website

Hat man eine konventionelle Website, die man selbst geschrieben hat, stehen die Aufrufe der Google-Fonts im Head-Bereich in einer Form wie

<link href=“https://fonts.googleapis.com/css?family=Roboto’ rel=’stylesheet“>

Diese Zeilen werden auf allen Seiten gelöscht. Stattdessen wird in die normalerweise immer vorhandene zentrale CSS-Datei der Code eingefügt, den man sich mit dem Tool

[2] Google Webfonts Helper (google-webfonts-helper.herokuapp.com/fonts)

(leider nur in Englisch verfügbar!) komfortabel zurechtmachen lassen kann. Dabei kommen solche recht komplexen Styles heraus, die man dann den entsprechenden Selektoren (auch *) zuweisen kann:

* {
    @font-face {
      font-family: 'Roboto';
      font-style: normal;
      font-weight: 400;
           url('../fonts/roboto-v30-latin-regular.woff2') format('woff2'),
           url('../fonts/roboto-v30-latin-regular.woff') format('woff'),
           url('../fonts/roboto-v30-latin-regular.ttf') format('truetype'),
           url('../fonts/roboto-v30-latin-regular.svg#Roboto') format('svg');
    }
}

Die Zeilen für den IE 8/9 habe ich gleich weggelassen, die braucht keiner mehr.

Website mit WordPress

Hier gibt es mehrere Möglichkeiten. Die einfachste ist, dass das verwendete Theme das „Verstecken“ benutzter Google-Fonts gleich selbst mitbringt oder gar keine verwendet.

Etwas aufwändige kann es werden, wenn es welche verwendet, die aber fest im Theme kodiert sind. Dann kann man nur versuchen, das Verstecken mit einem geeigenten Plugin zu bewerkstelligen wie zum Beispiel „OMGF | GDPR/DSVGO Compliant, Faster Google Fonts. Easy.“ (OMGF) oder „Local Google Fonts“. Man kann auch versuchen, die Verwendung ganz abzuschalten, z.B. mit dem Plugin „Disable and Remove Google Fonts“. All das muss nicht funktionieren und kann schlimmstenfalls dazu führen, dass beim Neuladen des Backends oder der Website selbst nichts mehr erscheint außer einer wenig sagenden Fehlermeldung: Dann hilf nur der beherzte Zugriff über FTP auf /wp-content/plugins und das Löschen des Verzeichnisses <plugin-name>, den man sich hoffentlich gemerkt hat… (es empfiehlt sich also ein vorheriger Blick dorthin, um den Namen zu kennen).

Fazit

Auch wenn die Abmahner für diesen unsinnigen Lapsus „nur“ etwa 300 € haben wollen, sollte man die Sache rechtzeitig beheben. Manchmal sind die Fonts überflüssig, weil sie gar keinen Gewinn gegenüber Standardschriften bringen, aber Ladezeit bewirken. Möchte man sie wegen der Ästethik haben, lohnt sich der Aufwand. Übrigens auch dann, wenn ihr Websites für Kunden macht: Man wird das Engagement loben und die 300 € lieber euch geben statt den Anwälten.


Ich bitte um Ergänzungen in euren Kommentaren! Ich werde aber kaum für alle möglichen Fälle wie exotische CMS oder E-Commerce-Sites Empfehlungen zusammentragen, dazu ist das Thema einfach zu vielfältig.

Thunderbird: Aktivierung von eigenem CSS-Code

Mancheiner bemüht sich vergeblich, eigenen Code in Thunderbird’s userChrome.css und userContent.css unterzubringen und verzweifelt daran, dass das einfach nicht wirkt. Man muss Thunderbird zuvor sagen, dass das auch benutzt werden darf und soll! Ob das eine Sicherheitsmaßnahme ist, sei dahingestellt. Also:

Entweder baut man direkt in prefs.js folgendes ein – was ich wegen der Fehleranfälligkeit sehr ungern tue:

 user_pref("toolkit.legacyUserProfileCustomizations.stylesheets",true);

Oder man geht in Thunderbird in „Einstellungen/Allgemein“ nach ganz unten zu „Konfiguration bearbeiten, gibt dort den Schlüssel

toolkit.legacyUserProfileCustomizations.stylesheets

ein und setzt ihn auf true. Er steht standardmäßig auf false.

Voilá.