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)

Terminal multiplexado com tmux em ação

⬆ 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+b e depois d
  • Voltas ao terminal normal. O tmux continua a correr em segundo plano.
  • Listar sessões ativas: tmux ls
  • Religar: tmux attach -t 0 (ou tmux attach se 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 s lista interativa de sessões
  • Ctrl+b ( ou ) sessão anterior / próxima
  • Ctrl+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-256color e a flag Tc ativam 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 decorar Ctrl+b " e Ctrl+b %.
  • Redimensionamento. Ctrl+b h/j/k/l para redimensionar painéis 5 linhas de cada vez. A flag -r permite repetir sem carregar no prefixo outra vez.
  • Clipboard. Integração com pbcopy do 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:

  1. Com rato ativo (set -g mouse on). Podes usar a roda do rato ou o trackpad para scroll. Funciona bem no iTerm2.
  2. Modo de cópia. Ctrl+b [ para entrar, depois usas as setas ou PgUp/PgDown. Carregas q para 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:

  1. tmux new -s blog no diretório do projeto
  2. Janela 1: nvim (editor, com painéis divididos)
  3. Janela 2: servidor de desenvolvimento (npm run dev)
  4. Janela 3: git, comandos avulsos, logs
  5. No fim do dia: Ctrl+b d para destacar, fechar o portátil
  6. No dia seguinte: tmux attach e 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.


Recursos adicionais

Comentários (0)

Nenhum comentário ainda. Seja o primeiro!

Deixar comentário