Запобігання зміні розміру дисплея gnu screen


21

Кожен раз, коли я запускаю екран (screen -A) або намагаюся підключитися до вже запущеного сеансу екрана (screen -Ax), мій термінал змінюється до 80 стовпців. Я хочу запобігти зміні розміру екрана мого терміналу.

Я використовую iTerm на Snow Leopard, а мої сеанси на екрані - на машині centos (я використовую bash як свою оболонку).

Відповіді:


31

Спробуйте додати це (від /etc/screenrc) до свого ~/.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", щоб він відповідав вашому $TERM.

У termcapinfoнаборах рядків is(ininitialization рядок) для будь-якого терміналу з ім'ям , починаючи з «XTerm» до послідовності евакуації кодів. \Eпредставляє escapeі коди наступні:

\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

У заміненому рядку були такі коди:

\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

(джерело: Послідовності керування XTerm )


Спасибі! додав цю відповідь на serverfault.com/questions/158508/…
Джошуа

Ви проти зашифрувати лінію termcapinfo?
Геккл

2
@Huckle: я додав пояснення кодів втечі.
Призупинено до подальшого повідомлення.

1

Пояснення (та запропоновані еквіваленти) для рядка ініціалізації xterm не є абсолютно точним.

Починаючи з рядка з опису терміналу xterm:

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

ми маємо

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

Але DECSTRскидає декілька речей, які не знайдені в заміні:

  • форма та зовнішній вигляд курсора
  • набори символів
  • інші режими клавіатури , пов'язані з додатком / нормальні режими ( DECCKM, KAM, DECKPAM)
  • обгортання (і зворотне обгортання)
  • режим походження

Крім того, це не очищає екран.

Причиною використання DECSTR( починаючи з 1997 р. ) Є збереження розмірів термінальної капачки досить малим, щоб вписатись у межу 1024-байт termcap.

Налаштування screen- з пакету Debian; звіт про помилку, згаданий у коментарі, - це Debian # 134198 - екран: має якусь непарну проблему емуляції, найбільш помітну для irssi та konsole , з 2002 року screenне розпізнає цю послідовність, і, до речі, KDE konsole не реалізує цю послідовність, як видно в KDE # 134892 , в той же час його розробники в KDE № 145977 заявляють, що вони вважають за краще не використовувати інше TERMзначення, ніж те xterm. Оскільки деякі користувачі можуть захотіти опис терміналу, який відповідає можливостям консолі, це в ncurses як konsole, наприклад,

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

проти

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

Видаляючи помилковий прозорий екран, відповідна частина налаштування екрана є

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

тож те, що було залишено, було (осторонь DECCOLM) \E[4l.

У \E7і \E8рядку ініціалізації зберегти / відновити положення курсору під час регулювання меж прокрутки. Так само, як і режим вставки, деякі користувачі помічають відсутність функції.

Сенс налаштування полягає в придушенні DECCOLMперемикання (стовпчик 80/132), і робота від вимикання екрана та досить старої настройки може не працювати, а також адаптуватися з опису терміналу, написаного для терміналу.

Подальше читання:

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.