tmux
Tessera は tmux のコントロールモード(tmux -CC)をネイティブに話します。
ウインドウとペインはテキストのパススルーではなく、第一級のインターフェイス
要素です。サーバー側に tmux がインストールされている必要があります。
なぜ tmux なのか
tmux に支えられたセッションでは、シェルはサーバー上にあります。Tessera を 閉じても、Wi-Fi が切れても、セルラーに切り替えても、デバイスをスリープさせて も、作業が失われることはありません。再接続すれば、離れたときのままの場所に います。
アタッチする
自動 tmux の起動モードは、tessera-XXXXXXXX という決定的な名前を持つ
ホストごとのセッションにアタッチします(なければ作成します)。この名前は
アプリを再インストールしても記憶されます。名前付き tmux は、自分で選んだ
セッション名にアタッチします。どちらもホスト
エディタでホストごとに設定します。
名前が決定的であるということは、同じホストのエントリを使う 2 台のデバイスが 同じ tmux セッションにたどり着くということです。それが、デバイス間の セッションの引き継ぎをなめらかにしています。
tmux が立ち上がらない場合も、Tessera は待たせたままにはしません。tmux が
入っていないホスト、起動に失敗した tmux セッション、ログイン時にすでに
exec tmux する dotfiles — いずれの場合も素のシェルに落とし、理由を告げる
バナーを表示します(「このホストはログイン時に独自の tmux を起動します —
そのセッションを素のターミナルとして表示します」)。
接続が進まないときを参照してください。
ウインドウ
tmux のウインドウは、セッション上部のバーにインデックス順のタブとして並び ます。バーの + ボタンで新しいウインドウが開きます。タブが収まりきらない ときは、あふれた分のコントロールがすべてのウインドウを一覧します。各タブには 閉じるコントロールが付いており、ウインドウの名前は ⌘K のパレットから 変更できます。この名前は、そのセッションにアタッチしているすべての クライアントで共有されます。
| ショートカット | 動作 |
|---|---|
| ⌘T | 新規ウインドウ |
| ⇧⌘W | ペイン/ウインドウを閉じる |
| ⇧⌘[ / ⇧⌘] | 前/次のウインドウ |
| ⌘1 – ⌘9 | ウインドウ 1〜9 へ移動 |
ペイン
ペインは本物の tmux のペインで、コントロールモードを通じて操作されます。
| ショートカット | 動作 |
|---|---|
| ⌘D | 左右に分割 |
| ⇧⌘D | 上下に分割 |
| ⌘[ / ⌘] | ペインを順に切り替え |
| ⇧⌘↩ | ペインのズーム/解除 |
iPhone では
iPhone からアタッチしても、レイアウトが組み直されることはありません。分割と ズームの状態は大きい画面が残したままで、電話ではスイッチャーを通じて一度に 1 つのペインを表示します。iPhone の tesseraを参照してください。
mosh + tmux
mosh 経由では、ターミナルは UDP 上で動き、tmux のタブは 2 本目の SSH サイド チャネルに乗ります。そのサイドチャネルは、mosh ホストの ポート転送や 本物のスクロールバックも運びます。
ベル
Tessera がターミナルのベルを通知へ振り分けられるのは、 tmux のコントロールモードの配線があるからです。ウインドウ単位で、鳴った タブに印が付きます。
落とし穴
- 環境変数と起動スニペットは、tmux セッションが開始するときにだけ実行
されます。変更したあとは、サーバー上でセッションを終了させて
(
tmux kill-session)変更を取り込んでください。 - Tessera とほかのクライアントから同時にアタッチすることもできますが、 どちらのクライアントも同じウインドウを共有します。これは tmux の仕様で あってバグではありません。相手のクライアントが自分の iPhone や iPad の 場合、Tessera は競合を丁寧に扱います — 操作を取り戻すを参照してください。
- 激しい再描画のあとに出力が詰まったように見えるときは、⌘R(iPad)で 全体を描き直せます。また、セッションがアタッチしても描画されないことが あれば、Tessera がそう伝えます(「任意のキーを押して表示させてください」)。 最初のキー入力で画面が現れます。