Tmux – Dividindo o terminal

Alguns anos atrás eu comentei sobre o GNU Screen como uma espécie de gerenciador de janelas para terminal. Usei por todos estes anos, mas com o passar do tempo decidi procurar melhores opções e uma que me chamou a atenção foi o Tmux, um primo mais novo daquele primeiro que trás uma série de benefícios e facilidades.

Dentre os benefícios estão o suporte a uso de mouse, uma barra de status mais informativa, uso de múltiplas “janelas” e “painéis” (estou traduzindo erroneamente o termo “panel” de propósito para simplificar), múltiplos buffers para colar informações, um arquivo de configuração (.tmux.conf) altamente flexivel com opções poderosas para personalizar seu ambiente entre outros, uma linha de comandos similar a do editor “Vi” que permite configurar e personalizar o ambiente durante sua execução e muito mais.

O grande contra ao seu uso é que ele utiliza uma combinação de teclas diferentes do GNU Screen, o que para usuários antigos daquela ferramenta pode ser um esforço a mais, mas que pode ser facilmente superado personalizando as teclas para ficarem idênticas as do “vovô”.

A instalação em sistemas Debian/Ubuntu pode ser feita através dos repositórios oficiais com o comando apt-get e aptitude.

sudo aptitude install tmux

Com a ferramenta instalada a sua chamada pode ser feita simplesmente digitando o nome do comando principal.

tmux

Por padrão o Tmux inicia uma sessão com uma janela contendo apenas um painel. Decore este princípio que é ligeiramente diferente do GNU Screen.

Aqui, no Tmux, chamamos de “panel” (ou painel, como prefiro chamar) o que lá chamavamos de janelas, e as janelas podem conter um ou vários painéis.

A grande vantagem disso é que podemos ter várias janelas na mesma sessão, cada uma com um propósito sem a necessidade de iniciar várias sessões, embora até o uso de sessões no Tmux seja muito mais simples.

Outro conceito importante a se decorar é a combinação de teclas “CTRL-B” que para simplificar chamaremos de PREFIXO. A maioria das ações comuns no Tmux são realizadas através de uma combinações simples de teclas usadas após este prefixo, ou seja, após manter a tecla CTRL pressionada enquanto se tecla B. Futuramente poderemos mudar esta combinação, mas por hora deixe assim até que você se habitue.

Trabalhando com painéis

O conceito mais básico de trabalho com o Tmux é o de dividir o seu terminal em painéis. Cada painel é como um terminal independente com bash, zsh, csh etc onde você poderá executar seus comandos.

Suponhamos que você tenha um editor de textos aberto no seu terminal (com o Tmux já em execução) e queira abrir uma linha de comandos na parte inferior para compilar o arquivo editado, ou para monitorar alguma coisa etc.

A combinação de teclas para adicionar um painel na parte inferior é [PREFIXO] ”

