Quero forçar as janelas da minha tmux
sessão a terem um tamanho específico, independentemente do tamanho do meu terminal. Como posso fazer isso?
Contexto
Estou tentando gravar um tmux em asciinema conforme descrito aquihttps://github.com/asciinema/asciinema/wiki/Recording-tmux-session(execute asciinema em um tmux attach
comando). Porém a tela é muito grande, quero forçar o tamanho do arquivo tmux window
.
Coisas que eu tentei
Eu tenho um trabalho bem-sucedido onde uso uma segunda visualização da sessão tmux para mate-terminal -e 70x20
forçar o tamanho da janela ... mas isso parece um hack.
Tentando forçar o tamanho da sessão com -x
tmux new-session -x $X -y $Y -d
Essas opções parecem ser ignoradas (tentei mexer na configuração agressiva de redimensionamento)
Responder1
Você provavelmente precisará ter pelo menos três painéis abertos para ocupar as áreas indesejadas. Tente algo como
tmux new-session \; split-window -h \; split-window -v \; resize-pane -x 70 -y 20
Responder2
Isso deve fazer o que você deseja:
tmux new-session \; setw force-width 80 \; setw force-height 24 \; attach
ou com $X
e $Y
, é claro.
Responder3
Este é um bug no tmux e foi corrigido na versão de desenvolvimento. A última versão lançada no momento é a 3.2a, que não possui a correção.
Parece apenas ignorar as opções -x e -y para uma nova sessão desanexada. A documentação diz que esses valores substituirão as configurações de tamanho padrão para novas janelas, o que sugeria a criação de uma nova sessão, a definição do tamanho padrão, o lançamento de uma nova janela e, em seguida, a eliminação da janela inicial. Isso funciona. No entanto, você pode usar as opções -x e -y para substituir a configuração de tamanho padrão para evitar a necessidade de ajustá-la, mas ainda será necessário criar uma nova janela. O problema é que -x e -y modificam o tamanho padrão da sessão após a janela inicial já ter sido criada.
tmux new-session -d -x $X -y $Y \; new-window ${MY_COMMAND} \; kill-window -t 0
Isso criará uma nova sessão com o tamanho padrão desejado, depois criará uma nova janela com o tamanho desejado executando ${MY_COMMAND} e, finalmente, encerrará a outra janela. Isso deve funcionar para executar um comando em um terminal virtual de quaisquer dimensões necessárias.