bambouville

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 上下に分割
⌘[ / ⌘] ペインを順に切り替え
⇧⌘↩ ペインのズーム/解除
Tessera 上の tmux セッション。上部に 3 つのウインドウタブが並び、左右に 2 つのペインがある。左は git log の出力を表示するシェル、右は htop が動作中。
1 つの tmux ウインドウ内の 2 つのペインと、上部にタブとして並ぶセッションのウインドウ。各ペインは独自のタイトルバーと閉じるコントロールを持ちます。

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 がそう伝えます(「任意のキーを押して表示させてください」)。 最初のキー入力で画面が現れます。