Ich möchte die Fenster in meiner tmux
Sitzung auf eine bestimmte Größe zwingen, unabhängig von der Größe meines Terminals. Wie kann ich das tun?
Kontext
Ich versuche, einen Tmux in Asciinema aufzuzeichnen, wie hier beschriebenhttps://github.com/asciinema/asciinema/wiki/Recording-tmux-session(führen Sie asciinema auf einem tmux attach
Befehl aus). Die Anzeige ist jedoch zu groß, ich möchte die Größe erzwingen tmux window
.
Dinge, die ich versucht habe
Ich habe eine erfolgreiche Problemumgehung, bei der ich eine zweite Ansicht der Tmux-Sitzung verwende, mate-terminal -e 70x20
um die Fenstergröße zu erzwingen … aber das scheint ein Hack zu sein.
Versuch, die Sitzungsgröße mit -x zu erzwingen
tmux new-session -x $X -y $Y -d
Diese Optionen scheinen ignoriert zu werden (ich habe versucht, an der Einstellung für die aggressive Größenänderung herumzuspielen).
Antwort1
Sie müssen wahrscheinlich mindestens 3 Fenster geöffnet haben, um die unerwünschten Bereiche zu belegen. Versuchen Sie etwas wie
tmux new-session \; split-window -h \; split-window -v \; resize-pane -x 70 -y 20
Antwort2
Dies sollte bewirken, was Sie möchten:
tmux new-session \; setw force-width 80 \; setw force-height 24 \; attach
oder natürlich mit $X
und .$Y
Antwort3
Dies ist ein Fehler in tmux und wurde in der Entwicklungsversion behoben. Die aktuellste veröffentlichte Version ist 3.2a und enthält den Fix nicht.
Es scheint nur die Optionen -x und -y für eine neue getrennte Sitzung zu ignorieren. In der Dokumentation steht, dass diese Werte die Standardgrößeneinstellungen für neue Fenster überschreiben. Daher wurde vorgeschlagen, eine neue Sitzung zu erstellen, die Standardgröße festzulegen, ein neues Fenster zu öffnen und dann das ursprüngliche Fenster zu schließen. Das funktioniert. Sie können jedoch die Optionen -x und -y verwenden, um die Standardgrößeneinstellung zu überschreiben, damit Sie sie nicht anpassen müssen. Sie müssen jedoch trotzdem ein neues Fenster erstellen. Das Problem besteht darin, dass -x und -y die Standardgröße für die Sitzung ändern, nachdem das ursprüngliche Fenster bereits erstellt wurde.
tmux new-session -d -x $X -y $Y \; new-window ${MY_COMMAND} \; kill-window -t 0
Dadurch wird eine neue Sitzung mit der gewünschten Standardgröße erstellt, dann wird ein neues Fenster mit der gewünschten Größe erstellt, in dem ${MY_COMMAND} ausgeführt wird, und schließlich wird das andere Fenster geschlossen. Dies sollte für die Ausführung eines Befehls in einem virtuellen Terminal mit beliebiger Größe funktionieren.