staging.inyokaproject.org

7. August 2025

Mozilla hat Firefox 141.0.3 veröffentlicht und behebt damit mehrere Probleme der Vorgängerversion.

Download Mozilla Firefox 141.0.3

Mit dem Update auf Firefox 141.0.3 behebt Mozilla ein Webkompatibilitätsproblem, von dem unter anderem Websites betroffen waren, die mit dem Svelte-Framework gebaut sind.

Außerdem wurde das Problem behoben, dass Krypto-Miner im strengen Schutz vor Aktivitätenverfolgung nicht länger blockiert worden sind.

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

6. August 2025

Wer KDE Plasma nutzt, verwendet in der Regel den Displaymanager SDDM. Dieser hat in der aktuellen Version aber noch den X.org Server als feste Abhängigkeit. Was mich stört, da ich bereits vor einiger Zeit auf Wayland umgestiegen bin aber den X.org Server nicht deinstallieren kann.

Im Grunde könnte ich auf einen Displaymanager verzichten, da meine Systeme komplett verschlüsselt sind und somit das Passwort für die Verschlüsselung schon vor einer unberechtigten Anmeldung schützt. Zudem in ich der einzige Nutzer. Da mich ein Displaymanager an sich aber auch nicht stört und das automatische Anmelden damit einfacher zu konfigurieren ist, habe ich mir Alternativen für SDDM angesehen, die ohne den X.org Server installierbar sind. Gelandet bin ich aktuell bei greetd.

Nach der Installation passt man folgende Bereiche in der Datei /etc/greetd/config.toml an.

[default_session]
command = "/usr/lib/plasma-dbus-run-session-if-needed /usr/bin/startplasma-wayland"
user = "greeter"

[initial_session]
command = "startplasma-wayland"
user = "xyz"

Unter default_session wird die Grundeinstellung konfiguriert. Und initial_session sorgt für die automatische Anmeldung. Anstelle von xyz trägt man den Benutzer ein, mit dem man sich anmelden will. Dass sich die beiden Befehle unterscheiden, ist übrigens Absicht.

Wer nicht KDE Plasma verwendet, muss die beiden Zeilen die mit command beginnen entsprechend anpassen. Ich kann hierbei allerdings nicht weiterhelfen.

Hat man greetd konfiguriert, deaktiviert man mit systemctl disable sddm.service SDDM und aktiviert mit systemctl enable greetd.service greetd. Mehr muss man nicht machen. Wenn alles funktioniert, kann abschließend SDDM und den X.org Server deinstallieren.

Greetd unterstützt neben dem Greeter greetd-agreety (Standard) auch noch Alternativen wie beispielsweise QtGreet, tuigreet oder ReGreet. Somit sollte auch für Nutzer, die sich nicht automatisch anmelden wollen, etwas dabei sein.

