世界を動かす技術を、日本語で。

Show HN: Chawan TUIウェブブラウザ

概要

  • Chawan TUI ブラウザ v0.2.0 がリリース
  • ソースツリー tarballamd64 Linux 用バイナリ配布 提供
  • 必須ランタイム依存関係 の変更と整理
  • パッケージメンテナ向け情報今後の開発方針
  • Chawan の特徴 と技術的詳細を紹介

Chawan TUI ブラウザ v0.2.0 リリース情報

  • Chawan は Nim 製の ターミナルベース Web ブラウザ
  • バージョン 0.2.0 のリリースとソースツリー tarball 提供
  • README ファイル にビルド手順記載
  • amd64 Linux 向け静的バイナリ配布 も用意
  • インストール方法 :アーカイブを展開し、root 権限で make install 実行
  • アンインストールmake uninstall 実行
  • .deb パッケージ 形式でも配布
  • 公式ギャラリー でレンダリング例を公開:https://chawan.net/gallery/index.html

パッケージメンテナ向け情報

  • 必須ランタイム依存関係
    • libssh2
    • libbrotli (libbrotlicommon, libbrotlidec)
    • OpenSSL(3.0以降) または LibreSSL(OpenBSD 7.7 で検証済み)
  • 不要になった依存関係
    • zlib
    • libseccomp
    • termcap/ncurses
    • libcurl
  • パッケージング時の問題発生時 :独自パッチ適用前に開発者へ連絡推奨
  • 上流での解決を優先 する方針

今後の開発方針

  • v0.2 ブランチ :バグ修正のみ対応
  • 新機能開発 :master ブランチで継続
  • 次期リリース計画
    • レイアウトモジュールの パフォーマンス・正確性向上
    • UI のユーザビリティ改善
  • MVP(Minimum Viable Product) としての機能充足
  • 重大な既知バグなし の安定リリース

Chawan の特徴・技術詳細

  • Nim 言語 で実装
  • CSS レンダリング :十分な品質(環境依存あり)
  • JavaScript の一部サポート
  • インライン画像表示 :sixel/kitty プロトコル対応
  • 複数プロトコル対応 :http(s), (s)ftp, gopher, gemini など
  • w3m クローン として開発開始、UI も類似
  • 独自アーキテクチャ
    • ページごとに プロセス分離
    • プロトコル・ファイル種別処理 を外部バイナリへ分離
  • カスタムインライン画像フォーマット 用デコーダ登録可能(実用性は限定的)

関連リンク

Hackerたちの意見

このブラウザ大好き!作ってくれてありがとう!

気に入ってもらえて嬉しいよ :)

TermuxからHNが一発で読み込まれた時、思わず口が開いちゃった!いい仕事してるね!

ありがとう :) 興味があれば、HN用のユーザースタイルをここに投稿したよ: https://lists.sr.ht/~bptato/chawan-devel/%3CD9S40OS2QWHL.PXQ... 主に投票矢印を直すためだけど、今のところ背景画像はプレースホルダーしか表示されないんだ。

ターミナルでHNを見るための良いツールがやっとできたね。ありがとう!キーボードショートカットはどこで見つけられる?vimのキー操作で移動できるけど、戻ることができないんだ。

cha-config(5)かabout:chawanだよ。前者にはオンライン版もあるよ: https://chawan.net/doc/cha/config.html#pager-actions 特にナビゲーションでは、大文字のDを使って現在のバッファを破棄して前のページに戻ることができるよ。他にも、,(カンマ、戻る)や.(ピリオド、進む)があって、非破壊的にスタックを循環することができるよ。(まあ、実際にはツリーだけど、UIはほとんどスタックとして扱ってるね。)

コードをじっくり見ることをおすすめするよ。Nimで書かれているから、結構取り組みやすいし、パフォーマンスもいいよ。HTML DOMやウェブ仕様の実装みたいな難しい部分もまだたくさんあるけど、基本的なセットアップを理解するのに何日もかからないよ。

これめっちゃクール!ブラボー!Nimで書かれてるのも素晴らしいね。cha example.comをやってみたけど、コマンド(hjklとか)がどう使うのか全然わからない。見つけた唯一の効果のあるキーは、左下に表示される数字を入力することだけなんだ。それを使って何かする方法もわからない。これの使い方で明らかに見落としてることがあるのかな、それともバグかな?MacOS Sequoia 15.5のApple SiliconでNim 2.24を使ってソースからビルドしたんだけど、ページは正しく読み込まれるのに、コマンドが動かないんだ。ありがとう!

Ghostty、iTerm2、Terminal.appで試してみたけど、どれも同じ動作だったよ。

素晴らしい!ありがとう!termcap/ncursesはもう使ってないみたいだね。ターミナルの処理は自分で直接やってるの?再度ありがとう!

Chawanはncursesを使ったことはなくて、termcapだけだよ。(ncursesはtermcapも実装してるけどね。)w3mで既に知ってたからtermcapから始めたんだ。でもtermcapはもう時代遅れのインターフェースで、現代のターミナルにとって唯一役立つ属性(真のカラー)を表現できないんだ。唯一の利点は「80年代のハードウェアターミナルで偶然動くかも」ってことだけど、それってクールだけど、追加の失敗モードにはあまり価値がないよね。だから、terminfoに移行する代わりに、完全に捨ててターミナルクエリに切り替えたんだ(他の理由でも必要だったし)。XTermの互換性の問題を検出するためのビルトインターミナルデータベースはまだあるけど、クエリに正しく反応するターミナルは、TERM値が不明でもすぐに使えるよ。

これ、めっちゃいいね!s-searchで遊んでみたけど、w3mより全然良いよ。 =)

w3mの長年のユーザーだよ。試してみたけど、好きになれそう。すごくいいね。「URLを開く」(アドレスバー)機能がないのは、あなたのデザインの選択なの?

すごくいいね!Lenovo M8 4世代でtermuxを使ってソースからコンパイルしたんだけど、nimをインストールするだけで済んだよ。「root」ユーザーがいなくても、ちゃんとインストールできた。

これ、すごく綺麗にできてるね。日常の仕事で使ってみるつもりだし、どこまでできるか試してみるよ。HNは特に良さそう。ありがとう!