O terminal fecha, o trabalho desaparece. Ou não.
Já te aconteceu estares a meio de uma tarefa no terminal, um ssh para um servidor remoto, um processo longo a compilar, e o terminal fechar por acidente? No macOS, um Cmd+Q no sítio errado e és obrigado a recomeçar tudo.
O tmux resolve isso. É um multiplexador de terminais: mantém sessões vivas mesmo depois de fechares o terminal, deixa-te dividir o ecrã em painéis e ter várias janelas dentro da mesma janela. O nome vem de “Terminal MUltipleXer”, foi criado por Nicholas Marriott em 2007 como alternativa ao GNU Screen, e a versão atual é a 3.7, lançada a 26 de Junho de 2026.
Neste guia vais aprender:
- Instalar o tmux no macOS com Homebrew
- Navegar entre janelas e painéis
- Configurar o tmux com
~/.tmux.conf - Integrar com o clipboard do macOS
- Usar plugins para restaurar sessões entre reboots
- Dicas específicas para macOS (iTerm2, WezTerm, true color)
⬆ Sessão tmux com painéis divididos, múltiplas janelas e status bar personalizada
O que é o tmux e porque precisas dele
O tmux é um gestor de janelas para o teu terminal. Em vez de abrires 10 janelas do Terminal.app ou do iTerm2, abres uma sessão tmux e geres tudo lá dentro.
O que ele faz de diferente:
- Sessões persistentes. Destacas a sessão (
detach), fechas o terminal, voltas mais tarde, e tudo está onde deixaste. - Múltiplas janelas. Uma para o editor, outra para o servidor, outra para comandos avulsos.
- Painéis divididos. Vês o código, os logs e a shell ao mesmo tempo no mesmo ecrã.
- Histórico de scroll. Podes fazer scroll para trás e configurar o tamanho do histórico.
Se usas SSH diariamente, vale a pena. Se a ligação cai, a sessão continua ativa no servidor.
Instalação no macOS
O método mais simples é com o Homebrew. Se ainda não tens o Homebrew instalado:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Depois, instala o tmux:
brew install tmux
Verifica que ficou bem instalado:
tmux -V
Deve devolver algo como tmux 3.7 (ou superior, consoante quando lês isto).
Se preferires compilar a partir do código fonte:
# Pré-requisitos (Xcode Command Line Tools)
xcode-select --install
# Dependências (libevent, ncurses)
brew install libevent ncurses
# Compilar tmux
git clone https://github.com/tmux/tmux.git
cd tmux
sh autogen.sh
./configure && make
sudo make install
O brew install tmux serve para 99% dos casos. Se precisas de uma versão específica ou queres algo mais recente que o brew tem, compila.
Primeiros passos
Abre o terminal e corre:
tmux
O ecrã muda. Vês uma barra verde no fundo com o nome da sessão. Entraste no tmux.
Toda a interação com o tmux passa por uma combinação de teclas chamada prefixo. Por omissão, é Ctrl+b. Primeiro carregas no prefixo, depois na tecla do comando.
Destacar e religar sessões
O truque mais básico:
- Destacar (detach):
Ctrl+be depoisd - Voltas ao terminal normal. O tmux continua a correr em segundo plano.
- Listar sessões ativas:
tmux ls - Religar:
tmux attach -t 0(outmux attachse só houver uma)
# Criar sessão
tmux
# Destacar (Ctrl+b d)
# Listar sessões
tmux ls
# Religar à sessão 0
tmux attach -t 0
Decora estes comandos primeiro. O resto é extra.
Gestão de janelas e painéis
Janelas (Windows)
Pensa em janelas como separadores (tabs) do terminal:
| Comando | Ação |
|---|---|
Ctrl+b c |
Criar nova janela |
Ctrl+b 0 a 9 |
Ir para a janela N |
Ctrl+b p / Ctrl+b n |
Janela anterior / próxima |
Ctrl+b w |
Lista interativa de janelas |
Ctrl+b , |
Renomear janela atual |
Ctrl+b & |
Fechar janela (com confirmação) |
Painéis (Panes)
Os painéis dividem uma janela em várias áreas:
| Comando | Ação |
|---|---|
Ctrl+b " |
Dividir horizontalmente (em cima/baixo) |
Ctrl+b % |
Dividir verticalmente (esquerda/direita) |
Ctrl+b setas |
Navegar entre painéis |
Ctrl+b o |
Rodar entre painéis |
Ctrl+b x |
Fechar painel |
Ctrl+b z |
Zoom (maximizar/minimizar painel) |
Ctrl+b Ctrl+setas |
Redimensionar painel (1 linha) |
Ctrl+b Alt+setas |
Redimensionar painel (5 linhas) |
O Ctrl+b z (zoom) é útil: maximizas um painel para ecrã inteiro para trabalhar, carregas outra vez e volta ao layout anterior.
Sessões nomeadas
Trabalhar com sessões sem nome funciona. Mas quando tens vários projetos abertos, as sessões nomeadas são mais práticas:
# Criar sessão com nome
tmux new -s trabalho
# Criar sessão num diretório específico
tmux new -s dev -c ~/projetos/meu-site
# Listar sessões com nome
tmux ls
# Religar sessão específica
tmux attach -t trabalho
# Matar sessão (estando fora)
tmux kill-session -t dev
Dentro do tmux, também podes mudar de sessão:
Ctrl+b slista interativa de sessõesCtrl+b (ou)sessão anterior / próximaCtrl+b $renomear sessão atual
O meu workflow: uma sessão para cada projeto. tmux new -s blog, tmux new -s api, tmux new -s sysadmin. Cada uma com as suas janelas e painéis.
Configuração (~/.tmux.conf)
O tmux é configurável pelo ficheiro ~/.tmux.conf. É lido quando o tmux arranca.
Aqui está uma configuração para macOS:
# ─── Mouse ──────────────────────────────────────────────
set -g mouse on
# ─── Histórico ──────────────────────────────────────────
set -g history-limit 10000
# ─── Cores ──────────────────────────────────────────────
set -g default-terminal "tmux-256color"
set -ga terminal-overrides ",xterm-256color:Tc"
# ─── Indexação a partir de 1 ────────────────────────────
set -g base-index 1
setw -g pane-base-index 1
# ─── Recarregar config ──────────────────────────────────
bind r source-file ~/.tmux.conf \; display-message "Config recarregada"
# ─── Atalhos para dividir painéis ───────────────────────
bind | split-window -h
bind - split-window -v
# ─── Última janela ──────────────────────────────────────
bind Tab last-window
# ─── Redimensionamento rápido ───────────────────────────
bind -r j resize-pane -D 5
bind -r k resize-pane -U 5
bind -r h resize-pane -L 5
bind -r l resize-pane -R 5
# ─── Copiar para clipboard do macOS ─────────────────────
bind -T copy-mode-vi y send -X copy-pipe-and-cancel "pbcopy"
bind -T copy-mode-vi Enter send -X copy-pipe-and-cancel "pbcopy"
# ─── Status bar ─────────────────────────────────────────
set -g status-bg colour235
set -g status-fg colour15
set -g status-left '#[fg=colour46] #S '
set -g status-right '#[fg=colour33] %d/%m %H:%M '
set -g window-status-current-style fg=colour46,bg=colour237
Explicação das secções:
- Mouse. Ativa o clique para selecionar janelas e redimensionar painéis com o rato. Útil para quem vem de GUIs.
- Histórico. 10 mil linhas de buffer. Chega para a maioria dos usos.
- Cores.
tmux-256colore a flagTcativam true color no terminal. No macOS o Terminal.app e o iTerm2 suportam true color, mas o tmux precisa de saber disso. - Indexação. O tmux começa a contar nas janelas e painéis a partir de 0 (herança do Screen). Mudar para 1 é mais natural.
- Atalhos.
bind |faz split vertical,bind -faz split horizontal. Mais fácil que decorarCtrl+b "eCtrl+b %. - Redimensionamento.
Ctrl+b h/j/k/lpara redimensionar painéis 5 linhas de cada vez. A flag-rpermite repetir sem carregar no prefixo outra vez. - Clipboard. Integração com
pbcopydo macOS. - Status bar. Nome da sessão a verde, data e hora à direita.
A flag Tc no macOS
A linha set -ga terminal-overrides ",xterm-256color:Tc" faz diferença no macOS. Sem ela, as cores verdadeiras (16 milhões de cores) são reduzidas a 256 cores. Com ela, o terminal dentro do tmux reconhece true color. Se usas temas como Tokyo Night, Catppuccin ou gruvbox, notas logo a diferença.
Recarregar a configuração
Depois de editares o ~/.tmux.conf, não precisas de reiniciar o tmux:
# Dentro do tmux: Ctrl+b e depois r
# Ou na shell:
tmux source-file ~/.tmux.conf
Preferes um prefixo diferente?
Muita gente acha Ctrl+b estranho e prefere Ctrl+a (como no GNU Screen). Se for o teu caso, descomenta isto no ficheiro:
set -g prefix C-a
unbind C-b
Integração com clipboard do macOS
No Linux, o tmux comunica com o clipboard através do xclip ou wl-copy. No macOS, usamos o pbcopy.
Com esta configuração no ~/.tmux.conf:
bind -T copy-mode-vi y send -X copy-pipe-and-cancel "pbcopy"
bind -T copy-mode-vi Enter send -X copy-pipe-and-cancel "pbcopy"
Dentro do tmux, entras em modo de cópia (Ctrl+b [), selecionas texto com o rato (se o mouse estiver ativo) ou com v (modo vi), e carregas em y para copiar. O texto vai para o clipboard do macOS e podes colar noutra aplicação com Cmd+V.
O pbcopy e pbpaste também funcionam na shell:
# Copiar output de um comando para o clipboard
cat log.txt | pbcopy
# Colar do clipboard para um ficheiro
pbpaste > notas.txt
Modo de cópia e scroll
No tmux, o scroll normal do rato não funciona como esperas. Para fazeres scroll para trás, há duas formas:
- Com rato ativo (
set -g mouse on). Podes usar a roda do rato ou o trackpad para scroll. Funciona bem no iTerm2. - Modo de cópia.
Ctrl+b [para entrar, depois usas as setas ouPgUp/PgDown. Carregasqpara sair.
Se ativares o modo vi no ~/.tmux.conf:
setw -g mode-keys vi
No modo de cópia podes usar j/k para cima/baixo, v para seleção visual, y para copiar.
Plugins (opcionais)
O tmux tem plugins geridos pelo tpm (Tmux Plugin Manager). Instala-o:
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
Depois, no ~/.tmux.conf, adiciona:
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'
run '~/.tmux/plugins/tpm/tpm'
Carrega com Ctrl+b r e instala com Ctrl+b I (I maiúsculo).
tmux-resurrect
Guarda o estado completo das sessões num ficheiro. Permite restaurar tudo depois de um reboot:
- Guardar:
Ctrl+b Ctrl+s - Restaurar:
Ctrl+b Ctrl+r
tmux-continuum
Automatiza o resurrect. Guarda o estado de 15 em 15 minutos. Com set -g @continuum-restore ''on'', o tmux restaura a sessão automaticamente quando arranca.
Fechas o portátil, abres no dia seguinte, e está tudo onde deixaste. Janelas abertas, diretórios ativos, histórico de comandos.
Dicas específicas para macOS
iTerm2 vs Terminal.app vs WezTerm
O Terminal.app de stock no macOS funciona com o tmux, mas tem limitações:
- Suporte limitado a 256 cores (true color é instável)
- O reporte de cores (OSC 4) não funciona bem
- A renderização é mais lenta
Recomendação: usa o iTerm2. É grátis, open-source, e tem suporte nativo a tmux com “tmux Integration”. Cada janela do tmux aparece como um separador nativo do iTerm2.
Configura no iTerm2: Preferences > Profiles > Terminal > “Declare terminal as:” escolhe xterm-256color.
Outra alternativa é o WezTerm, um terminal em Rust com suporte a true color, ligaduras de fontes, e configuração em Lua. É mais rápido que o iTerm2 e mais configurável, mas a configuração em Lua pode ser um entrave se só queres algo que funcione logo.
Opção Alt/Meta
No macOS, a tecla Option pode ser usada como Meta. No iTerm2:
Preferences > Profiles > Keys > “Left Option key” escolhe Esc+. No Terminal.app: Preferences > Settings > Profile > Keyboard ativa “Use Option as Meta key”.
Isto é necessário para atalhos como Alt+setas no redimensionamento de painéis.
Notificações
Para seres notificado quando um comando longo termina:
comando_longo; tmux display-message "Terminou!"
Conclusão
O tmux resolve um problema específico: não perder o estado do terminal quando fechas a janela ou perdes uma ligação SSH. Para quem trabalha com servidores remotos ou desenvolvimento, isto faz diferença.
O meu workflow diário:
tmux new -s blogno diretório do projeto- Janela 1:
nvim(editor, com painéis divididos) - Janela 2: servidor de desenvolvimento (
npm run dev) - Janela 3: git, comandos avulsos, logs
- No fim do dia:
Ctrl+b dpara destacar, fechar o portátil - No dia seguinte:
tmux attache tudo está no sítio
Se usas SSH para servidores remotos, o tmux é quase obrigatório. Perdes a ligação? A sessão continua. Ligas outra vez, tmux attach, e continuas onde paraste.
Comentários (0)
Nenhum comentário ainda. Seja o primeiro!
Deixar comentário