Настройка внешнего вида tmux#
Гибкая система настройки, предоставляемая tmux, позволяет не только настраивать способ взаимодействия с интерфейсом, но также дает возможность настроить его внешний вид, чтобы сделать интерфейс более понятным, а в некоторых случаях и более информативным.
tmux предоставляет довольно много настроек внешнего вида. В этом разделе мы пройдемся по настройкам некоторых из этих параметров, настроим строку состояния и другие компоненты. Что ж начнем с настройки цветов для различных элементов. Затем превратим строку состояния в элемент интерфейса предоставляющий некоторую важную информацию об используемом окружении.
Настройка поддержки цветов#
Чтобы иметь возможность настраивать визуальные эффекты tmux, необходимо убедиться, что и терминал, и tmux настроены на использование 256 цветов.
Команда tput
поможет быстро определить количество цветов, поддерживаемых терминалом.
Введите команду
$ tput colors
Если в результате будет получено 256, значит все настроено как надо.
В противном случае, потребуется настроить терминал для использования режима 256 xterm
.
На Mac можно настроить это в приложение «Terminal», отредактировав профиль, как показано на следующем рисунке:
При использовании (http://www.iterm2.com)[iTerm2], можно сделать это, отредактировав профиль по умолчанию и изменив режим терминала на xterm-256color
, как показано на следующем рисунке:
При использовании Linux, может потребоваться добавить
~/.bashrc
[ -z "$TMUX"] && export TERM=xterm-256color
в файл .bashrc
, чтобы включить 256-цветный режим терминала.
Этот условный оператор гарантирует, что переменная TERM
устанавливается только вне tmux, так как tmux устанавливает свой собственный терминал.
Кроме того, необходимо убедиться, что эмулятор терминала поддерживает отображение символов UTF-8, чтобы визуальные элементы, например, разделители панелей отображались пунктирными линиями.
Чтобы tmux отображал 256 цветов, добавьте эту строку в наш файл .tmux.conf:
# ~/.tmux.conf
# Set the default terminal mode to 256color mode
set -g default-terminal "screen-256color"
Как только будет установлен правильный цветовой режим, будет намного проще использовать такие программы, как Vim, Emacs и другие полноцветные программы с tmux, особенно когда используются более сложные цветовые схемы для подсветки синтаксиса. Следующий рисунок, поможет увидеть разницу.
Определение кодов цветов#
Теперь давайте настроим внешний вид компонентов tmux, начиная с цветовой схемы.
tmux позволяет изменять цвета почти всех частей интерфейса, включая строку состояния, список окон, область сообщений и даже границы панелей.
tmux предоставляет переменные, которые используются для указания цветов:
black
, red
, green
, yellow
, blue
, magenta
, cyan
, или white
.
Также можно использовать обозначения от color0
до color255
для ссылки на конкретные цвета в палитре из 256 цветов.
Чтобы найти коды цветов, достаточно запустить следующий простой сценарий:
for i in {0..255}; do
printf "\x1b[38;5;${i}m${i} "
done
При выполнении данного сценария в терминале отобразятся коды доступных для использования цветов:
tmux имеет определенные параметры конфигурации для изменения цветов текста и фона для каждого из своих компонентов.
Давайте начнем изучать их с настройки цветов строки состояния.
Изменение цветов строки состояния#
Строка состояния по умолчанию имеет черный текст на ярко-зеленом фоне. Это не очень красиво, и в зависимости от конфигурации терминала, может быть трудночитаемым.
Давайте сделаем так, чтобы по умолчанию в строке состояния был белый текст на черном фоне:
Параметр status-style
устанавливает основной цвет элемента (foreground) и цвет фона (background) строки состояния, а также их стиль. Добавим следующую строку в конфигурацию, чтобы установить цвета строки состояния:
# ~/.tmux.conf
# Set the status line's colors
set -g status-style fg=white, bg=black
Опция fg устанавливает основной цвет элементов (foreground), а параметр bg (background) устанавливает цвет фона.
Эта команда поддерживает параметры dim
(тусклый), bright
(яркий) (или bold
(полужирный)), reverse
(обратный), и blink
(мигающий) в дополнение к цветам.
Например, чтобы сделать текст строки состояния белым и полужирным, нужно использовать следующую конфигурацию:
# ~/.tmux.conf
set -g status-style fg=white,bold, bg=black
Продолжим настроить цвета элементов в строке состояния.
Изменение цвета списка окон#
tmux отображает список окон в строке состояния.
Давайте выделим активное окно, оформив его в красный цвет, а неактивные окна — в голубой.
Опция window-status-style
управляет тем, как выглядят обычные окна, а параметр window-status-current-style
управляет тем, как выглядит активное окно.
Для настройки цвета, используется тот же синтаксис, что и для параметра status-style
.
Давайте сделаем имена окон голубыми, как здесь:
# ~/.tmux.conf
# Set the color of the window list
setw -g window-status-style fg=cyan, bg=black
Можно использовать default
, чтобы элемент наследовал цвет строки состояния.
Теперь оформим активное окно с красным фоном и полужирным белым текстом:
# ~/.tmux.conf
# Set colors for the active window
setw -g window-status-current-style fg=white,bold, bg=red
Теперь неактивные окна окрашены в голубой цвет, а активное окно легко узнать:
Изменение внешнего вида панелей#
После того как мы настроили список окон, давайте посмотрим, как можно настроить отображение панелей в окне. Есть несколько вариантов управления внешним видом панелей. Можно управлять цветом разделителей панели, можно определить цвета, чтобы сделать активную панель более заметной, и даже можно «затемнить» неактивные панели.
Панели имеют основной, и фоновый цвета. Основной цвет панели — это пунктирная линия, образующая границу. Цвет фона по умолчанию черный, но если закрасить его, когда панель активна, то можно сделать активную панель значительно заметнее, как показано на следующем рисунке:
Чтобы добавить этот эффект, добавим в свой конфигурационный файл следующие определения:
# ~/.tmux.conf
# Colors for pane borders
setw -g pane-border-style fg=green,bg=black
setw -g pane-active-border-style fg=white,bg=yellow
Наконец, можно для того, чтобы сделать активную панель еще более заметной, изменим основной цвет или цвет фона текущей панели.
Также можно затемнить панели, которые не находятся в фокусе.
Параметры set-window-style
и set-window-active-style
позволяют управлять основным цветом и цветом фона.
Давайте затемним все панели, которые не активны.
Добиться этого можно затемнив все панели, а затем сделав так, чтобы активная панель выглядела нормально.
Добавим эти строки в конфигурацию:
# ~/.tmux.conf
# Active pane normal, other shaded out
setw -g window-style fg=colour240,bg=colour235
setw -g window-active-style fg=white,bg=black
Чтобы создать эффект затемнения, установим цвет текста переднего плана на светло-серый, а затем используем более темный серый цвет для фона. Затем для активной панели используем черный и белый цвета.
После данных настроек определить активную панель станет значительно проще.
Настройка командной строки tmux#
tmux дает возможность настроить командную строку. Подход почти идентичен тому, который применялся к оформлению строки состояния. Давайте изменим цвет фона на черный, а цвет текста на белый. Причем, будем использовать ярко-белый цвет, чтобы сообщение выделялось более подробно. Для этого добавим эти строки в конфигурацию:
# ~/.tmux.conf
# Command / message line
set -g message-style fg=white,bold,bg=black
Настройка элементов строки состояния#
Строка состояния tmux может отображать почти любую необходимую информацию. Причем можно использовать как некоторые предопределенные компоненты, так и создавать свои собственные, например, выполняя системные команды.
Строка состояния состоит из трех компонентов: левой панели, списка окон и правой панели. По умолчанию строка состояния выглядит так:
[0] 0:bash* "dev.bookseer" 22:00 31-янв-24
С левой стороны отображается имя сеанса tmux, за которым следует список окон. Список окон показывает числовой индекс текущего окна и его имя. С правой стороны отображается имя хоста, за которым следуют дата и время. Давайте настроим содержимое строки состояния.
Содержимое левой или правой панелей строки состояния можно изменить, используя комбинацию текста и переменных. В следующей таблице показаны возможные переменные, которые можно использовать.
Таблица 1. Переменные строки состояния
Переменная |
Описание |
---|---|
|
Имя локального хоста |
|
Имя локального хоста без имени домена |
|
Флаг текущего окна |
|
Индекс текущего окна |
|
Текущий индекс панели |
|
Имя текущего сеанса |
|
Текущий заголовок окна |
|
Имя текущего окна |
|
Символ # |
|
Первая строка вывода команды оболочки |
|
Изменение цвета или атрибута |
Например, чтобы слева отображалось только имя текущего сеанса tmux, нужно использовать параметр
set-option -g status-left
со значением #S
, например:
set -g status-left "#S"
Также можно сделать элемент более заметным, используя атрибут для установки основного цвета элемента, например:
set -g status-left "#[fg=green]#S"
Можно добавить столько атрибутов и элементов в строку состояния, сколько необходимо. В качестве примера изменим левую часть строки состояния так, чтобы имя сеанса отображалось зеленым цветом, номер текущего окна — желтым, а текущая панель голубым. Добавьте эту строку в ваш файл конфигурации:
# ~/.tmux.conf
set -g status-left "#[fg=green]#S #[fg=yellow]#I #[fg=cyan]#P"`
Также можно добавить и произвольный текст. Давайте добавим текст, чтобы сделать сеанс, имя окна и панели более заметными, например:
# ~/.tmux.conf
# Status line left side to show Session:window:pane
set -g status-left-length 40
set -g status-left "#[fg=green]Session: #S #[fg=yellow]#I #[fg=cyan]#P"
Заметим, что для того, чтобы весь текст отобразился нормально, был изменен параметр status-left-length
, который увеличивает размер отображаемого текста.
Теперь настроим правую часть строки состояния. Добавим текущую дату и время, например:
# ~/.tmux.conf
# Status line right side - 31-Oct 13:37
set -g status-right "#[fg=cyan]%d %b %R"
Данная настройка отформатирует дату в виде «31 октября 13:37».
При желании, можно отформатировать ее по своему усмотрению, используя стандартный механизм форматирования времени strftime
используемый во многих языках программирования.
Теперь строка состояния должна выглядеть так:
Еще одна мощная возможность — использовать переменную #(shellcommand)
для возврата результата любой внешней программы командной строки в строку состояния.
Поддержание актуальности информации в строке состояния#
После настройки отображения текущего времени и другой динамической информации в строке состояния, нужно сообщить tmux, как часто обновлять эту информацию.
По умолчанию tmux обновляет строку состояния каждые 15 секунд.
За частоту обновления информации строки состояния отвечает параметр set-option
с указанием интервала обновления в секундах, например:
# ~/.tmux.conf
# Update the status line every sixty seconds
set -g status-interval 60
Такая настройка будет обновлять строку состояния каждые 60 секунд. Следует иметь в виду, что при запуске команд оболочки, они будут выполняться каждый интервал, поэтому нужно быть осторожнее чтобы не загрузить слишком много ресурсоемких сценариев.
Центрирование окон списка#
По умолчанию список окон выровнен по левому краю, но можно разместить его по центру строки состояния с помощью изменения конфигурации:
# ~/.tmux.conf
# Center the window list in the status line
set -g status-justify centre
Теперь список окон отображается по центру:
По мере создания новых окон список окон будет смещаться, оставаясь в центре строки состояния.
Идентификация активности в других окнах#
Когда пользователь работает с более чем одним окном, ему нужно получать уведомления, когда что-то происходит в одном из других окон сеансе, чтобы можно было отреагировать на происходящие события. Сделать это можно, добавив визуальные уведомления, например, так:
# ~/.tmux.conf
# Enable activity alerts
setw -g monitor-activity on
set -g visual-activity on
Команда monitor-activity on
выделяет имя окна в строке состояния, когда в этом окне есть активность.
visual-actyvity on
указывает tmux также отображать сообщение в строке состояния.
Теперь, когда в одном из окон есть какая-то активность, оно будет выделяться голубым фоном, как на изображении:
Если переключиться на это окно, цвета вернутся к норме.
Для настройки цветов можно использовать команду
setw -g window-status-activity-style
.
Команды для управления внешним видом tmux#
Команда |
Описание |
---|---|
|
Устанавливает основной цвет и цвет фона строки состояния. Кроме того, поддерживает параметры |
|
Устанавливает основной цвет и цвет фона списка окон в строке состояния. Использует те же параметры, что и |
|
Устанавливает основной цвет и цвет фона активного окна в строке состояния. Использует те же параметры, что и |
|
Устанавливает основной цвет и цвет фона окна с фоновой активностью в строке состояния. Использует те же параметры, что и |
|
Задает основной цвет и цвет фона границ панели. Использует те же параметры, что и |
|
Устанавливает основной цвет и цвет фона границ активной панели. Использует те же параметры, что и |
|
Устанавливает основной цвет и цвет фона окна. Использует те же параметры, что и |
|
Устанавливает основной цвет и цвет фона активного окна. Использует те же параметры, что и |
|
Устанавливает основной цвет и цвет фона области сообщений и командной строки tmux. Использует те же параметры, что и |
|
Управляет количеством видимых символов слева и справа в строке состояния. |
|
Настраивает элементы, которые отображаются в левой и правой частях строки состояния. |
|
Определяет интервал обновления для строки состояния, где n — количество секунд между обновлениями. |
|
Центрирует список окон в строке состояния. |
|
Ищет активность в других окнах и выделяет имя окна с фоновой активностью. |
|
Отображает сообщение в области сообщений при наличии активности в другом окне. |