Wie erzwinge ich eine bestimmte Größe für ein Tmux-Fenster?

Wie erzwinge ich eine bestimmte Größe für ein Tmux-Fenster?

Ich möchte die Fenster in meiner tmuxSitzung 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 attachBefehl 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 70x20um 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 $Xund .$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.

verwandte Informationen