Вопрос или проблема
Как автоматически создать несколько терминалов в .tmux.conf при запуске, желательно используя только ~/.tmux.conf? Я хочу, чтобы они были stacked, а не в отдельных панелях или окнах. GNU screen делал это без усилий.
Я не хочу несколько панелей или разделенное окно. Я хочу пять или шесть терминалов под одним окном.
Я использую эти настройки для tmux много лет, но никогда не было причины делать что-то сложное до сих пор.
unbind C-b
set -g prefix C-a
set -g default-shell /bin/bash
bind-key C-a last-window
bind-key k confirm kill-window
Я пробовал этот синтаксис, но он не создал никаких новых терминалов.
if-shell '[ -z "${TMUX}" ]' \
"new-session -d -s my-session; \
new-window -n 'Window1'; \
new-window -n 'Window2'; \
new-window -n 'Window3'; \
select-window -t my-session:1; \
attach-session -t my-session"
Также пробовал это:
# Начать новую сессию с окном
new-session -s mysession -n zero -d
# Создать дополнительные окна
new-window -n 1 -d
new-window -n 2 -d
new-window -n 3 -d
Нет удачи.
Ответ или решение
Автоматическое создание нескольких терминалов в tmux с использованием .tmux.conf
Если вы хотите автоматически создавать несколько «сложенных» терминалов (а не раздельных панелей или окон) с помощью файла конфигурации ~/.tmux.conf
, вам потребуется правильно настроить ту структуру, которая обеспечит необходимую вам функциональность. В отличие от GNU Screen, tmux не поддерживает многими терминалами в одном окне по умолчанию. Однако можно добиться эффекта, который будет близким к вашему запросу, через использование окон и сессий.
Основные шаги
-
Настройка файла .tmux.conf: Вам нужно прописать команды в вашем
~/.tmux.conf
, которые будут создавать сессии и окна сразу после запуска. -
Создание нового окна и запуск сессии: Вы можете использовать такие команды, как
new-session
иnew-window
, а затем применить соответствующие настройки для выбора окна.
Вот пример конфигурации, которая должна справиться с вашей задачей:
# Установите префикс
unbind C-b
set -g prefix C-a
set -g default-shell /bin/bash
bind-key C-a last-window
bind-key k confirm kill-window
# Создание новой сессии и окон
if-shell '[ -z "${TMUX}" ]' \
"new-session -d -s my-session; \
new-window -n 'Terminal 1'; \
new-window -n 'Terminal 2'; \
new-window -n 'Terminal 3'; \
new-window -n 'Terminal 4'; \
new-window -n 'Terminal 5'; \
select-window -t my-session:1; \
attach-session -t my-session"
Пояснение элементов конфигурации
-
if-shell '[ -z "${TMUX}" ]'
: Эта строка проверяет, находитесь ли вы уже в сессии tmux. Если нет, то будет выполнена команда внутри кавычек. -
new-session -d -s my-session
: Эта команда создает новую сессию под названиемmy-session
в фоновом режиме. -
new-window -n 'Terminal X'
: Здесь вы создаете новые окна с заданными именами. В данном случае, вы можете создать любое количество окон. -
select-window -t my-session:1
: Эта команда перемещает вас на первое окно в новой сессии. -
attach-session -t my-session
: Наконец, эта команда присоединяет вас к созданной сессии.
Дополнительные параметры и настройки
Если вам необходимо, чтобы окна не только создавались, но и имели специфические настройки (например, размеры, цветовые схемы и т. д.), эти параметры можно добавить в конфигурационный файл, используя такие команды, как select-pane
и send-keys
.
Заключение
Использование вышеуказанного блока кода в вашем ~/.tmux.conf
позволит вам автоматически создавать стек окон при старте tmux, приближая вас к желаемому эффекту, аналогичному GNU Screen. Подобный подход требует некоторого времени на требуют дальнейшей настройки, но он дает большую гибкость и возможности управления окружением. Надеюсь, это поможет вам создать желаемый рабочий процесс с tmux.