Featured image of post 三重仮想化の極致

三重仮想化の極致

目次

背景

  • 10年以上、tmux on screen(GNU Screen)を使い続けてきた
  • しかし、ここに来て、zellijも使い始めた
  • その結果、zellij on tmux on screenという三重仮想化の極致に達した
  • 二重仮想化をしている人も全く見ないが、三重の人はさらに稀有だろう

2重仮想化

  • もともとは2重仮想化までだった
  • ボトムバーにscreenのタブ、ヘッドバーにtmuxのタブを表示していた
  • これで10年以上、全く問題なく運用していた

2重仮想化のスクリーンショット

3重仮想化に至った背景

  • 問題はAIだった
  • 複数のAIコーディングをrcなしでスマホも通して操作したくなった
  • それに伴いどこからでもatttachできるterminalが必要になった
  • しかし、現状screenとtmuxをデフォルトShellとして使っている
  • そのため、tmuxをai用に起動すると、tmux in tmuxになってしまい動かなかった
  • そこで、別のterminal multiplexerを使う必要が生まれ、zellijを使うに至った

3重仮想化

以下のように、更にzellijがterminalに入って、三重入れ子のターミナルとなった。

3重仮想化のスクリーンショット

なお、Terminal Multiplexerのショートカットは以下にしている:

  • Screen: ctrl-z
  • Tmux: ctrl-q
  • Zellij: 無効化

3重仮想化とスマホ

スマホでの操作

  • また、zellijとttydによって、スマホからもアクセスして、rcなしで以下のように簡便に操作が可能になった
  • これによって、複数PCのAgentを束ねて、10個以上のAgentをスマホで簡単に管理できるようになった

神キーの配置

  • PCには、左Ctrlキーに近いところに3つの神キーがある
  • 言わずもしれた、QAZの3つのキーである
  • このキーはCtrlと相性が良いので個人的に神キーと読んでいる
  • その上で、Ctrl-aはあえてTeminal Multiplexerのprefixキーとしては使わない設計としている
  • 理由は、Ctrl-aはEmacsやVimで使うため、そっちを優先して開けているからだ

HHKB

配置

見た目は3重入れ子だが、zellijのparent processから分離する設計にしている。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
systemd(1)
  └─ systemd --user(3407)
     │
     ├─ [物理デスクトップ系統] Konsoleターミナル
     │  └─ ksmserver → konsole → fish → screen(4428)
     │                                    └─ screen(4429)
     │                                        ├─ tmux(4430)
     │                                        ├─ tmux(4552)
     │                                        └─ tmux(...)
     │
     └─ [ttyd/ブラウザ系統] 
        └─ zellij --server "Dot"(40912)
            └─ fish(40932)
                └─ claude(41100)

つまり、tmux on screenは起動すると一撃で開くが、zellij自体はその後別のコマンドで起動する形。

まとめ

  • もともとはnohupコマンドを打たずにずっとプロセスをbackgroundで実行するために、screenを使っていた
  • そのうち、便利さのために、その中でtmuxも使い2重化し完全にPCを支配下に置いていた
  • さらに最近、AIのために、zellijとttydも使い3重化している
  • その結果、スマホからでもPCの作業を簡便にすることができるようになった
  • ちにみに、今は更に一歩進んで統括Agentと仕事をするようにもなっている
Built with Hugo
テーマ Stack は Jimmy によって設計されています。