2 Punkte von GN⁺ 2025-06-17 | 1 Kommentare | Auf WhatsApp teilen
  • Chawan ist ein neuer TUI-Webbrowser, der in einer textbasierten Terminalumgebung läuft
  • Diese Version 0.2.0 enthält alle essenziellen Funktionen der MVP-Phase und ist frei von kritischen Bugs
  • Erforderlich sind nur die Bibliotheken libssh2, libbrotli und OpenSSL/LibreSSL; mehrere Abhängigkeiten aus früheren Versionen wurden entfernt
  • Für amd64-Linux wird er auch als statisches Binärprogramm und .deb-Paket bereitgestellt, was Verteilung und Installation erleichtert
  • Für die nächste Version sind Performance-Verbesserungen im Layout-Modul und ein besseres UI-Erlebnis geplant

Einführung in Chawan 0.2.0

Chawan ist ein leichtgewichtiger Webbrowser auf Basis einer Terminal User Interface (TUI), der als Open-Source-Projekt dafür entwickelt wurde, das Web in Textumgebungen bequem zu durchsuchen. Die Version 0.2.0 ist die erste stabilisierte Veröffentlichung mit allen zentralen Funktionen der Minimum Viable Product (MVP)-Phase; derzeit sind keine schwerwiegenden kritischen Bugs gemeldet.

Bereitstellung und Installation

  • Ein Tarball des Source Trees wird bereitgestellt; wer selbst kompilieren möchte, kann den Anweisungen im README folgen
  • Für amd64-Linux wird eine statische Binärdistribution angeboten, die sich nach dem Entpacken des Archivs einfach mit dem Befehl make install installieren lässt
    • Die Deinstallation ist mit make uninstall möglich
  • Dieselbe Distribution ist auch als .deb-Paket verfügbar und kann auf Debian-basierten Systemen direkt installiert werden

Informationen für Paketbetreuer

  • Die erforderlichen Laufzeit-Abhängigkeiten von Chawan sind:
    • libssh2
    • libbrotli (einschließlich libbrotlicommon und libbrotlidec)
    • OpenSSL (3.0 oder höher) oder LibreSSL (getestet mit OpenBSD 7.7)
  • zlib, libseccomp, termcap/ncurses, libcurl und weitere, die in früheren Entwicklungsversionen verwendet wurden, werden nicht mehr benötigt und wurden daher aus den Abhängigkeiten entfernt
  • Falls beim Paketieren Probleme auftreten, sollte vor einem Patch zunächst der Entwickler kontaktiert werden, da das Problem wahrscheinlich direkt Upstream gelöst werden kann

Ausblick

  • Diese Version 0.2.0 hat länger als erwartet gebraucht, wurde aber zur offiziellen Veröffentlichung bestimmt, da nun alle MVP-Funktionen vorhanden sind
  • Im v0.2-Branch werden künftig nur noch Bugfixes vorgenommen; neue Funktionen werden weiterhin im master-Branch hinzugefügt
  • Die nächste Veröffentlichung konzentriert sich auf Verbesserungen bei Performance und Genauigkeit des Layout-Moduls sowie auf eine benutzerfreundlichere UI

Bedeutung und Vorteile des Projekts

  • Chawan ist ein für Terminalumgebungen optimierter Webbrowser, der den Zugriff auf Webinhalte auch auf ressourcenbeschränkten Servern und in eingeschränkten Umgebungen ermöglicht
  • Im Unterschied zu bestehenden textbasierten Webbrowsern bietet er moderne Verschlüsselungs- und Komprimierungsprotokolle sowie minimale Abhängigkeiten als Alleinstellungsmerkmale
  • Durch den Open-Source-Ansatz eignet er sich gut für Erweiterungen und individuelle Anpassungen

