Glow Markdown in der Shell rendern

Markdown ist eine leicht verständliche Auszeichnungssprache für Texte. Einige von Euch kennen jene aus Readme-Dateien aus Git Repositories, Dokumentationen und von statischen Bloggeneratoren wie Hugo, oder Jekyll. Markdown bietet für mich entscheidende Vorteile.

Ein in Markdown formatierter und strukturierten Text ist für immer in der gewünschten Formatierung betrachtbar. Er ist nicht an ein bestimmtes Programm und seiner Syntax gebunden. Im Gegensatz dazu öffnen sich alte Dateien aus Officeanwendungen aus Redmond der 90er Jahre nur mit Verlusten in neueren Programmen, wobei bereits viel der Formatierung und dessen Struktur verloren geht. Besonders problematisch wird es, wenn Programme nicht mehr auf neuen Systemen laufen, oder wenn sie für eine Installation nicht mehr verfügbar sind. Hier drohen uns in Zukunft digitale Verluste.

Markdown überzeugt durch seine gute Lesbarkeit ohne Rendering, sowie durch die einfache Syntax bei der Erstellung von Texten, Tabellen und Listen. Markdown erlaubt es, Text mit einfachen Symbolen zu formatieren. So rahmen zwei ** einen fetten Text ein, während ein * kursiven Text markiert und eine H1-Überschrift ihre Formatierung durch eine Raute mit Leerzeichen vor dem Text erhält. Für Überschriften in unteren Ebenen verwendet man entsprechend zwei, drei oder vier Rauten. Weitere Informationen finden sich in dem Artikel auf Wikipedia. Ich selbst nutze für die einfach und schnelle Auszeichnung Typora unter Linux und macOS. Ich gebe auch zu, damit meine README.md gerne in Git zu gestalten. Typora erstellt mir auf Knopfdruck ein Inhaltsverzeichnis aus den Überschriften inklusive Anker 😉

Während Markdown-Dateien in dafür bestimmten Texteditoren, wie z.b. dem oben genannte Typora, gut formatiert lesbar sind, benötigen Markdown-Dateien zum Rendern in der Shell eine spezielle Software, um eine perfekte Darstellung zu bekommen. Hier kommt Glow ins Spiel.

Was ist Glow?

Kurz und knapp: Glow ist ein auf ein der Programmiersprache Go basierendes Shellprogramm, welches Markdown-Dateien direkt in der Shell rendert. Es stellt die Inhalte übersichtlich formatiert, inklusive Links, und farbig dar.

Je nach System wird Glow über die Paketmanager der Linuxdistribution installiert. Glow lässt unter Debian, macOS ( via brew), FreeBSD, Fedora und sogar Android installieren. Natürlich besteht auch die Möglichkeit, glow über die Sprache go selbst zu installieren.

Nutzung

Glow kann mit einer lokalen Markdown-Datei aufgerufen werden:

glow README.md

Auch eine Vorschau von Markdown-Dokumenten aus dem Internet wäre möglich:

glow https://raw.githubusercontent.com/charmbracelet/glow/refs/heads/master/README.md

Des Weiteren bietet glow noch einen Pager und die Möglichkeit eigene Styles zu definieren und herunterzuladen.

Glow ist Teil des Charmprojektes welches eine Sammlung von Open-Source-Tools/-Bibliotheken für die Entwicklung von terminalbasierten Anwendungen ist. Das Charmprojekt ist die Glamourecke der modernen und benutzerfreundliche CLI-Programme 😉

Invidious: The media could not be loaded format not supported

Invidious ist eineSoftware, die es ermöglicht, Videos von YouTube anzusehen, ohne direkt die offizielle YouTube-Website, oder App zu verwenden. Die selbstgehostete Software ermöglicht eine werbefreie Nutzung von Youtube und schützt die Privatsphäre der Nutzer, indem es Tracking durch Google verhindert. Invidious bietet die weiteren Funktionen wie das Herunterladen von Videos, das Ansehen ohne Anmeldung und die Möglichkeit, nur den Audiostream abzuspielen.

Ich hatte nun etwas länger meine private Instanz auf dem Homeserver genutzt und stieß auf den Fehler
„The media could not be loaded, either because the server or network failed or because the format is not supported“.

