[Referências] Tmux - Servidor de terminais com suporte à multiplexação

osimplex
editado julho 2019 em Tutoriais

Leitura:

O tmux oferece uma proposta cliente/servidor para o terminal mais um gerenciamento de janelas e divisão da tela em multiplas insâncias independentes do shell.

A proposta cliente/servidor consiste em um processo do tmux que vai lidar com todas as sessões (os concentradores de janelas, digamos) que é acessado pelo seu emulador de terminal de preferência que usará um cliente tmux para o acesso.
Dessa maneira se torna possível executar tarefas no terminal de modo mais independente do emulador de terminal, possibilitando aos que trabalham de modo mais ligado ao terminal separar as diferentes tarefas por sessão, por janela e por divisão da tela.

É possível se desligar de uma sessão e retornar à ela sem perder o estado do terminal (o que normalmente ocorre depois de se fechar o emulador de terminal), portanto trocar de sessão dentro de um mesmo emulador de terminal também é possível (uma sessão dedicada à lidar com o sistema, outra para um projeto de desenvolvimento em específico etc).

As janelas vão operar como se fossem as abas do Xfce4-terminal, do Konsole, do Gnome Terminal. As divisões da tela são como as obtidas num Terminator ou num Tilix. Como pode-se constatar na imagem, há dois terminais abertos numa aba.

O Tmux é um excelente recurso com suas funcionalidades "básicas", e oferece outras tantas possibilidades pouco óbvias, mas que podem ser interessantes em cenários específicos, como a possibilidade de enviar o buffer do terminal para o stdout, o que pode ser manipulado num shell script para que se envie o resultado de um comando (útil para tutoriais) ou uma url para a área de transferência (via xclip por exemplo).

Para o uso, os atalhos padrão podem se tornar um problema caso não haja alguma leitura, pois são um pouco diferentes do que se está acostumado. O modo de rolar no buffer (ou histórico de resultados de comandos) do terminal também é diferente, pois ao invés de rolar livremente para cima e para baixo, primeiro deve-se entrar no modo de cópia para então rolar (com o rato habilitado, a rolagem fará entrar automaticamente no modo cópia e rolará para baixo e para cima, mas ainda é diferente).

Para que não se crie situações, leituras sugeridas no topo.
O manual do tmux (man tmux) é excelente, mas é um pouco extenso, pois de fato há muitos recursos no tmux. Lá há uma lista com os atalhos padrão perto do início do manual.

O arquivo de configuração no tmux no diretório do usuário é o .tmux.config. Não custa ler arquivos de configuração de outros usuários para se ver o que fazem.

Um uso interessante é a agregação URxvt + Tmux.
URxvt é um emulador de terminal que pode parecer um bicho de sete cabeças, mas oferece uma boa proposta para uso minimalista do emulador de terminal mais um servidor de emulador de terminal, o urxvtd (é possível iniciá-lo junto com o DE ou o WM, por exemplo, para que depois sejam requisitados janelas, clientes, de emulador de terminal com o urxvtc, o que pode acelerar a inicialização do terminal).
Ligado ao Tmux, é possível conseguir resultados muito bons, desativando algumas coisas do emulador de terminal (que só precisa emular o terminal, o que o torna ainda mais leve) uma vez que fica à cargo do servidor de terminal.