Терминал

Терминал Mobile SSH создан для работы на телефоне и планшете. Он сочетает холст терминала, ряд дополнительных клавиш, панели нескольких сессий, обработку прокрутки и поведение переподключения.

Основы терминала

Сетка нескольких сессий

Mobile SSH может одновременно выполнять до восьми SSH-сессий. Каждая сессия отображается как панель в сетке терминалов. Нажмите на панель, чтобы выбрать её, или используйте + Add Session, чтобы начать другое подключение.

Заголовок панели показывает, где вы находитесь. На Android он отображает настоящий рабочий каталог панели, запрошенный у tmux или переданный оболочкой через OSC 7 и обновляемый, пока приложение открыто; на iOS он показывает заголовок, который задаёт удалённая сторона, а если его нет — user@host:port.

Закрытие панели отключает эту SSH-сессию. При возврате на стартовый экран активные сессии остаются доступными через Active Sessions.

Eternal Terminal (ET)

Каждый сохранённый сервер может использовать один из двух транспортов, выбираемых переключателем Transport при добавлении или редактировании сервера:

ET держит сессию живой на сервере, поэтому, когда телефон меняет сеть или выходит из спящего режима, Mobile SSH снова подключается к той же работающей оболочке, а не открывает новую. Это удобно при мобильном интернете, переходах между Wi-Fi и сотовой сетью и долго выполняющихся командах.

ET требует процесса etserver на хосте. Если его на сервере нет, Mobile SSH может установить и запустить его за вас по уже открытому SSH-подключению — ручная настройка сервера не нужна. Как только ET доступен, подключайтесь с выбранным транспортом Eternal Terminal.

Ряд дополнительных клавиш

Обе платформы держат под рукой ряд из тринадцати терминальных клавиш — тех, что неудобны или отсутствуют на сенсорной клавиатуре. На Android это полоса внизу сессии (она скрывается сама, когда подключена аппаратная клавиатура); на iOS она едет над программной клавиатурой.

Два набора по умолчанию одного размера, но не одинаковые:

AndroidiOS
По умолчаниюESC TAB CTRL стрелки HOME PGUP END PGDN ESC TAB CTRL стрелки HOME END PGUP PGDN
Различиеесть Backspace, нет Shiftесть залипающий Shift, нет Backspace

Ряд никогда не прокручивается. Когда клавиши перестают помещаться по ширине, они делят место поровну и переносятся на вторую строку; всё, что не влезло и туда, убирается в меню переполнения . Ничего не прячется за свайпом и не обрезается краем экрана, а взведённый модификатор применяется и к клавише, выбранной из меню переполнения.

CTRL работает как залипающий модификатор: нажмите CTRL, затем введите C, чтобы отправить Ctrl-C. Shift на iOS «залипает» сильнее, чем на Android: на iOS он ещё и переводит в верхний регистр следующий символ, набранный на программной клавиатуре, тогда как на Android он действует только на клавиши самого ряда (Shift+Tab, Shift+стрелки).

Удерживайте клавишу вроде стрелки или PGDN — и она начнёт повторяться.

Поведение клавиатуры

Терминал использует прямое подключение к экранной клавиатуре без обработки: каждый символ отправляется в удалённую оболочку по мере набора, а автокоррекция и предиктивные подсказки отключены, поэтому клавиатура никогда не переписывает ввод до того, как он достигнет оболочки. Благодаря этому Vim, tmux, htop, less, оболочки с необычными сочетаниями клавиш и удалённые запросы паролей ведут себя предсказуемо — отключать буфер подсказок не нужно, его попросту нет.

Голосовой ввод с экранной клавиатуры по-прежнему работает: продиктованный текст передаётся прямо в оболочку, как и любой другой набранный ввод.

Аппаратные клавиатуры

Внешние и Bluetooth-клавиатуры управляют терминалом напрямую и на Android, и на iOS. Помимо обычных символов, Mobile SSH обрабатывает клавиши со стрелками, Home/End, PgUp/PgDn, Insert, Delete, Esc, функциональные клавиши F1F12, сочетания Ctrl+клавиша и Alt/Option в роли Meta, а также Shift+Tab. Клавиши-модификаторы сочетаются с залипающими модификаторами из ряда дополнительных клавиш.

Вставка

Вставка в программу, которая её запрашивает (bash, Vim и другие приложения с поддержкой bracketed paste), оборачивается маркерами bracketed paste, поэтому многострочное содержимое буфера обмена вставляется как текст, а не выполняется автоматически строка за строкой. Оборачиваются только настоящие вставки; набранный и продиктованный текст остаётся нетронутым.

Выделение, копирование, отправка

Долгое нажатие внутри терминала выделяет слово под пальцем, затем перетаскивайте маркеры для корректировки. Панель инструментов выделения предлагает три действия:

Поиск по терминалу

Ищите по всему буферу терминала — по буферу прокрутки и по видимому экрану — с переходом между совпадениями. Откройте поиск из элементов управления терминала, введите запрос и переходите по найденным вхождениям. Это работает и на Android, и на iOS.

