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:
- Suporte a sessões de terminal de longa duração que não desaparecem quando o terminal é fechado.
- Funcionalidade de detach/attach — desconectar-se de uma sessão (Ctrl+\) e retornar a ela mais tarde.
- Múltiplos clientes podem se conectar à mesma sessão simultaneamente.
- Preservação do scrollback e do estado do terminal ao se reconectar.
- Suporte a fluxos de trabalho como shells, editores, builds, sessões SSH e muito mais.
Como ele difere do tmux:
- O zmx não substitui um gerenciador de janelas de terminal.
- Não há gerenciamento de janelas ou painéis — toda a lógica é focada apenas em manter a sessão ativa.
- O layout e o gerenciamento de janelas devem ser tratados pelo seu shell ou gerenciador de janelas.
Instalação
Binários pré-compilados
Baixe o arquivo para a sua plataforma:
- Linux (x86_64 / aarch64)
- macOS (x86_64 / aarch64)
Links do repositório: https://github.com/neurosnap/zmx
Via Homebrew (macOS / Linux)
brew tap neurosnap/tap
brew install zmxCompilando a partir do código-fonte
Requer Zig (v0.15):
git clone https://github.com/neurosnap/zmxcd zmxzig build -Doptimize=ReleaseSafe --prefix ~/.local # certifique-se de que ~/.local/bin esteja no PATHIní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
endzsh:
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 yesIsso é útil se você utiliza muitos terminais na mesma máquina remota.
FAQ
- Q1: Por que usar zmx em vez de tmux?
A: O zmx é uma ferramenta minimalista focada exclusivamente na persistência de sessões, sem janelas ou painéis, o que o torna mais simples e compatível com recursos modernos de terminal.
zmx.sh - Q2: Funciona no Windows?
A: No momento, o zmx oferece suporte oficial apenas para Linux e macOS. O Windows não é suportado.
zmx.sh - Q3: O zmx pode ser usado com programas como vim, neovim ou ferramentas de build?
A: Sim — você pode passar qualquer comando durante o attach, e ele será executado dentro da sessão.
erock-git-zmx.pgs.sh - Q4: O que acontece se uma sessão falhar?
A: Ao se reconectar, o zmx irá restaurar o estado da tela e a saída tanto quanto possível.
zmx.sh
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.