Макросы для tmux

Недавно я обнаружил, что я постоянно создаю в tmux всего два типа рабочих мест:

  • Основная вкладка, разделённая на 4 панели, в одном из которых запущен htop:
  • Вкладка для работы с программным кодом, 3 четверти которой занимает текстовый редактор, а оставшееся место поделено на 2 панели:

Чтобы постоянно не создавать их руками, я решил сделать макросы, автоматически генерирующие такие разбиения терминала. Гугление не дало вариантов, которые меня бы устроили: зачастую люди использовали для подобных задач фреймворк tmuxinator, но мне не хотелось тащить к себе громоздкую зависимость просто для того, чтобы создавать панельки в терминале.

Поэтому я пришёл к более легковесному решению. В репозиторий с дотфайлами добавляются два скрипта:

#!/usr/bin/zsh
tmux split-window -h -c "#{pane_current_path}"
tmux split-window -v -c "#{pane_current_path}"
tmux select-pane -t 0
tmux split-window -v -c "#{pane_current_path}"
tmux select-pane -t 3
tmux send-keys "htop" C-m
tmux select-pane -t 0
#!/usr/bin/zsh
tmux split-window -h -p 25 -c "#{pane_current_path}"
tmux split-window -v -c "#{pane_current_path}"
tmux select-pane -t 0

Как можно увидеть, это просто создание панелей стандартными средствами tmux.

Далее в список алиасов добавляются две строчки:

alias tdef='~/.dotfiles/tmux/default-session.sh'
alias tide='~/.dotfiles/tmux/ide-session.sh'

Теперь при открытии новой вкладки в tmux я могу просто ввести tide и мгновенно получить нужное мне разбиение на панели.