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

Show HN: Term.everything – ターミナルでGUIアプリを実行する

概要

  • GUIアプリ をターミナル上で実行できる革新的なツール、 term.everything❗ の紹介
  • ssh経由 でもGUIアプリを利用可能、Webブラウザやゲームも表示可能
  • ターミナルの 解像度や性能 により表示品質・速度が変動
  • Waylandコンポジタ を独自実装し、ターミナル出力に最適化
  • Typescript とわずかな C++ で開発、開発者向けの情報も公開

ターミナルで全てのGUIアプリを実行

  • term.everything❗ は、 Linux CLI 向けのプログラム
  • GUIウィンドウを ターミナル内 で実行可能
  • ssh接続 環境でもGUIアプリを遠隔操作
  • Webブラウザ、ゲーム、動画再生など多様なアプリ表示
  • ターミナルの 行数・列数 がウィンドウ品質を決定
  • 解像度を上げれば 画質向上、ただし パフォーマンス 低下の可能性
  • kittyiTerm2 など画像対応ターミナルでは フル解像度 描画も可能
  • macOSのiTerm2からUbuntuにsshし、 firefox を高解像度で表示する例も紹介

ファイルビューア不要論

  • 新しい ターミナルファイルビューア の開発は不要との主張
  • 既存の GUIファイルビューア をそのままターミナルで利用可能
  • 「ターミナルの中のターミナル」が連鎖するイメージ

term.everything❗の技術概要

  • Wayland とは:Linuxの新しいディスプレイサーバプロトコル
  • term.everything❗は Waylandコンポジタ をゼロから実装
  • 出力先を モニタ ではなく ターミナル に限定
  • 詳細な仕組みは HowIDidIt.md で解説

使い方・ロードマップ

  • ベータ版 ダウンロード可能、今すぐ試せる
  • 現状は「Term some things」段階
    • 一部または大多数のアプリが 起動失敗クラッシュ する可能性
    • 問題が発生した場合は Issue の作成を推奨
  • 今後は「Term most things」「Term everything❗」を目指す

開発・貢献方法

  • Typescript と一部 C++ で開発
  • 開発者向け情報は ./Contributing.md に記載
  • bunエンジン を利用

ライセンス・著作権情報

  • term.everything❗: Late for Dinner Studios, LLC (2025年著作権)
  • Fontemon: Late for Dinner Studios, LLC (2021年著作権)
  • Wing It! movie: Creative Commons Attribution 4.0 ライセンス
  • Attribution: (CC) Blender Foundation | studio.blender.org

その他・マスコット

  • マスコットキャラクター「 Gwerm the Term Worm」が登場
  • 彼は元気とのこと

参考リンク

  • How I Did It (詳細解説・技術資料): https://github.com/mmulet/term.everything/blob/main/resource

Hackerたちの意見

さらなる発展を願ってるよ!止まらないでね!

ありがとう!

これめっちゃクールなプロジェクトだね。個人的には、Waylandの上に構築できる面白いユースケースがたくさんあると思うよ。例えば、https://github.com/udevbe/greenfield とか。

自分でゼロからWaylandコンポジタを作って、ターミナルでGUIアプリを表示できるようにしたよ!カスタムWaylandコンポジタにはまだまだ探求されていない可能性がたくさんあると思うし、既存のアプリを埋め込む面白いことができるんだ。だから、ターミナルにアプリを埋め込むところから始めたんだ。これが一番簡単な入出力だからね(出力はutf-8で、素晴らしいchafaライブラリを使ってるし、入力はstdinから読んでる)。もし他に面白いWaylandコンポジタのアイデアがあったら教えてね。開発者にアピールするために、アプリの80%をTypescriptで書いたんだ。クールな貢献を引き寄せたくてね(描画はお馴染みのCanvas2D APIでやってるから、興味があればこれをクールなターミナルキャンバスにフォークすることもできるよ!)。やり方についてのブログ記事もあるけど、結構ハイレベルで技術的じゃないから、質問があったら聞いてね。How I Did It *技術的にはWaylandアプリとXwaylandを使ったx11アプリだけど、Linuxではほとんど全てのアプリがそうだよ。

Waylandってなんでこんなにクールなの?まだ完全には理解できてないんだけど、GUIライブラリなのかな?

これめっちゃクールだね。一度だけリモートで実行する時に役立ちそう。実行中のプログラムを接続してまた切り離すのとか、ミラーリングについてはちょっと不安だけど…デスクトップにSSHで接続して、実行中のDiscordクライアントを操作できたらいいなと思ってる。あと、RDPリモートアプリのことも調べてみようと思ってたんだ。

わあ、すごいね。いろんな理由でデフォルトでコンテナでたくさんのものを実行するようになったんだけど、グラフィカルなアプリを実行したい時に、これがあればワークフローがさらに良くなるかも。

ターミナルグラフィックスプロトコルを使えば、リアルなグラフィックスをレンダリングできるよ。でも、そういうリモート接続にはwaypipe¹がもうあるから、実際のターミナルを使わなくてもできるんだ。1. https://gitlab.freedesktop.org/mstoeckl/waypipe

「ターミナルのグラフィックスプロトコルを使って、リアルなグラフィックスをレンダリングできるよ。もうそれやってるし。」 「でも、そういうリモートをするにはwaypipe¹があるよね。それってクライアント側にWaylandが必要なんじゃない?」 「とにかく、これが超実用的だとは思わないけど、ターミナルがどこまでできるか見るのは楽しいよ。」 「もし君のターミナルが画像をサポートしてるなら(kittyやiterm2みたいに)、ウィンドウをフル解像度でレンダリングできるよ(パフォーマンスは落ちるかも)。」

超クール!GitHubリポジトリに動画や例を追加してくれて本当に嬉しいよ。全体像がつかみやすいしね。

これはめっちゃ役に立たないけど、プログラミングとアートの境界を行ったり来たりしてるね。きっと素晴らしくて楽しい学びの経験だったんだろうな。お疲れ様!

なんでこのプロジェクトがこんなに嬉しいのか説明できないけど、必要な場面が思いつかないのに、なんか大きなバカみたいな笑顔になっちゃう。

これは、変な理由で必要な時に備えて、ポケットに入れておくべきものだね。大好きだよ。

ベータが終わったら、めっちゃ役に立つと思う。