Страницы

Поиск по вопросам

пятница, 15 февраля 2019 г.

Кастомизация консольного приложения в Linux

Пишу консольное приложение в Linux, вот и возникло два вопроса.
Во-первых, как программно развернуть эмулятор терминала на весь экран? Да, в Windows это делается с помощью Win API, но что делать, к примеру, в Ubuntu?
Во-вторых, как мне поменять фон в терминале во время исполнения программы? Чтобы у меня стояла не пользовательская тема, а предусмотренная мною?
Заранее спасибо.


Ответ

В Linux нет понятия консольного приложения в смысле Windows.
Приложение может иметь управляющий терминал, с которым у него связаны дескрипторы стандартного ввода, вывода и вывода ошибок, и от которого могут приходить сигналы. Терминал может быть физическим или виртуальным, в последнем случае он может поддерживать или не поддерживать изменение количества строк и управление положением своего окна в графической среде (если оно вообще есть). И это зависит от программы эмулятора терминала, которых в Linux великое множество и укаждого свои возможности, однако те из них которые запускаются из X-Window, например xterm, обычно поддерживают набор команд VT102, в котором предусмотрено некоторое управление окном через escape-последовательности (ищите dtterm), но обычно оно сокращено или отключено по-умолчанию или вовсе не реализовано. Включить у xterm его можно через X-ресурсы например при запуске эмулятора терминала:
xterm -xrm 'xterm*allowWindowOps: true'
Далее в открывшемся окне попробуйте:
$ printf '\033[3;0;0t' # переместить окно в верхний левый угол $ printf '\033[9;1t' # во весь экран
Если определена переменная окружения DISPLAY, значит программа запущенна из X-Window, и вы можете запустить свой эмулятор терминала, указав в аргументах нужную конфигурацию и вашу программу в нём. По аргументам см. man xterm, man gnome-terminal, man konsole и т.п.

Комментариев нет:

Отправить комментарий