Damit die Software wieder produktiv arbeitet, muss hier ein weiterer Container erstellt und die Datei docker-compose.yml für Euren Stack umgeschrieben werden.

Als Erstes wird ein einzelner Container via

 docker run quay.io/invidious/youtube-trusted-session-generator

gestartet und nach einem Start die Ausgabewerte des Containers für visitor_data und po_token kopiert.
Dieser Container beendet sich nach der Ausgabe von selbst und sollte nicht detached gestartet werden.

docker run quay.io/invidious/youtube-trusted-session-generator
[INFO] internally launching GUI (X11 environment)
[INFO] starting Xvfb
[INFO] launching chromium instance
[INFO] launching browser.
[INFO] waiting 10 seconds for the page to fully load.
visitor_data: TOLLERHASHWERT1
po_token: TOLLERHASHWERT2
successfully removed temp profile /tmp/uc_3aimnef0

Jene Werte habe ich, inklusive des neuen Containers, in die Datei docker-compose.yml eingepflegt.

version: "3"
services:
  invidious:
    image: quay.io/invidious/invidious:latest
    container_name: invidious
    restart: unless-stopped
    ports:
      - "4000:3000"
    environment:
      INVIDIOUS_CONFIG: |
        db:
          dbname: invidious
          user: kemal
          password: kemal
          host: invidious-db
          port: 5432
        check_tables: true
        signature_server: inv_sig_helper:12999
        visitor_data: TOLLERHASHWERT1
        po_token: TOLLERHASHWERT2
        quality: dash

        registration_enabled: false
        top_enabled: false
        related_videos: false
        comments: ["",""]
        login_enabled: false
        domain: TOLLERFQDN
        hmac_key: "BLABLABLABLABLA"

    depends_on:
      - invidious-db
    logging:
      options:
        max-size: "1G"
        max-file: "4"

  inv_sig_helper:
    image: quay.io/invidious/inv-sig-helper:latest
    init: true
    command: ["--tcp", "0.0.0.0:12999"]
    environment:
      - RUST_LOG=info
    restart: unless-stopped
    cap_drop:
      - ALL
    read_only: true
    security_opt:
      - no-new-privileges:true
  invidious-db:
    image: docker.io/library/postgres:14
    restart: unless-stopped
    container_name: invidious-db
    volumes:
      - ./postgresdata:/var/lib/postgresql/data
      - ./config/sql:/config/sql
      - ./docker/init-invidious-db.sh:/docker-entrypoint-initdb.d/init-invidious-db.sh
    environment:
      POSTGRES_DB: invidious
      POSTGRES_USER: kemal
      POSTGRES_PASSWORD: kemal
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"]
    networks:
      - default

Weiterführende Informationen bezüglich einem Fehler mit sigv_helper und kontobasierter Authentifizierung finden sich in der Issue 4947 auf Github

Viel Spaß mit Invidious.

macOS: LibreOffice nicht aus Apples App Store installieren

Einmal wollte ich faul sein und gleichzeitig einem FOSS-Projekt etwas Gutes tun. Anstelle mich immer selbst um ein Update von LibreOffice zu kümmern, wollte ich es aus dem Apple App Store installieren, via selbigen an das Projekt spenden und die Downloadzahlen im Store um eine Wertigkeit erhöhen. Automatische Updates im Hintergrund sollten hier die Wahl sein. Als gewissenhafter Verbraucher beobachte ich, die von mir installieren Pakete und deren Projekte auf Neuigkeiten und vor allem auf Sicherheitsmeldungen. Im Falle von LibreOffice gab es hier ein Sicherheitsproblem in der Version 7.6.6, welche mit der Version 7.6.7 relativ zügig behoben wurde.
Das Sicherheitsrelease ist bis heute nicht in Apples App Store angekommen.

Weiterlesen

Fork: Grafischer Git-Client für macOS

Ich habe mich nach einer kleinen Testphase gegen GitKraken und für Fork als grafischen Client für Git unter macOS entschieden.
Gitkraken mag ein hervorragendes Werkzeug sein, aber das Abomodell hat mich abgeschreckt. Ich möchte noch erwähnen, dass GitKraken ein Studenten- und Universitätspaket anbietet. Ich werde vielleicht GitKraken Kollegen:innen an meinem Arbeitsplatz für einen Test vorschlagen. Dann können wir einmal nochmal einen direkten Vergleich vornehmen.

