ターミナル

Mobile SSH のターミナルはスマートフォンとタブレットでの操作向けに作られています。ターミナルキャンバス、追加キーの行、複数セッションのペイン、スクロール処理、再接続の挙動を組み合わせています。

ターミナルの基本

複数セッションのグリッド

Mobile SSH は最大 8 個の SSH セッションを同時に実行できます。各セッションはターミナルグリッドのペインとして表示されます。ペインをタップして選択するか、+ Add Session で別の接続を開始します。

ペインのヘッダーは、いまどこにいるかを示します。Android では、tmux への問い合わせやシェルからの OSC 7 通知で得た、そのペインの実際の作業ディレクトリを表示し、アプリが開いている間は更新され続けます。iOS ではリモートが設定したタイトルを表示し、なければ user@host:port にフォールバックします。

ペインを閉じるとその SSH セッションが切断されます。開始画面に戻ると、アクティブなセッションは Active Sessions から引き続き利用できます。

Eternal Terminal (ET)

保存済みサーバーはそれぞれ 2 つのトランスポートのいずれかを使えます。サーバーの追加・編集時に Transport セレクターで選択します。

ET はサーバー側でセッションを生かし続けるため、スマートフォンのネットワークが変わったりスリープから復帰したりしても、Mobile SSH は新しいセッションを開くのではなく、同じ実行中のシェルに再アタッチします。モバイル回線、Wi-Fi とモバイル回線の切り替え、長時間実行するコマンドに適しています。

ET にはホスト上の etserver プロセスが必要です。サーバーにない場合は、Mobile SSH が既存の SSH 接続経由でインストールして起動できます — サーバー側の手作業は不要です。ET が使えるようになったら、Eternal Terminal トランスポートを選んで接続してください。

追加キーの行

どちらのプラットフォームも、タッチキーボードでは扱いにくい、あるいは存在しない 13 個のターミナルキーの行を手元に置きます。Android ではセッション下部の帯として表示され(ハードウェアキーボードを接続すると自動的に隠れます)、iOS ではソフトウェアキーボードの上に乗ります。

2 つの既定セットは同じ大きさですが、同一ではありません。

AndroidiOS
既定値ESC TAB CTRL 矢印 HOME PGUP END PGDN ESC TAB CTRL 矢印 HOME END PGUP PGDN
違いバックスペースあり、Shift なし固定式の Shift あり、バックスペースなし

この行は決してスクロールしません。 キーが横幅に収まらなくなると、スペースを均等に分けて 2 段目に折り返します。それでも残る分は のオーバーフローメニューにまとめられます。スワイプの奥に隠れたり画面端で切れたりするものはなく、有効にした修飾キーはオーバーフローから選んだキーにもきちんと適用されます。

CTRL は固定修飾キーとして働きます。CTRL をタップしてから C を入力すると Ctrl-C を送信します。Shift は Android より iOS のほうが強く固定されます。iOS ではソフトウェアキーボードで次に入力する文字も大文字にしますが、Android ではキーバー自身のキー(ShiftTabShift+矢印)にのみ適用されます。

矢印や PGDN などのキーを長押しするとリピートします。

キーボードの挙動

ターミナルは画面上のキーボードにネイティブなパススルー接続を使います。入力した各文字はそのままリモートシェルへ送られ、自動修正や予測候補はオフになっているため、キーボードがシェルに届く前に入力を書き換えることはありません。これにより Vim、tmux、htop、less、特殊なキーコンビネーションを使うシェル、リモートのパスワード入力の挙動が予測可能になります — 無効にすべき候補バッファはありません。

ソフトキーボードの音声入力(ディクテーション)も引き続き利用できます。ディクテーションしたテキストは、他の入力と同じようにそのままシェルへ確定されます。

ハードウェアキーボード

外付けおよび Bluetooth のキーボードは、Android と iOS のどちらでもターミナルを直接操作できます。通常の文字に加えて、Mobile SSH は矢印キー、HomeEndPgUpPgDnInsertDeleteEsc、ファンクションキー F1F12Ctrl+キー、AltOption を Meta として扱う組み合わせ、ShiftTab を割り当てます。修飾キーは追加キーの行の固定修飾キーと組み合わせられます。

貼り付け

貼り付けを要求するプログラム(bash、Vim、その他のブラケットペースト対応アプリ)への貼り付けは、ブラケットペーストのマーカーで囲まれます。そのため複数行のクリップボード内容は、1 行ずつ自動実行されるのではなくテキストとして挿入されます。囲まれるのは実際の貼り付けだけで、入力やディクテーションしたテキストはそのままです。

選択・コピー・共有

ターミナル内を長押しすると指の下の単語が選択され、ハンドルをドラッグして範囲を調整できます。選択ツールバーには 3 つの操作があります。

ターミナル内検索

ターミナルバッファ全体 — スクロールバックと表示中の画面 — を検索し、一致箇所を移動できます。ターミナルのコントロールから検索を開き、クエリを入力して、ヒットを順にたどります。これは Android と iOS の両方で動作します。

カラー・イタリック・リモート クリップボード

シェル統合とインライン画像

外観とキー

Android と iOS のどちらでも、Settings でターミナルを細かく調整できます。

