Gnu ekranın ekran boyutunu yeniden boyutlandırmasını önleyin


21

Ekranı her başlattığımda (ekran -A) ya da çalışmakta olan ekran oturumuna (ekran -Ax) bağlanmayı denediğimde terminalim 80 sütuna yeniden boyutlandırılıyor. Ekranın terminalimi yeniden boyutlandırmasını önlemek istiyorum.

İTerm'i Snow Leopard'da kullanıyorum ve ekran oturumlarım centos makinesinde (kabuğum olarak bash kullanıyorum).

Yanıtlar:


31

Bu (gelen eklemeyi deneyin /etc/screenrcadresinden Müşteri) ~/.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'

"Xterm" ı sizin eşleşmeniz için değiştirmeniz gerekebilir $TERM.

termcapinfoHat setleri isbir isim kaçış kodların bir dizisi için "xterm" ile başlayan herhangi bir terminal için (ininitialization string). \Etemsil eder escapeve kodlar aşağıdaki gibidir:

\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

Değiştirilen satırda şu kodlar vardı:

\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

(kaynak: XTerm Kontrol Dizileri )



Termcapinfo satırının kodunu çözebilir misiniz?
Huckle

2
@Huckle: Kaçış kodlarının bir açıklamasını ekledim.
Dennis Williamson,

1

Xterm başlatma dizesi için açıklama (ve önerilen eşdeğerler) tamamen doğru değildir.

Xterm'in terminal tanımından dize ile başlayarak:

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

sahibiz

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).

Ancak DECSTR, yedeklemede bulunmayan birkaç şeyi sıfırlar:

  • imleç şekli ve görünümü
  • karakter kümeleri
  • uygulaması ile ilgili diğer klavye modları normal / modları ( DECCKM, KAM, DECKPAM)
  • geri sarma (ve geri sarma)
  • kökeni modu

Ayrıca, ekranı temizlemez.

Kullanmanın nedeni DECSTR( 1997'den beri ) termcap boyutlarını termcap'ın 1024 bayt sınırına uyacak kadar küçük tutmaktır .

İçin ayar screenDebian paketinden; yorumunda belirtilen hata raporu irssi ve konsole en farkedilir tek emülasyon sorunu çeşit vardır: Ekran - Debian # 134198 2002 den, screengörüldüğü gibi, bu diziyi tanımıyor ve tesadüfen, KDE konsole bu diziyi uygulamıyor içinde KDE # 134892 , aynı zamanda onun geliştiriciler devlet ise KDE # 145977 tercih ettikleri farklı kullanmamayı TERMdaha değer xterm. Bazı kullanıcılar konsole'nin yeteneklerine uygun bir terminal açıklaması isteyebileceklerinden konsole, örneğin,

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

e karşı

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

Sahte ekranı temizleyerek ekranın kişiselleştirmesinin ilgili kısmı

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

öyleyse dışarıda bırakılan şey (bir yana DECCOLM) \E[4l.

\E7Ve \E8başlatma dizesi / kaydetmek kaydırma marjları ayarlarken İmleç konumunu geri yükleyin. Eklenti modu gibi, bazı kullanıcılar da özelliğin bulunmadığını fark eder.

Özelleştirmenin amacı, DECCOLM(80/132 sütun) anahtarlamayı bastırmak ve ekranın kesilmesiyle çalışmak yerine eski kişiselleştirme , terminal için yazılmış bir terminal tanımından uyarlamanın yanı sıra çalışmayabilir .

Daha fazla okuma:

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.