小さいモニターを大きいモニターに切り替えるときに、tmux ウィンドウを再描画する方法はありますか? 質問する

小さいモニターを大きいモニターに切り替えるときに、tmux ウィンドウを再描画する方法はありますか? 質問する

小さな端末で 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、そのウィンドウがアクティブになっている他のセッションを他のウィンドウに切り替える)。ただし、一般的なケースではスクリプト化が難しくなります (また、単にセッションから切り離すのではなく、ウィンドウのリンクを解除するかセッションを強制終了する必要があるため、「終了」とは異なります)。

おすすめ記事