====== tmux: мультисессии в терминале ======
===== Назначение =====
**tmux** (terminal multiplexer) позволяет запускать несколько терминальных сессий в одном окне. Он полезен для:
* удалённой работы — процессы продолжают работать после отключения SSH
* управления множеством задач в одном терминале
* переключения между окнами/панелями без открытия новых вкладок
===== Установка (Raspberry Pi / Linux) =====
sudo apt update
sudo apt install tmux
===== Настройка tmux =====
Добавить в ''~/.tmux.conf'' для сохранения истории и изменения цвета строки состояния:
# Увеличенная история вывода
set-option -g history-limit 100000
# Отключение режима очистки экрана
set -g terminal-overrides '*:smcup@:rmcup@'
# Цвет и стиль строки статуса
set -g status-style "bg=colour81,fg=magenta,bold,reverse"
# Левая часть — имя сессии
set -g status-left '#[bold]#S '
# Правая часть — дата и время
set -g status-right '#[bold] %Y-%m-%d %H:%M '
# Поддержка мыши
set -g mouse on
# Поддержка 256-цветов и корректной работы с fzf/micro
set -g default-terminal "screen-256color"
**Пример цветов**
# Примеры цветов (можно менять colourXXX в status-style):
# Красный: colour160 или colour203
# Ярко-синий: colour45
# Ярко-зелёный: colour46
# Тёмный серый: colour240
# Жёлтый: colour226
# Светло-синий: colour81
# Пурпурный: colour129
# Оранжевый: colour208
# Чёрный colour0
# Тёмно-серый colour8
# Красный colour1
# Ярко-красный colour9
# Зелёный colour2
# Ярко-зелёный colour10
# Жёлтый colour3
# Ярко-жёлтый colour11
# Синий colour4
# Ярко-синий colour12
# Пурпурный colour5
# Розовый colour13
# Голубой colour6
# Ярко-голубой colour14
# Белый colour7
# Ярко-белый colour15
# Orange colour208
# DarkOrange colour202
# LightOrange colour214
#
# bold Жирный текст
# underscore Подчёркнутый текст
# italics Курсив (не везде работает)
# blink Мигающий текст (редко)
# reverse Инверсия fg и bg
# fg=цвет Цвет шрифта
# bg=цвет Цвет фона
**Пример стилей**
#[bold,fg=white,bg=colour208] текст
set -g status-left '#[bold,fg=white,bg=colour208]#S '
set -g status-right '#[fg=colour15,bg=colour202] %Y-%m-%d %H:%M '
**Перечень стилей**
bold Жирный текст
underscore Подчёркнутый текст
italics Курсив (не везде работает)
blink Мигающий текст (редко)
reverse Инверсия fg и bg
fg=цвет Цвет шрифта
bg=цвет Цвет фона
**Применить настройки без перезапуска tmux**
tmux source-file ~/.tmux.conf
===== Прописать запуск tmux в bash (авто-возврат в сессию) =====
Добавить в конец ''~/.bashrc'':
# Автоподключение к tmux
if command -v tmux &> /dev/null && [ -z "$TMUX" ]; then
tmux attach || tmux new -s default
fi
===== Настройка профиля в Windows Terminal =====
{
"colorScheme": "Campbell",
"commandline": "ssh <ПОЛЬЗОВАТЕЛЬ>@10.0.0.1 -t \"tmux new-session -A -s ssh\"",
"guid": "{11111111-2222-3333-4444-000000000001}",
"hidden": false,
"icon": "<ПУТЬ_К_ФАЙЛУ>.png",
"name": "Raspberry Pi (WireGuard)",
"startingDirectory": "%USERPROFILE%",
"tabColor": "#FF5555"
},
===== `.bat` файл для быстрого запуска из Windows =====
@echo off
start wt -w 0 nt -p "Raspberry Pi (ssh)"
===== Основные команды tmux =====
**Вход / выход:**
* ''tmux'' — создать новую сессию
* ''tmux attach'' — подключиться к существующей
* ''tmux ls'' — список сессий
* ''tmux attach -t ИМЯ'' — подключиться по имени
* ''tmux new -s ИМЯ'' — создать сессию с именем
* ''tmux kill-session -t имя'' — завершить сессию
**Управление сессией (после Ctrl+B):**
* ''d'' — отсоединиться (detach)
* ''%'' — разделить вертикально
* ''"'' — разделить горизонтально
* стрелки + Ctrl+B — перемещение по панелям
* ''x'' — закрыть панель
* ''c'' — создать новое окно
* ''n'' / ''p'' — следующее/предыдущее окно
**Выход:**
* ''exit'' — выйти из панели (если последняя — закроется сессия)
===== Пример использования =====
1. Подключение по SSH к Raspberry Pi\\
2. Автоматически открывается или подключается ''tmux''\\
3. Открыты 2 панели:
* верхняя — ''htop''
* нижняя — ''btop''
4. Закрытие окна терминала — процессы не завершаются\\
5. Возврат: ''ssh @10.0.0.1'' → tmux attach\\
===== Сохранение истории после отсоединения =====
Чтобы tmux сохранял scrollback (историю терминала), добавь в ''~/.tmux.conf'':
set-option -g history-limit 100000
set -g terminal-overrides '*:smcup@:rmcup@'
===== Пример: =====
tmux new -s rasp
# Работай внутри сессии
# Закрой окно — сессия продолжит работать
# Подключись снова:
tmux attach -t rasp
===== Замечания =====
* ''tmux'' не сохраняет историю после перезагрузки сессии, если не использовать scrollback-файлы
* удобно сочетать с fzf и launcher_fzf для запуска скриптов
* конфигурация: ''~/.tmux.conf''
* Можно использовать совместно с fzf, micro, mc и др.
* ''exit'' внутри tmux завершает сессию
* Закрытие терминала без выхода — безопасно, процессы не прерываются
Если нужно — можно добавить шаблон ''~/.tmux.conf'' и кастомные keybindings.