TANSOT

Tmuxinator

15.06.2020 19:21

Tmuxinator jest narzędziem, dzięki któremu możemy szybko i wygodnie odpalić kilka terminali w oczekiwanej konfiguracji. Działa w oparciu o terminalowy menedżer okien tmux — jeśli używaliście tmuxa lub screena (np. w celu utrzymania sesji SSH na zdalnym serwerze), znacie zasady. Jeśli nie, to podstawowe skróty klawiszowe są w miarę łatwe do ogarnięcia, a jeśli dopiszemy linijkę set -g mouse w ~/.tmux.conf możemy także posługiwać się myszą.

Najlepiej zrozumieć działanie tmuxinatora na przykładzie. Ostatnio pracuję nad projektem wymagającym odpalenia dwóch serwerów naraz (jeden serwuje backend a drugi frontend aplikacji), chcę mieć też powłokę na odpalanie testów i obsługę gita. Zamiast odpalać to wszystko ręcznie za każdym razem, używam następującej konfiguracji tmuxinatora:

# ~/.config/tmuxinator/sicktone.yml
name: sicktone
root: ~/work/sicktone

windows:
  - shell:
      layout: even-vertical
      panes:
        - 'clear'
  - services:
      layout: even-vertical
      panes:
        - 'BIND=0.0.0.0 PORT=11000 bin/server'
        - 'npm run dev-server -- --port 11001'

W jednym oknie tmuxa odpalam po prostu powłokę (polecenie clear służy do wyczyszczenia ekranu), a drugie dzielę na dwa panele i w każdym z nich odpalam odpowiedni serwer. Cały ten setup startujemy poleceniem tmuxinator sicktone.

Na asciinema można przyjrzeć się, jak on działa.

Dodatki

Mój .tmux.conf:

set -g mouse
# przydatne przy korzystaniu z vima: wciśnięcie Esc rejestrowane od razu po 50ms
# jest to konieczne, ponieważ kombinacje klawiszy z modyfikatorem Alt są
# wysyłane do terminala przy pomocy kodu klawisza Esc
set -g escape-time 50
set-window-option -g xterm-keys on

# można zmienić sobie kolorki, jeśli domyślne nam nie odpowiadają
# set -g status-bg colour9
# set -g status-fg none

# wolę, gdy okna numerowane są od 1
set -g base-index 1