Программно изменить размер шрифта в терминале Linux, используя Python - PullRequest
0 голосов
/ 18 января 2019

В Ubuntu Gnome-Terminal это можно сделать, нажав Ctrl + или Ctrl - Есть ли способ написать скрипт на Python, который при выполнении изменил бы размер шрифта терминала, из которого он выполняется?

Мне это нужно для отображения изображений в терминале с высоким разрешением, используя timg.

Ответы [ 2 ]

0 голосов
/ 20 января 2019

Проверка источника (vte и gnome-терминал), похоже, нет способа сделать это. Другие терминалы (например, xterm) могут делать это с помощью escape-последовательностей. См. Последовательности управления XTerm :

OSC Ps ; Pt ST
          Set Text Parameters.  For colors and font, if Pt is a "?", the
          control sequence elicits a response which consists of the con-
          trol sequence which would set the corresponding value.  The
          dtterm control sequences allow you to determine the icon name
          and window title.

  ...

            Ps = 5 0  -> Set Font to Pt.  These controls may be disabled
          using the allowFontOps resource.  If Pt begins with a "#",
          index in the font menu, relative (if the next character is a
          plus or minus sign) or absolute.  A number is expected but not
          required after the sign (the default is the current entry for
          relative, zero for absolute indexing).

vte распознает 50, но это (как и многие другие функции xterm) просто заглушка, которая ничего не делает. Источники xterm включают 20-летний скрипт , который демонстрирует эту функцию (см. fonts.sh).

Вместо использования escape-последовательности вы можете использовать инструмент wmctrl (который может попросить оконного менеджера договориться с терминалом). Некоторые сделали это с другими терминалами, например, терминология (но в конечном итоге с помощью escape-последовательности).

vte имеет некоторый код, который может быть доступен из скрипта Python, используя g_signal_connect для связывания сигналов decrease-font-size и increase-font-size (см. исходный код ). Сигнальный код - это то, что вы используете с клавиатурой. Но как вы можете определить указатель объекта из скрипта, запускаемого вне эмулятора терминала, неясно.

0 голосов
/ 20 января 2019

Нет простого способа сделать это через терминалы. Терминалы поддерживают так называемые управляющие последовательности, которые могут задавать множество параметров, таких как цвет текста и другие, но не существует управляющей последовательности для установки размера шрифта. Смотрите, например, https://en.wikipedia.org/wiki/ANSI_escape_code и https://invisible -island.net / xterm / ctlseqs / ctlseqs.html , чтобы узнать, какие действия поддерживаются.

...