Und so wie es aussieht, wird in OpenSUSE 16 Leap wohl lightdm durch greetd und gtkgreet ersetzt werden (https://news.opensuse.org/2025/08/04/leap-16-rc/).

5. August 2025

Mozilla hat Firefox 141.0.2 veröffentlicht und behebt damit mehrere Probleme der Vorgängerversion.

Download Mozilla Firefox 141.0.2

Mozilla hat Firefox 141.0.2 für Windows, macOS und Linux veröffentlicht. Firefox 141.0.1 wurde für diese Plattformen übersprungen, da diese Versionsnummer einem Android-Update vorbehalten war.

Mit dem Update auf Firefox 141.0.2 umgeht Mozilla eine mögliche Absturzursache bei Programmstart, von der manche Linux-Nutzer mit veraltetem Grafiktreiber von Nvidia betroffen waren. Außerdem konnte Firefox auf manchen Linux-Systemen mit GTK+ ohne Wayland nicht mehr gestartet werden.

Das Anklicken eines angehefteten Tabs konnte den Fokus vom Content-Bereich nehmen, was Probleme bei der Navigation mit der Tastatur bereiten konnte.

Die Entwicklerwerkzeuge konnten auf Websites abstürzen, die iFrames verwenden.

Ein Webkompatibilitätsproblem wurde behoben, bei dem Canvas-Elemente verschiebbar wurden.

Verschiedene Darstellungsprobleme der Firefox-Oberfläche wurden korrigiert.

Dazu kommen noch kleinere Anpassungen in Zusammenhang mit bevorstehenden Experimenten.

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

4. August 2025

Wer auf einem Raspberry Pi ein Kiosk-System einrichten möchte, kann hierfür mit dem Raspberry OS Lite beginnen. Dort sollte über einen Aufruf von raspi-config der Autologin aktiviert werden (System Options -> S6 Auto Login).

Im nächsten Schritt wird der Wayland Compositor Sway installiert:

apt install sway xwayland

Nach der Installation wird im lokalen Nutzer, welcher für den Kiosk-Modus benutzt werden soll, eine Konfiguration-Datei angelegt:

mkdir -p ~/.config/sway/
nano ~/.config/sway/config

Diese wird mit folgender Konfiguration befüllt:

# Sway kiosk configuration for Raspberry Pi + Raspberry Pi Touch Display 2

# Configure sway
default_border none
default_floating_border none

# Set and transform output
output DSI-2 transform 90

# Execute application
exec_always sh -c '/home/seeseekey/testapp'

Die Konfiguration sorgt dafür das Sway rahmenlos arbeitet und der Bildschirm des Raspberry Touch 2 Display um 90 Grad gedreht wird. Im letzten Schritt wird in der Konfiguration eine Applikation gestartet.

Für Debugzwecke können daneben bei Bedarf noch folgende Zeilen hinzugefügt werden:

# Debug (write outputs and tree into file)
exec_always sh -c 'sleep 4 && swaymsg -t get_outputs > /tmp/outputs.json'
exec_always sh -c 'sleep 4 && swaymsg -t get_tree > /tmp/tree.json'

Zwar ist mit dieser Konfiguration das Display gedreht, aber die Eingaben werden noch in der ursprünglichen Rotation übermittelt. Hierzu muss im ersten Schritt mittels libinput-tools das Gerät ermittelt werden:

apt install libinput-tools
libinput list-devices

Nachdem das Touchscreen-Gerät ermittelt wurde, kann der Name des Gerätes genutzt werden, um eine udev-Regel zu definieren:

nano /etc/udev/rules.d/99-touch-rotation.rules

Dort wird die Rotation ebenfalls um 90 Grad gedreht:

ATTRS{name}=="11-005d Goodix Capacitive TouchScreen", ENV{LIBINPUT_CALIBRATION_MATRIX}="0 1 0 -1 0 1"

Nachdem diese Konfiguration hinterlegt sind, wird eine lokale systemd-Unit erstellt:

mkdir -p ~/.config/systemd/user
nano ~/.config/systemd/user/sway.service

Diese wird mit folgendem Inhalt befüllt:

[Unit]
Description=Sway
After=graphical-session.target
Requires=graphical-session.target

[Service]
ExecStart=/usr/bin/sway
Restart=always
Environment=XDG_RUNTIME_DIR=/run/user/%U

[Install]
WantedBy=default.target

Anschließend kann die systemd-Unit aktiviert werden.

systemctl --user enable sway

Nun kann der Raspberry Pi neugestartet werden. Im Idealfall startet das System führt den Login durch und startet die Applikation. Sollte es hier Probleme geben, kann es an bestimmten Bibliotheken wie libxi6 liegen, welche noch nachinstalliert werden müssen.

28. Juli 2025

In dem Fall muss ich etwas (sehr weit) ausholen. Als mein Vater vor einigen Jahren in Rente gegangen ist, habe ich ihm ein gebrauchtes Thinkcentre mit Windows 10 von Lenovo gekauft. Sofern ich keinen Mist gebaut habe, war es zu dem Zeitpunkt kompatibel mit Windows 11. Was aktuell nicht mehr der Fall ist. Was also machen?

Die erste Möglichkeit wäre neue Hardware zu kaufen. Was nicht infrage kommt. Von der Leistung her würde die vorhandene CPU für Windows 11 reichen. Und mein Vater nutzt den Rechner nur, um im Internet zu surfen und E-Mails abzurufen.

Die zweite Möglichkeit wäre, Windows 11 mit Tools wie Rufus oder Flyby11 zu installieren, die die von Microsoft bestimmten Voraussetzungen aushebeln. Das funktioniert aktuell. Aber ich bin mir ziemlich sicher, dass Microsoft das irgendwann mit einem Update unterbinden wird. Vermutlich auch bei bereits bestehenden Installationen.

Da die Anforderungen sehr überschaubar sind, habe ich mich für Lösung Nummer 3 entschieden. Ich installiere spätestens im September eine Linux-Distribution. Vermutlich openSUSE Tumbleweed. Zum einen, weil Tumbleweed rollt und ich somit im besten Fall von Upgrades alle paar Monate / Jahre verschont bleibe. Und zum anderen, weil Tumbleweed aktuell die wohl am besten getestete rollende Distribution sein dürfte.

Wie bringe ich meinen Vater bei, der schon Probleme hat E-Mail-Anhänge auszudrucken hat, Updates zu installieren? Ganz einfach, gar nicht.

Also werde ich es mit automatischen Updates versuchen. Ja, das kann schiefgehen. Muss es aber nicht. Mit Windows 10 hat es die letzten Jahre ja auch geklappt.

Mein erster Versuch habe ich mit yast2-online-update-configuration unternommen. Und ich bin gescheitert. Vermutlich ist das Tool nicht mit Tumbleweed kompatibel.

Den zweiten Versuch habe ich mit transactional-update durchgeführt. Was zwar technisch gesehen funktioniert hat, aber offiziell ebenfalls nicht mit Tumbleweed kompatibel ist.

Alle guten Dinge sind 3. Den nächsten Versuch habe ich mit os-update unternommen.

Hierbei handelt es sich im Grunde um einen Timer von systemd der regelmäßig, je nach verwendeter Version von openSUSE den richtigen Befehl für die Updates ausführt. Im Falle von Tumbleweed also zypper dup. Diese Lösung nutze ich nun seit einigen Wochen in einer virtuellen Umgebung und bisher funktioniert alles wie es soll. Der werde ich wohl diese Lösung bevorzugen.

Und ja, mir ist das Risiko automatischer Updates bewusst. Die Alternative wäre allerdings Updates manuell zu installieren, was in dem Fall zu Diskussionen führen würde, die ich nicht führen möchte.

25. Juli 2025

Firefox besitzt eine Übersetzungsfunktion für Websites, welche im Gegensatz zu Cloud-Übersetzern wie Google Translate lokal arbeitet, die eingegebenen Texte also nicht an einen fremden Server sendet. Nun wurde die Unterstützung weiterer Sprachen ergänzt.

Firefox wird seit Version 118 standardmäßig mit einer lokalen Funktion zur maschinellen Übersetzung von Websites für den Browser ausgeliefert. Das bedeutet, dass die Übersetzung vollständig im Browser geschieht und keine zu übersetzenden Inhalte an einen Datenriesen wie Google oder Microsoft übermittelt werden müssen.

Mozilla hat nun die Unterstützung weiterer Sprachen hinzugefügt, nämlich Albanisch, Gujarati, Hebräisch, Hindi, Kannada, Malaiisch, Malayalam, Persisch sowie Telugu.

Da die Sprachmodelle über die Remote-Einstellungen von Firefox bereitgestellt werden, ist die Unterstützung neuer Sprachen an kein Firefox-Update gebunden und funktioniert direkt in jedem Firefox mit aktivierter Übersetzungsfunktion.

Damit unterstützt die Übersetzungsfunktion Firefox bereits Übersetzungen aus 41 Sprachen respektive in 39 Sprachen.

Der Beitrag Neue Sprachen für Übersetzungsfunktion von Firefox erschien zuerst auf soeren-hentzschel.at.

Die folgende Geschichte soll mir zur Erinnerung und euch zur Unterhaltung dienen. Sie handelt von CentOS Stream 10, Containern und der Manpage dnf(8). Aber lest selbst.

Es war einmal ein Systemadministrator, der beim Training einige Subkommandos von dnf updateinfo kennenlernte, von deren Existenz er bislang nichts wusste. Und diese Subkommandos heißen list, info und summary. Neugierig schaute er in die Manpage dnf(8), doch zu seinem Erstaunen schwieg sich diese zu diesen Subkommandos aus.

Wut stieg in unserem Sysadmin auf. Wieder einmal haben sich die Entwickler keine Mühe gegeben, die Funktionalität ihrer Anwendung vernünftig zu dokumentieren. Die Qualitätssicherung hat geschlafen. So kann man doch nicht arbeiten. Doch nach dem ersten Wutanfall beschloss der Sysadmin, der Sache in Ruhe auf den Grund zu gehen, bevor er diesen Misstand anprangern würde.

Die Distribution des Sysadmins ist dafür bekannt, dass unter bestimmten Umständen Funktionalität von Upstream zurückportiert wird. Vielleicht hatte sich hier eine Diskrepanz eingeschlichen. Vielleicht war dieser Fehler in einer neueren Version ausgemerzt. Um dies schnell zu überprüfen, wollte unser Sysadmin einen Blick in dnf(8) in Centos 10 Stream werfen. Dazu führte er folgende Befehle in einer Kommandozeile aus:

$ podman run --rm -it centos:stream10
[root@01ede4521839 /]# man 8 dnf
bash: man: command not found
[root@01ede4521839 /]#

Mit einem Augenrollen erinnerte sich unser Sysadmin daran, dass Container-Images nur das absolut Notwendige enthalten, um möglichst wenig Speicherplatz auf der Festplatte zu belegen. Darüber, was absolut notwendig ist, werden seit anbeginn des Containerzeitalters philosophische Streitgespräche geführt. Also prüfte unser Sysadmin, ob es einen vertrauten Paketmanager gab, um die Manpages nachzuinstallieren:

[root@01ede4521839 /]# dnf in man-db man-pages
CentOS Stream 10 - BaseOS                       2.6 MB/s | 6.2 MB     00:02    
CentOS Stream 10 - AppStream                    1.5 MB/s | 2.4 MB     00:01    
CentOS Stream 10 - Extras packages              3.3 kB/s | 3.5 kB     00:01    
Dependencies resolved.
================================================================================
 Package             Architecture   Version                Repository      Size
================================================================================
Installing:
 man-db              x86_64         2.12.0-8.el10          baseos         1.3 M
 man-pages           noarch         6.06-3.el10            baseos         3.7 M
Installing dependencies:
 groff-base          x86_64         1.23.0-10.el10         baseos         1.1 M
 less                x86_64         661-3.el10             baseos         191 k
 libpipeline         x86_64         1.5.7-7.el10           baseos          53 k

Transaction Summary
================================================================================
Install  5 Packages

Total download size: 6.4 M
Installed size: 9.9 M
Is this ok [y/N]:
…
Installed:
  groff-base-1.23.0-10.el10.x86_64          less-661-3.el10.x86_64              
  libpipeline-1.5.7-7.el10.x86_64           man-db-2.12.0-8.el10.x86_64         
  man-pages-6.06-3.el10.noarch             

Complete!
[root@01ede4521839 /]# mandb
Processing manual pages under /usr/share/man...
Updating index cache for path `/usr/share/man/man7'. Wait...mandb: can't resolve man7/groff_man.7
mandb: warning: /usr/share/man/man7/man.7.gz: bad symlink or ROFF `.so' request
mandb: can't resolve man7/groff_man.7
mandb: warning: /usr/share/man/man7/man.man-pages.7.gz: bad symlink or ROFF `.so' request
Updating index cache for path `/usr/share/man/man3type'. Wait...done.
Checking for stray cats under /usr/share/man...
Checking for stray cats under /var/cache/man...
Processing manual pages under /usr/local/share/man...
Updating index cache for path `/usr/local/share/man/mann'. Wait...done.
Checking for stray cats under /usr/local/share/man...
Checking for stray cats under /var/cache/man/local...
45 man subdirectories contained newer manual pages.
2701 manual pages were added.
0 stray cats were added.
0 old database entries were purged.
[root@01ede4521839 /]# man 8 dnf
No manual entry for dnf in section 8

Resultat: Kein which-Befehl verfügbar. Diese Container-Image-Kuratöre sparten aber wirklich an allem. Doch der obige Codeblock enthüllt noch mehr. Zwar war der Paketmanager dnf installiert, auch die Manpages waren nun vorhanden, nur die Manpage dnf(8) fehlte immer noch. Und so bemühte der Sysadmin wieder die Tastatur, um zu prüfen, ob die entsprechende Datei tatsächlich fehlt, welches Paket sie bereitstellt und um das Problem zu lösen. Sehet und staunet:

[root@01ede4521839 /]# stat /usr/share/man/man8/dnf.8.gz
stat: cannot statx '/usr/share/man/man8/dnf.8.gz': No such file or directory
[root@01ede4521839 /]# dnf provides /usr/share/man/man8/dnf.8.gz
…    
dnf-4.20.0-9.el10.noarch : Package manager
Repo        : baseos
Matched from:
Filename    : /usr/share/man/man8/dnf.8.gz
[root@01ede4521839 /]# dnf reinstall dnf
Last metadata expiration check: 0:01:01 ago on Wed Jan  1 14:31:37 2025.
Dependencies resolved.
================================================================================
 Package       Architecture     Version                  Repository        Size
================================================================================
Reinstalling:
 dnf           noarch           4.20.0-9.el10            baseos           478 k

Transaction Summary
================================================================================

Total download size: 478 k
Installed size: 2.5 M
Is this ok [y/N]:y
…
Reinstalled:
  dnf-4.20.0-9.el10.noarch                                                      

Complete!
[root@01ede4521839 /]# stat /usr/share/man/man8/dnf.8.gz
  File: /usr/share/man/man8/dnf.8.gz -> dnf4.8.gz
  Size: 9         	Blocks: 8          IO Block: 4096   symbolic link
Device: 0,111	Inode: 6118189     Links: 1
Access: (0777/lrwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2024-10-28 20:00:00.000000000 -0400
Modify: 2024-10-28 20:00:00.000000000 -0400
Change: 2025-01-01 14:32:59.692356995 -0500
 Birth: 2025-01-01 14:32:59.691356987 -0500

Überzeugt, dass der Spuk nun ein Ende habe, versuchte es unser Sysadmin erneut:

[root@01ede4521839 /]# man 8 dnf
No manual entry for dnf in section 8

Moment! Die Datei ist da, die Manpage jedoch nicht? Sind hier dunkle Mächte am Werke? Nein, denn wie die folgenden Befehle offenbarten, lag die Ursache lediglich in kaputten Symlinks und fehlenden Paketen:

[root@01ede4521839 /]# ls -l /usr/share/man/man8/dnf.8.gz
lrwxrwxrwx. 1 root root 9 Oct 28 20:00 /usr/share/man/man8/dnf.8.gz -> dnf4.8.gz
[root@01ede4521839 /]# ls -l /usr/share/man/man8/dnf4.8.gz
ls: cannot access '/usr/share/man/man8/dnf4.8.gz': No such file or directory
[root@01ede4521839 /]# dnf provides /usr/share/man/man8/dnf4.8.gz
Last metadata expiration check: 0:05:59 ago on Wed Jan  1 14:31:37 2025.
…
python3-dnf-4.20.0-9.el10.noarch : Python 3 interface to DNF
Repo        : baseos
Matched from:
Filename    : /usr/share/man/man8/dnf4.8.gz

[root@01ede4521839 /]# dnf list python3-dnf
Last metadata expiration check: 0:06:16 ago on Wed Jan  1 14:31:37 2025.
Installed Packages
python3-dnf.noarch                     4.20.0-9.el10                     @System

Getrieben von Ungeduld und etwas Frust installierte unser Sysadmin nun auch das Paket python3-dnf.noarch neu, in einem letzten, verzweifelten Versuch, endlich die lang ersehnte Manpage zu erhalten.

[root@01ede4521839 /]# dnf reinstall python3-dnf.noarch
…
Reinstalled:
  python3-dnf-4.20.0-9.el10.noarch                                              

Complete!
[root@01ede4521839 /]# man 8 dnf
DNF4(8)                               DNF                              DNF4(8)

NAME
       dnf4 - DNF Command Reference

SYNOPSIS
       dnf [options]  [...]

DESCRIPTION
       DNF  is  the  next upcoming major version of YUM, a package manager for
       RPM-based Linux distributions. It roughly maintains  CLI  compatibility
       with YUM and defines a strict API for extensions and plugins.

Na endlich! Da war sie, die so lang ersehnte und schmerzlich vermisste Manpage. Und die Mühe unseres Sysadmins wurde mit der Erkenntnis belohnt, dass die gesuchte Information auch in dieser Version von dnf(8) nicht enthalten war. Zufrieden wandte sich der Sysadmin nun dem Ticketsystem zu, um zu erfragen, warum die gesuchten Informationen nicht vorhanden sind und um eine Ergänzung anzuregen.

Und wenn er nicht gestorben ist, wartet er noch immer auf eine Antwort.

Und die Moral von der Geschichte?

Erwarte nicht Manpages in Container-Images zu finden. Unser Sysadmin wäre deutlich schneller am ZIel angelangt, hätte er direkt in den Quelltext geschaut: https://github.com/rpm-software-management/dnf/blob/master/doc/command_ref.rst

24. Juli 2025

Mozilla hat Version 2.30 seiner VPN-Clients für das Mozilla VPN veröffentlicht.

Mit dem Mozilla VPN bietet Mozilla in Zusammenarbeit mit Mullvad sein eigenes Virtual Private Network an und verspricht neben einer sehr einfachen Bedienung eine durch das moderne und schlanke WireGuard-Protokoll schnelle Performance, Sicherheit sowie Privatsphäre: Weder werden Nutzungsdaten geloggt noch mit einer externen Analysefirma zusammengearbeitet, um Nutzungsprofile zu erstellen.

Jetzt Mozilla VPN nutzen

Die Neuerungen vom Mozilla VPN 2.30

Das Update auf das Mozilla VPN 2.30 bringt keine neuen Funktionen, sondern vor allem Fehlerbehebungen und Verbesserungen unter der Haube.

Der Beitrag Mozilla VPN 2.30 veröffentlicht erschien zuerst auf soeren-hentzschel.at.

23. Juli 2025

Die MZLA Technologies Corporation hat mit Thunderbird 141 eine neue Version seines Open Source E-Mail-Clients für Windows, Apple macOS und Linux veröffentlicht.

Neuerungen von Thunderbird 141

Mit Thunderbird 141 hat die MZLA Technologies Corporation ein Update für seinen Open Source E-Mail-Client veröffentlicht.

Die Benachrichtigung für neue E-Mails wurde um eine Aktion zum Archivieren erweitert. Beim Verfassen von E-Mails gibt es eine Warnung, wenn der konfigurierte OpenPGP-Schlüssel des Anwenders bald abläuft.

Darüber hinaus gab es wie immer diverse Fehlerkorrekturen und Verbesserungen unter der Haube, welche sich in den Release Notes (engl.) nachlesen lassen. Auch Sicherheitslücken wurden behoben.

Der Beitrag Thunderbird 141 veröffentlicht erschien zuerst auf soeren-hentzschel.at.

Der Autor hatte Lust auf einen Erkundungsausflug in die Welt von NixOS. Ein Erfahrungsbericht.



Eigentlich wollte ich etwas ganz anderes machen: Einen Tiling Windowmanager wie Sway oder Hyprland ausprobieren. Irgendwie lief mir dann aber zum wiederholten Mal NixOS über den Weg, weswegen ich beide Erkundungen miteinander verbinden wollte. Sway und Co. habe ich als alter (und vielleicht etwas eingefahrener) KDE-User nach ersten Tests doch erst mal wieder hinten angestellt. Aber NixOS, das hat mich irgendwie erreicht.

In dem Artikel beschreibe ich (m)einen kleinen Streifzug durch NixOS, das den Ansatz einer deklarativen Systemkonfiguration verfolgt. NixOS soll dabei von Grund auf installiert und danach ein Desktop Environment (KDE Plasma) installiert werden. An der Stelle möchte ich auf die zahlreichen anderen NixOS-Artikel auf GNULinux.ch hinweisen. Der vorliegende Artikel ist einfach nur yet another Erfahrungsbericht.

Grundinstallation

Es gibt zwar einen grafischen Installer, für die volle Dröhnung habe ich mich allerdings für die manuelle Installation, also für das Minimal ISO Image entschieden. Ich habe mich nach der Installationsanleitung gerichtet. Außerdem wollte ich gerne ein verschlüsseltes System mit Btrfs haben, einfach um zu sehen, ob das auch gut machbar ist. Dieser Wiki-Eintrag geht darauf ein. Für den Artikel hier fasse ich mein Vorgehen also nur kurz zusammen – für nähere Informationen sei auf die verlinkten Seiten verwiesen.


Nach dem Booten des Installer-ISOs

Nach dem Booten des Minimal ISO Image findet man sich also – ganz ähnlich wie bei einer Installation von Arch Linux – in einer Konsole wieder. Mit sudo -i kann man gleich mal root-Rechte erlangen und ggf. mit loadkeys de auf deutsches Tastaturlayout umstellen.

Partitionierung

Für mein Setup genügen zwei Partitionen: Eine kleine für die EFI-Bootpartition und eine große für Btrfs. Für letzteres werden später noch Subvolumes erstellt. Partitionstabelle erstellen und partitionieren kann man mit printf "label: gpt\n,1G,U\n,,L\n" | sfdisk /dev/vda in einem Aufwasch machen. /dev/vda ist die virtuelle Festplatte in meiner VM und muss ggf. angepasst werden. Hier wird also eine GPT-Partitionstabelle erstellt und anschließend eine UEFI-konforme, kleine Partition sowie eine Linuxpartition, die den Rest der Festplatte einnimmt.

Die Bootpartition kann schonmal formatiert werden (nochmal: Pfad zum Device ggf. anpassen!):

mkfs.vfat -n BOOT /dev/vda1

Verschlüsselung

Die Btrfs-Partition soll ja verschlüsselt werden, daher müssen wir die Partition erstmal mit cryptsetup vorbereiten:

cryptsetup --verify-passphrase -v luksFormat /dev/vda2

WARNING!
========
This will overwrite data on /dev/vda2 irrevocably.

Are you sure? (Type 'yes' in capital letters): YES
Enter passphrase for /dev/vda2: 
Verify passphrase: 
Key slot 0 created.
Command successful.

Mit cryptsetup open /dev/vda2 enc öffnen wir nun die Partition; sie ist nun unter /dev/mapper/enc verfügbar.

Einhängen der Partitionen

Jetzt können die Btrfs-Subvolumes erstellt werden. Natürlich sind hier ganz ausgefuchste Setups denkbar. Ich möchte im Wesentlichen gerne von /home ein Backup machen können, weswegen das auf jeden Fall ein eigenes Subvolume bekommt; ansonsten halte ich es eher einfach. Zusammengefasst:

mkfs.btrfs /dev/mapper/enc          # Dateisystem erstellen

mount -t btrfs /dev/mapper/enc /mnt # Btrfs-System nach /mnt mounten

# Erstellen der Subvolumes

btrfs subvolume create /mnt/@       # /

btrfs subvolume create /mnt/@home   # /home

btrfs subvolume create /mnt/@nix    # /nix

Nachdem das gemacht ist, hängt man das Btrfs-Dateisystem mit umount /mnt zunächst aus und hängt dann nach /mnt wieder alles so ein, wie man es für die Installation haben möchte. Also zunächst @ als / und darin dann die anderen Subvolumes /home und /nix (und natürlich noch die Bootpartition):

mount -o subvol=@,compress=zstd,noatime /dev/mapper/enc /mnt 

mkdir /mnt/home

mount -o subvol=@home,compress=zstd,noatime /dev/mapper/enc /mnt/home

mkdir /mnt/nix

mount -o subvol=@nix,compress=zstd,noatime /dev/mapper/enc /mnt/nix

mkdir /mnt/boot

mount /dev/vda1 /mnt/boot

Let's go

Jetzt wird es spannend. Das Kommando nixos-generate-config --root /mnt erstellt zwei Konfigurationsdateien:

  • /mnt/etc/nixos/hardware-configuration.nix
  • /mnt/etc/nixos/configuration.nix

Vor der Installation müssen wir noch schnell die zweite Datei anfassen, da nixos-generate-config keine Mountoptionen erkennt. Folgendes muss also in configuration.nix eingetragen werden:

fileSystems = {
  "/".options = [ "compress=zstd" "noatime" ];
  "/home".options = [ "compress=zstd" "noatime" ];
  "/nix".options = [ "compress=zstd" "noatime" ];
};

Außerdem kann man hier noch die Zeitzone (time.timeZone) korrigieren und die Lokalisierung einstellen (i18n.defaultLocale, keymap in console sowie services.xserver.xkb.layout).

Und jetzt geht's los: nixos-install führt endlich die Installation aus. Dabei wird noch nach dem zukünftigen root-Passwort gefragt:

[…]
New password: 
Retype new password: 
passwd: password updated successfully
installation finished!

Das war's! Ein reboot startet das System neu und nach Eingabe des Passworts für die Festplattenverschlüsselung begrüßt uns NixOS mit dem Login-Prompt:


NixOS Login-Prompt

User einrichten, weitere Einstellungen

Um etwas Sinnvolles zu machen, sollten wir erst mal einen User erstellen. Das macht man aber nicht etwa mit dem altbekannten adduser o.ä., nein, wir machen das gleich mal entsprechend dem Nix-Way. Hierfür muss auch wieder die Datei /etc/nixos/configuration editiert werden. Ich habe hierfür die auskommentierte Vorgabe einfach angepasst:

users.users.martin = {
    isNormalUser = true;
    extraGroups = [ "wheel", "networkmanager" ]; # Enable ‘sudo’ for the user.
  #   packages = with pkgs; [
  #     tree
  #  ];
  };

Bei der Gelegenheit können wir auch gleich noch schauen, ob andere auskommentierte Einstellungen für uns sinnvoll sind. Ich habe z.B. noch den NetworkManager (networking.networkmanager.enable = true;), OpenSSH (services.openssh.enable = true;) sowie PipeWire (services.pipewire […]) aktiviert.

Unter environment.systemPackages kann man noch Programme auflisten, die systemweit installiert werden sollen. Für mich gehören da auf jeden Fall schon mal der Editor Helix und die Prozessanzeige htop mit dazu:

environment.systemPackages = with pkgs; [
  helix
  htop
];

Natürlich gibt es noch vieles andere mehr, was man hier tun oder lassen kann. Schlussendlich reicht ein nixos-rebuild switch` um sich ein System entsprechend den getätigten Vorgaben bauen zu lassen. An der Stelle habe ich einen Reboot gemacht und mich unter dem neu erstellten User angemeldet. Vor dem Reboot habe ich ihm noch mit passwd martin das gewünschte Passwort vergeben.

KDE Plasma …

Das Tolle ist: Man kann jetzt nach Lust und Laune ausprobieren und herumbasteln (zumindest in einem gewissen Rahmen). Wenn etwas schiefgeht, kann man einfach zur letzten funktionierenden Konfiguration zurückgehen (Rollback), etwa mittels nixos-rebuild switch --rollback.

In unserem NixOS-Test entscheide ich mich erst einmal dazu, KDE Plasma zu installieren. Um später einfacher zu einem anderen Desktop Environment wechseln zu können, lagere ich den KDE-spezifischen Teil in eine eigene Datei aus und binde diese in die configuration.nix Datei ein.

Hier meine /etc/nixos/kde.nix-Datei, die natürlich – wie alles hier – nur ein minimaler Test sein soll. Da ich die KDE-eigenen PIM-Programme (KMail, Akonadi, etc.) nicht benötige, exkludiere ich diese in der Config:

{ config, pkgs, ... }:

{
  services.xserver.enable = true; # optional
  services.displayManager.sddm.enable = true;
  services.displayManager.sddm.wayland.enable = true;
  services.desktopManager.plasma6.enable = true;

  environment.plasma6.excludePackages = with pkgs.kdePackages; [
    kdepim-runtime
  ];
}

Die Einbindung in configuration.nix darf nicht vergessen werden:

imports =
  [ # Include the results of the hardware scan.
    ./hardware-configuration.nix
    # KDE Plasma 6
    ./kde.nix
  ];

Und mit einem neuerlichen nixos-rebuild switch haben wir – schwuppdiwupp – ein mit KDE eingerichtetes System.


KDE Plasma

… oder doch etwas anderes?

Und wenn einem doch der Sinn danach steht, einen Tiling Windowmanager wie Sway auszuprobieren, ist das kein Problem. Dazu braucht es lediglich ein paar Änderungen, oder eben eine sway.nix-Datei, die man anstelle von kde.nix einbindet. Spaßhalber verwende ich nicht SDDM, sondern greetd als Login Manager: 

{ config, pkgs, lib, ... }:

{
  environment.systemPackages = with pkgs; [
    grim
    slurp
    wl-clipboard
    mako
  ];

  services.gnome.gnome-keyring.enable = true;

  programs.sway = {
    enable = true;
    wrapperFeatures.gtk = true;
  };

  services.greetd = {                                                      
    enable = true;                                                         
    settings = {                                                           
      default_session = {                                                  
        command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --cmd sway";
        user = "greeter";                                                  
      };                                                                   
    };                                                                     
  };
}


Sway

Durch das vorherige KDE Plasma ist das System nicht etwa verbastelt. Keine Spur mehr von den üblichen KDE-Anwendungen. Bei vielen anderen Linux-Distributionen wäre so ein "sauberer" Wechsel nur mit Aufwand möglich!

Aufräumen

Dabei wird grundsätzlich nichts überschrieben. Die KDE-Pakete sind im Nix-Store immer noch vorhanden (aber eben nicht "eingebunden"). Bei Bedarf könnte man einfach wieder auf die alte Konfiguration umschalten. Doch sammeln sich so natürlich immer mehr Dateien an und die Platte füllt sich. Auch die Bootloader-Einträge sammeln sich mit jedem nixos-rebuild an. NixOS bietet Mechanismen an, die alte Konfigurationen (bei Bedarf zyklisch) entfernt. Oder aber man räumt selbst auf. Nicht mehr referenzierte Pakete lassen sich mit nix-collect-garbage entfernen. Alte Systemkonfiguration werden dadurch jedoch nicht entfernt; ein Rollback wäre immer noch möglich. Möchte man alte Zöpfe abschneiden und ein Rollback somit unmöglich machen, ist dies mit nix-collect-garbage -d (als root) möglich.

Ausblick

Das bisherige hat wirklich nur an der Oberfläche von Nix(OS) gekratzt. Wir haben noch nicht einmal über Flakes gesprochen, ein experimentelles, aber sehr beliebtes Feature, das auch Versionspinning mittels lock-Dateien erlaubt. Im NixOS-Manual begegnet einem das aber nur am Rande.

Ebenso wenig betrachtet wurde Home Manager, womit man unter anderem die Dot-Dateien in den Homeverzeichnissen der Benutzer verwalten kann.

Und so gibt es sicherlich noch viele Features, die in dem kleinen NixOS-Ausflug hier völlig ignoriert wurden, da dem Autor womöglich gar nicht bekannt.

Möchte man sich ernsthaft mit NixOS beschäftigen, empfiehlt sich sicherlich die Lektüre des Nix-Manuals, das also den Nix-Paketmanager behandelt. Insbesondere der Teil über nix-shell ist interessant, womit man temporär einfach mal schnell Pakete "installieren" kann und die, wenn man diese Nix-Shell verlässt, wieder verschwunden sind. Das NixOS-Manual behandelt dann die NixOS-Distribution.

Fazit

NixOS bietet einen völlig anderen Ansatz als alle Linux-Distributionen, die ich bisher kennengelernt habe. Ich finde NixOS hochinteressant und es gefällt mir, wie einfach man ein neues "sauberes" Setup bauen kann, ohne dass es in Pakete(de)installationsarien ausartet. Warum also, um den Titel des Artikels nochmal aufzugreifen "… und zurück"? Ich fühle mich noch nicht bereit, um auf NixOS umzusteigen, es ist einfach zu … anders. Als alter Arch Linux User fühle ich mich mit pacman und Co. einfach noch sicherer. Ich habe das Gefühl, noch viel mehr über NixOS in Erfahrung bringen zu müssen, um den Schritt zum Umstieg zu wagen. Vielleicht würde die Lektüre des NixOS & Flakes Buchs helfen, das ich mir sicherlich mal zu Gemüte führen werde.

Wie sind eure Erfahrungen mit NixOS?

Quelle Titelbild: https://de.wikipedia.org (leicht angepasst)


GNU/Linux.ch ist ein Community-Projekt. Bei uns kannst du nicht nur mitlesen, sondern auch selbst aktiv werden. Wir freuen uns, wenn du mit uns über die Artikel in unseren Chat-Gruppen oder im Fediverse diskutierst. Auch du selbst kannst Autor werden. Reiche uns deinen Artikelvorschlag über das Formular auf unserer Webseite ein.

22. Juli 2025

Mozilla hat Firefox 141 für Windows, Apple macOS und Linux veröffentlicht. Dieser Artikel fasst die wichtigsten Neuerungen zusammen – wie immer auf diesem Blog weit ausführlicher als auf anderen Websites.

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

Smarte Tab-Gruppen dank lokaler KI

Auf Wunsch kann Firefox jetzt automatisch Namen für Tab-Gruppen sowie weitere geöffnete Tabs für bereits erstellte Tab-Gruppen vorschlagen. Dies geschieht mit Hilfe einer lokalen KI, es verlassen dabei also keine Daten den Browser.

Diese Neuerung wird schrittweise im Laufe der kommenden Wochen für Nutzer einer englischsprachigen Firefox-Version ausgerollt werden.

Außerdem lassen sich Tab-Gruppen jetzt auch im Menü „Alle Tabs auflisten“ verschieben.

Mehr Platz für vertikale Tabs

Nutzer vertikaler Tabs anstelle der standardmäßig aktiven horizontalen Tableiste können die Größe des Bereiches für die Werkzeuge am unteren Fensterrand nun anpassen, um mehr Platz für vertikale Tabs zu haben. Schaltflächen, die dadurch keinen Platz mehr haben, werden automatisch in einem Überlauf-Menü angezeigt.

Mehr Sicherheit für Firefox-Nutzer

Auch in Firefox 141 wurden wieder mehrere Sicherheitslücken geschlossen. Alleine aus Gründen der Sicherheit ist ein Update auf Firefox 141 daher für alle Nutzer dringend empfohlen.

Sonstige Endnutzer-Neuerungen in Firefox 141

Bei Verwendung des strengen Schutzes vor Aktivitätenverfolgung sowie in privaten Fenstern werden seit Firefox 136 auf Websites eingebettete Instagram- sowie TikTok-Inhalte durch einen Platzhalter ersetzt. Erst nach einem Klick auf einen Button wird dann der tatsächliche Inhalt geladen. Firefox 138 erweiterte diese Funktion um Unterstützung für Inhalte von X, früher auch als Twitter bekannt, Firefox 141 bringt Unterstützung für die Disqus-Kommentarplattform.

Der Schutz vor Aktivitätenverfolgung kann mitunter auch Scripts blockieren, welche Fingerprinting zur Betrugsbekämpfung einsetzen, ohne dass Tracking stattfindet. Anstatt die Scripts zu blockieren, setzt Firefox für diese jetzt auf seine Anti-Fingerprinting-Maßnahmen, um die Webkompatibilität zu verbessern.

Die Adressleiste kann nun auch zur Umrechnung von Einheiten genutzt werden. Ein Auswählen des entsprechenden Eintrags kopiert das Ergebnis in die Zwischenablage.

Firefox unterstützt jetzt PDF 2.0 Metatags für die Anzeige von Metadaten in den Dokumenteigenschaften von PDF-Dateien. Außerdem wird nicht länger eine Drucken-Schaltfläche im PDF-Betrachter angezeigt, wenn die Drucken-Funktion in Firefox deaktiviert ist. Auch die Performance der KI-basierten Generierung von Alternativ-Texten beim Einfügen von Bildern in PDF-Dateien wurde verbessert.

Der RAM-Verbrauch unter Linux wurde reduziert. Außerdem erzwingt Firefox nicht länger einen Neustart, wenn ein Update durch eine Paketverwaltung installiert worden ist. Deutliche Verbesserungen des RAM-Verbrauchs gab es außerdem bei der Übersetzungsfunktion.

Unter Windows 11 nutzt Firefox jetzt die vom System bereitgestellten Symbole für die Schaltflächen in der Titelleiste.

In der neuen Chronik-Sidebar lassen sich jetzt wie in der alten Implementierung Einträge mit der Tastatur auswählen. Außerdem wird der Sidebar-Button in der Navigationssymbolleiste nun nach rechts verschoben, wenn die Sidebar rechts angezeigt wird.

Das Speichern von Adressen wurde jetzt auch für Nutzer in Großbritannien, Spanien, Japan und Brasilien aktiviert. Das Speichern von Kreditkarten-Informationen wurde weltweit aktiviert. Wetter-Vorschläge in der Adressleiste wurden für Nutzer in Deutschland, Frankreich und Italien aktiviert.

Die Firefox-Startseite zeigt in den Content-Empfehlungen nicht länger Beschreibungstexte an.

Wird über about:config der Schalter browser.download.enableDeletePrivate auf true gesetzt, erscheint in den Firefox-Einstellungen für Downloads eine neue Option, um festzulegen, ob heruntergeladene Dateien im privaten Modus gelöscht werden sollen, wenn alle privaten Fenster geschlossen werden. Bisher ist dies immer der Fall.

Mit browser.screenshots.folderList gibt es einen weiteren neuen Schalter in about:config, der den Speicherort für Screenshots betrifft. Wird dieser auf 0 gesetzt, werden Screenshots auf dem Desktop gespeichert. Bei einem Wert von 1 (Standard), wird der Downloads-Ordner des Systems genutzt. Wird der Schalter auf 2 gesetzt, kann die Option browser.screenshots.dir genutzt werden, um einen Ordner festzulegen. Und bei einem Wert von 3 wird der Screenshot-Ordner des Systems genutzt.

Im Responsive Design Modus der Entwicklerwerkzeuge wird ein geänderter User-Agent nun direkt übernommen, wenn das entsprechende Eingabefeld den Fokus verliert, statt zwingend die Betätigung der Enter-Taste zu erwarten, und die Eingabe bei Betätigung der ESC-Taste zurückgesetzt. Auch die Eingaben für die Breite und Höhe des Festers werden durchd die ESC-Taste jetzt zurückgesetzt.

Verbesserungen der Webplattform

Unterstützung für Cookies mit unabhängigem Partitionierungsstatus (CHIPS) wurde hinzugefügt, so dass Entwickler ein Cookie in einem nach Top-Level-Site partitionierten Speicher ablegen können.

Auf Windows unterstützt Firefox jetzt die WebGPU-API. Unterstützung auf macOS, Linux und Android wird in den kommenden Monaten folgen.

In Eingabefeldern vom Typ search lässt sich die Eingabe jetzt mittels ESC-Taste leeren.

Weitere Verbesserungen der Webplattform und für Erweiterungsentwickler lassen sich wie immer in den MDN Web Docs nachlesen.

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

19. Juli 2025

Irgendwann im Jahre 2018 hatte ich bereits einen Artikel veröffentlicht, in dem ich auf ein schädliches Angebot im Arch User Repository (AUR) hingewiesen hatte. Jetzt hat es mal wieder jemand versucht und am 16.07.2025 um circa 20 Uhr (UTC+2) 3 Rezepte (librewolf-fix-bin, firefox-patch-bin, zen-browser-patched-bin) im AUR veröffentlicht.

Bei der Installation der betreffenden Rezepte wurde ein, auf Github gehostetes Script, heruntergeladen das einen Remote Access Trojan (RAT) installiert hat. Gesteuert wurde dieser scheinbar über einen der kostenlosen VPS, die Oracle anbietet.

Am 18.07.25 gegen 18 Uhr (UTC+2) wurden die betreffenden Angebote im AUR vom Arch Linux Team entfernt. Die offizielle Ankündigung findet man in der Mailing-List. Das Github-Repository ist ebenfalls nicht mehr erreichbar.

Solche Vorfälle zeigen weiterhin, dass man PKGBUILD-Dateien die im AUR angeboten werden weiterhin vor einer Installation bzw. einem Update prüfen sollte. Es zeigt aber auch weiterhin, dass solche Vorfälle ziemlich schnell erkannt werden, da das Prüfen recht einfach ist. Somit ist AUR zwar alles andere als sicher, aber immer noch sicherer als beispielsweise die PPA man unter Ubuntu nutzen kann, da darüber nur fertige Pakete angeboten werden.

17. Juli 2025

Der Repository slackware.lngn.net bietet Pakete zur vollständigen Installation der aktuellen Version von KDE Plasma 6 unter Slackware Linux an.



Die Pakete der aktuellen Version von KDE Plasma 6, sowie von KDE Frameworks 6, sind für Slackware-Nutzer unter slackware.lngn.net erhältlich. Der vollständige Desktop kann unter Slackware Current, der Entwicklerversion der Distribution, installiert werden. Voraussetzung dazu ist Slackpkg+, ein Plugin für slackpkg, das die Installation von Paketen aus Drittanbieter-Repositories ermöglicht. Zur Installation des Desktops sind die unten aufgelisteten Einträge in der Datei /etc/slackpkg/slackpkgplus.conf erforderlich:

Bei Verwendung einer CPU mit arm64/aarch64 Architektur:

PKGS_PRIORITY=( kde6 slackware )
REPOPLUS=( kde6 )
MIRRORPLUS['kde6']=https://slackware.lngn.net/pub/aarch64/slackwareaarch64-current/kde6/

Bei Verwendung einer CPU mit x86_64 Architektur:

PKGS_PRIORITY=( kde6 slackware64 )
REPOPLUS=( kde6 )
MIRRORPLUS['kde6']=https://slackware.lngn.net/pub/x86_64/slackware64-current/kde6/

Damit slackpkg auf alle verfügbaren Pakete zugreift, darf der Eintrag 'kde/' nicht in der schwarzen Liste von slackpkg (die Datei /etc/slackpkg/blacklist) enthalten sein. Im Anschluss werden die Pakete installiert:

root # slackpkg install kde6
root # slackpkg upgrade-all

Die aktuelle Version von KDE Plasma 6 arbeitet bislang zuverlässig und stabil unter Slackware Current.


Titelbild: Pixabay

Quellen:
KDE6 - [plasma-6.4.2, kf6-6.16.0, kf5-5.116.0, gear-25.04.3]
https://slackware.lngn.net/#kde6


GNU/Linux.ch ist ein Community-Projekt. Bei uns kannst du nicht nur mitlesen, sondern auch selbst aktiv werden. Wir freuen uns, wenn du mit uns über die Artikel in unseren Chat-Gruppen oder im Fediverse diskutierst. Auch du selbst kannst Autor werden. Reiche uns deinen Artikelvorschlag über das Formular auf unserer Webseite ein.

12. Juli 2025

Die MZLA Technologies Corporation hat mit Thunderbird 10.1 ein Update für die Android-Version seines E-Mail-Clients veröffentlicht.

Download Thunderbird für Android

Thunderbird 10.1 behebt das Problem, dass wenn mehrere Bilder aus der Android-Galerie geteilt wurden, nur eines statt alle Bilder an die E-Mail angehängt worden ist. Außerdem wurde das Problem behoben, dass die Anzeige der Neuerungen nach einem Update nicht funktionierte, wenn der Changelog-Eintrag unzulässige Zeichen beinhaltete.

Der Beitrag Thunderbird 10.1 für Android veröffentlicht erschien zuerst auf soeren-hentzschel.at.

11. Juli 2025

Ich nutze Quarto, um wissenschaftliche Artikel zu schreiben, und exportiere das Ergebnis als PDF mit Typst. Mein Layout ist dabei zweispaltig, was ich in meinem Typst-Template wie folgt aktiviere:

show: columns.with(2)

Manchmal möchte ich jedoch sehr breite Tabellen oder Bilder einfügen, die sich über beide Spalten erstrecken sollen.

In Typst selbst lässt sich das mit dem place-Befehl lösen:

#place(top+center, scope: "parent", float: true)[INHALT]

In Quarto kann man das umsetzen, indem man manuell zwei Typst-Codeblöcke (typst-Chunks) um den Inhalt legt – z. B. um eine Tabelle:

```{=typst}
#place(top+center, scope: "parent", float: true)[
```


| **Default** | **Left** | **Right** | **Center** | **Default** | **Left** | **Right** | **Center** |
|:-----------|:--------|---------:|:--------:|:-----------|:--------|---------:|:--------:|
| 12         | 12      | 12       | 12       | 12         | 12      | 12       | 12       |
| 123        | 123     | 123      | 123      | 123        | 123     | 123      | 123      |
| 1          | 1       | 1        | 1        | 1          | 1       | 1        | 1        |

: Tolle Tabelle {#tbl-mulitcolumn1}

```{=typst}
]
```

Das funktioniert, ist aber nicht wirklich „the Quarto way“.

Lua-Filter

Um das eleganter zu lösen, habe ich einen kleinen Lua-Filter geschrieben (multicolumn.lua), der automatisch jede ::: {.multicolumn}-Umgebung in den passenden #place(...)-Befehl für Typst übersetzt:

function Div(div)
  if div.classes:includes("multicolumn") then
    local typst_start = pandoc.RawBlock("typst", '#place(top+center, scope: "parent", float: true)[')
    local typst_end = pandoc.RawBlock("typst", ']')

    local result = {typst_start}
    for _, el in ipairs(div.content) do
      table.insert(result, el)
    end
    table.insert(result, typst_end)
    return result
  end
end

Den Filter aktiviere ich im YAML-Header wie folgt:

      filters:
        - multicolumn.lua

Dann kann ich im Markdown einfach folgende Struktur verwenden:


:::{.multicolumn}

| **Default** | **Left** | **Right** | **Center** | **Default** | **Left** | **Right** | **Center** |
|:-----------|:--------|---------:|:--------:|:-----------|:--------|---------:|:--------:|
| 12         | 12      | 12       | 12       | 12         | 12      | 12       | 12       |
| 123        | 123     | 123      | 123      | 123        | 123     | 123      | 123      |
| 1          | 1       | 1        | 1        | 1          | 1       | 1        | 1        |

: My span table {#tbl-span2}

:::

Das Ergebnis: Die Tabelle erscheint über beide Spalten hinweg, ganz ohne manuelle Typst-Blöcke. Das funktioniert genauso gut auch mit Bildern oder R-Code-Chunks.

Typsttabellen direkt spannen

Markdowntabellen sind in ihren Manipulationsmöglichkeiten stark eingeschränkt. Sie können z.B. kein colspan, keine Farben und keine Strichmodifikationen; Typst hingegen schon. Und so kann es bei aufwendigen Tabellen eine praktikable Lösung sein, direkt den Typst-Code zu verwenden.

Damit diese Tabelle per crossref referenziert werden kann, sollte die in Quarto integrierte Tabellenumgebung verwendet werden:

:::{#tbl-REFERENZLABEL}
```{=typst}
#table( TOLLE TYPST TABELLE )
```

BESCHRIFTUNG
:::

Die Tabelle kann jetzt per @tbl-REFERENZLABEL referenziert werden.

Damit diese aufwendig gestalteten Typsttabellen auch über beide Spalten gespannt werden, wickeln wir das Ganze in die oben erstellte .mulitcolumn Umgebung:

::::{.multicolumn}
:::{#tbl-REFERENZALBEL}
```{=typst}
#table( TOLLE TYPST TABELLE )
```

BESCHRIFTUNG
:::
::::

Viel Spass beim Coden!

Weblinks



 

Die MZLA Technologies Corporation hat mit Thunderbird 140.0.1 ein Update für seinen Open Source E-Mail-Client veröffentlicht.

Neuerungen von Thunderbird 140.0.1

Mit Thunderbird 140.0.1 hat die MZLA Technologies Corporation ein Update für seinen Open Source E-Mail-Client veröffentlicht. Die neue Version behebt unter anderem den Fehler, dass das Einfügen eines Links in eine HTML-Mail nicht wie erwartet funktionierte.

Der Beitrag Thunderbird 140.0.1 veröffentlicht erschien zuerst auf soeren-hentzschel.at.

9. Juli 2025

8. Juli 2025

Mozilla hat Firefox 140.0.4 veröffentlicht und behebt damit mehrere Probleme der Vorgängerversion.

Download Mozilla Firefox 140.0.4

Mozilla hat Firefox 140.0.4 für Windows, macOS und Linux veröffentlicht. Firefox 140.0.3 wurde für diese Plattformen übersprungen, da diese Versionsnummer einem Android-Update vorbehalten war.

HuggingChat wurde als Chatbot-Anbieter entfernt, da der Dienst eingestellt worden ist.

Im Zuge der Pocket-Einstellung wurde in Firefox 140 fälschlicherweise auch die Unterstützung für die Optionen Pocket und SponsoredPocket aus der FirefoxHome-Unternehmensrichtlinie entfernt, obwohl es diese Optionen der Firefox-Startseite weiterhin geben wird. Die Optionen wurden zurückgebracht und gleichzeitig mit Stories sowie SponsoredStories neue Optionen eingeführt, die das Gleiche machen, aber nicht länger Pocket im Namen beinhalten.

Ein Problem wurde behoben, welches auf manchen Websites verursachte, dass PDF-Dateien unter Umständen nicht mehr heruntergeladen werden konnten. Dazu kommen zwei weitere Korrekturen, welche in Zusammenhang mit der Webkompatibilität stehen.

Die Animation des Schließens eines Tabs, welcher Audio wiedergibt, war ruckelig.

Ein fehlender Abstand zwischen zwei Buttons im Dialog zur Profilerstellung wurde wiederhergestellt.

Ein Fehler in der WebExtension-API browserSettings.useDocumentFonts wurde behoben.

Im Debugger Entwicklerwerkzeug konnten falsche Suchergebnisse zu sehen sein, wenn während einer Dateisuche die Quelle gewechselt wurde.

Dazu kommen mehrere Verbesserungen in Zusammenhang mit einem bevorstehenden Experiment für die Firefox-Startseite, welches für unter ein Prozent der Nutzer in den USA geplant ist.

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

Ich setze auf meinen Linux Installationen WireGuard als VPN Lösung ein. Meine FRITZ!Box kann auch WireGuard-Verbindungen erstellen und verwalten.
Bisher ist es mir noch nicht gelungen die von meiner FRITZ!Box erstellten VPN-Verbindung in meinem Linux im NetworkManager einzutragen. Auf dem Linuxrechner muss das Metapaket wireguard bzw. wireguard-tools installiert sein.

Auf der c-base habe ich nun erfahren wie ich die von der WireGuard erstellte wg_config.conf Datei im NetworkManager importiere. Dazu setze ich einen Befehl in der Konsole ab:

nmcli connection import type wireguard file "/home/andi/Downloads/wg_config.conf"

Nun kann ich meine VPN-Verbindungen im NetworkManager verwenden. Hier können dann noch Details eingestellt werden, etwa ob der VPN-Tunnel automatisch aufgebaut werden soll oder nicht.

4. Juli 2025

Die MZLA Technologies Corporation hat mit Thunderbird 140 eine neue Version seines Open Source E-Mail-Clients für Windows, Apple macOS und Linux veröffentlicht.

Neuerungen von Thunderbird 140

Mit Thunderbird 140 hat die MZLA Technologies Corporation ein Update für seinen Open Source E-Mail-Client veröffentlicht.

Thunderbird 140 bringt einen neuen Dialog zum Einrichten von E-Mail-Konten, welcher die bisherige Oberfläche in einem Tab ersetzt.

Thunderbird 140 Thunderbird 140

Die Benachrichtigungen für neue E-Mails haben eine Schaltfläche, um weitere Aktionen auszuführen. Darüber war es bereits möglich, E-Mails direkt als gelesen zu markieren oder diese zu löschen. Thunderbird 140 ergänzt die Optionen zum Markieren als Spam sowie zum Hinzufügen der Stern-Kennzeichnung.

Mehrere Optionen, welche das Erscheinungsbild von Thunderbird betreffen, wurden in die entsprechende Kategorie der Einstellungen verschoben.

Thunderbird 140

Darüber hinaus gab es wie immer diverse Fehlerkorrekturen und Verbesserungen unter der Haube, welche sich in den Release Notes (engl.) nachlesen lassen. Auch Sicherheitslücken wurden behoben.

Thunderbird ESR 140, die Version mit Langzeitunterstützung und Nachfolger von Thunderbird ESR 128, wurde noch nicht veröffentlicht. Dies ist für kommende Woche geplant.

Der Beitrag Thunderbird 140 veröffentlicht erschien zuerst auf soeren-hentzschel.at.

3. Juli 2025

KHangMan ist ein KDE-App, die auf dem klassischen Galgenmännchen-Spiel basiert. Sie ist Teil der KDE Software Compilation, genauer gesagt, des kdeedu-Pakets.

KHangMan funktioniert dabei nicht so, wie ihr vielleicht denkt. Denn die Wörter, die erraten werden sollen, können nicht selbst eingegeben werden. Vielmehr greift KHangMan auf eine Reihe von vorinstallierten Wortlisten zurück, die für verschiedene Kategorien bereitgestellt werden, z.B. “Zahlen”, “Hauptstädte”, “Tiere”, usw.

Möchte man eigene Wörter spielen, muss man eine eigene Wortliste erstellen und für KHangMan verfügbar machen.

custom word list

Die Wörterlisten liegen im Verzeichnis /usr/share/apps/kvtml/LANGUAE, wobei LANGUAGE durch den Ländercode ersetzt werden muss. Die deutschen Wörterlisten liegen also unter /usr/share/apps/kvtml/de und haben die Dateiendung .kvtml. Für jede Wörterliste existiert eine eigene .kvtml-Datei.

Die Skelettstruktur einer solchen Wörterliste sieht so aus:




  
    converter
    TITEL DER LISTE
    DEINE BESCHREIBUNG
  

  
    
      de
    
  
  
  
  
    
      false
      false
      
        DEIN WORT
        EIN KOMMENTAR
      
    

    
  • in Zeile 6 und 7 wird der Name der Liste samt einer kleinen Beschreibung angegeben. Unter diesem Namen ist die Wortliste später in KHangMan auffindbar.
  • in Zeile 12 geben wir an, dass die Sprache der Liste de ist.
  • Die Zeilen 18 bis 25 bilden einen Entry-Block für ein gewünschtes Wort. Dabei wird
    • in Zeile 18 eine eindeutige angegeben (hochzählen)
    • in Zeile 22 das eigentliche Wort definiert
    • in Zeile 23 ein kurzer Hilfetext gesetzt.
  • diese Entry-Blöcke müssen für jedes Wort erzeugt werden.

Für ein Statistik-Quiz könnte die vollständige Datei so aussehen:

sudo nano /usr/share/apps/kvtml/statistikquiz.kvtml




  
    converter
    Statistik
    Statistik
  
  
    
      de
    
  
  
    
      false
      false
      
        Boxplot
        graphische Darstellung einer metrischen Werteverteilung
      
    
    
      false
      false
      
        Histogram
        graphische Darstellung klassierter Häufigkeiten
      
    
    
      false
      false
      
        Kausalität
        ursächlicher Zusammenhang
      
    
    
      false
      false
      
        Konfidenzintervall
        Sicherheitsbereich
      
    
    
      false
      false
      
        Korrelation
        Zusammenhang (aber nicht kausal)
      
    
    
      false
      false
      
        Regressionsgerade
        Wird beschrieben mit y=a+bx
      
    
    
      false
      false
      
        Signifikanz
        liegt vor wenn p kleiner alpha ist
      
    
    
      false
      false
      
        Standardabweichung
        Wurzel aus der Varianz
      
    
    
      false
      false
      
        Varianz
        Quadrat der Standardabweichung
      
    
  

Nachdem die Datei gespeichert ist, wird KHangMan gestartet.

Wordlist wechseln

Unten links wird die derzeit aktive Wörterliste angezeigt. In meinem Beispiel ist das “Tiere”.

Wenn man darauf klickt, kann eine andere Wörterliste ausgewählt werden. Da meine Systemsprache deutsch ist, sucht KHangMan im Ordner /usr/share/apps/kvtml/de nach validen .kvtml-Dateien.

eigene Wordlist auswählen

Hier sollte - wenn alles richtig gemacht wurde - die neue eigene Liste auftauchen.

Erstes Wort von der Liste

Ist diese ausgewählt, kann das Spiel beginnen.

:=)

Python-Script

Unter Umständen kann es mühsam sein, eine oder mehrere solcher .kvtml-Dateien zu erstellen und zu pflegen. Beispielsweise ist es mühselig, die entry id nachzuverfolgen, wenn ein Entry-Block zwischen bestehende Blöcke eingeschoben werden soll.

Daher hab ich mir ein kleines naives Python-Script geschrieben, welches mir die Arbeit etwas erleichtert.

Das Script nimmt eine Textdatei entgegen, und erzeugt daraus die passende .kvtml-Datei.

Für das Statistikquiz sieht die Datei so aus:

nano statistik.txt

Boxplot       graphische Darstellung einer metrischen Werteverteilung
Histogram       graphische Darstellung klassierter Häufigkeiten
Kausalität         ursächlicher Zusammenhang
Konfidenzintervall         Sicherheitsbereich
Korrelation        Zusammenhang (aber nicht kausal)
Regressionsgerade        Wird beschrieben mit y=a+bx
Signifikanz        liegt vor wenn p kleiner alpha ist
Standardabweichung       Wurzel aus der Varianz
Varianz        Quadrat der Standardabweichung

Jede Zeile repräsentiert einen Worteintrag. Zuerst kommt das gesuchte Wort, dann mindestens 2 Leerzeichen, und anschließend der Hinweistext.

Hier nun das Python-Script, welches diese Datei ausliest

nano create-wordlist.py

#!/usr/bin/env python3
import sys
import re
import xml.etree.ElementTree as ET
from xml.dom import minidom
import string

def prettify(elem):
    """Return a pretty-printed XML string for the Element."""
    rough_string = ET.tostring(elem, 'utf-8')
    parsed = minidom.parseString(rough_string)
    return parsed.toprettyxml(indent="  ")

def sanitize_filename(name):
    """Sanitize the title to create a safe filename."""
    # Entfernt alle Zeichen außer Buchstaben, Zahlen, Bindestrich und Unterstrich
    valid_chars = f"-_.() {string.ascii_letters}{string.digits}"
    sanitized = ''.join(c if c in valid_chars else '_' for c in name)
    return sanitized.replace(' ', '_') + ".kvtml"

def main():
    if len(sys.argv) < 4:
        print("Usage: python3 generate_kvtml.py input.txt title comment")
        sys.exit(1)

    input_file = sys.argv[1]
    title = sys.argv[2]
    comment = sys.argv[3]
    output_file = sanitize_filename(title)

    with open(input_file, "r", encoding="utf-8") as f:
        lines = [line.strip() for line in f if line.strip()]

    kvtml = ET.Element("kvtml", version="2.0")

    info = ET.SubElement(kvtml, "information")
    ET.SubElement(info, "generator").text = "converter"
    ET.SubElement(info, "title").text = title
    ET.SubElement(info, "comment").text = comment

    identifiers = ET.SubElement(kvtml, "identifiers")
    identifier = ET.SubElement(identifiers, "identifier", id="0")
    ET.SubElement(identifier, "locale").text = "de"

    entries = ET.SubElement(kvtml, "entries")

    for idx, line in enumerate(lines):
        parts = re.split(r'\t+| {2,}', line)
        if len(parts) != 2:
            print(f"Warning: Skipping invalid line {idx + 1}: {line}")
            continue
        text, comment_text = parts
        entry = ET.SubElement(entries, "entry", id=str(idx))
        ET.SubElement(entry, "inactive").text = "false"
        ET.SubElement(entry, "inquery").text = "false"
        trans = ET.SubElement(entry, "translation", id="0")
        ET.SubElement(trans, "text").text = text
        ET.SubElement(trans, "comment").text = comment_text

    pretty_xml = prettify(kvtml)

    with open(output_file, "w", encoding="utf-8") as f:
        f.write('\n')
        f.write('\n')
        f.write('\n'.join(pretty_xml.split('\n')[1:]))

    print(f"✅ KVTML-Datei wurde geschrieben: {output_file}")

if __name__ == "__main__":
    main()

Das Script wird ausführbar gemacht mittels

chmod +x create-wordlist.py

…und aufgerufen per:

./create-wordlist.py TEXTDATEI LISTENNAME BESCHREIBUNG

Im Falle des Statistikquiz lautet der Aufruf

./create-wordlist.py statistik.txt Statistik Grundbegriffe

Das Script erzeugt die Datei LISTENNAME.kvtml, also in unserem Falle Statistik.kvtml, welche alle Entry-Blöcke der Wörterliste enthält. Diese kann nun ins kvtml-Verzeichnis kopiert werden.

cp Statistik.kvtml /usr/share/apps/kvtml/de/

Viel Spass beim Ausprobieren!

Weblinks



 

1. Juli 2025

In den USA hat Mozilla ein neues Experiment gestartet, welche Nutzern von Windows 10 das Mozilla VPN für sechs Monate schenkt, wenn sich diese für die Synchronisation in Firefox anmelden.

Mit dem Mozilla VPN bietet Mozilla in Zusammenarbeit mit Mullvad sein eigenes Virtual Private Network an und verspricht neben einer sehr einfachen Bedienung eine durch das moderne und schlanke WireGuard-Protokoll schnelle Performance, Sicherheit sowie Privatsphäre: Weder werden Nutzungsdaten geloggt noch mit einer externen Analysefirma zusammengearbeitet, um Nutzungsprofile zu erstellen.

Jetzt Mozilla VPN nutzen

USA: Mozilla VPN sechs Monate kostenlos nutzen

In den USA hat Mozilla ein neues Experiment gestartet: Demnach soll einem Teil der Firefox-Nutzer auf Windows 10, die sich einen Mozilla Account zulegen, das Mozilla VPN für sechs Monate geschenkt werden.

Kostenloses Mozilla VPN für Nutzer von Windows 10

Hintergrund der Aktion: Im Oktober 2025 endet die offizelle Unterstützung von Windows 10 durch Microsoft. Mozillas Hypothese ist, dass sich aufgrund der mit Windows 11 gestiegenen Hardware-Voraussetzungen einige Nutzer dann ein neues Gerät kaufen werden, was auch zu einer teilweisen Abwanderung von Firefox-Nutzern führen wird. Die Synchronisation von Browser-Daten wie Lesezeichen und Zugangsdaten soll die Migration auf ein neues Gerät vereinfachen, um diesem potenziellen Effekt entgegenzuwirken. Die sechs kostenlosen Monate für das Mozilla VPN sollen für Nutzer, welche die Synchronisation noch nicht nutzen, einen Anreiz darstellen, sich einen kostenlosen Mozilla Account zu erstellen.

Über das Experiment wird Mozilla die Entwicklung dieser neuen Konten und VPN-Nutzer beobachten. Mozilla schreibt, dass die Ergebnisse dieses Experiments auch als Grundlage für eine Untersuchung dienen könnten, ob in der Zukunft allen Firefox-Benutzern ein kostenloses VPN angeboten werden soll.

Der Beitrag USA: Mozilla VPN 6 Monate kostenlos für Nutzer von Windows 10 erschien zuerst auf soeren-hentzschel.at.

30. Juni 2025

Kurz notiert: Let's Encrypt hat Anfang des Monats am 4. Juni 2025 den Dienst für die E-Mail-Benachrichtigungen abgeschaltet. Zertifikatsinhaber werden fortan nicht mehr per E-Mail auf ein Auslaufen der Zertifikate hingewiesen. Diese Änderung wurde bereits im Januar angekündigt.

Begründet wird die Entscheidung durch die Kosten für den E-Mail-Versand, die Speicherung der E-Mail-Adressen sowie die Komplexität der Infrastruktur. In der Tat ist der Versand der Benachrichtigungen in einer Größenordnung wie bei Let's Encrypt sehr kostenintensiv, zumal dies über externe Dienstleister abgewickelt werden muss.

Die Speicherung der E-Mail-Adressen ist ein interessanter Punkt, weil insbesondere bei certbot die Adressen standardmäßig immer abgefragt wurden, während man die Angabe bei acme.sh schon länger vermeiden konnte. Dies soll, so mein Verständnis, nun der Standard werden, da Let's Encrypt nicht mehr die E-Mail-Adressen der Zertifikatsinhaber speichern möchte. Für andere Zwecke wurden die E-Mail-Adressen offenbar auch nicht gespeichert, da z. B. das Zurückziehen eines Zertifikates (Revocation) über andere Wege wie den Private Key oder DNS-Verifikation läuft, wie in der Dokumentation beschrieben wird.

Bleibt noch ein letzter Punkt, der im Blogartikel zur Abschaltung angeführt wird: Ein integraler Bestandteil von Let's Encrypt ist Automatisierung. Schon von Anfang an wurden automatisierte Verfahren wie ACME statt einer manuellen Verifikation eingesetzt, sodass auch die Erneuerung (Renew) automatisiert vorgenommen werden konnte und eine Benachrichtigung eigentlich überflüssig ist. Wer das noch nicht verstanden hat, soll es jetzt wohl auf die harte Tour lernen. Der Dienst unterstützt die Benachrichtigungen seit seinem Start im Jahr 2015, als diese Form der Automatisierung noch völlig neu war und sich alle daran gewöhnen mussten.

Let's Encrypt möchte die Ressourcen verwenden, um sich neuen Vorhaben zu widmen. Dazu gehören sicherlich zum Beispiel die 6-Tages-Zertifikate oder CRLs, wie wir auch schon in der Risikozone-Episode 64 Anfang des Jahres besprochen haben.

Zum Abspielen von Musik habe ich in den letzten Jahren Elisa verwendet. Kürzlich wurde ich aber auf das Programm fooyin aufmerksam und bin fast sofort komplett darauf gewechselt.

Fooyin hat für mich vor allem 3 Dinge dir mir gefallen. Die Bedienung finde ich einfacher als die von Elisa. Wobei ich es nicht benennen kann, was mit an Elisa stört. Zudem lässt sich die grafische Oberfläche von fooyin einfach an die eigenen Wünsche anpassen. Und die Standardansicht ist sehr einfach, ohne Firlefanz, gehalten.

Laut den Entwicklern bietet fooyin derzeit folgende nennenswerte Funktionen:

  • Wiedergabe von FLAC, MP3, MP4, Vorbis, Opus, WavPack, WAV, AIFF, MKA, Musepack, Monkey’s Audio
  • Wiedergabe gängiger VGM- und Trackermodulformate
  • Lückenlose Wiedergabe
  • Hinzufügen und Abspielen von Dateien aus Archiven
  • Audioausgabe und Gerätekonfiguration
  • CUE-Sheet-Unterstützung (auch eingebettet)
  • Vollständig anpassbares Layout, Anpassbare Tastenkombinationen
  • Filtern der Bibliothek nach beliebigen Feldern
  • Erstellen und Verwalten von Wiedergabelisten
  • Importieren/Exportieren von Wiedergabelisten (M3U/M3U8)
  • Erweiterbar über ein Plugin-System
  • Tag-Bearbeitung
  • Bibliotheksbaum, einschließlich Verzeichnisstrukturansicht
  • Verzeichnis-Browser
  • Wellenform-Suchleiste
  • MPRIS-Unterstützung
  • ReplayGain-Unterstützung
  • Scrobbling

Wer sich für eine Audioplayer interessiert der sich optisch an foobar2000 orientiert und der Linux nutzt, sollte sich fooyin zumindest einmal ansehen.

Das war es für heute und vermutlich morgen von mir. Ich gehe mal so langsam packen, da ich nachher mit dem Zug nach Würzburg fahre, um dort heute Abend auf das Konzert von Skunk Anansie in der Posthalle zu gehen.

28. Juni 2025

Mit Common Voice stellt Mozilla den weltweit größten öffentlichen Datensatz menschlicher Stimmen bereit – kostenlos und für jeden nutzbar. Mozilla hat Version 22.0 seines Datensatzes veröffentlicht.

Der Markt für Spracherkennung wird von den ganz großen Namen kommerzieller Anbieter dominiert: Amazon, Apple, Google, Microsoft. Darum hat Mozilla im Jahr 2017 das Projekt Common Voice gestartet. Mit Common Voice bietet Mozilla eine kostenlose Alternative an, zu der jeder beitragen kann und die jedem zur Verfügung steht. Damit möchte Mozilla Innovation und Wettbewerb in der Sprachtechnologie auf Basis von Maschinenlernen fördern.

Mit dem nun veröffentlichten Common Voice Corpus 22.0 wächst der deutschsprachige Datensatz von 1.452 auf 1.476 Stunden an. Wer bereits den Common Voice Corpus 21.0 besitzt, kann wie immer auch nur ein sogenanntes Delta Segment mit den Unterschieden zur Vorversion herunterladen. Für Deutsch würde das den Download von 33,38 GB auf 463,63 MB reduzieren.

Insgesamt deckt Mozilla Common Voice mit der neuen Version 137 Sprachen mit insgesamt 33.816 aufgenommenen Stunden ab, was Mozilla Common Voice zum vielfältigsten mehrsprachigen Sprachkorpus der Welt macht.

Zum Download der Mozilla Common Voice Datensätze

Der Beitrag Mozilla veröffentlicht Common Voice Corpus 22.0 erschien zuerst auf soeren-hentzschel.at.