Ou “traduzindo”: Segure a tecla CTRL, tecle B e em seguida tecle “aspas duplas” (dependendo do seu teclado pode ser necessário usar o “SHIFT” para acionar a aspas dupla.

Também é possível adicionar painéis verticalmente , para tanto, ao invés de use %, ou seja: [PREFIXO] %

De nada adiante você ter vários painéis na tela e não poder alternar entre eles então antes que a ansiedade te mate, para navegar entre os vários painéis a combinação é [PREFIXO] o ou ainda se houver muitos painéis e você preferir pode usar [PREFIXO][SETAS] (setas direcionais do teclado) para o lado desejado.

Caso precise fechar um painel [PREFIXO] x poderá ajudar. Será solicitada uma confirmação que deverá ser respondida com “y”.

Se depois de dividir a tela você achou que a distribuição não ficou legal é possível alternar entre os vários layouts disponíveis para reorganizar os painéis apenas teclando várias vezes [PREFIXO][ESPAÇO]

Caso você encontre um layout que te agrade mas precise trocar o conteúdo de um painel para outro use a combinação [PREFIXO] } ou [PREFIXO] { assim o conteúdo será trocado com o painel anterior no caso de “{” ou com o painel seguinte caso use “}”.

Se determinado painel estiver muito largo, estreito, comprido ou curto demais você também poderá ajustar suas dimensões dos painéis usando [PREFIXO][ALT][SETAS] ou [PREFIXO][CTRL][SETAS] a diferença entre CTRL e ALT é que CTRL ajusta em passos de 1 em 1 linha ou de 1 em 1 caracter, enquanto que ALT de 5 em 5 linhas ou 5 em 5 caracteres. O painel será expandido ou reduzido na direção da seta pressionada.

Para encerrar o assunto painel (mas isso não esgota o assunto) há duas ações legais a serem decoradas:

[PREFIX] t – para exibir a hora no painel atual

[PREFIX] z – para dar zoom em um painel (colocá-lo em tela cheia), depois basta teclar novamente para voltar ao seu layout original

Trabalhando com janelas

Vamos considerar o seguinte cenário: Você abriu uma sessão com Tmux, onde abriu um editor de textos para fazer seu trabalho, dividiu a janela em dois painéis deixando uma linha de comandos aberta para testar o resultado das suas edições.

Agora você precisa monitorar 3 arquivos de log ao mesmo tempo porém não quer fazer isso nesta mesma tela para não reduzir demais o seu espaço de trabalho.

Para isso você pode criar uma nova janela e então dividir em 3 painéis, uma para cada arquivo. Na prática você digitaria exatamente isso:

[PREFIXO] c

tail -f /var/log/syslog

[PREFIXO] “

tail -f /var/log/auth.log

[PREFIXO] “

tail -f /var/log/apache/access.log

O único atalho novo ai foi o [PREFIXO] c que cria uma nova janela. O [PREFIXO] ” já foi explicado na seção sobre paineis.

O Com os três painéis abertos você pode usar os comandos já explicados anteriormente para reorganiza-los.

Para alternar entre as janelas é simples use [PREFIXO] “numero”. Onde “número” é o número da janela a ser acessada. Sabendo que a primeira janela é a 0 (zero), esta nova é a 1 (um) e todas as novas seguirão a sequência até o número 9.

Caso você tenha muitas janelas abertas e não saiba qual o número da janela desejada é possível alternar entre as janelas de forma interativa a partir de uma lista teclando [PREFIXO] w e então usando  as setas do teclado para escolher entre elas.

É possível dar nomes as janelas para facilitar a sua identificação. Com a janela desejada ativa use [PREFIXO] , e então informe um novo nome. Repita o mesmo com as demais janelas.

Para encerrar uma janela há duas maneiras, ou você encerra individualmente todos os seus painéis (como já explicado) ou então use [PREFIXO] &, seguido de “y” para confirmar que deseja fechar tudo.

Trabalhando com sessões

Suponhamos que você precise ou queira fechar a sua sessão temporariamente. [PREFIXO] d desconecta a sua sessão, sem fechar nenhum dos programas que estiverem abertos, deixando-os rodar em segundo plano.

Quando você quiser voltar a usar a sessão que já está aberta basta conectar a ela novamente  a partir da linha de comandos:

tmux attach

Isso é útil quando você abre uma sessão em um servidor remoto via ssh por exemplo para executar diversas tarefas e por algum motivo a sua conexão cai, ou acaba a bateria do seu notebook etc. Ainda que você saia os seus programas continuarão em execução e ao voltar todos eles estarão intactos e funcionando como se nada tivesse acontecido.

Observe no entanto a importância de chamar o tmux novamente, com o parâmetro “attach” que informa para que ele conecte-se a uma sessão já em execução.

Caso você não informe este parâmetro uma nova sessão vazia será criada. Neste caso você terá duas sessões do tmux em execução. A sessão anterior com todos os seus programas ativos e a nova que só possui o bash ou seu shell prefiro esperando para você dizer algo.

Para alternar entre as sessões disponíveis no seu sistema de forma interativa use [PREFIXO] s e escolha a lista de sessões. Outra forma de alternar entre sessões é usar [PREFIXO] ( e [PREFIXO] ) que avança ou retrocede na lista de sessões.

Para renomear a sessão e assim facilitar a sua identificação você pode usar [PREFIXO] $ seguido do novo nome.

Caso queira realmente encerrar a sessão, basta fechar todos os painéis e janelas que a sessão será automaticamente encerrada.

Você também pode usar o comando “kill-session” do tmux que não possui uma tecla de atalho, assim como muitos outros, mas isso é assunto para outro post. Até lá.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *