We detected you are likely not from a Russian-speaking region. Would you like to switch to the international version of the site?

  Назад к списку статей

Настройка и использование терминального мультиплексора tmux с динамическим конфигурированием, плагинами и синхронными сессиями для совместной разработки в Termux

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 помогает синхронизировать рабочие процессы:

  • одинаковая структура окон/панелей для сборки, тестов и запуска;
  • общий стиль именования сессий;
  • возможность пересоздавать рабочие раскладки по шаблону;
  • быстрый обмен командами/скриптами запуска между участниками.

Практика для командной разработки:

  1. Зафиксируйте “профили” tmux для типовых сценариев (например, dev, test, logs).
  2. Храните эти профили в репозитории проекта или в общем шаблоне (можно синхронизировать через git, а tmux-conf держать локально).
  3. Используйте скрипт наподобие 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 так, чтобы им было удобно пользоваться каждый день.

* Текст статьи подготовлен и структурирован с использованием технологий искусственного интеллекта. Проверен и доработан перед публикацией.

Нужна помощь с настройкой Termux, Linux и серверов?

Я оказываю ИТ-услуги: настройка серверов, автоматизация, безопасность, помощь с Linux и инфраструктурой. Материалы сайта — только в ознакомительных и образовательных целях.

Связаться со мной
Поддержать проект