tmux
端末のサイズに関係なく、セッション内のウィンドウを特定のサイズに強制したいです。どうすればいいでしょうか?
コンテクスト
ここで説明されているように、asciinemaでtmuxを記録しようとしていますhttps://github.com/asciinema/asciinema/wiki/レコーディング-tmux-セッション(コマンドで asciinema を実行しますtmux attach
)。ただし、表示が大きすぎるので、 のサイズを強制したいと思いますtmux window
。
私が試したこと
mate-terminal -e 70x20
tmux セッションの 2 番目のビューを使用してウィンドウ サイズを強制するという回避策が成功しましたが、これはハックのようです。
-xでセッションサイズを強制しようとしています
tmux new-session -x $X -y $Y -d
これらのオプションは無視されているようです(積極的なサイズ変更設定を試してみました)
答え1
不要な領域を埋めるためには、少なくとも3つのペインを開く必要があるでしょう。次のようなものを試してみてください。
tmux new-session \; split-window -h \; split-window -v \; resize-pane -x 70 -y 20
答え2
これで望みどおりの結果が得られそうです:
tmux new-session \; setw force-width 80 \; setw force-height 24 \; attach
もちろん、および$X
も$Y
使用できます。
答え3
これは tmux のバグであり、開発バージョンでは修正されています。現時点でリリースされている最新バージョンは 3.2a ですが、修正は行われていません。
どうやら、新しい分離セッションの -x および -y オプションのみを無視するようです。ドキュメントには、これらの値は新しいウィンドウのデフォルト サイズ設定を上書きすると記載されており、新しいセッションを作成し、デフォルト サイズを設定し、新しいウィンドウを起動してから、最初のウィンドウを終了することが提案されています。これは機能します。ただし、-x および -y オプションを使用してデフォルト サイズ設定を上書きし、調整する必要を回避できますが、それでも新しいウィンドウを作成する必要があります。問題は、-x および -y が、最初のウィンドウが既に作成された後にセッションのデフォルト サイズを変更することです。
tmux new-session -d -x $X -y $Y \; new-window ${MY_COMMAND} \; kill-window -t 0
これにより、必要なデフォルト サイズで新しいセッションが作成され、次に ${MY_COMMAND} を実行する目的のサイズの新しいウィンドウが作成され、最後に他のウィンドウが終了します。これは、必要なサイズの仮想端末でコマンドを実行する場合に機能します。