TMUX & Tmuxinator
O TMUX permite no terminal utilizar o conceito de janelas e painéis, ou seja em um único terminal do Linux/UNIX poder ter múltiplos terminais lado a lado, como painéis dividindo a tela.
Ou ainda um terminal “por cima” do outro, como janelas, ou seja múltiplos terminais!
Nesta imagem acima, repare que há um terminal a esquerda pronto para executar comandos, ao lado direito está o emacs com um arquivo de código aberto.
Se reparar bem na base da imagem, na parte inferior esquerda bem no início da última linha na tela, há o nome do projeto [cluar]
, seguido pelo nome das “janelas” que estão abertas, no caso: 0:term
, 1:$netuno
, 2:appserver
, 3:appui
e 4:website
.
Em cada uma das janelas é possível ter múltiplos painéis com terminais!
Além de que, caso o meu computador trave ou se for via SSH e perca a conexão com a internet… consigo recuperar todos os terminais, exatamente como estavam.
Isso porque o TMUX funciona a base de sessões, então a minha sessão onde tenho as janelas abertas com os seus múltiplos painéis, que são múltiplos terminais abertos conseguem ser mantidos! E não perco nada, e assim consigo recuperar tudo exatamente como estava.
O Tmuxinator permite pré-configurar o TMUX como as janelas e os painéis de terminal, assim quando inicia uma sessão TMUX fica logo tudo pronto a trabalhar de acordo com a configuração da sessão no Temuxinator.
A grande vantagem é poder recuperar tudo o que estava sendo feito caso o terminal seja terminado.
Instalação
Nas distribuições baseadas em Ubuntu/Debian pode ser feito desta forma:
sudo apt install tmux tmuxinator
Ativar o plugin do TMUXINATOR para o ZSH
Com o plugin do ZSH permite ter comandos de atalho, bem simplificados, para a utilização do TMUXINATOR, o que facilita bastante.
Como instalar o ZSH:
Fonte do plugin do TMUXINATOR para o ZSH:
Para ativar o plugin do Temuxinator edite o seu ~/.zshrc
e procure a linha dos plugins
, e então adicione o tmuxinator
desta forma:
plugins=(git tmuxinator)
Agora basta sair e iniciar novamente a sessão do terminal ZSH para ativar os novos comandos abaixo, que agora sim são reconhecidos pelo sistema.
Novo Projeto
Para criar um novo projeto de teste, execute no terminal:
txn teste
Abre com o editor o arquivo do novo projeto, que encontra-se normalmente em um destes caminhos:
~/.tmuxinator/*.yml
~/.config/tmuxinator/*.yml
No início do arquivo tem a configuração do caminho da pasta raíz do projeto root: ~/
, o que pode ser alterado para a pasta onde contém o seu projeto real.
No fim deste arquivo contém a configuração de janelas (windows) e dos painéis (panes).
Exemplo da minha configuração para os projeto de aplicações web com a plataforma Netuno:
windows: - term: ls - $netuno: - cd ~/netuno - ./netuno server app=teste - appserver: - cd server; emacs - appui: - cd ui; emacs - website: - cd website/src; emacs
Não costumo utilizar painéis por que prefiro trabalhar ocupando a área útil da janela por inteira, ou seja não costumo dividir a tela.
Iniciar a Sessão
Para iniciar a sessão execute no terminal:
txs teste
Mudar de Janela/Terminal
Repare que as janelas são listadas na última linha da tela, com um número a frente, 0:term
, 1:$netuno
, 2:appserver
, 3:appui
e 4:website
.
Assim para mudar mudar de janela basta prescionar o prefixo de comandos do TMUX que é o CTRL+B
seguido do número da janela.
Ou seja pressione a combinação de teclasCTRL+B
, e então deixe de prescionar estas teclas, e a seguir pressione e solte a tecla do número da janela que deseja mudar.
Então resumindo, para mudar para janela 2, será: CTRL+B
2
Recuperar a Sessão
Caso o terminal feche abruptamente, como no caso de haver perda de conexão, feche a janela sem querer, alguma travagem, etc…
É possível recuperar tudo!
Em uma nova sessão de terminal utilize o comando abaixo para listar as sessões abertas:
tmux list-sessions
Para voltar e utilizar a sessão que ficou aberta por baixo dos panos:
tmux attach -t teste
Fechar a Sessão
Para fechar definitivamente a sessão do TMUX e concluir todos os terminais e processos que estavam sendo utilizados, pressione CTRL+B
e depois a tecla :
, agora digite:
kill-session
Repare que escreve na parte inferior da janela do terminal.
Então pressione a tecla ENTER
para concluir definitivamente! Mas caso queira cancelar basta pressionar CTRL+C
.