[Tutorial] Como usar o tmux
Isto não é um guia definitivo, apenas a apresentação da ferramenta. Meu objetivo é mostrar alguns conceitos e como utiliza-la.
Você conhece o tmux?
Para quem não conhece, o tmux é um multiplexador de terminal, um nome chique para dizer que você cosegue gerenciar múltiplos terminais em um único terminal. Na prática, é possível ter vários terminais espalhados em janelas e painéis.
Instalando o tmux
O guia abaixo é para o sistema operacional Ubuntu, mas é totalmente possível fazer as devidas alterações para funcionar no seu sistema operacional.
O tmux depende de duas bibliotecas:
- libevent;
- ncurses.
Vamos instalar suas dependências.
libevent
Antes de instalar, verifique se a biblioteca já está instalada no seu sistema operacional:
dpkg -l | grep libevent
Se já estiver instalada, podemos pular esta etapa, senão devemos instalar.
Faça o download da ferramenta no site oficial e siga os comandos abaixo:
# Não é necessário se o download já foi feito
wget https://github.com/libevent/libevent/releases/download/release-2.1.12-stable/libevent-2.1.12-stable.tar.gz
tar zxvf libevent-2.1.12-stable.tar.gz
cd libevent-2.1.12-stable
./configure
make
sudo make install
Biblioteca libevent instalada.
ncurses
Igualmente à biblioteca libevent, devemos verificar se o ncurses já está instalado:
dpkg -l | grep ncurses
Podemos pular esta etapa se já estiver instalado.
Faça o download da ferramenta no site oficial e siga os comandos abaixo:
# Não é necessário se o download já foi feito
wget https://invisible-island.net/datafiles/release/ncurses.tar.gz
tar zxvf ncurses.tar.gz
cd ncurses-6.3
./configure
make
sudo make install
ncurses instalado!
Instalando, de fato, o tmux
Faça o download da ferramenta no site oficial e siga as instruções abaixo:
# Não é necessário se o download já foi feito
wget https://github.com/tmux/tmux/releases/download/3.4/tmux-3.4.tar.gz
tar zxvf tmux-3.4.tar.gz
cd tmux-3.4
./configure
make
sudo make install
Outra maneira para instalar
Além dessa maneira, poderíamos simplesmente executar:
sudo apt install tmux
Esse comando já instala suas dependências.
Cores
Talvez, o tmux não exiba as cores corretamente em seu terminal. Por conta disso, crie um arquivo chamado .tmux.conf no seu diretório home e inclua esta linha:
set -s default-terminal 'tmux-256color'
Como o tmux funciona?
Existem vários conceitos em volta da ferramenta: servidor, cliente, sessões, janelas, painéis e muitos outros. Consulte a documentação oficial para conhecer cada componente em detalhes.
Visão geral
Com o terminal aberto execute:
tmux
O comando anterior cria uma sessão onde podemos multiplexar nossos terminais, também, uma janela já é criada e entramos nela automaticamente.
Pressione, Ctrl + b e % (Ctrl e b ao mesmo tempo, solte e depois aperte shift e 5, ao mesmo tempo). Assim criamos um novo painel no sentido horizontal na janela corrente.
Ctrl + b é chamada de tecla de prefixo, e Ctrl + b é a padrão.
Há uma notação para descrever esses comandos a partir do ctrl, veja:
Ao invés de escrever Ctrl + b e %, podemos escrever C-b %.
Agora podemos executar C-b " para criar um painel no sentido vertical.
Agora temos três painéis na nossa janela:
Para navegar entre os painéis podemos utilizar as setas direcionais do teclado: C-b Seta correspondente ou C-b q Índice do painel
Ao executar C-b q os índices são exibidos em cada painel:
Podemos criar vários outros painéis dentro de uma mesma janela, mas pode ser pouco prático ter muitos painéis em uma só janela, pois queremos dar contexto às janelas: uma janela para os servidores, uma janela para visualizarmos algum arquivo, outra janela para monitorar alguma coisa e por aí vai.
Mais janelas
Podemos criar mais janelas para atender essa necessidade, basta executar C-b c e então uma nova janela será criada. E partir dessa nova janela podemos criar nossos novos painéis.
Redimensionando painéis
Podemos aumentar ou diminuir o tamanho dos paineis: C-b C-Seta direcional ou C-b M-Seta direcional. O prefixo M quer dizer alt. Redimensionar com ctrl altera de 1 em 1 linha/coluna, com alt altera de 5 em 5 colunas/linhas.
Nomeando sessões e painéis
Basta executar C-b $ para renomear a sessão e C-b , para renomear a janela.
Scripts
Suponha que você sempre configura seu ambiente de desenvolvimento no tmux, sobe um servidor e abre a sua IDE. É totalmente possível criar um script para isso, dessa forma, não será mais necessário ter que criar painéis, criar janelas e executar comandos em cada painel. Veja um exemplo de um dos meus shell script:
#!/bin/env bash
cd ~/dev/git/learn-laravel/udemy/learning
# Pane 0
tmux new-session -d -s learn-laravel
tmux rename-window server
tmux send-keys 'php8.2 artisan serve --host=0.0.0.0 --port=8080' C-m
# Pane 1
tmux split-window -h
tmux new-window -n phpstorm
tmux send-keys 'phpstorm.sh .' C-m
tmux select-window -t learn-laravel:0
tmux select-pane -t learn-laravel:0.1
tmux attach-session -t learn-laravel
Para conhecer os mais sobre os comandos do tmux recomendo fortemente consultar a documentação oficial, como já citada anteriormente.
Cheatsheet
Há um gist que contém alguns macetes sobre os comandos do tmux, também recomendo darem uma olhada nele.
Agradecimentos
Agradeço desde já pela atenção.
Ainda não sei tudo sobre o tmux, venho melhorando minha familiaridade com a ferramenta a cada dia. Sem dúvida alguma minha produtividade aumentou após conhecê-la, e por isso eu recomendo ela a quem não conhece.
Quem tiver alguma dica sobre a ferramenta, por favor, compartilhe nos comentários. Ficarei feliz em aprender mais.