2 ポイント 投稿者 GN⁺ 2025-06-17 | 1件のコメント | WhatsAppで共有
  • Chawan は、テキストベースのターミナル上で動作する新しい TUI Webブラウザ
  • 今回の 0.2.0 バージョンには、MVP 段階の必須機能がすべて含まれており、重大なバグがない状態
  • 必須なのは libssh2libbrotliOpenSSL/LibreSSL ライブラリのみで、以前のバージョンにあった複数の依存関係は削除された
  • amd64 Linux 向けの 静的バイナリと .deb パッケージ も提供されており、配布とインストールが容易
  • 次のバージョンでは、レイアウトモジュールの性能改善 と、より良い UI 体験が目標

Chawan 0.2.0 の紹介

Chawan は、ターミナルユーザーインターフェース(TUI)ベースの 軽量Webブラウザ で、テキスト環境で手軽に Web を閲覧できるよう設計されたオープンソースプロジェクト。今回の 0.2.0 バージョンは、最小実行製品(MVP) 段階の主要機能をすべて備えた最初の安定化リリースであり、重大な致命的バグは報告されていない。

配布とインストール

  • ソースツリーの tarball が提供されており、自分でコンパイルしたい場合は README の案内に従えばよい
  • amd64 Linux 向けの 静的バイナリ 配布版が提供されており、アーカイブを展開した後に make install コマンドで簡単にインストール可能
    • 削除は make uninstall で可能
  • 同じ配布版が .deb パッケージ 形式でも提供されており、Debian 系システムですぐにインストールできる

パッケージ管理者向け情報

  • Chawan の必須ランタイム 依存関係 は以下の通り:
    • libssh2
    • libbrotli (libbrotlicommon, libbrotlidec を含む)
    • OpenSSL(3.0 以上) または LibreSSL (OpenBSD 7.7 でテスト済み)
  • 以前の開発版で使用されていた zlib, libseccomp, termcap/ncurses, libcurl などは、現在は不要になったため依存関係から削除された
  • パッケージ化時に問題が発生した場合は、パッチを当てる前にまず開発者へ連絡すると、上流側で直接解決できる可能性が高い

今後の計画

  • 今回の 0.2.0 リリースは、想定より時間を要したものの、すべての MVP 機能が揃ったことを受けて正式公開が決定されたバージョン
  • v0.2 ブランチでは今後 バグ修正 のみを行い、新機能の追加は master ブランチで継続される予定
  • 次回リリースでは、レイアウトモジュールの性能と正確性の改善、および UI の使いやすさ向上 を重点目標としている

プロジェクトの重要性と利点

  • Chawan は ターミナル環境に最適化 された Web ブラウザであり、リソースが限られたサーバーや環境でも Web コンテンツへアクセスできる
  • 既存のテキストWebブラウザとは異なり、最新の暗号化および圧縮プロトコルへの対応、依存関係の最小化などで差別化されている
  • オープンソース方式のため、追加拡張やカスタマイズに有利

