resize: изменение размера терминала

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

mieczeslaw
Сообщения: 139
ОС: xubuntu 12.10

resize: изменение размера терминала

Сообщение mieczeslaw »

Приветствую всех. Пишу небольшую программу с использованием ncurses, и возник следующий вопрос.
Необходимо, чтобы программа начинала работу в окне терминала заданного размера. Вроде бы размер меняется подобным образом:

Код:

system("resize -s 25 80");

Однако на деле не всё так просто. Проверил в нескольких терминалах, и результаты разные.
xterm (ubuntu 12.04, xubuntu 12.10) не меняет размеры, выдавая

Код:

resize: unknown character, exiting.
И чтобы поведение поменялось в нужную сторону, нужно в /etc/X11/app-defaults/XTerm поменять опцию *allowWindowOps с false на true.
gnome-terminal срабатывает правильно (ubuntu 12.04, Unity).
xfce4-terminal меняет размер, однако есть "побочный эффект": если написать код вида

Код:

void main() { system("resize -s 25 80"); initscr(); //вывод №1 getch(); clear(); //вывод №2 }
то увидим мы только вывод №2, на getch() программа не остановится.
Собственно, как получить какую-нибудь универсальность?
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5405
ОС: Gentoo

Re: resize: изменение размера терминала

Сообщение /dev/random »

Не существует способа гарантированно изменить размер терминала. Во-первых, не все терминалы это поддерживают. Во-вторых, оконный менеджер может запретить терминалу изменять размер. К примеру, что вы будете делать с ядерной фреймбуферной консолью, где размер зависит от разрешения экрана и выбранного пользователем шрифта, и консоль всегда полноэкранная?

Если возможно, пишите программу так, чтобы ей подошёл любой размер терминала. Если невозможно (хотя не могу представить себе такой ситуации), попытайтесь изменить размер, не полагаясь на то, что это удастся, и если размер получится слишком большим, используйте только часть терминала, а если слишком маленьким - ругнитесь и завершите работу.
Спасибо сказали:
mieczeslaw
Сообщения: 139
ОС: xubuntu 12.10

Re: resize: изменение размера терминала

Сообщение mieczeslaw »

Да нет, как раз мой случай и представляет собой пример такого, когда очень желателен жёстко заданный размер терминала. На мой взгляд. Понятно, что полноэкранную консоль не растянешь и не сожмёшь, но оконный терминал - другое дело?
А нельзя ли будет поместить готовое "изделие" в пакет с зависимостью от xterm, например, и строго указать: данная программа запускается строго в xterm? Поскольку есть впечатление, что он наиболее распространён из тех терминалов, что я выше назвал. Правда, остаётся вопрос с разрешённостью или запретом по *allowWindowOps.
Спасибо сказали: