Quase todo o meu dia acontece numa janela de terminal. É assim que ela está configurada.
O foot abre direto no tmux
O foot é um terminal pequeno e rápido pra Wayland. O meu abre em tela cheia e entra numa sessão do tmux chamada main, ou cria ela se não existir:
[main]
initial-window-mode=fullscreen
shell=tmux new-session -A -s main
Se eu fecho o terminal, é só abrir de novo e volto pra mesma sessão, com cada janela onde eu deixei.
Duas linhas no tmux me dão cores completas e as teclas extras que o foot suporta:
set -as terminal-features ",foot*:RGB:extkeys"
set -s extended-keys on
tmux: as principais mudanças
As mudanças que mais uso:
| Tecla ou ajuste | O que faz |
|---|---|
prefix = Ctrl+a |
mais fácil de alcançar que Ctrl+b |
Alt+1..9 |
pula pra uma janela sem o prefix |
prefix " e prefix % |
divide o painel, mantendo o mesmo diretório |
prefix c |
janela nova, sempre no meu diretório home |
| nome da janela | o nome do diretório do painel ativo |
| modo de cópia | teclas do Vim, e y copia pro clipboard |
Divisões e janelas novas se comportam diferente de propósito. Uma divisão normalmente é pra tarefa em que já estou, então abre no mesmo diretório. Uma janela nova normalmente é pra outra coisa, então começa no meu diretório home.
O layout: uma janela, até quatro sessões
Quase todo o trabalho acontece numa janela, dividida em quatro áreas. Cada área tem o Claude Code num repo em cima, e um shell da mesma tarefa embaixo:
+---------------------------+---------------------------+
| claude (repo A) | claude (repo B) |
| | |
+---------------------------+---------------------------+
| $ kubectl get pod | $ nvim |
+---------------------------+---------------------------+
| claude (repo C) | claude (repo D) |
| | |
+---------------------------+---------------------------+
| $ git diff | $ tofu plan |
+---------------------------+---------------------------+
Quando o Claude termina, o shell onde confiro o trabalho está logo abaixo. O prefix z deixa um painel em tela cheia quando um plan ou um diff não cabe.
Só rodo quatro em dias cheios, com até três em tarefas e uma só pra perguntas. Num dia normal, são duas.
O Neovim roda nesses painéis de shell. Nos projetos em que ferramentas de IA são permitidas, o Claude faz um rascunho da mudança, e eu reviso, corrijo e testo no editor ao lado.
Um limite de memória como fusível
Cada sessão do Claude Code roda com um limite de memória definido pelo systemd:
alias claude='systemd-run --user --scope -q -p MemoryHigh=3500M -p MemoryMax=4G -p MemorySwapMax=1G claude'
Na minha máquina, uma sessão nova usa uns 320 MiB, e uma com vinte minutos de trabalho uns 480 MiB. O limite de 4 GiB é umas oito vezes isso, e quatro sessões no limite precisariam de mais memória do que a minha máquina tem. O limite não está ali pra dividir memória entre sessões. Está ali pro caso de uma sessão dar problema: só ela é afetada, e o tmux, o navegador e todo o resto continuam rodando.
Na prática, o que limita quantas sessões eu rodo é o quanto eu consigo revisar.