Про терминальные мультиплексоры на просторах Хабра было написано довольно-таки много, но вот о самом маленьком почти забыли. Речь пойдёт о консольном мультиплексоре dvtm, который является ровесником широко известного tmux.
Ниже рассмотрим два дополняющих друг друга инструмента:
dvtm — динамическое управление оконами в консоли;
abduco — управление сессиями.
DVTM
Конфигурационный файл в обычном понимании отсутствует, здесь устроенно как и в dwm где изменения вносятся в заголовочный файл config.h а затем программа заново компилируется. Но в этом топике мы рассмотрим работу программы только с дефолтными настройками.
Общая структура
Dvtm состоит из тегов, которых по умолчанию 5. Каждый тег в свою очередь может состоять из двух управляемых областей: мастера и укладки.
Область мастера(окно мастера) — одно окно которое всегда имеет номер #1.
Область укладки — состоит из одного или больше окон, которые будут стараться делить поровну между собой общее пространство укладки:
По дефолту возможны 4 вида раскладки окон:
- Вертикальная укладка (по умолчанию):
- Нижняя укладка:
- Сетка — все окна, включая мастер, стараются делить пространство тега поровну:
- FullScreen — активное окно разворачивается на всю область тега.
Управление
Как и в tmux, dvtm имеет клавишу-модификатор — это клавиша или сочетание клавиш которые предшествуют набору команд на выполнение. По умолчанию это Ctrl + g (^g), можно изменить при запуске программы. В дальнейшем будем обозначать её как MOD.
Основные
Операция | Комбинация клавиш | Команда или комментарий |
---|---|---|
Запустить dvtm | % dvtm % dvtm-status |
|
Закрыть dvtm | MOD + q | также выходит при закрытии всех окон |
Изменить MOD | Пример: % dvtm -m "^a" | |
Статусная строка | MOD + s | показать/скрыть |
Создать окно | MOD + c | |
Закрыть окно | MOD + x | % exit |
Раскладка окон
Операция | Комбинация клавиш |
---|---|
Вертикальная укладка | MOD + d |
Нижняя укладка | MOD + b |
Сетка | MOD + g |
Окно на весь тег | MOD + m |
Перебор раскладок | MOD + Space |
Работа с мастер-окном
Операция | Комбинация клавиш |
---|---|
Уменьшить | MOD + h |
Увеличить | MOD + l |
Активное окно из укладки сделать мастером (фокус перемещается на окно мастера) |
MOD + Enter |
Поменять местами мастер-окно и окно #2 (фокус остаётся на мастер-окне) |
MOD + Enter |
Навигация по окнам
Операция | Комбинация клавиш |
---|---|
Перебор вперёд | MOD + j |
Перебор назад | MOD + k |
Переход к окну | MOD + [1..9] |
Предыдущее активное окно | MOD + Tab |
Свернуть окно | MOD + . |
Перебор вперёд (не свёрнутых окон) | MOD + u |
Перебор назад (не свёрнутых окон) | MOD + i |
Выключить/включить перехват событий мыши выключить при запуске перехват событий мыши |
MOD + M % dvtm -M |
Теги
Операция | Комбинация клавиш |
---|---|
Переход к тегу | Mod + F[1..n] Mod + v + [1..n] |
Предыдущий тег | Mod + v + Tab |
Показать окна всех тегов | Mod + 0 |
Показать все окна текущего и выбранного тега | Mod + V + [1..n] |
Сделать все видимые окна активными (позволяет произвести запись сразу во все видимые окна) |
Mod + a |
Перенести активное окно в выбранный тег | Mod + t + [1..n] |
Копировать активное окно в выбранный тег (или удалить дубликат* если он там уже есть) |
Mod + T + [1..n] |
* — каждое окно имеет свой id, если он совпадает то окна считаются дубликатами. Посмотреть его можно в переменной $DVTM_WINDOW_ID. В пределах тега id всегда уникальны.
Действия внутри окон
Операция | Комбинация клавиш |
---|---|
Прокрутить вверх | Shift + PageUp Mod + PageUp |
Прокрутить вниз | Shift + PageDown Mod + PageDown |
Включить/выключить использование мыши как в обычной консоли | MOD + M |
Перейти в режим копирования** | MOD + e |
Перейти в режим копирования с начальным поиском | MOD + / |
Вставить текст*** | MOD + p |
** — должна быть установлена необходимая программа редактирования, к примеру vim или vis.
*** — пока только так.
Остальные команды dvtm можно посмотреть используя комбинацию клавиш MOD + ?
ABDUCO
Самого dvtm вполне хватает для локального использования, то для удалённой системы его полезность сильно возрастает при использовании совместно с программой abduco. Abduco позволяет отделять(переводя в фоновый режим) и затем вновь присоединять работающую программу к терминалу.
Если abduco не указать команду на выполнение то по умолчанию будет запущен dvtm (если конечно он установлен).
Операция | Команда или комбинация клавиш |
---|---|
Список всех доступных сессий "*" — к сессии подключён как минимум один клиент "+" — запущенная через abduco программа завершилась |
% abduco |
Создать сессию и присоединится к ней | % abduco -c СЕССИЯ |
Создать сессию но не присоединятся к ней | % abduco -n СЕССИЯ |
Отсоединить сессию | Ctrl + |
Изменить ключ для отсоединения сессии | Пример: % abduco -e "^q" -c СЕССИЯ |
Присоединится к существующей сессии | % abduco -a СЕССИЯ |
Присоединится к сессии (если нету то будет создана) | % abduco -A СЕССИЯ |
Открыть сессию только на чтение | % abduco -r -a СЕССИЯ |
Вариант запуска на удалённом сервере:
% ssh user@hosh -t abduco -A habr
можно и с помощью mosh:
% mosh user@host -- abduco -A habr
Также dvtm позволяет сделать матрёшку, к примеру, в одном из окон локально запущенного dvtm можно запустить удалённый dvtm, но только нужно не забыть сменить клавишу модификатор чтобы она отличалась от локальной. Например так:
% mosh user@host -- abduco -A habr dvtm -m "^a"
Немного ссылок