14.12.2025

zmx - salvamento de sessões de terminal no Linux e macOS

zmx é uma ferramenta leve para persistência de sessões de processos no terminal. Ela permite executar processos no terminal (shells, editores, builds, etc.), se desconectar deles e se reconectar posteriormente sem perder entrada/saída ou o estado do terminal. Diferente do tmux ou screen, o zmx não oferece janelas, abas, painéis ou um gerenciador de janelas — apenas funcionalidades de attach/detach e restauração do estado do terminal.
zmx.sh

Para que o zmx é usado

Principais finalidades:

Como ele difere do tmux:

Instalação

Binários pré-compilados

Baixe o arquivo para a sua plataforma:

  1. Linux (x86_64 / aarch64)
  2. macOS (x86_64 / aarch64)

Links do repositório: https://github.com/neurosnap/zmx

Via Homebrew (macOS / Linux)

brew tap neurosnap/tap
brew install zmx

Compilando a partir do código-fonte

Requer Zig (v0.15):

git clone https://github.com/neurosnap/zmx
cd zmx
zig build -Doptimize=ReleaseSafe --prefix ~/.local # certifique-se de que ~/.local/bin esteja no PATH

Início rápido — comando e saída

Após a instalação, o seguinte comando fica disponível:

zmx <command> [args]

Principais comandos

Comando Descrição
zmx attach <name> Cria uma nova sessão com o nome especificado ou se conecta a uma sessão existente
zmx attach <name> <command> Conecta-se a uma sessão e executa o comando especificado dentro dela
zmx detach
Ctrl + \
Desconecta o terminal atual da sessão sem interromper os processos em execução
zmx list Exibe a lista de todas as sessões zmx ativas
zmx kill <name> Encerra forçadamente a sessão especificada
zmx help Mostra a ajuda com os comandos disponíveis
zmx version Exibe a versão instalada do zmx

Configuração do shell

Para ver que você está dentro de uma sessão zmx, é possível adicionar o nome da sessão ao prompt:

fish:

functions -c fish_prompt _original_fish_prompt
function fish_prompt
if set -q ZMX_SESSION
echo -n "[$ZMX_SESSION] "
end
_original_fish_prompt
end

zsh:

BASE_PROMPT=$PS1
PROMPT="${ZMX_SESSION:+[$ZMX_SESSION]} $BASE_PROMPT"

Usando zmx com SSH

O zmx funciona muito bem sobre SSH: você pode configurar um RemoteCommand para se conectar automaticamente à sessão apropriada ao estabelecer a conexão. Por exemplo:

Host dev.*
RemoteCommand zmx attach %k
RequestTTY yes

Isso é útil se você utiliza muitos terminais na mesma máquina remota.

FAQ

Conclusão

zmx é uma ferramenta prática para desenvolvedores que desejam preservar sessões de terminal entre reconexões sem introduzir a complexidade de multiplexadores de terminal completos. Ela permite manter processos de longa duração ativos enquanto você continua usando seu emulador de terminal e gerenciador de janelas da forma que preferir, em vez de substituí-los por mais uma camada de gerenciamento de janelas e painéis.

Na prática, o zmx funciona especialmente bem para builds longos, suítes de testes e tarefas de processamento de dados, onde o fechamento acidental do terminal ou a perda da conexão SSH interromperiam o trabalho. Quando usado com SSH, ele pode simplificar significativamente fluxos de trabalho remotos ao se reconectar automaticamente à mesma sessão. Executar editores como Vim ou Neovim dentro de uma sessão zmx ajuda a evitar a perda de contexto ou progresso devido a problemas de rede, enquanto organizar sessões por nome de projeto mantém o fluxo de trabalho previsível e fácil de gerenciar.

De modo geral, o zmx é uma excelente escolha para fluxos de trabalho que exigem persistência confiável de sessões, mas não se beneficiam da sobrecarga dos multiplexadores de terminal tradicionais, sendo ideal para usuários que valorizam simplicidade, estabilidade e controle.