ターミナル

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

ターミナルの基本

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

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

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

ペインを閉じると、その SSH 接続が切断されます。ホーム画面に戻っても実行中のセッションから接続を開けます。ヘッダーには通信の停滞が表示され、設定では転送速度の表示や、応答がない場合の減光・振動を選べます。

Eternal Terminal (ET)

両プラットフォームとも、サーバーの追加・編集時にトランスポートで次を選べます。

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

ET にはホスト上の etserver が必要です。なければ、Mobile SSH が SSH 経由のインストールと起動を提案します。設定コマンドを確認して承認し、Eternal Terminal を選んで接続してください。踏み台経由の接続には SSH が必要です。

追加キーの行

どちらのプラットフォームも、タッチキーボードでは扱いにくい、あるいは存在しない 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 では追加キーの行自身のキー(Shift+Tab、Shift+矢印)にのみ適用されます。

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

キーボードの挙動

Android の通常の端末入力はリモートシェルへ直接送られ、自動修正と予測候補は既定で無効です。音声入力による文字の確定は利用できます。

iOS では設定 → 端末 → 音声入力と候補が既定で有効で、入力中の行に音声入力・予測・修正を使えます。生のキー入力にするにはこれを無効にし、キーボードの候補も無効のまま、新しいペインを開いてください。

タップでキーボードを表示は、タップ時にソフトウェアキーボードを開くかどうかの設定です。Android は既定で無効、iOS は有効です。ツールバーのキーボードボタンは常に使えます。

ハードウェアキーボード

外付けおよび Bluetooth のキーボードは、Android と iOS のどちらでもターミナルを直接操作できます。通常の文字に加えて、Mobile SSH は矢印キー、Home/End、PgUp/PgDn、Insert、Delete、Esc、ファンクションキー F1〜F12、Ctrl+キー、Alt/Option を Meta として扱う組み合わせ、Shift+Tab を割り当てます。修飾キーは追加キーの行の固定修飾キーと組み合わせられます。

貼り付け

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

選択・コピー・共有

端末内を長押しして単語を選び、ハンドルで範囲を調整します。選択ツールバーには次の操作があります。

ターミナル内検索

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

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

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

外観とキー

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

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

スクロール

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

両プラットフォームとも、マウス追跡中のプログラムでは通常タップが左クリックになります。iOS のタップでカーソルを配置でカーソル移動と入れ替えられ、Shift+タップはもう一方の操作になります。長押し後のマウスドラッグは既定で無効なので、通常のスワイプはスクロールです。

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

tmux の挙動

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

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

接続が切れると、アプリは接続中の tmux セッションとソケットを記憶し、再接続時に同じ対象へ戻れます。同じホストの複数ペインも接続先を個別に保持します。セッションがなくなっていてもシェルは使えます。

iOS のソケット切り替えでは Ctrl+B と決めつけず、現在の tmux プレフィックスを読み取ります。未対応の形式や取得失敗はメッセージを表示して停止します。入力・ペインの終了・切断で未完了の接続手順を取り消し、識別できない全画面プログラムには接続コマンドを送りません。

Tmux マネージャー

Mobile SSH の tmux 管理画面では、プレフィックスキーを入力せずに閲覧・操作できます。接続中セッションのマルチプレクサーボタンから開き、複数の管理画面がある場合は長押しして tmux を選びます。表示は次の 3 区分です。

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

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

両プラットフォームとも、同じホストの複数の tmux サーバー(ソケット)を管理できます。接続済みの表示は、サーバー上の別クライアントではなく、使用中の端末を表します。

Herdr と Zellij

Android と iOS は Herdr と Zellij も管理します。ツールバーの 1 つのボタンで主要な検出済みマルチプレクサーを開き、長押しで別のものを選べます。そのサーバーで見つかったプログラムだけが候補になります。管理画面ではサーバー名でサーバーを、マルチプレクサー選択欄で管理画面を切り替えます。

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

保存サーバーの接続時にアタッチは、自動検出・なし・tmux・herdr・Zellij から選べます。自動は検出結果と履歴から、以前使用したもの、実行中セッションがあるもの、インストール済みの順に選びます。検出キャッシュがなければ通常のシェルを開きます。後からの検出は次回の接続にのみ反映され、入力中に起動しません。

エージェント アラート

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

ベル

端末ベルはエージェント通知を出せます。入力直後のベルは既定で無視します。リモート通知シーケンス(OSC 9、OSC 777)と OSC 133 のコマンド完了通知は別設定で、iOS では両方とも有効にするまで無効です。

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

エージェント フック

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

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

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

入力せずに応答する

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

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

設定

エージェント通知は両方で既定で有効で、通知・音・振動・操作中ペインの通知を個別に設定できます。iOS は操作中ペインも既定で通知し、バックグラウンド時だけの設定もあります。iOS がアプリの実行を許している間だけ受信でき、長いバックグラウンド停止中は SSH のリアルタイム通知が途切れます。

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

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

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

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

リモートデスクトップ

両プラットフォームとも SSH 経由の VNC でリモートデスクトップを開けます。macOS の画面共有など既存の共有画面を使うか、対応する Linux デスクトップの設定を承認します。サーバー側にデスクトップが必要で、SSH アクセスだけでは GUI セッションは作られません。Linux の画面ミラーリングは X11 が必要で、Wayland には非対応です。macOS は既存画面を使い、専用デスクトップは作りません。

タッチでクリック・ドラッグ・ズームし、画面上または外付けキーボードで入力します。クリップボード操作でスマートフォンの文字列をデスクトップに貼り付け、デスクトップからスマートフォンへコピーできます。

画面サイズにはプリセットとカスタム寸法があり、サーバーごとに記憶します。iOS は各辺 320~5120 ピクセルです。サーバーが対応すればアプリを閉じずに変更できます。再起動による変更は本アプリが作った専用デスクトップだけに確認付きで提供します。既存デスクトップや共有コンソールをサイズ変更のために再起動しません。Mac でライブ変更できない場合は Mac のディスプレイ設定で変更します。