Терминал
Терминал Mobile SSH создан для работы на телефоне и планшете. Он сочетает холст терминала, ряд дополнительных клавиш, панели нескольких сессий, обработку прокрутки и поведение переподключения.
Основы терминала
- Терминал использует поведение в стиле xterm с поддержкой цвета и обработкой клавиш курсора.
- Буфер прокрутки по умолчанию хранит 5000 строк, а в настройках его можно задать равным 1 000, 10 000 или 50 000 строк.
- Нажмите на панель, чтобы выбрать её перед вводом.
- Сведите пальцы на панели терминала, чтобы изменить размер текста. Mobile SSH меняет размер удалённого PTY после завершения жеста.
- Дважды нажмите на панель (или используйте её кнопку разворачивания), чтобы перейти в полноэкранный режим. Используйте «Назад» на Android или кнопку сворачивания на iOS, чтобы вернуться к сетке.
Сетка нескольких сессий
Mobile SSH может одновременно выполнять до восьми SSH-сессий. Каждая сессия отображается как панель в сетке терминалов. Нажмите на панель, чтобы выбрать её, или используйте + Add Session, чтобы начать другое подключение.
Заголовок панели показывает, где вы находитесь. На Android он отображает настоящий рабочий каталог панели, запрошенный у tmux или переданный оболочкой через OSC 7 и обновляемый, пока приложение открыто; на iOS он показывает заголовок, который задаёт удалённая сторона, а если его нет — user@host:port.
Закрытие панели отключает её SSH-сессию. Возврат на главный экран оставляет работающие сессии доступными через Активные сессии. Заголовок сообщает о зависшем соединении; в настройках можно включить скорость передачи и затемнение или вибрацию, когда соединение перестаёт отвечать.
Eternal Terminal (ET)
На обеих платформах при добавлении или редактировании сервера в поле Транспорт доступны следующие варианты:
- SSH — обычное SSH-подключение (по умолчанию).
- Eternal Terminal — устойчивая сессия, которая переживает обрывы сети, спящий режим устройства и смену IP-адреса без перезапуска вашей оболочки.
ET держит сессию живой на сервере, поэтому, когда телефон меняет сеть или выходит из спящего режима, Mobile SSH снова подключается к той же работающей оболочке, а не открывает новую. Это удобно при мобильном интернете, переходах между Wi-Fi и сотовой сетью и долго выполняющихся командах.
Для ET на сервере нужен процесс etserver. Если его нет, Mobile SSH может предложить установку и запуск через SSH. Просмотрите и подтвердите команды настройки, затем выберите Eternal Terminal для подключения. Маршруты через промежуточные SSH-серверы требуют транспорта SSH.
Ряд дополнительных клавиш
Обе платформы держат под рукой ряд из тринадцати терминальных клавиш — тех, что неудобны или отсутствуют на сенсорной клавиатуре. На Android это полоса внизу сессии (она скрывается сама, когда подключена аппаратная клавиатура); на iOS она располагается над программной клавиатурой.
Два набора по умолчанию одного размера, но не одинаковые:
| Android | iOS | |
|---|---|---|
| По умолчанию | 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 — и она начнёт повторяться.
Поведение клавиатуры
На 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 и другие приложения с поддержкой bracketed paste), оборачивается маркерами bracketed paste, поэтому многострочное содержимое буфера обмена вставляется как текст, а не выполняется автоматически строка за строкой. Оборачиваются только настоящие вставки; набранный и продиктованный текст остаётся нетронутым.
Выделение, копирование, отправка
Долгое нажатие в терминале выделяет слово под пальцем; перетаскивайте маркеры, чтобы изменить выделение. Панель действий содержит:
- Copy — поместить выделенный текст в системный буфер обмена. Выделение остаётся подсвеченным после этого, поэтому им можно поделиться, скопировать снова или расширить.
- Share — передать выделенный текст в системное меню «Поделиться» (почта, заметки, мессенджеры и т. д.).
- Select all — расширить выделение на весь видимый буфер терминала, затем Copy или Share.
- Вставить — вставить содержимое буфера обмена в терминал.
Поиск по терминалу
Ищите по всему буферу терминала — по буферу прокрутки и по видимому экрану — с переходом между совпадениями. Откройте поиск из элементов управления терминала, введите запрос и переходите по найденным вхождениям. Это работает и на Android, и на iOS.
Цвет, курсив и удалённый буфер обмена
- Терминал отображает 24-bit true color и курсив, поэтому тематические приглашения, подсветка синтаксиса и TUI выглядят так же, как на десктопе.
- Буфер обмена OSC 52: удалённые программы могут копировать текст в буфер телефона. Чтение буфера телефона удалённой программой требует отдельного разрешения в настройках и по умолчанию отключено.
- И на Android, и на iOS широкие символы CJK, эмодзи и комбинирующие символы (кластеры графем и zero-width joiner) измеряются и отрисовываются правильно, и встроенный Nerd Font отрисовывает глифы powerline, starship, devicon и иконок Material Design, которые системный шрифт иначе показал бы пустыми квадратами.
Интеграция с оболочкой и встроенные изображения
- Интеграция с оболочкой (OSC 133): когда ваша оболочка выдаёт маркеры приглашений OSC 133, Mobile SSH может переходить между приглашениями и оповещать вас о завершении долгой команды. Работает на Android и iOS. Ни одно из приложений не подставляет маркеры само — их должна выдавать ваша оболочка (хук
PROMPT_COMMAND/precmdили starship). На Android переход между приглашениями выключен, пока вы не включите его в Settings → Shell integration; на iOS меню появляется само, как только маркеры начинают приходить. - Выделение вывода: коснитесь любого места внутри вывода команды и выделите этот блок целиком — например, ошибку сборки, оставшуюся 300 строк назад, а не только последнюю команду, — затем скопируйте его, отправьте или расширьте выделение.
- Встроенные изображения: программы с поддержкой протокола Kitty рисуют изображения прямо в терминале на Android и iOS. Изображения сохраняются при масштабировании и переносе строк: они измеряются в ячейках и следуют за своей строкой. Они также отображаются в полноэкранных приложениях; их расположение хранится отдельно от обычной истории прокрутки.
- Мозаичные символы: блоки, Брайль, секстанты и октанты рисует само приложение, а не шрифт, поэтому
chafa,timgи ANSI-графика точно заполняют сетку без швов и пустых квадратов при любом выбранном шрифте. - Разрешение изображений: настройка изображений позволяет сообщать терминальным программам полное, половинное или треть экранного разрешения, уменьшая объём передаваемых по мобильной сети пикселей.
- Настоящий рабочий каталог (Android): заголовок панели показывает, где панель находится на самом деле — этот путь запрашивается у tmux или передаётся оболочкой через OSC 7, а не берётся из того, что напечаталось в последнем приглашении.
Оформление и клавиши
И на Android, и на iOS раздел Settings позволяет настроить терминал:
- Шрифт: выберите системный моноширинный шрифт, JetBrains Mono или Source Code Pro.
- Цветовая схема: Default, Solarized Dark или Light, Gruvbox, Dracula или Nord — применяется на лету к открытым панелям.
- Дополнительный ряд клавиш: добавляйте, удаляйте, переупорядочивайте и скрывайте клавиши, задавайте собственные клавиши с escape-последовательностями и сбрасывайте к значениям по умолчанию, с предпросмотром в реальном времени, показывающим, как именно ряд разобьётся на строки. На Android это вкладка Keys; на iOS — Extra keys → Customize keys.
- Добавление из заготовок: палитра примерно из 45 клавиш в шести группах —
F1–F12, сочетания с Ctrl вроде^C^D^Z^R^L, символы|~/_:и модификаторы.F1–F12отправляются как обычные escape-последовательности, поэтому сочетание сFNим не нужно. На Android есть ещё клавиша 📎 Attach a file, которая открывает системное средство выбора файлов и загружает файл в живую сессию; на iOS естьINS,DELи клавишаFN, открывающая ряд цифр. - Размер буфера прокрутки: 1 000, 5 000, 10 000 или 50 000 строк (по умолчанию 5 000). Применяется к новым панелям.
- Размер текста: ползунок, наряду с масштабированием щипком.
- Тема: системная, светлая или тёмная — для всего приложения.
Сброс восстанавливает значения по умолчанию из текущей версии приложения, а не замораживает сегодняшний список, поэтому улучшения из будущих выпусков до вас всё равно дойдут. Изменения применяются на лету к уже открытым панелям.
Прокрутка
Mobile SSH направляет жесты прокрутки в зависимости от состояния терминала:
- При обычном выводе оболочки свайп прокручивает локальный буфер прокрутки.
- В терминальных приложениях с режимом мыши прокрутка отправляет escape-последовательности колеса мыши.
- В приложениях с альтернативным экраном без режима мыши, таких как многие сессии tmux, прокрутка входит в режим копирования tmux и отправляет команды построчной прокрутки.
На обеих платформах касание программы с отслеживанием мыши обычно отправляет щелчок левой кнопкой. На iOS параметр Касание перемещает курсор меняет это действие на перемещение курсора; Shift-касание выполняет противоположное действие. Перетаскивание мышью после удержания включается отдельно и по умолчанию отключено, поэтому обычный свайп прокручивает содержимое.
Если вы начнёте печатать в режиме прокрутки назад, Mobile SSH вернётся к «живому» виду терминала.
Поведение tmux
Mobile SSH отслеживает исходящие команды tmux attach и new-session, например:
tmux attach -t work
tmux a -t work
tmux new -A -s work
При обрыве соединения приложение запоминает присоединённую сессию tmux и её сокет, чтобы после переподключения вернуть терминал к той же цели. У разных панелей одного хоста сохраняются собственные присоединения. Если сессии больше нет, оболочка остаётся доступной.
На iOS при смене сокета считывается текущий префикс tmux вместо предположения, что это Ctrl+B. Неподдерживаемый префикс или ошибка его определения останавливают переключение с сообщением. Ввод, закрытие панели или отключение отменяют ожидающие шаги присоединения; неопознанной полноэкранной программе команды присоединения не отправляются.
Менеджер tmux
В Mobile SSH есть менеджер tmux, позволяющий просматривать и управлять сессиями без префиксных сочетаний клавиш. Откройте его кнопкой мультиплексера в подключённой сессии; если доступно несколько менеджеров, удерживайте эту кнопку для выбора tmux. Список состоит из трёх разделов:
- Sessions — все сессии tmux на сервере.
- Windows — окна выбранной сессии.
- Panes — панели выбранного окна.
Из менеджера вы можете:
- Attach — подключить сессию к текущему терминалу.
- Create — создать новую сессию или окно, а также rename — переименовать их.
- Split — разделить панель по горизонтали или вертикали, zoom — увеличить панель и kill — завершить сессии, окна или панели.
- Сортировать сессии по недавнему использованию (по умолчанию), имени или дате создания.
Значок 🔔 отмечает сессию, чей агент ожидает ввода, — так вы с одного взгляда замечаете приостановленный запуск Claude Code или Codex и подключаетесь к нему. Это дополняет подсказки по reattach выше: логика reattach автоматически восстанавливает вашу последнюю сессию при переподключении, а менеджер даёт полный ручной контроль.
На обеих платформах можно управлять несколькими серверами tmux (сокетами) на одном хосте. Индикаторы присоединения в менеджере относятся к используемому терминалу, а не к другому клиенту на сервере.
Herdr и Zellij
Android и iOS также управляют Herdr и Zellij. Одна кнопка на панели инструментов открывает основной обнаруженный мультиплексер; удерживайте её для выбора другого. Предлагаются только программы, найденные на этом сервере. В менеджере заголовок сервера переключает серверы, а селектор мультиплексера — менеджеры.
- Herdr показывает сессии, рабочие пространства, вкладки и панели со статусом агентов. Из списка можно просмотреть ожидающего агента или ответить ему. Ответ остаётся привязан к выбранной панели и именованной сессии; Отправить передаёт текст, а Только Enter — пустое подтверждение. Точное переключение на панель предлагается там, где оно поддерживается; иначе используйте действие фокусировки родительской вкладки. Herdr передаёт состояние агентов без дополнительного хука.
- Zellij показывает сессии, вкладки и панели с действиями attach, rename, kill и split. Завершённые сессии остаются в списке, поэтому подключение к ним их воскрешает, а удаление забывает их окончательно. Подробности по вкладкам и панелям требуют Zellij 0.44 или новее; на более старой версии страница показывает имена вкладок и объясняет, почему остального нет. Разделение требует клиента, подключённого к сессии, и страница объясняет это, вместо того чтобы предлагать кнопку, которая не сработает.
Если herdr или Zellij установлен, но отсутствует в PATH оболочки входа, страница предложит его туда добавить.
У каждого сохранённого сервера есть параметр Присоединяться при подключении: Авто (определить), Ничего, tmux, herdr или Zellij. Автоматический режим учитывает обнаруженные программы и историю присоединений: сначала ранее использованный мультиплексер, затем программу с работающими сессиями, затем установленную. Без сохранённых результатов обнаружения открывается обычная оболочка. Более поздняя проверка влияет на будущие подключения, не запуская программу поверх текущего ввода.
Уведомления агентов
Mobile SSH сообщает вам, когда удалённый ИИ-агент для кодинга — Claude Code, Codex, Gemini — заблокирован и ждёт вас. Он не гадает, вчитываясь в вывод вашего терминала. Есть два пути, и они работают с разной степенью подробности.
Звонок
Звуковой сигнал терминала может вызвать уведомление о необходимости внимания. Сигналы сразу после ввода по умолчанию игнорируются. Удалённые уведомления OSC 9 и OSC 777 и уведомления о завершении команды OSC 133 имеют отдельные настройки; на iOS оба варианта изначально выключены.
Настройка для этого не нужна, но приложение знает лишь то, что что-то прозвенело.
Хук агента
Чтобы приложение знало, какой агент ждёт и чем он занят, установите на сервер хук агента:
- iOS: Settings → Agent alerts → Install Agent Hook. Если подключено несколько серверов, приложение спросит, на какой.
- Android: долгое нажатие на заголовок панели сессии и выбор Install agent hooks.
Это записывает небольшой shell-скрипт в ~/.mobile-ssh/agent-hook.sh на этом сервере. Он не привязан к конкретному агенту — принимает аргументы командной строки, а не разбирает формат какого-то одного поставщика, — поэтому отчитываться через него может всё, что умеет запускать команды. Удаление файла — это чистая деинсталляция.
Как только агент отчитывается через хук:
- В заголовке панели появляется
claude · needs youили название инструмента, который он запускает. - Панель с заблокированным агентом получает янтарную рамку. Панель, на которую вы и так смотрите, не трогается — запрос и без того перед вами.
- Значок на панели инструментов считает агентов, ожидающих во всех подключениях, с ограничением до
9+. - Экран Agents перечисляет всех агентов во всех подключениях с указанием, чем они заняты и сколько уже ждут.
Ответ без набора текста
Когда агент задаёт вопрос с фиксированным набором ответов, приложение показывает в списке Agents по кнопке на каждый вариант — до шести. На Android можно также коснуться чипа агента в заголовке панели.
Ваш ответ не печатается в сессию. Он записывается в файл по отдельному каналу и подхватывается хуком, поэтому ответ не может испортить то, что у вас на экране. Приложение отказывается отправлять вариант, которого запрос на самом деле не предлагал, и прямо сообщает, если соединение к этому моменту оборвалось, а не проваливается молча.
Настройки
Уведомления агентов включены по умолчанию на обеих платформах; отдельно настраиваются уведомления, звук, вибрация и оповещения для активной панели. На iOS оповещения активной панели по умолчанию включены, также есть режим доставки только в фоне. iOS может доставлять их лишь пока приложению разрешено работать; длительная фоновая приостановка прерывает живые SSH-уведомления.
Об одном значении по умолчанию стоит знать: звук ограничен наушниками. Если ничего не подключено и не сопряжено, уведомление придёт и телефон завибрирует, но звук не прозвучит. Отключите этот параметр, если хотите слышать уведомление через динамик телефона.
Настройки чувствительности нет, выбора звука тоже: все элементы управления — это просто «включено/выключено».
Полноэкранные терминальные программы
Для программ, таких как Vim, less, htop, инструменты ncurses и панели tmux:
- Для прямого ввода в терминал на iOS отключите Диктовка и подсказки и Подсказки клавиатуры, затем откройте новую панель.
- Используйте ряд дополнительных клавиш для
ESC, стрелок,PGUPиPGDN. - Используйте масштабирование сведением пальцев, если текст слишком мелкий, затем немного подождите, пока размер удалённого терминала установится.
Удалённые рабочие столы
Обе платформы открывают удалённый рабочий стол по VNC через SSH. Используйте уже доступный экран, включая общий экран macOS, или подтвердите настройку поддерживаемого рабочего стола Linux. Рабочий стол должен предоставляться сервером: один лишь доступ SSH не создаёт графическую сессию. Зеркалирование экрана Linux требует X11, а не Wayland; macOS использует существующий общий экран вместо создания отдельного рабочего стола.
Касания позволяют щёлкать, перетаскивать и масштабировать; для ввода используйте экранную или аппаратную клавиатуру. Кнопки буфера обмена вставляют текст телефона на удалённый рабочий стол. Рабочий стол также может копировать текст обратно на телефон.
Параметр Размер экрана предлагает готовые и произвольные размеры, запоминаемые для каждого сервера. На iOS каждая сторона должна быть от 320 до 5120 пикселей. Изменение размера на лету сохраняет приложения, если сервер это поддерживает. Запасной вариант с перезапуском требует подтверждения и доступен только для отдельного рабочего стола, созданного приложением. Существующие рабочие столы и общие консольные экраны ради изменения размера не перезапускаются; если изменение на лету недоступно на Mac, задайте разрешение в его настройках дисплея.