Termux отлично подходит для работы в дороге и в условиях ограниченного интерфейса, но при активной разработке часто возникает потребность в надежном управлении несколькими задачами: редактор, сборка, тесты, логи, мониторинг процессов. Терминальный мультиплексор tmux решает эту задачу: вы создаете сессии, внутри них — окна и панели, а затем легко переключаетесь между ними, не теряя контекст.
В этой статье рассмотрим практический подход под Termux: динамическое конфигурирование, плагины, удобные сценарии для командной разработки и синхронные сессии, чтобы несколько участников могли вести один и тот же сценарий терминальных команд.
Предпосылки и установка tmux в Termux
Убедитесь, что Termux обновлен, и выполните установку tmux из репозиториев. Далее приведены команды, типовые для большинства окружений Termux.
pkg update
pkg install tmux
Проверим версию:
tmux -V
Создайте и запустите тестовую сессию:
tmux new -s dev
Внутри tmux начните работу, затем выйдите из нее командой (в режиме tmux): Ctrl+b, затем d. Проверим список сессий:
tmux ls
Вернуться в сессию можно командой:
tmux attach -t dev
Базовая навигация: окна и панели
Комбинация “префикс” tmux по умолчанию — Ctrl+b.
- Создать новое окно:
Ctrl+bзатемc - Закрыть текущее окно:
Ctrl+bзатем& - Переключиться на следующее/предыдущее окно:
Ctrl+bзатемnилиp - Панели:
- Вертикальное/горизонтальное разбиение:
Ctrl+bзатем%или" - Перемещение между панелями:
Ctrl+bзатем стрелки - Изменение размера панели:
Ctrl+bзатемAlt+стрелка(зависит от конфигурации)
- Вертикальное/горизонтальное разбиение:
- Отсоединиться от сессии:
Ctrl+bзатемd
Динамическое конфигурирование tmux под проекты
Для совместной разработки и “многошапочного” использования полезно хранить конфиги проекта и подгружать их автоматически. В Termux это особенно удобно, когда вы переключаете папки с кодом и хотите, чтобы раскладка, переменные и команды были согласованы.
Структура конфигурации
Рекомендуется хранить основной конфиг и проектные конфиги отдельно:
~/.tmux.conf
~/.tmux/projects/<project>.conf
Основной конфиг: выбор и подгрузка project-конфига
Откройте/создайте ~/.tmux.conf и добавьте логику динамической подгрузки. Ниже пример, который подхватывает проект по текущей директории (идея: tmux сам решает, какой конфиг применить при старте).
set -g default-terminal "tmux-256color"
set -g mouse on
# Пример: зададим базовые настройки, чтобы панели и окна выглядели предсказуемо
set -g pane-border-style 'fg=colour240'
set -g pane-active-border-style 'fg=colour81'
set -g status-style 'fg=colour250,bg=colour238'
# Хотим подгружать проектный конфиг, если он существует.
# Идея: PROJECT_DIR берём из текущего рабочего каталога на старте.
# Ограничение: логика зависит от запуска tmux.
set -g @projects_dir "$HOME/.tmux/projects"
# Авто-подгрузка через команду, которая должна вызываться при старте.
# Пользовательская переменная @project определяет имя проекта.
# Ее можно задать при запуске: tmux new -s dev -c /path/to/project
bind-key r source-file ~/.tmux.conf \
\; display-message "tmux: reloaded ~/.tmux.conf"
# Подключение project конфигурации в момент обновления
# (на практике: удобнее вызывать автоматически через запуск сессии).
set -g @auto_project_conf 1
# Небольшая настройка статуса
set -g status-right '#(whoami) @ #H | %Y-%m-%d %H:%M'
Важно: “чистая” автоматизация по текущей директории зависит от способа запуска. Поэтому для предсказуемости рекомендуется задавать имя проекта явно через переменную и вызывать подгрузку в конфиге или через скрипт запуска.
Проектный конфиг: переменные, раскладка, автокоманды
Создадим файл ~/.tmux/projects/myapp.conf. Он задает переменные, раскладку и “роль” панелей.
# ~/.tmux/projects/myapp.conf
# Пример: переменные проекта
set -g @project_name "myapp"
# Задаем удобные команды: можно использовать tmux send-keys
# и сценарии для запуска типовых задач разработки.
# Включим “умную” навигацию между панелями.
set -g @smart_splits 1
Далее — пример более практичного проекта-конфига, который раскладывает панели и запускает процессы. В зависимости от ваших задач команды могут меняться.
# ~/.tmux/projects/myapp.conf
# Панель 0: терминал приложения
# Панель 1: сборка
# Панель 2: тесты/логи
# Для “проектной раскладки” используем подход через именованный шаблон.
# В tmux нет универсального “на каждом старте в точности создать N панелей” без скриптов,
# поэтому обычно удобнее применять это через скрипт запуска сессии.
set -g @project_preset 1
Скрипт запуска сессии с подгрузкой конфигурации
Чтобы конфиг был действительно динамическим и воспроизводимым, сделаем маленький сценарий. Он создаст сессию, выставит рабочую директорию проекта и подгрузит нужные настройки.
mkdir -p ~/.local/bin
nano ~/.local/bin/tmux-proj
Пример скрипта:
#!/data/data/com.termux/files/usr/bin/bash
# Использование:
# tmux-proj <project_name> <path_to_project> [session_name]
PROJECT="$1"
PATH_TO_PROJECT="$2"
SESSION="${3:-$PROJECT}"
TMUX_CONF="$HOME/.tmux/projects/${PROJECT}.conf"
if [ ! -d "$PATH_TO_PROJECT" ]; then
echo "Project path not found: $PATH_TO_PROJECT" >&2
exit 1
fi
# Создаем сессию (если ее еще нет), задаем рабочую директорию.
# Далее подгружаем project-конфиг и раскладку через команду select-layout/создание панелей.
# Важно: для send-keys требуются действия по порядку.
if ! tmux has-session -t "$SESSION" 2>/dev/null; then
tmux new-session -d -s "$SESSION" -c "$PATH_TO_PROJECT" \
-n main
# Подгрузка конфигурации проекта (если файл существует)
if [ -f "$TMUX_CONF" ]; then
tmux source-file "$TMUX_CONF" -t "$SESSION" 2>/dev/null || true
fi
# Пример раскладки: 2 панели справа/снизу
# Схема: создаем одну панель для сборки и одну для логов.
tmux split-window -h -t "$SESSION":0.0
tmux select-pane -t "$SESSION":0.1
tmux send-keys -t "$SESSION":0.1 "echo 'Build started...';" C-m
tmux split-window -v -t "$SESSION":0.1
tmux select-pane -t "$SESSION":0.2
tmux send-keys -t "$SESSION":0.2 "echo 'Tests/logs started...';" C-m
# Вернем фокус на основную панель
tmux select-pane -t "$SESSION":0.0
fi
tmux attach -t "$SESSION"
Сделаем исполняемым:
chmod +x ~/.local/bin/tmux-proj
Запуск:
tmux-proj myapp /sdcard/projects/myapp myapp-dev
Такой подход дает вам “динамичную” конфигурацию: вы создаете проектную сессию с подгрузкой конфига и предсказуемой раскладкой.
Плагины для tmux в Termux (TPM-подход)
Для плагинов обычно используют TPM (tmux plugin manager). Он позволяет ставить плагины и управлять ими прямо через конфигурацию tmux.
Установка TPM:
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
Далее добавьте в ~/.tmux.conf базовую секцию:
# TPM
set -g @tpm_plugins "tmux-plugins/tpm"
# Включаем TPM плагин-менеджер
run '~/.tmux/plugins/tpm/tpm'
Если у вас еще нет директории, создайте ее:
mkdir -p ~/.tmux/plugins
Важно: После добавления плагинов обычно нужно нажать горячую клавишу TPM для установки. Уточните актуальную схему в документации TPM, но в типовом сценарии в tmux нажимают клавишу для “install”.
Перезагрузите tmux конфиг (внутри tmux): используйте привязку r, которую мы добавляли выше, или перезапустите сессию.
Удобные настройки под “мобильную” работу
Termux часто используется с переключением окон/панелей и ограничениями на ввод. Поэтому полезно:
- включить mouse для удобного выбора панелей;
- подобрать цветовую схему;
- сделать перезагрузку конфига одной командой;
- сократить число “лишних” действий при создании типовой раскладки.
Для уже добавленного mouse это выполняется через set -g mouse on.
Совместная разработка: сессии под команду
Когда над проектом работает несколько людей, tmux помогает синхронизировать рабочие процессы:
- одинаковая структура окон/панелей для сборки, тестов и запуска;
- общий стиль именования сессий;
- возможность пересоздавать рабочие раскладки по шаблону;
- быстрый обмен командами/скриптами запуска между участниками.
Практика для командной разработки:
- Зафиксируйте “профили” tmux для типовых сценариев (например,
dev,test,logs). - Храните эти профили в репозитории проекта или в общем шаблоне (можно синхронизировать через git, а tmux-conf держать локально).
- Используйте скрипт наподобие
tmux-projкак единый способ поднять рабочее окружение.
Так участники команды будут получать одинаковую структуру терминала, даже если их окружение Termux отличается.
Синхронные сессии: как вести одинаковые команды в нескольких панелях
Одно из самых полезных для обучения и парного анализа — синхронный ввод. Когда он включен, введенный текст отправляется сразу в несколько панелей. Это особенно удобно, когда вы:
- сравниваете вывод команд на разных ветках;
- одинаково запускаете набор команд в двух окружениях;
- вместе с участником команды “прогоняете” одинаковую последовательность диагностики.
Как включить синхронный режим
Предположим, у вас есть несколько панелей в одной сессии. Выберите нужные панели и включите синхронный режим.
Классическая команда tmux:
tmux set-window-option synchronize-panes on
Отключение:
tmux set-window-option synchronize-panes off
Если хотите сделать включение/отключение привязкой клавиш, добавьте в ~/.tmux.conf:
bind-key S set-window-option synchronize-panes \
\! (#{window_option_synchronize_panes})
После этого внутри tmux можно нажимать Ctrl+b, затем S (после перезагрузки конфига).
Синхронные команды будут отправляться во все видимые панели выбранного окна. Для совместной разработки это дает эффект “сделали одно действие — получили два/три ответа”.
Рекомендации по стабильности и удобству
- Всегда используйте короткие и повторяемые сценарии для поднятия раскладки. Это лучше, чем вручную создавать панели каждый раз.
- Не перегружайте статус-бар — на мобильных устройствах важна читаемость.
- Держите конфиги в порядке: общий конфиг + project-профили.
- Проверяйте команды send-keys: при первом запуске логируйте “стартовые” команды, чтобы видеть, что tmux действительно отправляет их в нужные панели.
Заключение
tmux в Termux дает мощную среду для разработки: сессии не “теряются” при перезапусках, панели помогают удерживать контекст, а динамический конфиг-подход делает рабочие раскладки воспроизводимыми для разных проектов. Добавьте плагины через TPM и используйте синхронный режим для обучения, парной работы и сравнения результатов — и ваш командный процесс станет заметно эффективнее.
Если хотите ускорить настройку “под ключ”, подготовить шаблоны конфигураций и сценарии под ваш workflow, обращайтесь в РыбинскЛАБ — мы поможем организовать tmux в Termux так, чтобы им было удобно пользоваться каждый день.