Цвет, курсив и удалённый буфер обмена

Интеграция с оболочкой и встроенные изображения

Оформление и клавиши

И на Android, и на iOS раздел Settings позволяет настроить терминал:

Сброс восстанавливает значения по умолчанию из текущей версии приложения, а не замораживает сегодняшний список, поэтому улучшения из будущих выпусков до вас всё равно дойдут. Изменения применяются на лету к уже открытым панелям.

Прокрутка

Mobile SSH направляет жесты прокрутки в зависимости от состояния терминала:

На Android касание внутри программы, отслеживающей мышь, передаётся как щелчок левой кнопкой по соответствующей ячейке, поэтому htop, vim и панели с выбором по щелчку отзываются на палец. На iOS касание в такой же программе поднимает клавиатуру, а не выполняет щелчок; передаётся только прокрутка колесом.

Если вы начнёте печатать в режиме прокрутки назад, Mobile SSH вернётся к «живому» виду терминала.

Поведение tmux

Mobile SSH отслеживает исходящие команды tmux attach и new-session, например:

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 из подключённой сессии. Он показывает три раздела:

Из менеджера вы можете:

Значок 🔔 отмечает сессию, чей агент ожидает ввода, — так вы с одного взгляда замечаете приостановленный запуск Claude Code или Codex и подключаетесь к нему. Это дополняет подсказки по reattach выше: логика reattach автоматически восстанавливает вашу последнюю сессию при переподключении, а менеджер даёт полный ручной контроль.

Обе платформы также умеют управлять несколькими серверами tmux (сокетами) на одном хосте и сортировать сессии по имени или дате создания.

Herdr и Zellij (Android)

На Android та же идея реализована ещё для двух мультиплексоров. У каждого свой значок на панели инструментов, причём значок появляется только после того, как приложение действительно нашло эту программу на сервере, — так панель инструментов сама подсказывает, что установлено на сервере, без запуска which.

Если herdr или Zellij установлен, но отсутствует в PATH оболочки входа, страница предложит его туда добавить.

У каждого сохранённого сервера есть настройка Attach on connect: Auto (detect), Nothing, tmux, herdr или Zellij. Режим Auto выбирает то, чем вы последний раз пользовались на этом сервере, затем то, где есть живые сессии, затем то, что установлено, — а пока сервер ещё не опрошен, ни к чему не подключается, вместо того чтобы гадать.

Приложение для iOS сегодня работает только с tmux.

Уведомления агентов

Mobile SSH сообщает вам, когда удалённый ИИ-агент для кодинга — Claude Code, Codex, Gemini — заблокирован и ждёт вас. Он не гадает, вчитываясь в вывод вашего терминала. Есть два пути, и они работают с разной степенью подробности.

Звонок

Из коробки терминальный звонок из сессии, за которой вы не следите, поднимает уведомление — как и escape-последовательности уведомлений рабочего стола (OSC 9, OSC 777), которые многие инструменты и так отправляют. Звонки, пришедшие сразу после вашего ввода, игнорируются, поэтому обычный шум автодополнения оболочки вас не дёргает.

Настройка для этого не нужна, но приложение знает лишь то, что что-то прозвенело.

Хук агента

Чтобы приложение знало, какой агент ждёт и чем он занят, установите на сервер хук агента:

Это записывает небольшой shell-скрипт в ~/.mobile-ssh/agent-hook.sh на этом сервере. Он не привязан к конкретному агенту — принимает аргументы командной строки, а не разбирает формат какого-то одного поставщика, — поэтому отчитываться через него может всё, что умеет запускать команды. Удаление файла — это чистая деинсталляция.

Как только агент отчитывается через хук:

Ответ без набора текста

Когда агент задаёт вопрос с фиксированным набором ответов, приложение показывает в списке Agents по кнопке на каждый вариант — до шести. На Android можно также коснуться чипа агента в заголовке панели.

Ваш ответ не печатается в сессию. Он записывается в файл по отдельному каналу и подхватывается хуком, поэтому ответ не может испортить то, что у вас на экране. Приложение отказывается отправлять вариант, которого запрос на самом деле не предлагал, и прямо сообщает, если соединение к этому моменту оборвалось, а не проваливается молча.

Настройки

Уведомления включены по умолчанию на обеих платформах, с отдельными переключателями для самого уведомления, звука, вибрации и того, должна ли уведомлять сессия, которую вы сейчас просматриваете.

Об одном значении по умолчанию стоит знать: звук ограничен наушниками. Если ничего не подключено и не сопряжено, уведомление придёт и телефон завибрирует, но звук не прозвучит. Отключите этот параметр, если хотите слышать уведомление через динамик телефона.

Настройки чувствительности нет, выбора звука тоже — все элементы управления это просто «включено/выключено».

Полноэкранные терминальные программы

Для программ, таких как Vim, less, htop, инструменты ncurses и панели tmux: