小さな端末で tmux セッションを開始しました。より大きな解像度のモニターで同じセッションに「接続」すると、コンソールの周囲に点が描画されます。新しいウィンドウ サイズに収まりません。ウィンドウを再描画してクリーンアップする方法はありますか? CTRL+LまたはCTRL- B+ ではR役に立ちません。
ベストアンサー1
tmux は、ウィンドウのサイズを、そのウィンドウが接続されているすべてのセッションの各サイズのうちの最小のサイズに制限します。これを行わないと、接続されているすべてのクライアントのウィンドウ領域全体を表示する適切な方法がなくなります。
最も簡単な方法は、接続時に他のクライアントをセッションから切り離すことです。
tmux attach -d
あるいは、セッションに接続する前に、他のクライアントを別のセッションに移動することもできます。
takeover() {
# create a temporary session that displays the "how to go back" message
tmp='takeover temp session'
if ! tmux has-session -t "$tmp"; then
tmux new-session -d -s "$tmp"
tmux set-option -t "$tmp" set-remain-on-exit on
tmux new-window -kt "$tmp":0 \
'echo "Use Prefix + L (i.e. ^B L) to return to session."'
fi
# switch any clients attached to the target session to the temp session
session="$1"
for client in $(tmux list-clients -t "$session" | cut -f 1 -d :); do
tmux switch-client -c "$client" -t "$tmp"
done
# attach to the target session
tmux attach -t "$session"
}
takeover 'original session' # or the session number if you do not name sessions
より小さなクライアントがセッションに切り替えると、画面は再び縮小されます。
ウィンドウを「引き継ぐ」だけのバリエーションもあります (ウィンドウを新しいセッションにリンクし、 を設定しaggressive-resize
、そのウィンドウがアクティブになっている他のセッションを他のウィンドウに切り替える)。ただし、一般的なケースではスクリプト化が難しくなります (また、単にセッションから切り離すのではなく、ウィンドウのリンクを解除するかセッションを強制終了する必要があるため、「終了」とは異なります)。