tmux

логотип ansible

логотип tmux

Роль Ansible :eyeglasses: tmux

Galaxy Role GitHub release (latest by date) License: MIT

Содержание

Роль Ansible, которая устанавливает, настраивает и запускает tmux: мультиплексор терминала, позволяющий создавать, получать доступ и управлять несколькими терминалами с одного экрана.

Поддерживаемые платформы:
* Debian
* Redhat (CentOS/Fedora)
* Ubuntu

Требования

Требуется предварительная установка пакетов программного обеспечения libevent 2.x и ncurses.

Переменные роли

Переменные доступны и организованы по следующим стадиям развертывания программного обеспечения и машин:

  • установка
  • настройка
  • удаление

Установка

tmux может быть установлен с использованием систем управления пакетами ОС, предоставляемых поддерживаемыми платформами (например, apt, yum/dnf).

Следующие переменные можно настроить для управления различными аспектами этого процесса установки:

service_package: <имя-пакета-и-версия> (по умолчанию: tmux[-latest])

  • имя и версия пакета tmux для загрузки и установки. Ссылка или выполните что-то вроде dnf --showduplicates list tmux в терминале, чтобы отобразить список доступных пакетов для вашей платформы.

Настройка

С помощью этой роли конфигурация экземпляра tmux управляется с помощью переменной пользователя tmux_config и может быть выражена в виде хэша, индексированного учетной записью пользователя. Значения этих ключей учетной записи могут быть либо словарями, списками словарей или их комбинацией (устанавливается в соответствии с синтаксисом YAML оператора и предпочтениями настройки), представляя связанные команды запуска/конфигурации и последовательности команд (комбинации команд, связанных выполнением), а также необязательный комментарий.

Ниже приведен обзор и примеры конфигураций для справки:

[tmux_config: {global | user-account} : {entry} :] comment: <строка> (по умолчанию: см. none)

  • [необязательный] комментарий, связанный с командой конфигурации или последовательностью команд
Пример
 tmux_config:
   global:
     - comment: "Этот комментарий дает контекст вокруг команд(ы) ниже"
       commands:
         - "source-file": "'~/.tmux.conf'"

[tmux_config: {global | user-account} : {entry} :] commands: <key: value,...> (по умолчанию: см. defaults/main.yml)

  • коллекция команд конфигурации для отображения в tmux.conf учетной записи пользователя. Список доступных команд можно найти здесь.

Обычно каждая пара ключ: значение представляет собой компоненты команды tmux в формате {command}: {flags} соответственно:

 tmux_config:
   global:
     - comment: "Добавить ctrl-A как вторичный префикс"
       commands:
         # {command}: {flags} формат
         - "set-option": "-g prefix2 C-a"
         - "bind-key": "C-a send-prefix -2"

Однако, технически, любое разделение синтаксиса команды tmux разрешено и должно привести к правильному отображению желаемой конфигурации.

 tmux_config:
   user-account-1:
     - commands:
         - "bind-key C-c": "new-session"
         - "if-shell true": "{ display -p 'bar-dollar-foo: $foo' }"
         - "set-hook -g pane-mode-changed[42] 'set -g status-left-style bg=red'": ""
     - commands:
         - "set": "-g @plugin 'tmux-plugins/tpm'"
           "set -g": "@plugin 'tmux-plugins/tmux-sensible'"
       comment: "Установка плагинов tmux TPM и 'tmux-sensible' (разумные конфигурации)"

Удаление

Удаляет как установку пакетов, так и управляющие конфигурации пользователей tmux, возвращая целевой хост в состояние, настроенное до применения этой роли, за исключением глобальных/системных конфигураций (например, может быть полезно для повторного использования настроек конфигурации во время обновления системы).

Следующие переменные можно настроить для управления процессом удаления:

perform_uninstall: <true | false> (по умолчанию: false)

  • указывать на необходимость удалить управляемые инсталляции tmux и пользовательские конфигурации на целевом хосте (см.: handlers/main.yml для подробностей)

Зависимости

Нет

Пример плейбука

стандартный пример:

- hosts: all
  roles:
  - role: 0x0I.tmux

Установка и управление конкретной версией:

- hosts: all
  roles:
  - role: 0x0I.tmux
    vars:
      service_package: tmux-2.7-2

Применение плагина "sensible (конфигурации)" вручную:

- hosts: all
  roles:
  - role: 0x0I.tmux
    vars:
      tmux_config:
        global:
          - comment: "utf8 включен"
            commands:
              - "set-option": "-g utf8 on"
              - "set-option": "-g status-utf8 on"
          - comment: "устранение задержки переключения режима vim (http://superuser.com/a/252717/65504)"
            commands:
              - "set-option": "-s escape-time 0"
          - comment: "увеличить размер буфера прокрутки"
            commands:
              - "set-option": "-g history-limit 50000"
          - comment: "сообщения tmux отображаются в течение 4 секунд"
            commands:
              - "set-option": "-g display-time 4000"
          - comment: "обновление 'status-left' и 'status-right' чаще"
            commands:
              - "set-option": "-g status-interval 5"
          - comment: "обновление $TERM"
            commands:
              - "set-option": "-g default-terminal "screen-256color"
          - comment: "сочетания клавиш emacs в командной строке tmux (префикс + :) лучше, чем клавиши vi, даже для пользователей vim"
            commands:
              - "set-option": "status-keys emacs"
          - comment: "события фокуса включены для терминалов, которые их поддерживают"
            commands:
              - "set-option": "-g focus-events on"
          - comment: "очень полезно при использовании 'групповых сессий' и многомониторовых установках"
            commands:
              - "set-window-option": "-g aggressive-resize on"
          - comment: "упрощенное и быстрое переключение между следующими/предыдущими окнами"
            commands:
              - "bind-key": "C-p previous-window"
              - "bind-key": "C-n next-window"
          - comment: "загрузить .tmux.conf, как предложено в `man tmux`"
            commands:
              - "bind-key": "R source-file '~/.tmux.conf'"
          - comment: "если префикс 'C-a'"
            commands:
              - "bind-key": "C-a send-prefix"
              - "bind-key": "a last-window"

...или с установкой плагина:

- hosts: all
  roles:
  - role: 0x0I.tmux
    vars:
      tmux_config:
        global:
          - comment: "Добавить разумный плагин в список плагинов TPM"
            commands:
              - "set-option": "-g @plugin 'tmux-plugins/tmux-sensible'"

Лицензия

MIT

Информация об авторе

Эта роль была создана в 2019 году O1.IO.

О проекте

tmux, a terminal multiplexer enabling multiple terminals to be created, accessed, and controlled from a single screen

Установить
ansible-galaxy install 0x0I/ansible-role-tmux
Лицензия
Unknown
Загрузки
289
Владелец