1 Kommentare

 
GN⁺ 2025-06-17
Hacker-News-Kommentare
  • Ich freue mich immer, wenn ich ein in Nim geschriebenes Projekt sehe. Ich habe den Eindruck, dass Nim irgendwo zwischen C/C++ und Python liegt und eine der interessantesten Sprachen überhaupt ist. Gemessen an der Größe der Nim-Community scheint die Produktivität ihrer Nutzer sehr hoch zu sein, sodass ich mich, obwohl ich mich nicht wirklich auskenne, in meiner Einschätzung zu Nim bestätigt fühle. Schade, dass Nim nicht stärker im Mainstream gewachsen ist.

  • @shiomiru, ich würde gern wissen, was die beste Ressource ist, um Konzepte rund um TTY zu lernen. Empfehlungen sind willkommen, egal ob kostenlos oder kostenpflichtig. Zu TTY kenne ich den einführenden Artikel zu TTY auf linusakesson.net, aber mir ist bewusst, dass er termcap/terminfo/curses nicht abdeckt. In einem anderen Kommentar wurde auch das Buch O'Reillys Termcap & Terminfo erwähnt (online hier einsehbar).

    • Wegen meiner Erfahrung mit einem eigenen benutzerdefinierten Terminalmodul kenne ich mich mit dem Standard X/Open curses nicht besonders gut aus. Für tatsächliche Escape-Sequenzen ist das ctlseqs.ms-Dokument von XTerm nach meiner Erfahrung eine sehr nützliche Quelle. Ich habe mir auch viele Ideen aus Nick Blacks notcurses-Projekt geholt und empfehle besonders seine Notizen zu „sprixels“.
  • Ich freue mich immer über neue Ansätze, die man mal kurz zum Experimentieren nutzen kann, ohne noch eine weitere Chrome-basierte Engine verwenden zu müssen. Das heute Vorgestellte möchte ich nach der Schule selbst testen. Als sehr coole Alternative, besonders in Umgebungen ohne sixel, empfehle ich Chromiums Terminal-Port: carbonyl. Der ursprüngliche Autor kann es leider nicht mehr aktiv weiterentwickeln, daher ist der Funktionsumfang stark eingeschränkt und etliche Dinge wie Tastenkürzel oder Dateispeicherung werden noch nicht unterstützt. Trotzdem finde ich Web-Kompatibilität und den frischen Ansatz sehr beeindruckend. Ich hoffe, dass jemand mit Rust-Kenntnissen das Projekt weiterführt; als ich vor ein paar Monaten nachgesehen habe, gab es noch keinen populären Fork.

  • Ich mag solche Projekte wirklich sehr. Es wäre schön, eine Liste textbasierter Websites zu haben. Zwei, die ich persönlich mag, sind plaintextsports.com und lite.cnn.com.

  • Wirklich großartig. Ich habe den Quellcode auf einem Lenovo M8 der 4. Generation mit Termux selbst gebaut, und man braucht nur Nim zu installieren. Besonders beeindruckt hat mich, dass es sich auch ohne Root-Benutzer sauber installieren ließ.

  • Wirklich eine schöne Implementierung. Ich freue mich darauf, sie in verschiedenen Arbeitskontexten praktisch einzusetzen und selbst zu sehen, wie weit sie sich nutzen lässt. Die HN-Website ist damit sehr angenehm anzusehen.

  • Ich habe immer versucht sicherzustellen, dass meine Website auch in Links gut aussieht, und jetzt gibt es offenbar einen neuen Kandidaten. Durch die gewisse CSS-Unterstützung gibt es jetzt mehr Dinge zu bedenken, etwa Abstände zwischen Elementen. In Links wurden margin/padding komplett ignoriert, sodass man Menüs und Ähnliches sauber in einer Zeile anordnen konnte, aber jetzt ist die Lage etwas komplizierter geworden.

    • Grundsätzlich war das Ziel, dass es ohne besondere Konfiguration „einfach funktioniert“, aber in der Praxis ist das gelegentlich nicht der Fall. In solchen Fällen kann man es als Bug betrachten. Falls man unbedingt benutzerdefiniertes CSS für Grid-Layouts braucht: chawan unterstützt die standardmäßigen Grid-Media-Queries.
  • Wirklich ein tolles Projekt, und ich finde es klasse, dass es in Nim gemacht ist. Wenn ich cha example.com eingebe, bin ich allerdings verwirrt, weil ich überhaupt nicht weiß, wie die Standardbefehle (hjkl usw.) funktionieren. Wenn ich Zahlen drücke, werden sie unten links angezeigt, ansonsten passiert aber gar nichts. Ich habe es unter macOS Sequoia 15.5 auf Apple Silicon mit Nim 2.24 selbst gebaut. Die Webseite wird korrekt geladen, aber die Befehle funktionieren nicht. Ich frage mich, ob ich etwas übersehe oder ob das ein Bug ist.

    • Dasselbe Verhalten tritt bei mir in verschiedenen Terminals auf, darunter Ghostty, iTerm2 und Terminal.app.
  • Ich finde es bemerkenswert, dass termcap/ncurses nicht mehr verwendet wird. Heißt das, dass die Terminalbehandlung direkt selbst implementiert wird?

    • Es wurde erklärt, dass Chawan praktisch kein ncurses verwendet hat, sondern nur termcap. Da ncurses termcap intern mitimplementiert, kann das verwirrend sein. Anfangs habe man mit termcap angefangen, weil man zuvor w3m benutzt hatte, aber termcap sei inzwischen fast nutzlos und könne auf modernen Terminals nicht einmal True Color darstellen. Der einzige Vorteil sei, dass es auf extrem alten Terminals aus den 80ern mit etwas Glück laufen könne, aber selbst das sei kaum von Wert. Statt auf terminfo umzusteigen, habe man es ganz aufgegeben und einen Terminal-Query-Ansatz gewählt. Eine Terminal-Datenbank sei zwar eingebaut, werde aber nur genutzt, um einige nicht XTerm-kompatible TERM-Werte zu erkennen. Wenn ein Terminal korrekt auf Queries antwortet, funktioniert es unabhängig vom TERM-Wert gut.
  • Auf macOS lässt es sich beeindruckend einfach mit nur einem make-Befehl bauen. Schön, einen modernen Ersatz für elinks zu haben.