Cegah layar gnu dari mengubah ukuran ukuran tampilan

21

Setiap kali saya memulai layar (layar -A) atau mencoba menghubungkan ke sesi layar yang sudah berjalan (layar -Ax) terminal saya diubah ukurannya menjadi 80 kolom. Saya ingin mencegah layar mengubah ukuran terminal saya.

Saya menggunakan iTerm di Snow Leopard dan sesi layar saya menggunakan mesin centos (saya menggunakan bash sebagai shell saya).

sayap hitam
sumber

Jawaban:

31

Coba tambahkan ini (dari /etc/screenrc) ke ~/.screenrc:

# Change the xterm initialization string from is2=\E[!p\E[?3;4l\E[4l\E>
# (This fixes the "Aborted because of window size change" konsole symptoms found
#  in bug #134198)
termcapinfo xterm* 'is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l'

Anda mungkin perlu mengubah "xterm" agar sesuai dengan $TERM.

Set termcapinfobaris is(string inisialisasi) untuk terminal apa pun dengan nama yang dimulai dengan "xterm" hingga urutan kode pelarian. \Emewakili escapedan kodenya adalah sebagai berikut:

\E[r       - set scrolling region to default (full size of window)
\E[m       - reset all resources (keyboard) to their initial values
\E[2J      - Erase in Display (ED). 2 -> Erase All.
\E[H       - set cursor position to default (1, 1)
\E[?7h     - DEC Private Mode Set. 7 -> Wraparound Mode
\E[?1;4;6l - DEC Private Mode Reset. 1 -> Normal Cursor Keys; 4  -> Jump (Fast) Scroll; 6 -> Normal Cursor Mode

Baris yang diganti memiliki kode-kode ini:

\E[!p      - Soft terminal reset
\E[?3;4l   - DEC Private Mode Reset. 3 -> 80 Column Mode; 4 -> Jump (Fast) Scroll
\E[4l      - Reset Mode. 4 -> Replace Mode
\E>        - Normal keypad

(sumber: XTerm Control Sequences )

Dijeda sampai pemberitahuan lebih lanjut.
sumber
Terima kasih! menambahkan jawaban ini ke serverfault.com/questions/158508/…
Joshua D'Alton
Apakah Anda keberatan mendekode baris termcapinfo?
Huckle
2
@Huckle: Saya menambahkan penjelasan tentang kode melarikan diri.
Dijeda sampai pemberitahuan lebih lanjut.
1

Penjelasan (dan yang disarankan setara) untuk string inisialisasi xterm tidak sepenuhnya akurat.

Dimulai dengan string dari deskripsi terminal xterm:

is2=\E[!p\E[?3;4l\E[4l\E>

kita punya

CSI ! p   Soft terminal reset (DECSTR).
CSI ? Pm l
      DEC Private Mode Reset (DECRST).
...
        Ps = 3  -> 80 Column Mode (DECCOLM).
        Ps = 4  -> Jump (Fast) Scroll (DECSCLM).
CSI Pm l  Reset Mode (RM).
...
        Ps = 4  -> Replace Mode (IRM).
ESC >     Normal Keypad (DECKPNM).

Tetapi DECSTRmengatur ulang beberapa hal yang tidak ditemukan dalam penggantian:

  • bentuk dan tampilan kursor
  • set karakter
  • mode keyboard lainnya yang berkaitan dengan aplikasi / mode normal ( DECCKM, KAM, DECKPAM)
  • sampul (dan membalik sampul)
  • mode asal

Juga, itu tidak menghapus layar.

Alasan untuk menggunakan DECSTR( sejak 1997 ) adalah untuk menjaga ukuran termcap cukup kecil agar sesuai dengan batas 1024-byte termcap.

Pengaturan screenadalah dari paket Debian; laporan bug yang disebutkan dalam komentar adalah layar Debian # 134198: memiliki semacam masalah persaingan aneh yang paling terlihat dengan irssi dan konsole , dari tahun 2002. screentidak mengenali urutan itu, dan kebetulan, konsole KDE tidak mengimplementasikan urutan itu, seperti yang terlihat di KDE # 134892 , sementara pada saat yang sama pengembangnya menyatakan dalam KDE # 145977 bahwa mereka lebih suka tidak menggunakan TERMnilai yang berbeda dari xterm. Karena beberapa pengguna mungkin menginginkan deskripsi terminal yang cocok dengan kemampuan konsole, itu ada di ncurses seperti konsole, misalnya,

is2=\E[m\E[?7h\E[4l\E>\E7\E[r\E[?1;3;4;6l\E8

melawan

is2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l

Menghapus layar bening palsu, bagian kustomisasi layar yang relevan adalah

is2=\E[r\E[m\E[?7h\E[?1;4;6l

Jadi yang tertinggal adalah (selain dari DECCOLM) \E[4l.

The \E7dan \E8dalam string inisialisasi menyimpan / mengembalikan posisi kursor ketika menyesuaikan margin bergulir. Sama seperti mode insert, beberapa pengguna akan memperhatikan tidak adanya fitur.

Inti dari kustomisasi adalah untuk menekan DECCOLMswitching (80/132 kolom), dan bekerja dari cut-down dan kustomisasi yang agak lama mungkin tidak bekerja serta beradaptasi dari deskripsi terminal yang ditulis untuk terminal.

Bacaan lebih lanjut:

Thomas Dickey
sumber