it-swarm-id.com

Apakah ada cara untuk menggambar ulang jendela tmux saat mengganti monitor yang lebih kecil ke yang lebih besar?

Katakanlah Anda terhubung ke server jauh melalui ssh dengan Terminal.app. Ketika Anda "tmux attach" dengan monitor resolusi yang lebih besar dari yang lebih kecil yang sebelumnya Anda mulai tmux, itu menarik titik-titik di sekitar konsol. Itu tidak sesuai dengan ukuran jendela baru. Apakah ada cara untuk menggambar ulang dan membersihkan jendela? CTRL+L atau CTRL-B + R tidak membantu. Saya tidak dapat menemukan perintah yang tepat pada manusia.

% tmux -V
tmux 1.5
361
Nobu

tmux membatasi dimensi jendela hingga terkecil dari setiap dimensi di semua sesi yang dilampirkan jendela. Jika tidak melakukan ini tidak akan ada cara yang masuk akal untuk menampilkan seluruh area jendela untuk semua klien yang dilampirkan.

Hal termudah untuk dilakukan adalah melepaskan klien lain dari sesi ketika Anda melampirkan:

tmux attach -d

Sebagai alternatif, Anda dapat memindahkan klien lain ke sesi yang berbeda sebelum melampirkan ke sesi:

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

Layar akan menyusut lagi jika klien yang lebih kecil beralih ke sesi.

Ada juga variasi di mana Anda hanya "mengambil alih" jendela (menautkan jendela ke sesi baru, mengatur aggressive-resize, dan mengganti sesi lain yang memiliki jendela yang aktif ke jendela lain), tetapi lebih sulit untuk skrip dalam kasus umum (dan berbeda dengan "keluar" karena Anda ingin membatalkan tautan jendela atau membunuh sesi alih-alih hanya melepaskan dari sesi).

522
Chris Johnsen

Anda selalu dapat menekan CTRL-B + SHIFT-D untuk memilih klien mana yang ingin Anda lepaskan dari sesi.

tmux akan mencantumkan semua sesi dengan dimensi mereka saat ini. Maka Anda cukup melepaskan diri dari semua sesi berukuran lebih kecil.

415
Shi B.

Solusi yang lebih sederhana pada versi terbaru tmux (diuji pada 1.9) sekarang dapat Anda lakukan:

tmux detach -a

-a adalah untuk semua klien lain di sesi ini kecuali yang sekarang

Anda dapat menambahkannya di. [Bash | zsh] rc Anda

alias takeover="tmux detach -a"

Workflow: Anda dapat terhubung ke sesi Anda secara normal, dan jika Anda terganggu oleh sesi lain yang memaksa turun ukuran jendela tmux Anda, Anda dapat memanggil takeover.

169
gbin

Jawaban lain tidak membantu saya karena saya hanya punya klien terpasang (yang sebelumnya memulai sesi sudah terlepas).

Untuk memperbaikinya saya mengikuti jawaban di sini (saya tidak menggunakan xterm).

Yang hanya mengatakan:

  1. Lepaskan dari sesi tmux
  2. Jalankan perintah linux resize
  3. Pasang kembali sesi tmux
4
pev.hall

Saya hanya mengalami masalah ini dan menemukan situasi yang berbeda. Meskipun itu mungkin hanya Unicorn, kupikir aku akan mengeluarkannya.

Saya memiliki satu sesi yang lebih kecil, dan saya perhatikan bahwa ukuran font berbeda: sesi yang lebih kecil memiliki font yang lebih kecil. Rupanya, saya telah mengubah ukuran font jendela untuk beberapa alasan.

Jadi di OS X, saya baru saja melakukan Cmd-+ pada sesi berukuran lebih kecil, dan itu kembali ke tempatnya.

3
JESii