Vtm - テキストベースのデスクトップ環境
(github.com/directvt)- 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デモが提供されている
- AnyPlexとVT2D powerデモは現在Windows専用で実行可能
vtm --run test
- HybridTUI、つまりHTUIアプリの例はコンセプト段階として提供されている
vtm --run calcvtm --run textvtm --run gems
対応プラットフォームと制約
-
Windows
- Windows 8.1以降をサポート
- Windows Server CoreとWindows PEを含む
-
Unix系
- Linux
- macOS
- FreeBSD
- NetBSD
- OpenBSD
- POSIX志向のオペレーティングシステム系
- Tested Terminals一覧が別途提供されている
- 現在、ネイティブGUIウィンドウ描画はWindowsプラットフォームでのみ可能
- Unix系プラットフォームではターミナルエミュレータが必要
配布とドキュメント
- バイナリダウンロードはLinux、Windows、macOS向けに提供される
- Linux: x86_64, arm64, x86, arm32
- Windows: x86_64, arm64, x86
- macOS: x86_64, arm64
- ドキュメント項目
1件のコメント
Hacker News のコメント
5年前に大きなスレッドがあった: https://news.ycombinator.com/item?id=24243521
当たり前のことを見落としている気がするが、これは tmux のようなターミナルマルチプレクサなのか、それとも iTerm のようなタイル型ターミナルエミュレータなのか気になる
なぜターミナルだけを開けるように人為的に制限したのかは分からない
一周回って戻ってきたわけだ。TUI を置き換えるために GUI を作り、また TUI の中に GUI を実装した。ターミナル万歳
ターミナルを使う理由は、そもそもマウスが要らないからだ。TUI ツールはたくさん使っているが、これはその一つにはならなさそう
ターミナルの中で TUI スタイルのウィンドウマネージャが可能なのか、ずっと気になっていたが、これは本当に素晴らしいプロジェクトだ。作った人はとても良い仕事をしている
見た目がきれいなだけではだめだ
https://www.brain-dump.org/projects/dvtm/
とても滑らかに見える
ただ私の視点では、ウィンドウをドラッグ&ドロップしてサイズ変更する必要が大きいのは、Windows 環境の習慣に近い。だからこれは、マウスにとって tmux と Neovim がキーボードに対して果たす役割をするツールなのかもしれない
tmux では、必要なウィンドウレイアウトは固定された 2x2 パネルのセットがいくつかで、あらかじめ決めておいたリサイズ方法と全画面トグルがあれば十分だ。telescope や nvim のような効率的なツールがあれば切り替えが非常に速いので、すべてのウィンドウを見えるように並べる必要がなくなり、何があるかについては視覚的な図よりも頭の中のモデルをより多く使うようになる。たとえば多くの IDE の左側によくあるファイルツリーは不要だ
数年前に似たものがあり、ssh 接続上で動き、ズーム可能な UI のようなものもあった気がする。リンクが見つからないのだが、何か思い当たるものはあるだろうか
kitten ssh user@hostで ssh 接続を開き、キーを押すと同じタブに別の ssh パネルが開き、記憶ではタブをウィンドウ全体に「ズーム」できるhttps://sw.kovidgoyal.net/kitty/
ssh vtm@netxs.online今はそのドメインは死んでいる
一部の Web アプリがこういう純テキストのデザイン言語を採用してくれたらいいのに
理解しようとしているところだが、比較対象として自分が tmux を使っているなら、こういうものに乗り換えるとマウスベースのウィンドウ/パネル管理が追加されるということなのか?
こういうアイデアの一部が Zellij に入るといいな