21 pontos por GN⁺ 16 일 전 | 1 comentários | Compartilhar no WhatsApp
  • Pelo arquivo de configuração ~/.tmux.conf, é possível ajustar livremente atalhos de teclado, cores, barra de status e comportamento do mouse
  • É possível trocar a tecla Prefix padrão C-b por C-a e remapear o Caps Lock para Ctrl para ganhar eficiência na digitação
  • Em vez de " e %, a divisão de janelas pode ser feita de forma mais intuitiva com as teclas | e -, e a tecla r pode recarregar imediatamente o arquivo de configuração
  • A usabilidade melhora com recursos como Alt + setas para alternar painéis, ativação do modo mouse e desativação da renomeação automática das janelas
  • Também é possível montar um tema consistente ao personalizar com precisão elementos visuais como cores, barra de status, mensagens e bordas

Conceitos básicos de personalização do tmux

  • O arquivo de configuração do tmux é o tmux.conf; se for colocado em ~/.tmux.conf, no diretório home do usuário, ele será aplicado como configuração pessoal
    • Se vários usuários forem compartilhar a configuração, ela pode ser colocada em um diretório global do sistema, e o local varia conforme o sistema operacional
    • A localização exata pode ser conferida na descrição da opção -f em man tmux
  • Ao editar o arquivo de configuração, é possível alterar livremente atalhos de teclado, cores, barra de status, comportamento do mouse etc.

Uma tecla Prefix menos incômoda

  • A tecla Prefix padrão C-b pode ser trocada por C-a, que é mais fácil de alcançar
    • C-a pode entrar em conflito com o comando do bash para “ir para o começo da linha”
    • Se a tecla Caps Lock for remapeada para Ctrl, fica mais fácil digitar combinações com o Prefix
  • Exemplo de configuração:
    unbind C-b
    set-option -g prefix C-a
    bind-key C-a send-prefix
    
  • Com C-a C-a, ainda é possível usar o comando original do bash

Comandos mais intuitivos para dividir janelas

  • Em vez das teclas de divisão padrão " e %, use | e -, que são mais intuitivas visualmente
    • | é configurado para divisão horizontal, e - para divisão vertical
    • Os atalhos antigos são removidos
    bind | split-window -h
    bind - split-window -v
    unbind '"'
    unbind %
    

Recarregamento rápido do arquivo de configuração

  • Se você edita o tmux.conf com frequência, pode recarregá-lo imediatamente com um atalho
    • Vincule o comando de reaplicar o arquivo de configuração à tecla r
    bind r source-file ~/.tmux.conf
    

Alternância rápida entre painéis

  • Com Alt (Meta) + setas, é possível mudar de painel sem usar Prefix
    • Alt-Left, Alt-Right, Alt-Up e Alt-Down movem a seleção em cada direção
    bind -n M-Left select-pane -L
    bind -n M-Right select-pane -R
    bind -n M-Up select-pane -U
    bind -n M-Down select-pane -D
    

Ativação do modo mouse

  • É possível selecionar janelas e redimensionar painéis com o mouse
    • Embora o uso centrado no teclado seja o padrão, isso é útil em colaboração
    • Pode ser usado com frequência em pair programming
    set -g mouse on
    

Desativar a renomeação automática das janelas

  • Evita que o nome da janela definido manualmente seja sobrescrito automaticamente ao executar comandos
    set-option -g allow-rename off
    

Mudando a aparência do tmux

  • É possível ajustar em detalhe cores, barra de status, mensagens, bordas de painéis e outros elementos
    • Consulte a seção STYLES para ver várias opções de configuração visual
    • Se usar cores padrão do terminal (red, yellow, black etc.), o resultado tende a combinar naturalmente com o tema
    • No modo de 256 cores, é possível especificar colour0 a colour256
  • O exemplo de configuração inclui os seguintes itens
    • Desativação do alerta sonoro, cor do relógio yellow, estilo do modo de cópia fg=black bg=red bold

    • Cor da borda dos painéis em red, borda do painel ativo em yellow

    • Posição da barra de status em bottom, espaço em branco à esquerda, exibição da hora à direita

    • Estilo da janela atual fg=black bg=red, estilo das janelas normais fg=red bg=black

      • Estilo das mensagens fg=yellow bg=red bold
      • Essas configurações fornecem uma composição de cores consistente e distinção visual clara

