Fryboyter

Front Matter - CMS für statische Website-Generatoren

Viele Nutzer entdecken für ihre Internetseiten immer öfter statische Website-Generatoren, da bei diesen der Wartungsaufwand im Vergleich zu beispielsweise WordPress sehr gering ist. Ich selbst nutze deswegen seit 2019 Hugo.

Um einen neuen Artikel anzulegen, starte ich VS Code, lege ein neues Verzeichnis unter content/posts an und kopiere bei Bedarf Bilder in dieses Verzeichnis, die in dem Beitrag angezeigt werden sollen. Danach erstelle ich die Datei index.md und erstelle in dieser mittels eines Snippet den Front-Matter-Bereich, den ich entsprechend anpasse. Unter diesen Bereich erstelle ich dann den eigentlichen Artikel. Abschließend werden diese Änderungen in ein Mercurial-Repository hochgeladen, was mittels eines Hooks den Inhalt von fryboyter.de erzeugt und die Änderungen zusätzlich mittels Hg-Git bei Github hochlädt.

An sich habe ich damit kein Problem. Es funktioniert. Und die Vorgänge kann ich inzwischen auswendig durchführen. Aber ab und zu wäre für mich etwas mehr Komfort trotzdem schön. Das gilt auch für Nutzer, die bei meinem “Workflow” schreiend wegrennen würden. Also vermutlich die meisten Nutzer.

Vor ein paar Tagen habe ich Front Matter entdeckt. Hierbei handelt es sich um eine Erweiterung für VS Code die ein CMS für diverse statische Website-Generatoren direkt in VS Code anbietet. Neben Hugo werden auch noch andere Generatoren wie beispielsweise Jekyll, Gatsby, 11ty, Hexo oder Next.js unterstützt.

Aus zeitlichen Gründen habe ich bisher die Erweiterung nur installiert und die Grundkonfiguration erstellt. Ausgehend davon muss ich aber sagen, dass Front Matter einige Dinge sehr vereinfacht bzw. bequemer macht. Wenn man sich die Dokumentation durchliest, sollten aber durchaus komplexere Dinge möglich sein. Ich würde daher jedem, der einen statischen Website-Generator und VS Code nutzt, raten sich Front Matter zumindest einmal anzusehen. Über den eigenen Tellerrand zu schauen ist ja oft nicht verkehrt.

OSBN

PeaZip unter Wayland starten

Aus reiner Neugierde wollte ich mir das Packprogramm PeaZip ansehen. Direkt nach dem Starten ist das Programm mit folgender Fehlermeldung abgestürzt.

[FORMS.PP] ExceptionOccurred 
  Sender=EAccessViolation
  Exception=Access violation
  Stack trace:
  $00000000007438D3
  $0000000000723049
  $00000000008ADC66
  $00000000008AD5FC
  $00000000008A9415
  $00000000007B3EFB
  $00000000007B3E02
  $0000000000448D9D
  $0000000000447B43
[FORMS.PP] ExceptionOccurred 

Die Ursache ist Wayland. PeaZip ist damit wohl noch nicht wirklich kompatibel. Daher muss man PeaZip mit dem x11 backend starten. Führt man also QT_QPA_PLATFORM=xcb peazip aus, startet PeaZip ohne Probleme.

OSBN | Linux

Zeichenkette an bestimmter Position in einer Datei einfügen

In einem Hauptverzeichnis sind diverse Dateien in Unterverzeichnissen vorhanden. In jeder dieser Dateien soll die gleiche Zeichenkette in die gleiche Zeile eintragen werden ohne das eine bereits vorhandene Zeile überschrieben wird. Nehmen wir als Beispiel einmal einen Front-Matter-Bereich eines der hier veröffentlichten Artikel.

---
title: WLAN-USB-Stick Cudy WU1300S unter Linux
date: 2021-05-02T16:49:00+0200
categories:
- OSBN
- Linux
tags:
- WLAN
- USB
slug: wlan-usb-stick-cudy-wu1300S-unter-linux
---

Was tun, wenn man nun beispielsweise zwischen der Zeile mit dem Datum und der Kategorie eine Zeile mit include_toc: true eintragen will? Am einfachst und aufwändigsten wäre es jede Datei händisch anzupassen. Da es sich aber um Dateien im drei- oder vierstelligen handelt, ist das keine gute Idee.

Um Dateien zu ändern, kann man das Tool sed nutzen, was eines der “Urgesteine” unter Linux ist.

sed -i'4 i include_toc: true' Dateiname 

Die 4 gibt hierbei die gewünschte Zeile an. Das i dahinter steht für insert. Also einfügen.

Wer das ganze erst einmal testen will, ohne dass die Datei geändert wird, kann einfach -i bei dem Befehl entfernen. Dann wird der Inhalt der Datei inklusive der Änderung ausgegeben, ohne die Änderung zu speichern.

Bleibt nur noch wie man den Befehl auf alle betreffenden Dateien automatisch anwendet. Hier reicht, wie so oft, eine einfache Schleife.

#/bin/bash
for i in $(find posts -name '*.md');
do
    sed -i '4 i include_toc: true' $i
done;

Hiermit wird im aktuellen Verzeichnis sowie in den darin vorhandenen Unterverzeichnissen nach Dateien mit der Endung .md (Markdown-Dateien) gesucht. Diese werden dann mit dem sed Befehl entsprechend geändert.

OSBN | Linux

Widgets unter KDE Plasma sperren

Wenn man unter KDE Plasma beispielsweise ein Widget auf den Desktop abgelegt hat, konnte man den Desktop so sperren, dass man die Widgets so lange nicht mehr verschieben konnte bis man die Sperre aufgehoben hat.

Diese Funktion wurde meines Wissens (warum auch immer) aus der grafischen Oberfläche entfernt. Nun ist es mir in letzter Zeit öfters passiert, dass ich auf ein Icon in der Schnellstartleiste zu lange geklickt haben und sich dabei den Mauszeiger bewegt hat. Was dazu geführt hat, dass sich beispielsweise das Icon, über das ich den Browser starte, auf den Desktop verschoben wurde. Was mich nervt.

Die Sperrfunktion gibt es aber intern weiterhin. Hierfür einfach folgendes im Terminal ausführen.

qdbus org.kde.plasmashell /PlasmaShell evaluateScript "lockCorona(true)"

Zum Entsperren dann einfach den gleichen Befehl ausführen und das true auf false ändern. Damit man nicht jedes Mal die Sperre manuell aktivieren muss, kann man den Befehl beispielsweise in die Autostart-Funktion eintragen die man über die Systemeinstellung von KDE Plasma bearbeiten kann.

OSBN | Linux

NetworkManager auf iwd umstellen

Zum Verwalten von Netzwerkverbindungen verwenden viele Nutzer das Tool NetworkManager. Wenn es um WLAN-Verbindungen geht, kommt hierbei meist wpa_supplicant zum Einsatz. Wird die Verbindung getrennt, weil der Rechner beispielsweise in den Ruhezustand versetzt wurde, dauert es relativ lange bis die Verbindung wieder aufgebaut wird.

Um den Verbindungsaufbau zu beschleunigen, kann man anstelle von wpa_supplicant iwd nutzen.

Zuerst installiert man es mit der jeweiligen Paketverwaltung (in Falle von Arch Linux also mittels pacman -S iwd). Nun erweitert man die Datei /etc/NetworkManager/NetworkManager.conf um folgenden Inhalt bzw. passt die Datei entsprechend an, falls bereits ein anderes WiFi Backend definiert ist.

[device]
wifi.backend=iwd

Abschließend beendet man wpa_supplicant mittels systemctl stop wpa_supplicant.service und startet NetworkManager mit systemctl restart NetworkManager.service neu. Nun sollte iwd anstelle von wpa_supplicant verwendet werden und der Verbindungsaufbau sollte von nun an schneller erfolgen.

Linux | OSBN