Tmux – установка и кастомизация + Nord theme
Исходный сайт представленного материала: r4ven.me
Приветствую!
В прошлой заметке📝 мы говорили про терминальные мультиплексоры и какие задачи они выполняют. В сегодняшней статье я продемонстрирую установку и кастомизацию самого популярного инструмента из данной категории – Tmux🪟. Как обычно, уже все выстрадано настроено, и для повторения подобного у вас, необходимо будет выполнить всего несколько команд🧑💻.
Присоединяйтесь к нашему каналу в телеграм: t.me/r4ven_me, уведомления о новых постах приходят туда в день публикации. А если у вас есть вопросы или просто желание пообщаться по тематике – заглядывайте в чат: t.me/r4ven_me_chat.
Демонстрация, приведенная в данной статье выполнялась в среде дистрибутива Linux Mint 22 с Tmux версии 3.4✍️.
Предисловие
Я очень люблю тему Nord❄️ от разработчиков Arcticicestudio⛄️ и предпочитаю оформлять свою систему и приложения в этой палитре😌. Tmux не стал исключением, поэтому для корректного и гармоничного отображения конфигурации, как у меня вам понадобятся:
- Любой моноширный иконочный Powerline шрифт⚡️.
- Например из проекта Nerd fonts. Я предпочитаю шрифт Hack Nerd Font Mono. Шрифт необходимо поместить по пути
/usr/share/fonts/либо отдельно для пользователя в~/.local/share/fonts/и применить его к терминалу. - Любой эмулятор терминал🧑💻, с поддержкой TrueColor и темы Nord.
- Например Gnome-terminal или выпадающий (drop-down) терминал – Guake. По моему опыту, данная тема есть под любой популярный эмулятор терминала;
- (Опционально) Консольный редактор📝 с темой Nord.
- Например Vim/Neovim.
- (Опционально) Интерактивная командная оболочка💻.
- Например Zsh + Oh-My-Zsh с темой agnoster.
Для тех, кто только знакомится с Tmux кратко перечислю его сущности🧐:
- Сессия (session) – основная единица работы, содержащая окна и панели;
- Окно (window) – отдельный терминал в сессии;
- Панель (pane) – разделение окна на несколько терминалов (панелей);
- Команды (command) – инструкции для управления
tmux; - Клавиша префикса (prefix) – клавиша для активации команд (по умолчанию
Ctrl-b); - Состояние (state) – активные и неактивные окна и панели;
- Конфигурация (config) – настройки tmux, например в файле
~/.tmux.confили~/.config/tmux/tmux.conf.
Установка Tmux
Tmux почти всегда есть в стандартных репозиториях, а во многих дистрибутивах Linux он даже предустановлен👌.
Открываем терминал и выполняем:
sudo apt update && sudo apt install -y curl git xclip tmux
curl– утилита для взаимодействия с web (понадобится для скачивания конфига);git– система контроля версий и одноименная утилита для работы с git репозиториями (нужна для установки сторонних плагинов);xclip– утилита управления буфером обмена в desktop системах Xorg, обычно предустановлена (если выполняете установку tmux на системе без gui, то ее можно не устанавливать);tmux– сам терминальный мультиплексор;
Скачивание конфига и запуск
Теперь воспользуемся утилитой curl, чтобы скачать файл конфигурации Tmux с моего GitHub😇 репозитория:
curl --create-dirs -fLo \
~/.config/tmux/tmux.conf \
https://raw.githubusercontent.com/r4ven-me/dots/main/.config/tmux/tmux.confОсталось только запустить Tmux😳. Первый запуск займет некоторое время⏳, т.к. будут скачиваться менеджер плагинов и далее сами плагины с помощью этого менеджера.
Конфигурация построена так, что при добавлении новых плагинов, во время запуска/перезапуска Tmux, они будут устанавливаться автоматически😌. Для установки плагинов вручную используйте prefix+I.Для создания новой именованной сессии воспользуйтесь командой:
tmux new -s Work
new– команда создания новой сессии;-s– ключ для указания имени сессии;Work– произвольное имя сессии.
Должно получиться примерно так:
Все😃 настройка завершена! теперь можно активно пользоваться:
Понравился мой конфиг Neovim? Можете с легкостью создать аналогичный по статье: Neovim – Установка и настройка редактора кода с элементами IDE всего в несколько команд.
А если у вас широкий монитор, то вообще 🔥🔥🔥!
Для выхода из tmux без закрытия сессий отправьте команду dettach специальной горячей клавишей: сперва нажмите сочетание клавиш так называемого префикса, по умолчанию это Ctrl+b, а затем сразу же клавишу d, сокращенно: prefix+d.
Да, такой стиль горячих клавиш у Tmux🤷♂️. Сперва нажимается клавиша prefix, а затем клавиша действия/команды. К такому способу нужно привыкнуть. Клавишу prefix можно изменить в конфигурации. Но делать это не рекомендуется, чтобы сохранить универсальность🫠.
Для возврата к запущенной сессии воспользуйтесь командой:
tmux attach -t Work || tmux new -s Work
attach– команда подключения к запущенной сессии;-t– ключ для указания тега/имени существующей сессии;Work– имя запущенной ранее нами сессии;||– логическое “или” в контексте оболочки, другими словами, параметр контроля выполнения, который запустит следующую за ним команду в случае ошибки предыдущей.
Рекомендую сразу же создать удобный alias для вашей оболочки:
echo 'alias T="tmux attach -t Work || tmux new -s Work"' >> ~/.profile source ~/.profile
Замените ~/.profile на файл с параметрами подготовки вашего окружения оболочки при необходимости☝️.
Теперь подключаться к существующей сессии с именем Work можно просто по команде из одной буквы T.
Описание конфигурации и обзор файла tmux.conf
Что дополняет/изменяет данная конфигурация
- включена поддержка 256 цветов:
screen-256color; - включена поддержка TrueColor для более точного отображения цветов;
- окна нумеруются с 1, а не с 0 (
base-index 1); - панели в окнах тоже нумеруются с 1 (
pane-base-index 1); - лимит буфера истории увеличен до 10,000 строк для прокрутки терминала;
- включена мышь! можно щелкать для выбора окон, прокручивать вывод, изменять размер панелей, менять их местами, также доступен вызов контекстного меню через ПКМ;
- включено автоматическое обновление заголовков окон терминала;
- используются vi-стиль клавиш для работы в режиме копирования (
mode-keys vi) и взаимодействия с командами tmux (status-keys viвызываетсяprefix+:); - установлена Zsh как оболочка по умолчанию (замените на свою, если используется иная);
- установлена локаль
ru_RU.UTF-8, чтобы корректно отображать русские символы.
- Общие действия:
- Если используется X11-сервер при работы с tmux:
- средняя кнопка мыши вставляет текст из системного буфера обмена (используется
xclip); - после выделения текста с помощью мыши копирует текст в буфер обмена без очистки выделения;
- в режиме копирования(!) поддерживается выбор слова/строки по двойному/тройному клику:
- двойной клик ЛКМ: выделяет слово, копирует его в буфер обмена;
- тройной клик ЛКМ: выделяет строку, копирует её в буфер обмена;
- нажатие ЛКМ в режиме копирования отменяет текущее выделение;
- В других средах (если не используется X11):
Немного расширены некоторые сочетания клавиш. Подробнее смотрите далее: Пункт 6. Кастомные горячие клавиши Tmux.
tmux-plugins/tpm– менеджер плагинов для tmux:tmux-plugins/tmux-sensible– устанавливает оптимальные настройки tmux по умолчанию;arcticicestudio/nord-tmux– устанавливает тему Nord для tmux;tmux-plugins/tmux-resurrect– сохраняет состояние сессий (окна, панели, запущенные процессы) и позволяет восстанавливать сессии после перезапуска tmux;tmux-plugins/tmux-continuum– расширение дляtmux-resurrect:
- автоматическая установка tpm при первом запуске и проверка/установка новых плагинов при каждом запуске/перезапуске;
- очистка старых файлов сессий старше 3 дней (в
~/.local/share/tmux/resurrect/); - используется система восстановления для Neovim через механизм сессий.
Содержимое файла tmux.conf
Дабы не делать из статьи полотно, последняя версия tmux.conf также доступна в моем GitHub.
Базовые горячие клавиши Tmux
Ниже представлены частоиспользуемые базовые команды/сочетания клавиш tmux. Если планируете регулярно работать в среде tmux, то настоятельно рекомендую их запомнить🤯.
prefix+c– создать новое окно (на статус панели выглядит, как вкладка);prefix+w– показать список окон;prefix+n– переключиться на следующее окно;prefix+p– переключиться на предыдущее окно;prefix+<номер>– перейти к окну с указанным номером (например,ptefix+1– к первому окну);prefix+,– переименовать текущее окно.
prefix+%– разделить окно на панели вертикально;prefix+"– разделить окно на панели горизонтально;prefix+o– переключиться на следующую панель;prefix+q– показать номера панелей (полезно для выбора);prefix+x– закрыть текущую панель;prefix+z– развернуть текущую панель на весь экран (и вернуть её обратно);prefix+{– переместить панель влево;prefix+}– переместить панель вправо;prefix+!– вынести текущую панель в отдельное окно.
tmux new -s <имя>– создать новую сессию с именем;tmux ls– показать список сессий;tmux attach -t <имя>– подключиться к сессии;prefix+d– отсоединиться от текущей сессии.
prefix+[– войти в режим копирования;- Стрелки или PgUp/PgDn – навигация по истории;
- Пробел – начать выделение текста;
- Enter – скопировать выделенный текст;
- Esc – отмена выделения;
- q – выход из режима копирования;
prefix+]– вставить скопированный текст.
prefix+t– показать часы;prefix+?– показать справку о всех комбинациях клавиш;prefix+s– показать список сессий.
Кастомные горячие клавиши Tmux
Добавленные/измененные команды/клавиши из моего конфига.
Режим копирования и работа с буфером обмена📝:
prefix+v– включает режим копирования (аналогprefix+[);v(в режиме копирования) – начинает выделение текста;Enterиy(в режиме копирования, X11):y(в режиме копирования, не X11):p(в режиме копирования, X11):p(в режиме копирования, не X11):prefix+]иprefix+P(в обычном режиме, X11):prefix+]иprefix+P(в обычном режиме, не X11):
Навигация между панелями (в стиле vi)🎛:
prefix+h– переключиться на панель слева;prefix+j– переключиться на панель снизу;prefix+k– переключиться на панель сверху;prefix+l– переключиться на панель справа.
Изменение размеров панелей (в стиле vi)🎛, клавишу команды можно нажимать многократно:
prefix+H– увеличить панель влево на 2 пикселя;prefix+J– увеличить панель вниз на 2 пикселя;prefix+K– увеличить панель вверх на 2 пикселя;prefix+L– увеличить панель вправо на 2 пикселя.
Сохранение и восстановление среды через tmux-resurrect💾:
prefix+F5:- сохраняет текущее состояние tmux с помощью
tmux-resurrect; - перемещает последнюю сохранённую сессию в файл
~/.local/share/tmux/resurrect/main.txtдля удобства восстановления; - показывает сообщение о ручном сохранении;
prefix+F6:
Послесловие
Фух😮💨. Сегодня в нашем арсенале Linux администратора появился еще один полезный инструмент🧑💻. С его помощью крайне удобно обслуживать системы📺, где нет графики, например на серверах, которые работают 24/7. Единожды запустили все необходимые утилиты и после просто подключаемся к запущенной сессии, с помощью короткого алиаса😌.
Обязательно подписывайтесь на наш телеграм канал✈️, чтобы не пропустить новых публикаций на сайте🌐. А если у вас остались вопросы, то добавляйтесь в Вороний чат: у нас там дружелюбное микросообщество🐧🚶♂️🐧🚶♂️🐧🚶♂️.
Спасибо, что читаете😇. Желаю успехов в освоении новых инструментов, которые упрощают рутину и повышают эффективность💪.