Title: tmux
Author: Viva Calman
Date: 2024-12-04 17:00:19
Correction code: 17333208296905

Совершенно неожиданно открыл для себя tmux.

1.png

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

Основная моя рабочая машина, стоящая в офисе, работает на Debian. И, в общем-то, когда я работаю из офиса, терминальный мультиплексор мне практически не нужен — у меня настроен хоткей, который запускает xterm одним нажатием, настроены хоткеи, которыми я могу раскидать запущенные терминалы по экрану так, как мне нужно в данный момент, поэтому добавлять в эту систему еще один слой, который может разбивать терминал на окна, мне не было большой нужды — новое окошко "стоит дешево" и его контроль не доставляет никаких неудобств — хочешь, развернул на всь экран, хочешь — закинул в угол, хочешь — перекинул на нужный воркплейс, которых так же достаточно, чтобы сгруппировать по ним все задачи

Однако, дома у меня основная система до сих пор Windows 10. Просто потому что я все еще люблю поиграть в видеоигры, но не хочу мучаться с их запуском под Linux. Но так как работать в терминале непосредственно из-под Windows, даже с использованием WSL — контрпродуктивно, я просто коннекчусь на рабочую машину по ssh и работаю с нее, что избавляет меня от необходимости настраивать рабочее окружение еще и на домашнем ПК. Все просто, удобно, и этой схемой я пользуюсь уже много лет.

Но один момент в этой схеме был все таки создавал мне дискомфорт — для подключения по ssh я использую putty, и, хотя оконный менеджер komorebi отчасти решает проблему управления окнами, он все равно не дает той гибкости, которую я имею, используя fvwm.

У меня есть дурная привычка открывать много терминалов, причем, периодически забывая про них, но в Windows это просто приводит к тому, что у меня начинает трещать по швам таскбар, в который перестают умещаться кнопки приложений. Учитывая, что я терпеть не могу, когда кнопки схлопываются в одну "суперкнопку", подобное переполнение наступает очень быстро. Кроме этого мне никак не удавалось укротить быстрое переключение между окнами putty — заголовок окна зачастую оказывался неинформативным, а кликать по всем окнам подряд в поисках нужного, оказывалось долго и раздражающе.

Тут то и пришел на помощь tmux. Оказалось неожиданно удобно держать единственное окно putty с запущеным в нем tmux, и все новые терминалы и разбиение этих терминалов на окна делать через него. Настолько удобно, что я никак не могу понять, почему я не сделал этого раньше (очень избитая фраза, конечно, но тут ей самое место). Также относительно полезной оказалась и та особенность, что tmux сохраняет состояния запущенных в нем терминалов, что позволяет использовать те же сессии коммандной строки и дома и в офисе. Я не слишком часто этим пользуюсь, но в одной из таких сессий у меня запущен emacs с моим простеньким трекером задач на базе org-mode (ничего особенного, просто ежедневный список TODO, которые мне надо по работе сделать), и этот "трекер" оказывается синхронным и дома, и в офисе, без необходимости открывать два терминала с двумя клиентами емакса.

Разумеется, я использую tmux не только в случае коннекта к рабочей машине. Работу с моим домашним сервером я также обернул в терминальный мультиплексор. Тут скорее обратная задача — изредка у меня на работе выдается спокойный момент, который можно потратить на ковыряние на домашнем сервере с целью доведения его до идеала. И вот здесь бесшовное перекидывание состояний терминала между разными ssh-подключениями снова раскрывает свое удобство — я могу начать работать дома, потом с работы зайти в ту же сессию, сделать что-то еще, не переживая о том, что у меня два редактора открыли один и тот же файл.

Для более комфортной работы я немного донастроил tmux под себя. Все эти настройки я честно утащил из интернета и примеров других людей, но они меня вроде бы на данный момент устраивают:

set -g mouse on
bind | split-window -h
bind - split-window -v
unbind '"'
unbind %
bind r source-file ~/.tmux.conf
set-option -g history-limit 5000

Из ключевого тут — включение поддержки мыши (да, да, да, гуру терминала все делают с клавиатуры, но иногда так хочется просто взять и ткнуть мышкой в нужную вкладку), и замена дефолтных кейбиндингов разбиения окна на более интуитивные — вертикальный пайп для вертикального разделения, горизонтальный минус — для горизонтального. Многие еще меняют клавишу-префикс, но меня вполне устраивает дефолтная комбинация Ctrl-B.

Вот так вот, спустя много лет, можно открыть для себя новый софт и внедрить его в свой повседневный рабочий процесс.

^HOME