Materiais adicionais de referência

  • Vários exemplos de configuração do tmux podem ser encontrados em repositórios tmux.conf ou dotfiles no GitHub
    • Também vale consultar /r/dotfiles e /r/unixporn no Reddit
  • A configuração completa está publicada no repositório GitHub de dotfiles
  • Para estudo mais aprofundado, recomenda-se consultar a página man do tmux e a seção Configuring tmux da wiki do tmux
    • Elas cobrem os recursos mais recentes e todas as opções detalhadas
  • Se quiser desenhar seu próprio tema de cores para terminal, você pode usar o Root Loops(https://rootloops.sh/)
    • Ele oferece suporte para montar uma paleta de cores personalizada para terminal

1 comentários

 
GN⁺ 16 일 전
Comentários do Hacker News
  • Eu usava tmux, mas depois que descobri o Zellij migrei completamente
    A configuração de abas e painéis é muito mais intuitiva, e usar o mouse para rolagem e seleção de texto é prático, então copiar e colar fica fácil

    • Uma coisa que percebi ao ver a página de downloads do Zellij é que seria melhor não usar botões nos links
      Links em botão não permitem copiar com clique direito e também não são bons em termos de acessibilidade
    • A única desvantagem fatal do Zellij é que não dá para copiar/colar na tela usando o teclado, e ele não suporta vários buffers de clipboard
      No tmux eu uso esse recurso a cada 1 ou 2 minutos, mas os desenvolvedores do Zellij dizem para enviar os dados para o editor por pipe, só que isso não é compatível com o clipboard do sistema
      Então no fim voltei para o tmux
    • Do ponto de vista de quem usa equipamento embarcado, o Zellij é grande demais
      O Zellij tem cerca de 50 MB, enquanto o tmux fica em torno de 2 MB mesmo incluindo bibliotecas de dependência, então a diferença de tamanho é grande
    • Nas últimas duas semanas usei o zmx, e embora haja alguns bugs de repintura de tela, ele é bem agradável de usar com o ghostty
    • Eu também fui para o Zellij e depois voltei para o tmux
      O Zellij foi ficando inchado e incômodo, e agora estou bem mais satisfeito montando sessões com tmuxp e mantendo a conexão com autossh
  • Falando de atalhos de teclado, ^a é a tradição do screen e ^b é a do tmux
    Para administradores que lidam com vários sistemas, aprender o mapa de teclas padrão é importante
    Nas minhas configurações pessoais só mudei cores, fundo do painel ativo, relógio com timestamp e ativação do mouse; mantive os atalhos como vieram
    Quando você se acostuma, o padrão acaba sendo mais confortável

  • Abandonei o tmux e fui para o Zellij porque Shift+Enter não funcionava
    Mas o Zellij derrubou processos com um panic crash, então no fim voltei para o tmux
    A solução foi "bind-key -T root S-Enter send-keys C-j", que encontrei nesta issue

    • Eu resolvi com "bind -n S-Enter send-keys Escape '[13;2u'"
      O pi.dev avisa que não há configuração de extended-keys, mas funciona bem
    • Graças a isso encontrei a solução que eu estava procurando
    • Fiquei curioso se é possível o multiplexer morrer enquanto os processos filhos continuam vivos
      No tmux, quando o servidor morre, os processos subordinados também são encerrados, o que sempre achei prático
    • No meu caso Shift+Enter não funciona, mas Option+Enter insere uma nova linha (ambiente MacOS com Claude Code)
    • Se quiser evitar um novo binding, também dá para usar a combinação \ + Enter
  • Descobrir o Control Mode do tmux foi um verdadeiro divisor de águas
    Se você executar tmux -CC no iTerm2, abas, rolagem, copiar/colar, atalhos etc. passam a funcionar de forma nativa do terminal
    As abas ficam visíveis de forma visual, e isso é especialmente útil para iniciantes

    • É por causa desse recurso que eu uso Mac. Em 10 anos, nunca vi um terminal Linux implementar isso
    • Para mim o modo -CC também está funcionando perfeitamente
    • Fiquei curioso se isso funciona também no ghostty
    • Só agora entendi o que o -CC faz
    • Dá até vontade de aplaudir
  • No tmux eu uso troca rápida de janelas com Alt+número
    Ex.: configuração no estilo bind-key -n M-1 select-window -t :1
    Também dá para abrir o modo de cópia estilo vi com Alt-/
    Em ambiente Wayland, uso wl-copy, então posso copiar com arrastar do mouse ou com a tecla y
    Também adicionei um visual estilo Powerline, mas é preciso ter powerline-fonts

  • Personalizei tanto o tmux que, quando entro por ssh em um servidor novo, esqueço como usar o básico
    Agora uso a configuração padrão. Mesmo assim, a configuração de rolagem com mouse eu ainda preciso mudar toda vez

    • Perguntaram se eu mantenho um repositório de dotfiles para gerenciar configurações de tmux, zsh etc.
    • Isso é parecido com a maldição do Emacs. Dá para personalizar infinitamente, mas no fim você acaba criando um ambiente próprio e peculiar
      Um conceito relacionado é The Lisp Curse
    • Eu também passei pelo mesmo problema, mas resolvi sem sobrescrever os padrões, adicionando apenas configurações sem conflito
      Por exemplo, deixei Ctrl-b como está e adicionei Ctrl-space como atalho extra
    • Tive a mesma experiência com o Emacs. Depois que meu disco morreu e perdi minhas configurações personalizadas, voltei quase ao estado padrão
    • A ponto de surgir piada do tipo “Claude, faz um scp da minha configuração do tmux para aquele servidor”
  • Fiquei impressionado com o Control Mode do tmux no iTerm2
    Ele permite controlar janelas de terminal remotas usando o gerenciador de janelas local
    Estou animado porque o ghostty também está implementando esse recurso

  • Muita gente acha estranha a tecla de prefixo padrão do tmux (C-b), mas eu na verdade vejo essa estranheza como uma vantagem
    É muito difícil apertá-la por engano
    Os comandos de divisão também me parecem intuitivos — % parece uma linha horizontal, e " parece uma linha vertical
    Também recarregava a configuração com frequência no começo, mas hoje quase nunca faço isso

    • Eu também gosto da tecla de prefixo padrão
      Se precisar, basta adicionar isto ao .tmux.conf:
      unbind-key -T prefix C-b
      set-option -g prefix C-s
      
      Se você só usar localmente, nem precisa se preocupar com conflitos
  • Eu amo tmux, mas a pegadinha é precisar de um arquivo de configuração de 400 linhas
    Do jeito padrão ele não é muito amigável, mas com bastante ajuste fica realmente excelente
    Você pode consultar meu arquivo de configuração

    • Eu não mudei configuração nenhuma e ainda assim acho perfeitamente utilizável
      Só precisei decorar uns 9 atalhos
    • Deixei meu arquivo de configuração disponível para baixar facilmente com wget ou curl em qualquer lugar
      Também pretendo adicionar uma versão para PowerShell
    • Eu usei a configuração do jcs como referência e copiei só algumas linhas
      Só reverti o binding de prefixo para o original
  • Anos atrás passei um fim de semana lendo o livro “tmux 2: mouse-free productivity”, e foi um dos livros que mais impactaram minha produtividade
    A edição mais recente continua sendo atualizada → tmux 3: productive mouse-free development

    • Só achei uma pena o livro não mencionar o autor original nem a origem do tmux
    • Obrigado pela indicação de uma boa referência