Tilda жалуется на неверный размер экрана при запуске?

Tilda жалуется на неверный размер экрана при запуске?

На Ubuntu 14.04, рабочий стол MATE. Я только что установил терминал Tilda, поэтому добавил его в Startup Applications, как раз как /usr/bin/tilda. Перезагрузился, увидел запуск Tilda, а затем заметил это:

тильда

«Ваш размер экрана 131072x1 — подделка. Ждите неприятностей»

Затем я попробовал killall tildaснова запустить тильду, то же самое сообщение.

Кто-нибудь знает, как исправить эту проблему с фиктивным размером экрана?

решение1

Что генерирует это сообщение?

Это не производится оболочкой Bourne Again. Это не производится Tilda.

Это производится командой psизнабор инструментов procpsвыполнениеэта проверка в своей set_screen_size()функции. psКоманда требует, чтобы ваше терминальное устройство было минимум 9 столбцов на 2 строки, чтобы оно могло отображать вещи разумно. Где-то, возможно, без вашего ведома, вы вызываете ps.

Команда psполучает размер вашего терминала напрямую из (линейная дисциплина) терминального устройства, подключенного к его стандартным файловым дескрипторам ввода-вывода, и позволяет переопределить его с помощью COLUMNSпеременных LINESокружения, если их значения являются надлежащими числовыми. Вы можете увидеть, что psвидит ваша команда, чтобы сделать свое определение, выполнив:

stty размер ; printenv СТОЛБЦЫ СТРОКИ
Вы можете поэкспериментировать с подшучиванием psнад , запустив такие команды, как:

СТОЛБЦЫ=65535 СТРОК=1 шт.

Если вы установили переменные среды COLUMNSи LINESв значения daft 131072×1, как показано в выводе printenv, то просто не делайте этого. ☺ Однако более вероятно, что само терминальное устройство сообщает этот размер, что вы увидите в выводе stty. (Обратите внимание, что все, что делает оболочка Bourne Again, checkwinsizeэто устанавливает значения этих переменных оболочки, которые, если не экспортируются, даже не передаются команде psв ее среде, в тот размер, который сообщает терминальное устройство. Так что checkwinsizeэто отвлекающий маневр в том, что если переменные среды бессмысленны, терминальное устройствосам по себе сообщает(Бессмыслица, и последнее является основной проблемой, которую необходимо решить.)

Вот почему, пока он не выдает сообщение, Tilda может быть неисправна. Размер терминального устройства — это общий ресурс, который все, что имеет открытый файловый дескриптор терминального устройства, может произвольно изменять с помощью ioctl()системного вызова. Но этоусловноустановить, в сценарии, когда используется программное обеспечениепрограмма эмулятора терминалакак Tilda, программой эмулятора терминала, когда изменяется размер окна GUI, в котором отображается эмуляция. Программа эмулятора терминала получает событие изменения размера GUI, преобразует его в столбцы и строки и устанавливает размер устройства с помощью ioctl().

Это не значит, что что-то другое не установило размер этой ерунды. В конце концов, вы можете установить егосамдо произвольного бессмысленного размера, просто выполнив, например, команду:

stty столбцы 1 строки 65535

Что приводит нас к…

Как сбросить размер терминального устройства

Если вы оказались в ситуации, когда терминальное устройство сообщает о бессмысленном размере:

  • Если вы используете эмулятор терминала GUI, измените размер GUI на столбец/строку или около того. Это должно вызвать ioctl()и установить разумный размер терминала.
  • Установите более разумный размер (например):

    stty столбцы 80 строки 25
  • Используйте resetкоманду. Обратите внимание, что resetона устанавливает много других параметров, помимо размера терминального устройства.
  • Если ваш эмулятор терминала совместим с DEC VT340/VT420, отправьте соответствующие управляющие последовательности DECSCPP и DECSLPP/DECSNLS напрямую или используйтенабор инструментов для еды'sconsole-resize(также известный какresizecons) команду для их испускания:

    изменение размера 80x25

Связанный контент