tmux: Migrando de 2.3.* para 3.*

Olá!

Há poucos dias atrás, atualizei a versão do Linux Mint no meu computador pessoal de 19 para 20, e fiquei feliz que nessa atualização a versão oferecida por padrão tanto do tmux como do tmate são bem mais recentes do que eu estava usando:

~ apt-cache show tmux

# Entre várias informações úteis, olha a versão logo ali:
Package: tmux
Architecture: amd64
Version: 3.0a-2

~ apt-cache show tmate

# E a versão do tmate também:
Package: tmate
Architecture: amd64
Version: 2.4.0-1

Quando terminei de instalar os meus dotfiles, notei que alguma mudança ocorreu entre as versões de tmux que eu usava e a recém instalada. Logo ao abrir o programa, notei que a configuração não foi carregada corretamente e que havia uma sequência de mensagens:

# Omiti o caminho completo do arquivo por motivos óbvios ;)
.tmux.conf:120: invalid option: message-bg
.tmux.conf:121: invalid option: message-fg
.tmux.conf:122: invalid option: message-command-fg
.tmux.conf:123: invalid option: message-command-bg
.tmux.conf:125: invalid option: pane-border-fg
.tmux.conf:126: invalid option: pane-active-border-fg
.tmux.conf:130: invalid option: mode-bg
.tmux.conf:131: invalid option: mode-fg
.tmux.conf:133: invalid option: window-status-current-bg
.tmux.conf:134: invalid option: window-status-current-fg
.tmux.conf:135: invalid option: window-status-current-attr
.tmux.conf:138: invalid option: window-status-bg

Ficou claro que a compatibilidade mudou, o que era esperado dado a mudança do número de versão _maior_ou major (veja Versionamento Semântico para entender o que significa uma versão maior). Fui então ver o que mudou e o que fazer, e achei a resposta rápida em uma issue aberta no repositório oficial do tmux no GitHub. A issue se refere à mesma quebra de mudança que encontrei e que está descrita no CHANGELOG da seguinte forma:

* The individual -fg, -bg and -attr options have been removed; they were superseded by -style options in tmux 1.9.

Esse trecho ali não ficou muito claro, mas um comentário na mesma issue que citei me ajudou a entender melhor o que exatamente havia mudado:

The form is exactly the same, it is just one option instead of three:

set -g mode-style bg=red,fg=green,blink

O que isso quer dizer? Basicamente o seguinte:

As opções usadas na configuração que terminam em -fg, -bg e -attr não existem mais. Essas opções se tornaram parâmetros de uma nova opção chamada -style.

EH FISTAILE

Ou seja:

Bastou então mudar a configuração no meu .tmux.conf disso:

set -g status-bg colour235
set -g status-fg colour6

set -g message-bg colour238
set -g message-fg colour191
set -g message-command-fg colour33
set -g message-command-bg colour237

set -g pane-border-fg colour235
set -g pane-active-border-fg colour196

setw -g mode-bg colour6
setw -g mode-fg colour235

setw -g window-status-current-bg colour236
setw -g window-status-current-fg colour156
set -g window-status-current-attr bold

setw -g window-status-bg colour235

Para isso:

set -g status-style bg=colour235,fg=colour6

set -g message-style bg=colour239,fg=colour191
set -g message-command-style bg=colour237,fg=colour33

set -g pane-border-style fg=colour235
set -g pane-active-border-style fg=colour196

setw -g mode-style bg=colour6,fg=colour235

setw -g window-status-current-style bg=colour236,fg=colour156,bold

setw -g window-status-style bg=colour235

E pronto! A configuração foi carregada com sucesso e já faz parte do meu repositório de dotfiles.

Davi Marcondes Moreira avatar
Sobre Davi Marcondes Moreira
Desenvolvedor de software, palestrante, evangelista de trabalho remoto e home office, amante de MTB/XCO e entusiasta de café. Ele/Dele.