De acordo com a documentação, quando você cria uma sessão desanexada ( new-session -d
), o padrão é um tamanho de 80 × 24. Se você anexar uma janela de terminal com 24 linhas de altura (ou 25, já que tmux usa uma para uma linha de status), você deve descobrir que o painel Vim abaixo acaba apenas cinco linhas.
O problema surge quando você anexa a sessão com uma janela de terminal muito mais alta que 24 linhas. Quando você faz isso, o tmux redimensiona os painéis para preencher a janela completa do terminal. O painel inferior cresce além das cinco linhas originais quando isso acontece.
Uma maneira de contornar esse problema é criar a sessão desanexada com um tamanho inicial que corresponda ao da janela do terminal a partir do qual você será anexado à sessão. Uma forma semi-portátil de fazer isso é analisar a saída de stty size
(alguns shells também fornecem parâmetros LINES e COLUMNS (especialmente quando no modo interativo), mas esses parâmetros nem sempre estão disponíveis e são confiáveis em scripts shell).
set -- $(stty size) # $1 = rows $2 = columns
tmux -2 new-session -d -s "$SESSION" -x "$2" -y "$(($1 - 1))" # status line uses a row
A mensagem failed to connect to server: Connection refused
vem do seu comando tmux has-session
. Está informando que não há servidor existente. Como você está interessado apenas no código de saída, provavelmente é possível enviar a saída para /dev/null
para evitar vê-la. Você também pode colocar o comando diretamente na instrução if
:
if tmux has-session -t "$SESSION" 2>/dev/null; then
⋮
fi
Aliás, você deve quase sempre colocar suas expansões de parâmetros entre aspas duplas (para evitar a divisão de palavras e a expansão glob). Você só tem um parâmetro e seu valor (copiado de USER
) é (geralmente) provavelmente seguro para não citar, mas é um bom hábito sempre citar suas expansões em quase todos os contextos.