リセットは今日の一覧を固定するのではなく、出荷時の既定値に戻します。そのため、後のリリースでの改善もきちんと反映されます。編集はすでに開いているペインにも即時に適用されます。

スクロール

Mobile SSH はターミナルの状態に応じてスクロールのジェスチャーを振り分けます。

Android では、マウストラッキングを使うプログラム内でのタップは、そのセル位置での左クリックとして送られます。そのため htop、vim、クリックでフォーカスするペインがタッチに反応します。iOS では同じプログラム内でのタップはクリックにならずキーボードを表示し、報告されるのはホイールのスクロールだけです。

スクロールバックした状態で入力すると、Mobile SSH はライブのターミナル表示に戻ります。

tmux の挙動

Mobile SSH は送信される tmux の attach や新規セッションのコマンドを観察します。たとえば:

tmux attach -t work
tmux a -t work
tmux new -A -s work

tmux 中に接続が切れた場合、アプリはそのサーバーの最後の tmux セッション名を記憶し、再接続後に再アタッチを試みることがあります。明示的なセッション名が観察されなくても、代替画面の tmux 的なセッションにいたことをアプリが把握していれば、汎用の tmux attach を試すことがあります。

この挙動はベストエフォートです。リモートの tmux セッションがもう存在しない場合でも、リモートシェルは引き続き利用できます。

Tmux マネージャー

Mobile SSH には tmux マネージャーが含まれており、プレフィックスの同時押しを入力せずに tmux を閲覧・操作できます。接続済みのセッションから Tmux ボタンで開きます。3 つのセクションに一覧が表示されます。

マネージャーからは次のことができます。

エージェントが入力待ちのセッションには 🔔 が付くため、停止している Claude Code や Codex の実行をひと目で見つけてアタッチできます。これは前述の再アタッチのヒントを補うものです。再アタッチの仕組みは再接続時に直前のセッションを自動で復元し、マネージャーは完全な手動操作を提供します。

どちらのプラットフォームでも、同じホスト上の複数の tmux サーバー(ソケット)を管理でき、セッションを名前または作成日で並べ替えられます。

Herdr と Zellij(Android)

Android は同じ考え方を他の 2 つのマルチプレクサーにも提供します。それぞれ専用のツールバーアイコンを持ち、アイコンはアプリがそのプログラムをサーバー上で実際に見つけたときにだけ表示されます — つまり which を実行しなくても、何がインストールされているかツールバーが教えてくれます。

herdr や Zellij がインストールされているのにログインシェルの PATH に無い場合、ページが追加を提案します。

保存済みサーバーにはそれぞれ Attach on connect の設定があります:Auto (detect)NothingtmuxherdrZellij。Auto は、そのサーバーで最後に使ったもの、次に生きているセッションがあるもの、次にインストールされているものの順に選びます。まだサーバーを調べていない場合は、推測せず何にもアタッチしません。

現在の iOS アプリは tmux 専用です。

エージェント アラート

Mobile SSH は、リモートの AI コーディング エージェント — Claude Code、Codex、Gemini — があなたの応答を待って止まっているときに知らせます。ターミナル出力を読んで推測することはしません。方法は 2 つあり、それぞれ得られる情報の細かさが違います。

ベル

初期状態でも、見ていないセッションからのターミナルのベルはアラートになります。多くのツールがすでに出しているデスクトップ通知のエスケープシーケンス(OSC 9、OSC 777)も同様です。入力の直後に届いたベルは無視されるため、通常のシェル補完の音で呼び出されることはありません。

これは設定不要ですが、アプリには「何かが鳴った」ことしかわかりません。

エージェント フック

どの エージェントが待っていて 何を しているのかをアプリが知るには、サーバーにエージェント フックをインストールします。

これはそのサーバーの ~/.mobile-ssh/agent-hook.sh に小さなシェルスクリプトを書き込みます。特定のベンダーの形式を解析するのではなくコマンドライン引数を受け取る、エージェント非依存の仕組みなので、コマンドを実行できるものなら何でもこれを通じて報告できます。アンインストールはファイルを削除するだけです。

エージェントがフック経由で報告し始めると:

入力せずに応答する

エージェントが選択肢の決まった質問をしたとき、アプリは Agents 一覧に選択肢ごとのボタン(最大 6 個)を表示します。Android ではペインヘッダーのエージェント チップをタップすることもできます。

あなたの回答はセッションに打ち込まれるわけではありません。別のチャネルでファイルに書き込まれ、フックが拾い上げるため、応答によって画面上の内容が壊れることはありません。アプリは、プロンプトが実際には提示していない選択肢の送信を拒否し、その間に接続が切れていた場合は黙って失敗せずはっきりと伝えます。

設定

アラートは両プラットフォームとも既定で有効で、通知・音・バイブレーション・いま表示中のセッションでもアラートを出すかどうかを個別のスイッチで切り替えられます。

知っておく価値のある既定値がひとつあります:音はヘッドフォンに限定されています。有線でも無線でも何も接続していないと、アラートは通知と振動はしますが音は鳴りません。スマートフォンのスピーカーで鳴らしたい場合はこの設定をオフにしてください。

感度の設定も通知音の選択肢もありません — コントロールはオン/オフだけです。

全画面のターミナルプログラム

Vim、less、htop、ncurses ツール、tmux ペインなどのプログラムでは: