Младшенький в семье мультиплексоров

в 21:27, , рубрики: Песочница, метки:

Про терминальные мультиплексоры на просторах Хабра было написано довольно-таки много, но вот о самом маленьком почти забыли. Речь пойдёт о консольном мультиплексоре dvtm, который является ровесником широко известного tmux.

Ниже рассмотрим два дополняющих друг друга инструмента:
dvtm — динамическое управление оконами в консоли;
abduco — управление сессиями.

DVTM


Конфигурационный файл в обычном понимании отсутствует, здесь устроенно как и в dwm где изменения вносятся в заголовочный файл config.h а затем программа заново компилируется. Но в этом топике мы рассмотрим работу программы только с дефолтными настройками.

Общая структура

Dvtm состоит из тегов, которых по умолчанию 5. Каждый тег в свою очередь может состоять из двух управляемых областей: мастера и укладки.
Область мастера(окно мастера) — одно окно которое всегда имеет номер #1.
Область укладки — состоит из одного или больше окон, которые будут стараться делить поровну между собой общее пространство укладки:

Младшенький в семье мультиплексоров - 1

По дефолту возможны 4 вида раскладки окон:

  • Вертикальная укладка (по умолчанию):

    Младшенький в семье мультиплексоров - 2

  • Нижняя укладка:

    Младшенький в семье мультиплексоров - 3

  • Сетка — все окна, включая мастер, стараются делить пространство тега поровну:

    Младшенький в семье мультиплексоров - 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"

Младшенький в семье мультиплексоров - 5

Немного ссылок

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js