Для начала немного общей информации из Википедии [1]...
tmux [2] - свободная консольная утилита-мультиплексор, предоставляющая пользователю доступ к нескольким терминалам в рамках одного экрана. tmux может быть отключен от экрана: в этом случае он продолжит исполняться в фоновом режиме; имеется возможность вновь подключиться к tmux, находящемуся в фоне. tmux является штатным мультиплексором терминалов ОС OpenBSD [3]. Программа tmux задумывалась как замена программы screen [4].
При старте tmux создаёт новую сессию с единственным окном и отображает её на экране. В статусной строке в самом низу экрана отображается информация о текущей сессии; эта же строка используется для ввода команд tmux’а.
Сессия tmux - это совокупность псевдо-терминалов, находящихся под управлением tmux’а. К каждой сессии привязаны одно или более окон. Экран может быть занят как только одним окно, так и мозаикой из нескольких окон, каждое из которых соответствует одному псевдо-терминалу.
Основные отличия tmux от screen [4] такие:
- Клиент-серверная архитектура, при которой окна выполняют роль объектов, которые могут одновременно подключаться к нескольким сессиям, перемещаться между ними и просматриваться с разных клиентов (терминалов).
- Механизм автоматизации выполняемых действий с помощью скриптов.
- Несколько независимых буферов обмена.
- Два варианта раскладки клавиатуры: стиль vi и emacs.
- Более ясный формат описания строки статуса.
- Возможность отображения вывода команды в строке статуса.
- Экономное расходование оперативной памяти.
- Высокая скорость работы.
- Улучшенная поддержка UTF-8.
- Интерактивные меню для выбора окон, сессий и клиентов.
- Более гибкие возможности по разделению окон на регионы.
Итак, уже интересно. Выполним установку tmux из портов.
# cd /usr/ports/sysutils/tmux && make install clean && rehash |
Итак, установка прошла без проблем... Первый запуск:
# tmux |
После запуска порадовала панель статуса, включеная по дефолту, да еще и с зеленой подсветкой. Собственно, вот скриншот первой сессии tmux без каких-либо дополнений:
Как оказалось, сочатание клавиш Ctrl+a не работает, нужно использовать сочетание клавиш Ctrl+b, что не очень удобно. Но удобно тем, что не создает конфликтов со Screen, как в случае с minicom [6].
Исключая сочетания клавиш в виде Ctrl+b, большинство клавиатурных комбинаций совместимы со Screen. Так, Ctrl+b+c открывает новое окно, а при Ctrl+b+1 выполняется переход к окну номер один. В то же время некоторые действия выполняются совершенно другими сочетаниями клавиш:
- Ctrl+b+w - это меню открытых окон
- Ctrl+b+l - предыдущее окно
- Ctrl+b+" - разделить окно по вертикали
- Ctrl+b+& - уничтожает окно.
Для отключения от сессии используется все та же комбинация Ctrl+b+d, однако для подключения обратно используется другой аргумент командной строки:
# tmux attach |
Также следует отметить тот факт, что любое действие, выполняемое с помощью сочетания клавиш, можно выполнить из командной строки. Например:
- # tmux last-window - переход к предыдущему окну
- # tmux new-window - создание нового окна
- # tmux list-commands - список поддерживаемых команд
Не стоит недооценивать значение команд, при использовании tmux. С их помощью выполняется конфигурирование программы. Именно для конфигурирования предназначены две команды: set-option и set-window-option. set-option служит для изменения параметров сессии, set-window-option служит для изменения настроек окон.
Опции можно внести в конфигурационный файл. Пример tmux.conf:
# cat ~/.tmux.conf # Изменяем цвет строки статуса на белый |
Также есть возможность модифицировать статусную строку. Для этого предназначены команды status-left и status-right. Как можно догадаться, первая влияет на левую часть статус-бара, а вторая - на правую. Формат
- #(команда) - результат выполнения указанной команды
- #H - имя хоста
- #S - имя текущей сессии
- #T - имя текущего окна
- ## - символ #
Еще одной отличительной особенностью tmux является разбиение окон на регионы.
В отличие от Screen, для разделения окна вертикально на два равных региона используется комбинация Ctrl+b+", а для переключения между регионами - либо комбинация Ctrl+b+o, либо Ctrl+b и навигационные клавиши. Изменить размер региона можно с помощью комбинаций Ctrl+b Alt+Up и Ctrl+b Alt+Down. Однако основная изюминка скрывается в поддержке нескольких вариантов размещения регионов, для переключения между которыми предназначена комбинация Ctrl+b+Space. В частности, регионы могут быть расположены горизонтально, вертикально, интеллектуально, с выравниванием или без.
Кстати, есть еще одна приятная особенность. Нажав Ctrl+b+t можно вывести на экран часы, нарисованные псевдографикой. Они не будут исчезать с экрана до нажатия любой клавиши.
Скриншоты
На этом обзор закончим. Более подробно с возможностями tmux можно ознакомиться на страницах руководства.