Für mich kam dieses Paket nicht infrage, da ich aus meinem Arbeitsplatz nicht einen Vorteil ziehen will. Die Lizenz möchte ich auch Privat nutzen und meine Frau würde sich auch über einen besseren Client freuen. Fork bietet mit hier die Möglichkeiten für 3 Installationen auf verschiedenen Systemen. Hiermit kann meine Frau unter Windows Fork nutzen. Leider bietet Ihr Arbeitgeber nur dieses Betriebssystem und keine Alternativen.

Natürlich könnten viele Aufgaben direkt in der Entwicklungsumgebung, oder via Shell gelöst werden. Ich will auch die Möglichkeiten einer besseren Visualisierung benutzen können. Diese sind dort nicht immer gegeben, beziehungsweise haben nicht dieses Aussehen wie in Fork. Neben den typischen Aufgaben eines Clients für git, bietet Fork noch Unterstützung für zum Beispiel git-flow und git LFS.

Als Haken könnte ich den Preis von 55,34 € für eine Lizenz erwähnen. Diese Lizenz beinhaltet drei gleichzeitige Installation für eine:n Entwickler:in. Ein Blick in die rege Entwicklung von Fork durch die Entwickler Tanya und Dan Pristupova, lässt mich positiv in Zukunft schauen. Hier möchte ich auch nochmals auf das Blog der Entwickler hinweisen.

Eine Sache ist mir noch sehr wichtig. Die Wahl wäre eher auf GitKraken gefallen, wenn ich für meine Arbeit und Privat nicht macOS nutzen würde. GitKraken unterstützt Linux deb,tar.gz,rpm und Snap. Sowie auch Mac mit Apple Silicon/Intel und Windows.
Aber hier bleibt der für mich der noch etwas freche, und mehr als bittere, Beigeschmack der Anzahl der Verbindungen zu einer Instanz für 4 € monatlich. Sie beträgt 1 Verbindung, siehe Screenshot. Das bedeutet, ich muss das Paket für 12 € monatlich abonnieren, um meinen Bedarf abzudecken.

Big Sur Homebrew xcrun: error: invalid active developer path

Bei meinem letzten Update von Homebrew unter macOS Big Sur hatte ich die Fehlermeldung, dass es eine ungültigen Pfadangabe für die Entwicklerwerkzeuge gäbe. Da ich nur die Kommandozeilenwerkzeuge für macOS nutze wird diese nicht einem Update unterzogen.
Bei einer kompletten Installation von Xcode würde dies automatisch geschehen.

Um das Update selbst anzustoßen genügt ein:

➜  ~ xcode-select --install

Fedora Workstation die unmotivierte Kontaktaufnahme zu Fedoraproject.org abgewöhnen

people in store during nighttime
Foto von Max van den Oetelaar unsplash.org

Ich bin die Tage aus allen Wolken gefallen, als ich sah wie meine Workstation alle 5 Minuten Kontakt zu fedoraproject.org aufnahm. Faszinierend daran war, dass ich sie zu den Uhrzeiten nicht genutzt hatte. Diese Sache hatte für mich zuerst mehr als einen üblen Beigeschmack.

Weiterlesen

Liquidprompt > Starship

Nach längerer Nutzung von Liquidprompt habe ich mich entschieden ein wenig über den Tellerrand zu schauen. Hier bin ich auf den, in reger Entwicklung befindlichen, auf Rust basierenden Shellprompt starship gestoßen. Im Moment test ich noch ein wenig seine Grenzen aus, aber ich habe das Gefühl, dass er ein wenig schneller als Liquidprompt unter zsh ist.

Die augenschonende Schriftart für das Arbeiten mit Code und Shell

Typeface Name: Hack

Meine Empfehlung für das kommende Jahr doch einmal die Schriftart zu ändern und eine neue für die Konsole und das Programmieren zu nutzen. Die Schriftart Hack lässt sich in jeder Größe sehr leicht lesen.
Ein Blick auf die Proben sollte überzeugen.

Sie ist bei jeder größeren Linuxdistribution in den Repositories zu finden, lässt sich aber auch Systemen wie MacOs und Windows nachinstallieren. Ich nutze sie schon länger auf Grund der schnell zu erfassenden Gestaltung und damit einhergehender Augenfreundlichkeit.