Impedisci al ridimensionamento dello schermo gnu


21

Ogni volta che avvio la schermata (schermata -A) o provo a collegarmi a una sessione della schermata (schermata -Ax) già in esecuzione, il mio terminale viene ridimensionato a 80 colonne. Voglio impedire al monitor di ridimensionare il mio terminale.

Sto usando iTerm su Snow Leopard e le mie sessioni su schermo sono su una macchina centos (uso bash come shell).

Risposte:


31

Prova ad aggiungere questo (da /etc/screenrc) al tuo ~/.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'

Potrebbe essere necessario modificare "xterm" in modo che corrisponda al tuo $TERM.

La termcapinfolinea imposta is(stringa di inizializzazione) per qualsiasi terminale con un nome che inizia con "xterm" su una sequenza di codici di escape. \Erappresenta escapee i codici sono i seguenti:

\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

La linea sostituita aveva questi codici:

\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

(fonte: sequenze di controllo XTerm )


Grazie! ha aggiunto questa risposta a serverfault.com/questions/158508/…
Joshua D'Alton

Ti dispiacerebbe decodificare la linea termcapinfo?
Huckle,

2
@Huckle: ho aggiunto una spiegazione dei codici di escape.
In pausa fino a nuovo avviso.

1

La spiegazione (e gli equivalenti suggeriti) per la stringa di inizializzazione xterm non è completamente accurata.

A partire dalla stringa dalla descrizione del terminale di xterm:

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

noi abbiamo

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

Ma DECSTRreimposta diverse cose non trovate nella sostituzione:

  • la forma e l'aspetto del cursore
  • set di caratteri
  • altre modalità di tastiera sono collegati applicazione / modi normali ( DECCKM, KAM, DECKPAM)
  • avvolgente (e avvolgente inverso)
  • modalità di origine

Inoltre, non cancella lo schermo.

Il motivo dell'utilizzo DECSTR( dal 1997 ) è di mantenere le dimensioni del termcap abbastanza piccole da adattarsi al limite di 1024 byte di termcap.

L'impostazione per screenproviene dal pacchetto Debian; la segnalazione di bug menzionata nel commento è Debian # 134198 - schermo: ha una sorta di strano problema di emulazione più evidente con irssi e konsole , dal 2002. screennon riconosce quella sequenza, e per inciso, KDE Konsole non implementa quella sequenza, come si vede in KDE # 134892 , mentre allo stesso tempo i suoi sviluppatori dichiarano in KDE # 145977 che preferiscono non usare un TERMvalore diverso da xterm. Dato che alcuni utenti potrebbero desiderare una descrizione del terminale che corrisponda alle capacità di Konsole, è presente in ncurses come konsole, ad esempio,

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

contro

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

Rimuovendo lo schermo trasparente spurio, la parte rilevante della personalizzazione dello schermo è

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

quindi ciò che è stato lasciato fuori era (a parte DECCOLM) \E[4l.

La stringa \E7e \E8nella stringa di inizializzazione salva / ripristina la posizione del cursore durante la regolazione dei margini di scorrimento. Proprio come la modalità di inserimento, alcuni utenti noterebbero l'assenza della funzione.

Il punto della personalizzazione è quello di sopprimere la DECCOLMcommutazione (colonna 80/132) e lavorare dalla riduzione dello schermo e una personalizzazione piuttosto vecchia potrebbe non funzionare così come adattarsi da una descrizione del terminale scritta per il terminale.

Ulteriori letture:

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.