1 ポイント 投稿者 GN⁺ 2025-03-09 | 1件のコメント | WhatsAppで共有
  • Vtmは単一実行ファイルとして提供される仮想ターミナルマルチプレクサで、CLIアプリをラップしてテキストベースのデスクトップを作り、TUIとGUIの間をつなぐ
  • ネイティブウィンドウと標準コンソールで同様に動作し、無限ネストをサポートして複数のターミナル環境を重ねて使える
  • vtmはデスクトップモードで実行され、vtm --run term [<your_shell>]は独立したターミナルエミュレータとして動作する
  • SSHではvtm ssh user@host vtmの形でDirectVTプロトコルを使って接続でき、従来の接続方式より高性能と案内されている
  • Windows 8.1以降とLinux、macOS、FreeBSD、NetBSD、OpenBSDなどのUnix系プラットフォームをサポートするが、ネイティブGUIウィンドウ描画は現在Windowsでのみ可能

Vtmがすること

  • Vtmは仮想ターミナルマルチプレクサで、単一実行ファイル形式で提供される
  • ネイティブウィンドウまたは標準コンソールで同様に動作する
  • どんなCLIアプリでもラップして実行できる
  • 無限ネストをサポートし、テキストベースのデスクトップ環境を構成できる
  • 目標は、TUIとGUIの間のギャップをつなぐテキストベースのデスクトップを提供すること

実行モード

  • デスクトップモード

    • vtmを実行するとデスクトップ環境が起動する
  • ターミナルモード

    • vtm --run term [<your_shell>]を実行すると、Vtmを完全に独立したターミナルエミュレータとして使える
  • SSHバイナリ接続

    • DirectVTプロトコルを利用したSSH接続例は次のとおり
    • vtm ssh user@host vtm
    • この方式は従来の接続より高性能と案内されている

デモと例

  • YouTubeデモが提供されている
  • AnyPlexVT2D powerデモは現在Windows専用で実行可能
    • vtm --run test
  • HybridTUI、つまりHTUIアプリの例はコンセプト段階として提供されている
    • vtm --run calc
    • vtm --run text
    • vtm --run gems

対応プラットフォームと制約

  • Windows

    • Windows 8.1以降をサポート
    • Windows Server CoreとWindows PEを含む
  • Unix系

    • Linux
    • macOS
    • FreeBSD
    • NetBSD
    • OpenBSD
    • POSIX志向のオペレーティングシステム系
    • Tested Terminals一覧が別途提供されている
    • 現在、ネイティブGUIウィンドウ描画はWindowsプラットフォームでのみ可能
    • Unix系プラットフォームではターミナルエミュレータが必要

配布とドキュメント

使用技術

1件のコメント

 
GN⁺ 2025-03-09
Hacker News のコメント
  • 5年前に大きなスレッドがあった: https://news.ycombinator.com/item?id=24243521

    • そのスレッドのメインリンクは、悪意ある主体の手に渡ったように見える
  • 当たり前のことを見落としている気がするが、これは tmux のようなターミナルマルチプレクサなのか、それとも iTerm のようなタイル型ターミナルエミュレータなのか気になる

    • どちらでもなく、独自の何かに近い。tmux に最も似ているが、操作感はグラフィカルなウィンドウマネージャを扱うほうに近い
    • GitHub に埋め込まれた YouTube 動画のタイトルが「Tiling Window Manager with Drag&Drop」で、動画を見るとまさにそういうツールに見える
      なぜターミナルだけを開けるように人為的に制限したのかは分からない
    • Apollo ワークステーションをかなり思い出す
    • タイル型のほうだと思う
  • 一周回って戻ってきたわけだ。TUI を置き換えるために GUI を作り、また TUI の中に GUI を実装した。ターミナル万歳

    • 二度やったことになる。多くのターミナルは Electron や類似のブラウザインターフェース上で動いているので、GUI の中に TUI も実装しているわけだ
    • DESQview の復讐みたいだ
    • デモ動画から Borland の Turbo Vision 感がかなりする
    • ちゃんとやるなら aalib も一度通るべきだ
    • その通り。これが GUI 並みに機能を備える方向へ寄りすぎていて、そもそもターミナルから始めることで得られる何かを失っているのではないかと思う
  • ターミナルを使う理由は、そもそもマウスが要らないからだ。TUI ツールはたくさん使っているが、これはその一つにはならなさそう

    • i3/sway 式のタイル操作とキーバインドがあれば素晴らしそう
  • ターミナルの中で TUI スタイルのウィンドウマネージャが可能なのか、ずっと気になっていたが、これは本当に素晴らしいプロジェクトだ。作った人はとても良い仕事をしている

    • 私の TUI デスクトップ環境は、タイル型ウィンドウマネージャまで備えた Emacs と呼んでいる %) Vim も似た体験を提供できそうだ
    • デモは良さそうに見えるが、何度か痛い目を見ているので慎重になっている
      見た目がきれいなだけではだめだ
    • dvtm みたいなもの?
      https://www.brain-dump.org/projects/dvtm/
  • とても滑らかに見える
    ただ私の視点では、ウィンドウをドラッグ&ドロップしてサイズ変更する必要が大きいのは、Windows 環境の習慣に近い。だからこれは、マウスにとって tmux と Neovim がキーボードに対して果たす役割をするツールなのかもしれない
    tmux では、必要なウィンドウレイアウトは固定された 2x2 パネルのセットがいくつかで、あらかじめ決めておいたリサイズ方法と全画面トグルがあれば十分だ。telescope や nvim のような効率的なツールがあれば切り替えが非常に速いので、すべてのウィンドウを見えるように並べる必要がなくなり、何があるかについては視覚的な図よりも頭の中のモデルをより多く使うようになる。たとえば多くの IDE の左側によくあるファイルツリーは不要だ

    • 以前は私もそう考えていた。最近はなぜかデフォルト認知負荷の低減をより重視していて、操作を減らしてもっと考えられるほうを好む。今なら Eclipse もそこそこ使えそうだ :P
  • 数年前に似たものがあり、ssh 接続上で動き、ズーム可能な UI のようなものもあった気がする。リンクが見つからないのだが、何か思い当たるものはあるだろうか

    • 「ズーム」が正確に何を意味するのか完全には分からないが、kitty はそういうことをする: kitten ssh user@host で ssh 接続を開き、キーを押すと同じタブに別の ssh パネルが開き、記憶ではタブをウィンドウ全体に「ズーム」できる
      https://sw.kovidgoyal.net/kitty/
    • まさにこのツールだった。以前はこうやって ssh で接続できた
      ssh vtm@netxs.online
      今はそのドメインは死んでいる
  • 一部の Web アプリがこういう純テキストのデザイン言語を採用してくれたらいいのに

  • 理解しようとしているところだが、比較対象として自分が tmux を使っているなら、こういうものに乗り換えるとマウスベースのウィンドウ/パネル管理が追加されるということなのか?

  • こういうアイデアの一部が Zellij に入るといいな