1件のコメント

 
GN⁺ 2025-06-17
Hacker Newsの意見
  • nimで書かれたプロジェクトを見るたびにうれしい気持ちになる。nimはC/C++とpythonの間のどこかに位置する、最も興味深い言語だという印象がある。nimコミュニティの規模に比べてユーザーの生産性が高く、自分は詳しくないのにnimについての考えが正しいと確信してしまう。nimが大衆的に成長できなかったのは残念だ。

  • shiomiruさん、TTYに関する概念を学ぶのに最適なリソースは何か知りたい。無料でも有料でもおすすめがあれば教えてほしい。TTYについては linusakesson.netのTTY紹介記事 を知っているが、termcap/terminfo/cursesまでは説明していないという限界があると認識している。ほかのコメントでは O'ReillyのTermcap & Terminfo という本も言及されていた(オンラインで ここから閲覧 可能)。

    • chawanは独自のカスタム端末モジュールを使っている経験があるため、標準のX/Open cursesについての理解はそれほど深くない。実際のエスケープシーケンスに関しては、XTermの ctlseqs.ms文書 が非常に有用な資料だという認識だ。nick blackの notcurses プロジェクトからも多くのアイデアを得ており、特に「sprixels」に関する 彼のノート を強くおすすめする。
  • Chromeベースのまた別のエンジンをわざわざ使わず、ちょっとした研究用に使える新しい方式が増えるのはいつでも歓迎だ。今日紹介された内容は、学校が終わったら自分で試してみるのが楽しみだ。sixelがない環境では特に役立つ非常にすばらしい代替として、chromiumのterminal port: carbonyl をおすすめする。作者がもう積極的に開発できていないため機能はかなり限定的で、キーボードショートカットやファイル保存など多くの機能は未対応だ。しかしWeb互換性と新鮮さは非常に印象的だと思う。rustの技術を持つ人がこのプロジェクトを引き継いでくれたらと思う。数か月前に見たときは、有力なforkはない状況だった。

  • こういうプロジェクトは本当に好きだ。テキストベースのサイトを集めたリストがあるといいのにと思う。個人的に好きな2つは plaintextsports.comlite.cnn.com だ。

  • 本当にすごい。Lenovo M8 第4世代でtermuxから直接ソースをビルドしてみたが、nimを入れるだけでよかった。rootユーザーなしでもきれいにインストールできたのが印象的だった。

  • 本当に美しい実装だ。いくつかの業務で実際に使って、どこまで使えるのか自分で確かめてみたい。HNのサイトがとても見やすい。

  • 自分のWebサイトは常にLinksでも見やすくなるよう努力してきたが、これで新しい候補ができた。CSSが一部サポートされているおかげで、要素間の余白調整など考えるべきことも増える。Linksではmargin/paddingが完全に無視されるので、メニューなどを1行にすっきり並べていたが、これからは事情がもう少し複雑になる。

    • 基本的には追加設定なしで「そのまま動く」ことを目標にしているが、現実には時々そうならない場合もある。そういう場合はバグとして扱ってよいという案内だ。gridレイアウト用のカスタムCSSがどうしても必要なら、chawanは標準の gridメディアクエリ をサポートしているとのこと。
  • 本当にすばらしいプロジェクトだし、nimで作られている点も称賛したい。cha example.com と入力すると、基本コマンド(hjklなど)の使い方がまったくわからず戸惑う。数字を押すと左下に表示されるが、それ以外は何の反応もない。MacOS Sequoia 15.5 Apple SiliconとNim 2.24環境で自分でビルドした。Webページは問題なく読み込まれるが、コマンドは動作しない。何か見落としているのか、それともバグなのか気になっている。

    • Ghostty、iTerm2、Terminal.appなど複数のターミナルで同じ現象を経験した。
  • termcap/ncursesをもう使っていない点が印象的だという意見。これは端末処理を直接やっているという意味なのだろうか。

    • Chawanは実際にはncursesは使っておらず、termcapだけを使っていたと説明している。ncursesが内部実装としてtermcapを含んでいるので混同しやすい。最初はw3mを使ってみたのでtermcapから始めたが、termcapはもうほとんど役に立たないインターフェースであり、現代のターミナルで必要なtrue colorすら表現できない。唯一の利点は、極めて古い80年代のターミナルでも「運がよければ」動く可能性があることだが、それすら大した価値はないという評価だ。terminfoに移行する代わりに、いっそそれもやめてターミナルクエリ方式を採用した。ターミナルDBも内蔵されており、一部のXTerm非互換なTERM値を識別する目的でのみ使われる。クエリに正常に応答するターミナルであれば、TERM値に関係なく問題なく動作する。
  • macOSでmakeコマンド一発で簡単にビルドできたのが印象的だった。elinksの現代的な代替が出てきたのはうれしい。